Jack2  1.9.10
control.h
Go to the documentation of this file.
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 */