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

Generated for Jack2 by doxygen 1.8.0