00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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
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 }
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 {
00626 #endif
00627 #ifdef __cplusplus
00628 }
00629 #endif
00630
00631 #endif