Jack2 1.9.7
|
00001 /* -*- Mode: C ; c-basic-offset: 4 -*- */ 00002 /* 00003 JACK control API 00004 00005 Copyright (C) 2008 Nedko Arnaudov 00006 Copyright (C) 2008 GRAME 00007 00008 This program is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; version 2 of the License. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00020 00021 */ 00029 #ifndef JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED 00030 #define JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED 00031 00032 #include <jack/jslist.h> 00033 #include <jack/systemdeps.h> 00034 #if !defined (__sun__) 00035 #include <stdbool.h> 00036 #endif 00037 00039 typedef enum 00040 { 00041 JackParamInt = 1, 00042 JackParamUInt, 00043 JackParamChar, 00044 JackParamString, 00045 JackParamBool, 00046 } jackctl_param_type_t; 00047 00049 #define JACK_PARAM_MAX (JackParamBool + 1) 00050 00052 #define JACK_PARAM_STRING_MAX 127 00053 00055 /* intentionally similar to jack_driver_param_value_t */ 00056 union jackctl_parameter_value 00057 { 00058 uint32_t ui; 00059 int32_t i; 00060 char c; 00061 char str[JACK_PARAM_STRING_MAX + 1]; 00062 bool b; 00063 }; 00064 00066 typedef struct jackctl_server jackctl_server_t; 00067 00069 typedef struct jackctl_driver jackctl_driver_t; 00070 00072 typedef struct jackctl_internal jackctl_internal_t; 00073 00075 typedef struct jackctl_parameter jackctl_parameter_t; 00076 00077 #ifdef __cplusplus 00078 extern "C" { 00079 #endif 00080 #if 0 00081 } /* Adjust editor indent */ 00082 #endif 00083 00098 sigset_t 00099 jackctl_setup_signals( 00100 unsigned int flags); 00101 00107 void 00108 jackctl_wait_signals( 00109 sigset_t signals); 00110 00121 jackctl_server_t * 00122 jackctl_server_create( 00123 bool (* on_device_acquire)(const char * device_name), 00124 void (* on_device_release)(const char * device_name)); 00125 00131 void 00132 jackctl_server_destroy( 00133 jackctl_server_t * server); 00134 00143 bool 00144 jackctl_server_open( 00145 jackctl_server_t * server, 00146 jackctl_driver_t * driver); 00147 00155 bool 00156 jackctl_server_start( 00157 jackctl_server_t * server); 00158 00166 bool 00167 jackctl_server_stop( 00168 jackctl_server_t * server); 00169 00177 bool 00178 jackctl_server_close( 00179 jackctl_server_t * server); 00180 00190 const JSList * 00191 jackctl_server_get_drivers_list( 00192 jackctl_server_t * server); 00193 00203 const JSList * 00204 jackctl_server_get_parameters( 00205 jackctl_server_t * server); 00206 00216 const JSList * 00217 jackctl_server_get_internals_list( 00218 jackctl_server_t * server); 00219 00229 bool 00230 jackctl_server_load_internal( 00231 jackctl_server_t * server, 00232 jackctl_internal_t * internal); 00233 00243 bool 00244 jackctl_server_unload_internal( 00245 jackctl_server_t * server, 00246 jackctl_internal_t * internal); 00247 00258 bool 00259 jackctl_server_add_slave(jackctl_server_t * server, 00260 jackctl_driver_t * driver); 00261 00272 bool 00273 jackctl_server_remove_slave(jackctl_server_t * server, 00274 jackctl_driver_t * driver); 00275 00284 bool 00285 jackctl_server_switch_master(jackctl_server_t * server, 00286 jackctl_driver_t * driver); 00287 00288 00297 const char * 00298 jackctl_driver_get_name( 00299 jackctl_driver_t * driver); 00300 00310 const JSList * 00311 jackctl_driver_get_parameters( 00312 jackctl_driver_t * driver); 00313 00322 const char * 00323 jackctl_internal_get_name( 00324 jackctl_internal_t * internal); 00325 00335 const JSList * 00336 jackctl_internal_get_parameters( 00337 jackctl_internal_t * internal); 00338 00347 const char * 00348 jackctl_parameter_get_name( 00349 jackctl_parameter_t * parameter); 00350 00359 const char * 00360 jackctl_parameter_get_short_description( 00361 jackctl_parameter_t * parameter); 00362 00371 const char * 00372 jackctl_parameter_get_long_description( 00373 jackctl_parameter_t * parameter); 00374 00382 jackctl_param_type_t 00383 jackctl_parameter_get_type( 00384 jackctl_parameter_t * parameter); 00385 00393 char 00394 jackctl_parameter_get_id( 00395 jackctl_parameter_t * parameter); 00396 00406 bool 00407 jackctl_parameter_is_set( 00408 jackctl_parameter_t * parameter); 00409 00417 bool 00418 jackctl_parameter_reset( 00419 jackctl_parameter_t * parameter); 00420 00428 union jackctl_parameter_value 00429 jackctl_parameter_get_value( 00430 jackctl_parameter_t * parameter); 00431 00440 bool 00441 jackctl_parameter_set_value( 00442 jackctl_parameter_t * parameter, 00443 const union jackctl_parameter_value * value_ptr); 00444 00452 union jackctl_parameter_value 00453 jackctl_parameter_get_default_value( 00454 jackctl_parameter_t * parameter); 00455 00463 bool 00464 jackctl_parameter_has_range_constraint( 00465 jackctl_parameter_t * parameter); 00466 00474 bool 00475 jackctl_parameter_has_enum_constraint( 00476 jackctl_parameter_t * parameter); 00477 00485 uint32_t 00486 jackctl_parameter_get_enum_constraints_count( 00487 jackctl_parameter_t * parameter); 00488 00497 union jackctl_parameter_value 00498 jackctl_parameter_get_enum_constraint_value( 00499 jackctl_parameter_t * parameter, 00500 uint32_t index); 00501 00510 const char * 00511 jackctl_parameter_get_enum_constraint_description( 00512 jackctl_parameter_t * parameter, 00513 uint32_t index); 00514 00522 void 00523 jackctl_parameter_get_range_constraint( 00524 jackctl_parameter_t * parameter, 00525 union jackctl_parameter_value * min_ptr, 00526 union jackctl_parameter_value * max_ptr); 00527 00536 bool 00537 jackctl_parameter_constraint_is_strict( 00538 jackctl_parameter_t * parameter); 00539 00549 bool 00550 jackctl_parameter_constraint_is_fake_value( 00551 jackctl_parameter_t * parameter); 00552 00558 void 00559 jack_error( 00560 const char *format, 00561 ...); 00562 00568 void 00569 jack_info( 00570 const char *format, 00571 ...); 00572 00579 void 00580 jack_log( 00581 const char *format, 00582 ...); 00583 00584 /* @} */ 00585 00586 #if 0 00587 { /* Adjust editor indent */ 00588 #endif 00589 #ifdef __cplusplus 00590 } /* extern "C" */ 00591 #endif 00592 00593 #endif /* #ifndef JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED */