Jack2 1.9.10
|
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/types.h> 00033 #include <jack/jslist.h> 00034 #include <jack/systemdeps.h> 00035 #if !defined(sun) && !defined(__sun__) 00036 #include <stdbool.h> 00037 #endif 00038 00040 typedef enum 00041 { 00042 JackParamInt = 1, 00043 JackParamUInt, 00044 JackParamChar, 00045 JackParamString, 00046 JackParamBool, 00047 } jackctl_param_type_t; 00048 00050 typedef enum 00051 { 00052 JackMaster = 1, 00053 JackSlave 00054 } jackctl_driver_type_t; 00055 00057 #define JACK_PARAM_MAX (JackParamBool + 1) 00058 00060 #define JACK_PARAM_STRING_MAX 127 00061 00063 /* intentionally similar to jack_driver_param_value_t */ 00064 union jackctl_parameter_value 00065 { 00066 uint32_t ui; 00067 int32_t i; 00068 char c; 00069 char str[JACK_PARAM_STRING_MAX + 1]; 00070 bool b; 00071 }; 00072 00074 typedef struct jackctl_server jackctl_server_t; 00075 00077 typedef struct jackctl_driver jackctl_driver_t; 00078 00080 typedef struct jackctl_internal jackctl_internal_t; 00081 00083 typedef struct jackctl_parameter jackctl_parameter_t; 00084 00086 typedef struct jackctl_sigmask jackctl_sigmask_t; 00087 00088 #ifdef __cplusplus 00089 extern "C" { 00090 #endif 00091 #if 0 00092 } /* Adjust editor indent */ 00093 #endif 00094 00109 jackctl_sigmask_t * 00110 jackctl_setup_signals( 00111 unsigned int flags); 00112 00118 void 00119 jackctl_wait_signals( 00120 jackctl_sigmask_t * signals); 00121 00132 jackctl_server_t * 00133 jackctl_server_create( 00134 bool (* on_device_acquire)(const char * device_name), 00135 void (* on_device_release)(const char * device_name)); 00136 00142 void 00143 jackctl_server_destroy( 00144 jackctl_server_t * server); 00145 00154 bool 00155 jackctl_server_open( 00156 jackctl_server_t * server, 00157 jackctl_driver_t * driver); 00158 00166 bool 00167 jackctl_server_start( 00168 jackctl_server_t * server); 00169 00177 bool 00178 jackctl_server_stop( 00179 jackctl_server_t * server); 00180 00188 bool 00189 jackctl_server_close( 00190 jackctl_server_t * server); 00191 00201 const JSList * 00202 jackctl_server_get_drivers_list( 00203 jackctl_server_t * server); 00204 00214 const JSList * 00215 jackctl_server_get_parameters( 00216 jackctl_server_t * server); 00217 00227 const JSList * 00228 jackctl_server_get_internals_list( 00229 jackctl_server_t * server); 00230 00240 bool 00241 jackctl_server_load_internal( 00242 jackctl_server_t * server, 00243 jackctl_internal_t * internal); 00244 00254 bool 00255 jackctl_server_unload_internal( 00256 jackctl_server_t * server, 00257 jackctl_internal_t * internal); 00258 00269 bool 00270 jackctl_server_add_slave(jackctl_server_t * server, 00271 jackctl_driver_t * driver); 00272 00283 bool 00284 jackctl_server_remove_slave(jackctl_server_t * server, 00285 jackctl_driver_t * driver); 00286 00295 bool 00296 jackctl_server_switch_master(jackctl_server_t * server, 00297 jackctl_driver_t * driver); 00298 00299 00308 const char * 00309 jackctl_driver_get_name( 00310 jackctl_driver_t * driver); 00311 00320 jackctl_driver_type_t 00321 jackctl_driver_get_type( 00322 jackctl_driver_t * driver); 00323 00333 const JSList * 00334 jackctl_driver_get_parameters( 00335 jackctl_driver_t * driver); 00336 00346 int 00347 jackctl_driver_params_parse( 00348 jackctl_driver_t * driver, 00349 int argc, 00350 char* argv[]); 00351 00360 const char * 00361 jackctl_internal_get_name( 00362 jackctl_internal_t * internal); 00363 00373 const JSList * 00374 jackctl_internal_get_parameters( 00375 jackctl_internal_t * internal); 00376 00385 const char * 00386 jackctl_parameter_get_name( 00387 jackctl_parameter_t * parameter); 00388 00397 const char * 00398 jackctl_parameter_get_short_description( 00399 jackctl_parameter_t * parameter); 00400 00409 const char * 00410 jackctl_parameter_get_long_description( 00411 jackctl_parameter_t * parameter); 00412 00420 jackctl_param_type_t 00421 jackctl_parameter_get_type( 00422 jackctl_parameter_t * parameter); 00423 00431 char 00432 jackctl_parameter_get_id( 00433 jackctl_parameter_t * parameter); 00434 00444 bool 00445 jackctl_parameter_is_set( 00446 jackctl_parameter_t * parameter); 00447 00455 bool 00456 jackctl_parameter_reset( 00457 jackctl_parameter_t * parameter); 00458 00466 union jackctl_parameter_value 00467 jackctl_parameter_get_value( 00468 jackctl_parameter_t * parameter); 00469 00478 bool 00479 jackctl_parameter_set_value( 00480 jackctl_parameter_t * parameter, 00481 const union jackctl_parameter_value * value_ptr); 00482 00490 union jackctl_parameter_value 00491 jackctl_parameter_get_default_value( 00492 jackctl_parameter_t * parameter); 00493 00501 bool 00502 jackctl_parameter_has_range_constraint( 00503 jackctl_parameter_t * parameter); 00504 00512 bool 00513 jackctl_parameter_has_enum_constraint( 00514 jackctl_parameter_t * parameter); 00515 00523 uint32_t 00524 jackctl_parameter_get_enum_constraints_count( 00525 jackctl_parameter_t * parameter); 00526 00535 union jackctl_parameter_value 00536 jackctl_parameter_get_enum_constraint_value( 00537 jackctl_parameter_t * parameter, 00538 uint32_t index); 00539 00548 const char * 00549 jackctl_parameter_get_enum_constraint_description( 00550 jackctl_parameter_t * parameter, 00551 uint32_t index); 00552 00560 void 00561 jackctl_parameter_get_range_constraint( 00562 jackctl_parameter_t * parameter, 00563 union jackctl_parameter_value * min_ptr, 00564 union jackctl_parameter_value * max_ptr); 00565 00574 bool 00575 jackctl_parameter_constraint_is_strict( 00576 jackctl_parameter_t * parameter); 00577 00587 bool 00588 jackctl_parameter_constraint_is_fake_value( 00589 jackctl_parameter_t * parameter); 00590 00596 void 00597 jack_error( 00598 const char *format, 00599 ...); 00600 00606 void 00607 jack_info( 00608 const char *format, 00609 ...); 00610 00617 void 00618 jack_log( 00619 const char *format, 00620 ...); 00621 00622 /* @} */ 00623 00624 #if 0 00625 { /* Adjust editor indent */ 00626 #endif 00627 #ifdef __cplusplus 00628 } /* extern "C" */ 00629 #endif 00630 00631 #endif /* #ifndef JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED */