Jack2  1.9.7
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/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 */