Jack2
1.9.8
|
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 typedef enum 00050 { 00051 JackMaster = 1, 00052 JackSlave 00053 } jackctl_driver_type_t; 00054 00056 #define JACK_PARAM_MAX (JackParamBool + 1) 00057 00059 #define JACK_PARAM_STRING_MAX 127 00060 00062 /* intentionally similar to jack_driver_param_value_t */ 00063 union jackctl_parameter_value 00064 { 00065 uint32_t ui; 00066 int32_t i; 00067 char c; 00068 char str[JACK_PARAM_STRING_MAX + 1]; 00069 bool b; 00070 }; 00071 00073 typedef struct jackctl_server jackctl_server_t; 00074 00076 typedef struct jackctl_driver jackctl_driver_t; 00077 00079 typedef struct jackctl_internal jackctl_internal_t; 00080 00082 typedef struct jackctl_parameter jackctl_parameter_t; 00083 00084 #ifdef __cplusplus 00085 extern "C" { 00086 #endif 00087 #if 0 00088 } /* Adjust editor indent */ 00089 #endif 00090 00105 sigset_t 00106 jackctl_setup_signals( 00107 unsigned int flags); 00108 00114 void 00115 jackctl_wait_signals( 00116 sigset_t signals); 00117 00128 jackctl_server_t * 00129 jackctl_server_create( 00130 bool (* on_device_acquire)(const char * device_name), 00131 void (* on_device_release)(const char * device_name)); 00132 00138 void 00139 jackctl_server_destroy( 00140 jackctl_server_t * server); 00141 00150 bool 00151 jackctl_server_open( 00152 jackctl_server_t * server, 00153 jackctl_driver_t * driver); 00154 00162 bool 00163 jackctl_server_start( 00164 jackctl_server_t * server); 00165 00173 bool 00174 jackctl_server_stop( 00175 jackctl_server_t * server); 00176 00184 bool 00185 jackctl_server_close( 00186 jackctl_server_t * server); 00187 00197 const JSList * 00198 jackctl_server_get_drivers_list( 00199 jackctl_server_t * server); 00200 00210 const JSList * 00211 jackctl_server_get_parameters( 00212 jackctl_server_t * server); 00213 00223 const JSList * 00224 jackctl_server_get_internals_list( 00225 jackctl_server_t * server); 00226 00236 bool 00237 jackctl_server_load_internal( 00238 jackctl_server_t * server, 00239 jackctl_internal_t * internal); 00240 00250 bool 00251 jackctl_server_unload_internal( 00252 jackctl_server_t * server, 00253 jackctl_internal_t * internal); 00254 00265 bool 00266 jackctl_server_add_slave(jackctl_server_t * server, 00267 jackctl_driver_t * driver); 00268 00279 bool 00280 jackctl_server_remove_slave(jackctl_server_t * server, 00281 jackctl_driver_t * driver); 00282 00291 bool 00292 jackctl_server_switch_master(jackctl_server_t * server, 00293 jackctl_driver_t * driver); 00294 00295 00304 const char * 00305 jackctl_driver_get_name( 00306 jackctl_driver_t * driver); 00307 00316 jackctl_driver_type_t 00317 jackctl_driver_get_type( 00318 jackctl_driver_t * driver); 00319 00329 const JSList * 00330 jackctl_driver_get_parameters( 00331 jackctl_driver_t * driver); 00332 00341 const char * 00342 jackctl_internal_get_name( 00343 jackctl_internal_t * internal); 00344 00354 const JSList * 00355 jackctl_internal_get_parameters( 00356 jackctl_internal_t * internal); 00357 00366 const char * 00367 jackctl_parameter_get_name( 00368 jackctl_parameter_t * parameter); 00369 00378 const char * 00379 jackctl_parameter_get_short_description( 00380 jackctl_parameter_t * parameter); 00381 00390 const char * 00391 jackctl_parameter_get_long_description( 00392 jackctl_parameter_t * parameter); 00393 00401 jackctl_param_type_t 00402 jackctl_parameter_get_type( 00403 jackctl_parameter_t * parameter); 00404 00412 char 00413 jackctl_parameter_get_id( 00414 jackctl_parameter_t * parameter); 00415 00425 bool 00426 jackctl_parameter_is_set( 00427 jackctl_parameter_t * parameter); 00428 00436 bool 00437 jackctl_parameter_reset( 00438 jackctl_parameter_t * parameter); 00439 00447 union jackctl_parameter_value 00448 jackctl_parameter_get_value( 00449 jackctl_parameter_t * parameter); 00450 00459 bool 00460 jackctl_parameter_set_value( 00461 jackctl_parameter_t * parameter, 00462 const union jackctl_parameter_value * value_ptr); 00463 00471 union jackctl_parameter_value 00472 jackctl_parameter_get_default_value( 00473 jackctl_parameter_t * parameter); 00474 00482 bool 00483 jackctl_parameter_has_range_constraint( 00484 jackctl_parameter_t * parameter); 00485 00493 bool 00494 jackctl_parameter_has_enum_constraint( 00495 jackctl_parameter_t * parameter); 00496 00504 uint32_t 00505 jackctl_parameter_get_enum_constraints_count( 00506 jackctl_parameter_t * parameter); 00507 00516 union jackctl_parameter_value 00517 jackctl_parameter_get_enum_constraint_value( 00518 jackctl_parameter_t * parameter, 00519 uint32_t index); 00520 00529 const char * 00530 jackctl_parameter_get_enum_constraint_description( 00531 jackctl_parameter_t * parameter, 00532 uint32_t index); 00533 00541 void 00542 jackctl_parameter_get_range_constraint( 00543 jackctl_parameter_t * parameter, 00544 union jackctl_parameter_value * min_ptr, 00545 union jackctl_parameter_value * max_ptr); 00546 00555 bool 00556 jackctl_parameter_constraint_is_strict( 00557 jackctl_parameter_t * parameter); 00558 00568 bool 00569 jackctl_parameter_constraint_is_fake_value( 00570 jackctl_parameter_t * parameter); 00571 00577 void 00578 jack_error( 00579 const char *format, 00580 ...); 00581 00587 void 00588 jack_info( 00589 const char *format, 00590 ...); 00591 00598 void 00599 jack_log( 00600 const char *format, 00601 ...); 00602 00603 /* @} */ 00604 00605 #if 0 00606 { /* Adjust editor indent */ 00607 #endif 00608 #ifdef __cplusplus 00609 } /* extern "C" */ 00610 #endif 00611 00612 #endif /* #ifndef JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED */