Jack2
1.9.10
|
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 00029 typedef enum 00030 { 00031 JackParamInt = 1, 00032 JackParamUInt, 00033 JackParamChar, 00034 JackParamString, 00035 JackParamBool, 00036 } jackctl_param_type_t; 00037 00039 typedef enum 00040 { 00041 JackMaster = 1, 00042 JackSlave, 00043 } jackctl_driver_type_t; 00044 00046 #define JACK_PARAM_MAX (JackParamBool + 1) 00047 00049 #define JACK_PARAM_STRING_MAX 127 00050 00052 /* intentionally similar to jack_driver_param_value_t */ 00053 union jackctl_parameter_value 00054 { 00055 uint32_t ui; 00056 int32_t i; 00057 char c; 00058 char str[JACK_PARAM_STRING_MAX + 1]; 00059 bool b; 00060 }; 00061 00063 typedef struct jackctl_server jackctl_server_t; 00064 00066 typedef struct jackctl_driver jackctl_driver_t; 00067 00069 typedef struct jackctl_internal jackctl_internal_t; 00070 00072 typedef struct jackctl_parameter jackctl_parameter_t; 00073 00075 typedef struct jackctl_sigmask jackctl_sigmask_t; 00076 00077 #ifdef __cplusplus 00078 extern "C" { 00079 #endif 00080 #if 0 00081 } /* Adjust editor indent */ 00082 #endif 00083 00084 SERVER_EXPORT jackctl_sigmask_t * 00085 jackctl_setup_signals( 00086 unsigned int flags); 00087 00088 SERVER_EXPORT void 00089 jackctl_wait_signals( 00090 jackctl_sigmask_t * signals); 00091 00092 SERVER_EXPORT jackctl_server_t * 00093 jackctl_server_create( 00094 bool (* on_device_acquire)(const char * device_name), 00095 void (* on_device_release)(const char * device_name)); 00096 00097 SERVER_EXPORT void 00098 jackctl_server_destroy( 00099 jackctl_server_t * server); 00100 00101 SERVER_EXPORT const JSList * 00102 jackctl_server_get_drivers_list( 00103 jackctl_server_t * server); 00104 00105 SERVER_EXPORT bool 00106 jackctl_server_open( 00107 jackctl_server_t * server, 00108 jackctl_driver_t * driver); 00109 00110 SERVER_EXPORT bool 00111 jackctl_server_start( 00112 jackctl_server_t * server); 00113 00114 SERVER_EXPORT bool 00115 jackctl_server_stop( 00116 jackctl_server_t * server); 00117 00118 SERVER_EXPORT bool 00119 jackctl_server_close( 00120 jackctl_server_t * server); 00121 00122 SERVER_EXPORT const JSList * 00123 jackctl_server_get_parameters( 00124 jackctl_server_t * server); 00125 00126 SERVER_EXPORT const char * 00127 jackctl_driver_get_name( 00128 jackctl_driver_t * driver); 00129 00130 SERVER_EXPORT jackctl_driver_type_t 00131 jackctl_driver_get_type( 00132 jackctl_driver_t * driver); 00133 00134 SERVER_EXPORT const JSList * 00135 jackctl_driver_get_parameters( 00136 jackctl_driver_t * driver); 00137 00138 SERVER_EXPORT const char * 00139 jackctl_parameter_get_name( 00140 jackctl_parameter_t * parameter); 00141 00142 SERVER_EXPORT const char * 00143 jackctl_parameter_get_short_description( 00144 jackctl_parameter_t * parameter); 00145 00146 SERVER_EXPORT const char * 00147 jackctl_parameter_get_long_description( 00148 jackctl_parameter_t * parameter); 00149 00150 SERVER_EXPORT jackctl_param_type_t 00151 jackctl_parameter_get_type( 00152 jackctl_parameter_t * parameter); 00153 00154 SERVER_EXPORT char 00155 jackctl_parameter_get_id( 00156 jackctl_parameter_t * parameter); 00157 00158 SERVER_EXPORT bool 00159 jackctl_parameter_is_set( 00160 jackctl_parameter_t * parameter); 00161 00162 SERVER_EXPORT bool 00163 jackctl_parameter_reset( 00164 jackctl_parameter_t * parameter); 00165 00166 SERVER_EXPORT union jackctl_parameter_value 00167 jackctl_parameter_get_value( 00168 jackctl_parameter_t * parameter); 00169 00170 SERVER_EXPORT bool 00171 jackctl_parameter_set_value( 00172 jackctl_parameter_t * parameter, 00173 const union jackctl_parameter_value * value_ptr); 00174 00175 SERVER_EXPORT union jackctl_parameter_value 00176 jackctl_parameter_get_default_value( 00177 jackctl_parameter_t * parameter); 00178 00179 SERVER_EXPORT union jackctl_parameter_value 00180 jackctl_parameter_get_default_value( 00181 jackctl_parameter *parameter_ptr); 00182 00183 SERVER_EXPORT bool 00184 jackctl_parameter_has_range_constraint( 00185 jackctl_parameter_t * parameter_ptr); 00186 00187 SERVER_EXPORT bool 00188 jackctl_parameter_has_enum_constraint( 00189 jackctl_parameter_t * parameter_ptr); 00190 00191 SERVER_EXPORT uint32_t 00192 jackctl_parameter_get_enum_constraints_count( 00193 jackctl_parameter_t * parameter_ptr); 00194 00195 SERVER_EXPORT union jackctl_parameter_value 00196 jackctl_parameter_get_enum_constraint_value( 00197 jackctl_parameter_t * parameter_ptr, 00198 uint32_t index); 00199 00200 SERVER_EXPORT const char * 00201 jackctl_parameter_get_enum_constraint_description( 00202 jackctl_parameter_t * parameter_ptr, 00203 uint32_t index); 00204 00205 SERVER_EXPORT void 00206 jackctl_parameter_get_range_constraint( 00207 jackctl_parameter_t * parameter_ptr, 00208 union jackctl_parameter_value * min_ptr, 00209 union jackctl_parameter_value * max_ptr); 00210 00211 SERVER_EXPORT bool 00212 jackctl_parameter_constraint_is_strict( 00213 jackctl_parameter_t * parameter_ptr); 00214 00215 SERVER_EXPORT bool 00216 jackctl_parameter_constraint_is_fake_value( 00217 jackctl_parameter_t * parameter_ptr); 00218 00219 SERVER_EXPORT const JSList * 00220 jackctl_server_get_internals_list( 00221 jackctl_server *server_ptr); 00222 00223 SERVER_EXPORT const char * 00224 jackctl_internal_get_name( 00225 jackctl_internal *internal_ptr); 00226 00227 SERVER_EXPORT const JSList * 00228 jackctl_internal_get_parameters( 00229 jackctl_internal *internal_ptr); 00230 00231 SERVER_EXPORT bool jackctl_server_load_internal( 00232 jackctl_server * server, 00233 jackctl_internal * internal); 00234 00235 SERVER_EXPORT bool jackctl_server_unload_internal( 00236 jackctl_server * server, 00237 jackctl_internal * internal); 00238 00239 SERVER_EXPORT bool jackctl_server_add_slave(jackctl_server_t * server, 00240 jackctl_driver_t * driver); 00241 00242 SERVER_EXPORT bool jackctl_server_remove_slave(jackctl_server_t * server, 00243 jackctl_driver_t * driver); 00244 00245 SERVER_EXPORT bool 00246 jackctl_server_switch_master(jackctl_server_t * server, 00247 jackctl_driver_t * driver); 00248 00249 SERVER_EXPORT int 00250 jackctl_parse_driver_params(jackctl_driver * driver_ptr, int argc, char* argv[]); 00251 00252 #if 0 00253 { /* Adjust editor indent */ 00254 #endif 00255 #ifdef __cplusplus 00256 } /* extern "C" */ 00257 #endif 00258 00259 #endif 00260