Jack2 1.9.10

JackControlAPI.h

00001 /*
00002   JACK control API
00003 
00004   Copyright (C) 2008 Nedko Arnaudov
00005   Copyright (C) 2008 Grame
00006 
00007   This program is free software; you can redistribute it and/or modify
00008   it under the terms of the GNU General Public License as published by
00009   the Free Software Foundation; version 2 of the License.
00010 
00011   This program is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014   GNU General Public License for more details.
00015 
00016   You should have received a copy of the GNU General Public License
00017   along with this program; if not, write to the Free Software
00018   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019 
00020 */
00021 
00022 #ifndef __JackControlAPI__
00023 #define __JackControlAPI__
00024 
00025 #include "jslist.h"
00026 #include "JackCompilerDeps.h"
00027 
00029 typedef enum
00030 {
00031     JackParamInt = 1,                   
00032     JackParamUInt,                              
00033     JackParamChar,                              
00034     JackParamString,                    
00035     JackParamBool,                              
00036 } jackctl_param_type_t;
00037 
00039 typedef enum
00040 {
00041     JackMaster = 1,         
00042     JackSlave,              
00043 } jackctl_driver_type_t;
00044 
00046 #define JACK_PARAM_MAX (JackParamBool + 1)
00047 
00049 #define JACK_PARAM_STRING_MAX  127
00050 
00052 /* intentionally similar to jack_driver_param_value_t */
00053 union jackctl_parameter_value
00054 {
00055     uint32_t ui;                                
00056     int32_t i;                                  
00057     char c;                                             
00058     char str[JACK_PARAM_STRING_MAX + 1]; 
00059     bool b;                             
00060 };
00061 
00063 typedef struct jackctl_server jackctl_server_t;
00064 
00066 typedef struct jackctl_driver jackctl_driver_t;
00067 
00069 typedef struct jackctl_internal jackctl_internal_t;
00070 
00072 typedef struct jackctl_parameter jackctl_parameter_t;
00073 
00075 typedef struct jackctl_sigmask jackctl_sigmask_t;
00076 
00077 #ifdef __cplusplus
00078 extern "C" {
00079 #endif
00080 #if 0
00081 } /* Adjust editor indent */
00082 #endif
00083 
00084 SERVER_EXPORT jackctl_sigmask_t *
00085 jackctl_setup_signals(
00086     unsigned int flags);
00087 
00088 SERVER_EXPORT void
00089 jackctl_wait_signals(
00090     jackctl_sigmask_t * signals);
00091 
00092 SERVER_EXPORT jackctl_server_t *
00093 jackctl_server_create(
00094     bool (* on_device_acquire)(const char * device_name),
00095     void (* on_device_release)(const char * device_name));
00096 
00097 SERVER_EXPORT void
00098 jackctl_server_destroy(
00099         jackctl_server_t * server);
00100 
00101 SERVER_EXPORT const JSList *
00102 jackctl_server_get_drivers_list(
00103         jackctl_server_t * server);
00104 
00105 SERVER_EXPORT bool
00106 jackctl_server_open(
00107     jackctl_server_t * server,
00108     jackctl_driver_t * driver);
00109 
00110 SERVER_EXPORT bool
00111 jackctl_server_start(
00112     jackctl_server_t * server);
00113 
00114 SERVER_EXPORT bool
00115 jackctl_server_stop(
00116     jackctl_server_t * server);
00117 
00118 SERVER_EXPORT bool
00119 jackctl_server_close(
00120     jackctl_server_t * server);
00121 
00122 SERVER_EXPORT const JSList *
00123 jackctl_server_get_parameters(
00124         jackctl_server_t * server);
00125 
00126 SERVER_EXPORT const char *
00127 jackctl_driver_get_name(
00128         jackctl_driver_t * driver);
00129 
00130 SERVER_EXPORT jackctl_driver_type_t
00131 jackctl_driver_get_type(
00132         jackctl_driver_t * driver);
00133 
00134 SERVER_EXPORT const JSList *
00135 jackctl_driver_get_parameters(
00136         jackctl_driver_t * driver);
00137 
00138 SERVER_EXPORT const char *
00139 jackctl_parameter_get_name(
00140         jackctl_parameter_t * parameter);
00141 
00142 SERVER_EXPORT const char *
00143 jackctl_parameter_get_short_description(
00144         jackctl_parameter_t * parameter);
00145 
00146 SERVER_EXPORT const char *
00147 jackctl_parameter_get_long_description(
00148         jackctl_parameter_t * parameter);
00149 
00150 SERVER_EXPORT jackctl_param_type_t
00151 jackctl_parameter_get_type(
00152         jackctl_parameter_t * parameter);
00153 
00154 SERVER_EXPORT char
00155 jackctl_parameter_get_id(
00156         jackctl_parameter_t * parameter);
00157 
00158 SERVER_EXPORT bool
00159 jackctl_parameter_is_set(
00160         jackctl_parameter_t * parameter);
00161 
00162 SERVER_EXPORT bool
00163 jackctl_parameter_reset(
00164         jackctl_parameter_t * parameter);
00165 
00166 SERVER_EXPORT union jackctl_parameter_value
00167 jackctl_parameter_get_value(
00168         jackctl_parameter_t * parameter);
00169 
00170 SERVER_EXPORT bool
00171 jackctl_parameter_set_value(
00172         jackctl_parameter_t * parameter,
00173         const union jackctl_parameter_value * value_ptr);
00174 
00175 SERVER_EXPORT union jackctl_parameter_value
00176 jackctl_parameter_get_default_value(
00177         jackctl_parameter_t * parameter);
00178 
00179 SERVER_EXPORT union jackctl_parameter_value
00180 jackctl_parameter_get_default_value(
00181     jackctl_parameter *parameter_ptr);
00182 
00183 SERVER_EXPORT bool
00184 jackctl_parameter_has_range_constraint(
00185         jackctl_parameter_t * parameter_ptr);
00186 
00187 SERVER_EXPORT bool
00188 jackctl_parameter_has_enum_constraint(
00189         jackctl_parameter_t * parameter_ptr);
00190 
00191 SERVER_EXPORT uint32_t
00192 jackctl_parameter_get_enum_constraints_count(
00193         jackctl_parameter_t * parameter_ptr);
00194 
00195 SERVER_EXPORT union jackctl_parameter_value
00196 jackctl_parameter_get_enum_constraint_value(
00197         jackctl_parameter_t * parameter_ptr,
00198         uint32_t index);
00199 
00200 SERVER_EXPORT const char *
00201 jackctl_parameter_get_enum_constraint_description(
00202         jackctl_parameter_t * parameter_ptr,
00203         uint32_t index);
00204 
00205 SERVER_EXPORT void
00206 jackctl_parameter_get_range_constraint(
00207         jackctl_parameter_t * parameter_ptr,
00208         union jackctl_parameter_value * min_ptr,
00209         union jackctl_parameter_value * max_ptr);
00210 
00211 SERVER_EXPORT bool
00212 jackctl_parameter_constraint_is_strict(
00213         jackctl_parameter_t * parameter_ptr);
00214 
00215 SERVER_EXPORT bool
00216 jackctl_parameter_constraint_is_fake_value(
00217         jackctl_parameter_t * parameter_ptr);
00218 
00219 SERVER_EXPORT const JSList *
00220 jackctl_server_get_internals_list(
00221     jackctl_server *server_ptr);
00222 
00223 SERVER_EXPORT const char *
00224 jackctl_internal_get_name(
00225     jackctl_internal *internal_ptr);
00226 
00227 SERVER_EXPORT const JSList *
00228 jackctl_internal_get_parameters(
00229     jackctl_internal *internal_ptr);
00230 
00231 SERVER_EXPORT bool jackctl_server_load_internal(
00232     jackctl_server * server,
00233     jackctl_internal * internal);
00234 
00235 SERVER_EXPORT bool jackctl_server_unload_internal(
00236     jackctl_server * server,
00237     jackctl_internal * internal);
00238 
00239 SERVER_EXPORT bool jackctl_server_add_slave(jackctl_server_t * server,
00240                             jackctl_driver_t * driver);
00241 
00242 SERVER_EXPORT bool jackctl_server_remove_slave(jackctl_server_t * server,
00243                             jackctl_driver_t * driver);
00244 
00245 SERVER_EXPORT bool
00246 jackctl_server_switch_master(jackctl_server_t * server,
00247                             jackctl_driver_t * driver);
00248 
00249 SERVER_EXPORT int
00250 jackctl_parse_driver_params(jackctl_driver * driver_ptr, int argc, char* argv[]);
00251 
00252 #if 0
00253 { /* Adjust editor indent */
00254 #endif
00255 #ifdef __cplusplus
00256 } /* extern "C" */
00257 #endif
00258 
00259 #endif
00260