Jack2 1.9.7
|
00001 /* 00002 JACK control API 00003 00004 Copyright (C) 2008 Nedko Arnaudov 00005 Copyright (C) 2008 Grame 00006 00007 This program is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; version 2 of the License. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00019 00020 */ 00021 00022 #ifndef __JackControlAPI__ 00023 #define __JackControlAPI__ 00024 00025 #include "jslist.h" 00026 #include "JackCompilerDeps.h" 00027 00028 #ifdef WIN32 00029 #ifdef __MINGW32__ 00030 #include <sys/types.h> 00031 #else 00032 typedef HANDLE sigset_t; 00033 #endif 00034 #endif 00035 00037 typedef enum 00038 { 00039 JackParamInt = 1, 00040 JackParamUInt, 00041 JackParamChar, 00042 JackParamString, 00043 JackParamBool, 00044 } jackctl_param_type_t; 00045 00047 #define JACK_PARAM_MAX (JackParamBool + 1) 00048 00050 #define JACK_PARAM_STRING_MAX 127 00051 00053 /* intentionally similar to jack_driver_param_value_t */ 00054 union jackctl_parameter_value 00055 { 00056 uint32_t ui; 00057 int32_t i; 00058 char c; 00059 char str[JACK_PARAM_STRING_MAX + 1]; 00060 bool b; 00061 }; 00062 00064 typedef struct jackctl_server jackctl_server_t; 00065 00067 typedef struct jackctl_driver jackctl_driver_t; 00068 00070 typedef struct jackctl_internal jackctl_internal_t; 00071 00073 typedef struct jackctl_parameter jackctl_parameter_t; 00074 00075 #ifdef __cplusplus 00076 extern "C" { 00077 #endif 00078 #if 0 00079 } /* Adjust editor indent */ 00080 #endif 00081 00082 EXPORT sigset_t 00083 jackctl_setup_signals( 00084 unsigned int flags); 00085 00086 EXPORT void 00087 jackctl_wait_signals( 00088 sigset_t signals); 00089 00090 EXPORT jackctl_server_t * 00091 jackctl_server_create( 00092 bool (* on_device_acquire)(const char * device_name), 00093 void (* on_device_release)(const char * device_name)); 00094 00095 EXPORT void 00096 jackctl_server_destroy( 00097 jackctl_server_t * server); 00098 00099 EXPORT const JSList * 00100 jackctl_server_get_drivers_list( 00101 jackctl_server_t * server); 00102 00103 EXPORT bool 00104 jackctl_server_open( 00105 jackctl_server_t * server, 00106 jackctl_driver_t * driver); 00107 00108 EXPORT bool 00109 jackctl_server_start( 00110 jackctl_server_t * server); 00111 00112 EXPORT bool 00113 jackctl_server_stop( 00114 jackctl_server_t * server); 00115 00116 EXPORT bool 00117 jackctl_server_close( 00118 jackctl_server_t * server); 00119 00120 EXPORT const JSList * 00121 jackctl_server_get_parameters( 00122 jackctl_server_t * server); 00123 00124 EXPORT const char * 00125 jackctl_driver_get_name( 00126 jackctl_driver_t * driver); 00127 00128 EXPORT const JSList * 00129 jackctl_driver_get_parameters( 00130 jackctl_driver_t * driver); 00131 00132 EXPORT const char * 00133 jackctl_parameter_get_name( 00134 jackctl_parameter_t * parameter); 00135 00136 EXPORT const char * 00137 jackctl_parameter_get_short_description( 00138 jackctl_parameter_t * parameter); 00139 00140 EXPORT const char * 00141 jackctl_parameter_get_long_description( 00142 jackctl_parameter_t * parameter); 00143 00144 EXPORT jackctl_param_type_t 00145 jackctl_parameter_get_type( 00146 jackctl_parameter_t * parameter); 00147 00148 EXPORT char 00149 jackctl_parameter_get_id( 00150 jackctl_parameter_t * parameter); 00151 00152 EXPORT bool 00153 jackctl_parameter_is_set( 00154 jackctl_parameter_t * parameter); 00155 00156 EXPORT bool 00157 jackctl_parameter_reset( 00158 jackctl_parameter_t * parameter); 00159 00160 EXPORT union jackctl_parameter_value 00161 jackctl_parameter_get_value( 00162 jackctl_parameter_t * parameter); 00163 00164 EXPORT bool 00165 jackctl_parameter_set_value( 00166 jackctl_parameter_t * parameter, 00167 const union jackctl_parameter_value * value_ptr); 00168 00169 EXPORT union jackctl_parameter_value 00170 jackctl_parameter_get_default_value( 00171 jackctl_parameter_t * parameter); 00172 00173 EXPORT union jackctl_parameter_value 00174 jackctl_parameter_get_default_value( 00175 jackctl_parameter *parameter_ptr); 00176 00177 EXPORT bool 00178 jackctl_parameter_has_range_constraint( 00179 jackctl_parameter_t * parameter_ptr); 00180 00181 EXPORT bool 00182 jackctl_parameter_has_enum_constraint( 00183 jackctl_parameter_t * parameter_ptr); 00184 00185 EXPORT uint32_t 00186 jackctl_parameter_get_enum_constraints_count( 00187 jackctl_parameter_t * parameter_ptr); 00188 00189 EXPORT union jackctl_parameter_value 00190 jackctl_parameter_get_enum_constraint_value( 00191 jackctl_parameter_t * parameter_ptr, 00192 uint32_t index); 00193 00194 EXPORT const char * 00195 jackctl_parameter_get_enum_constraint_description( 00196 jackctl_parameter_t * parameter_ptr, 00197 uint32_t index); 00198 00199 EXPORT void 00200 jackctl_parameter_get_range_constraint( 00201 jackctl_parameter_t * parameter_ptr, 00202 union jackctl_parameter_value * min_ptr, 00203 union jackctl_parameter_value * max_ptr); 00204 00205 EXPORT bool 00206 jackctl_parameter_constraint_is_strict( 00207 jackctl_parameter_t * parameter_ptr); 00208 00209 EXPORT bool 00210 jackctl_parameter_constraint_is_fake_value( 00211 jackctl_parameter_t * parameter_ptr); 00212 00213 EXPORT const JSList * 00214 jackctl_server_get_internals_list( 00215 jackctl_server *server_ptr); 00216 00217 EXPORT const char * 00218 jackctl_internal_get_name( 00219 jackctl_internal *internal_ptr); 00220 00221 EXPORT const JSList * 00222 jackctl_internal_get_parameters( 00223 jackctl_internal *internal_ptr); 00224 00225 EXPORT bool jackctl_server_load_internal( 00226 jackctl_server * server, 00227 jackctl_internal * internal); 00228 00229 EXPORT bool jackctl_server_unload_internal( 00230 jackctl_server * server, 00231 jackctl_internal * internal); 00232 00233 EXPORT bool jackctl_server_add_slave(jackctl_server_t * server, 00234 jackctl_driver_t * driver); 00235 00236 EXPORT bool jackctl_server_remove_slave(jackctl_server_t * server, 00237 jackctl_driver_t * driver); 00238 00239 EXPORT bool 00240 jackctl_server_switch_master(jackctl_server_t * server, 00241 jackctl_driver_t * driver); 00242 00243 #if 0 00244 { /* Adjust editor indent */ 00245 #endif 00246 #ifdef __cplusplus 00247 } /* extern "C" */ 00248 #endif 00249 00250 #endif