Jack2 1.9.8

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 
00028 #ifdef WIN32
00029 #ifdef __MINGW32__
00030 #include <sys/types.h>
00031 typedef _sigset_t       sigset_t;
00032 #else
00033 typedef HANDLE sigset_t;
00034 #endif
00035 #endif
00036 
00038 typedef enum
00039 {
00040     JackParamInt = 1,                   
00041     JackParamUInt,                              
00042     JackParamChar,                              
00043     JackParamString,                    
00044     JackParamBool,                              
00045 } jackctl_param_type_t;
00046 
00048 typedef enum
00049 {
00050     JackMaster = 1,         
00051     JackSlave,              
00052 } jackctl_driver_type_t;
00053 
00055 #define JACK_PARAM_MAX (JackParamBool + 1)
00056 
00058 #define JACK_PARAM_STRING_MAX  127
00059 
00061 /* intentionally similar to jack_driver_param_value_t */
00062 union jackctl_parameter_value
00063 {
00064     uint32_t ui;                                
00065     int32_t i;                                  
00066     char c;                                             
00067     char str[JACK_PARAM_STRING_MAX + 1]; 
00068     bool b;                             
00069 };
00070 
00072 typedef struct jackctl_server jackctl_server_t;
00073 
00075 typedef struct jackctl_driver jackctl_driver_t;
00076 
00078 typedef struct jackctl_internal jackctl_internal_t;
00079 
00081 typedef struct jackctl_parameter jackctl_parameter_t;
00082 
00083 #ifdef __cplusplus
00084 extern "C" {
00085 #endif
00086 #if 0
00087 } /* Adjust editor indent */
00088 #endif
00089 
00090 SERVER_EXPORT sigset_t
00091 jackctl_setup_signals(
00092     unsigned int flags);
00093 
00094 SERVER_EXPORT void
00095 jackctl_wait_signals(
00096     sigset_t signals);
00097 
00098 SERVER_EXPORT jackctl_server_t *
00099 jackctl_server_create(
00100     bool (* on_device_acquire)(const char * device_name),
00101     void (* on_device_release)(const char * device_name));
00102 
00103 SERVER_EXPORT void
00104 jackctl_server_destroy(
00105         jackctl_server_t * server);
00106 
00107 SERVER_EXPORT const JSList *
00108 jackctl_server_get_drivers_list(
00109         jackctl_server_t * server);
00110 
00111 SERVER_EXPORT bool
00112 jackctl_server_open(
00113     jackctl_server_t * server,
00114     jackctl_driver_t * driver);
00115 
00116 SERVER_EXPORT bool
00117 jackctl_server_start(
00118     jackctl_server_t * server);
00119 
00120 SERVER_EXPORT bool
00121 jackctl_server_stop(
00122     jackctl_server_t * server);
00123 
00124 SERVER_EXPORT bool
00125 jackctl_server_close(
00126     jackctl_server_t * server);
00127 
00128 SERVER_EXPORT const JSList *
00129 jackctl_server_get_parameters(
00130         jackctl_server_t * server);
00131 
00132 SERVER_EXPORT const char *
00133 jackctl_driver_get_name(
00134         jackctl_driver_t * driver);
00135 
00136 SERVER_EXPORT jackctl_driver_type_t
00137 jackctl_driver_get_type(
00138         jackctl_driver_t * driver);
00139 
00140 SERVER_EXPORT const JSList *
00141 jackctl_driver_get_parameters(
00142         jackctl_driver_t * driver);
00143 
00144 SERVER_EXPORT const char *
00145 jackctl_parameter_get_name(
00146         jackctl_parameter_t * parameter);
00147 
00148 SERVER_EXPORT const char *
00149 jackctl_parameter_get_short_description(
00150         jackctl_parameter_t * parameter);
00151 
00152 SERVER_EXPORT const char *
00153 jackctl_parameter_get_long_description(
00154         jackctl_parameter_t * parameter);
00155 
00156 SERVER_EXPORT jackctl_param_type_t
00157 jackctl_parameter_get_type(
00158         jackctl_parameter_t * parameter);
00159 
00160 SERVER_EXPORT char
00161 jackctl_parameter_get_id(
00162         jackctl_parameter_t * parameter);
00163 
00164 SERVER_EXPORT bool
00165 jackctl_parameter_is_set(
00166         jackctl_parameter_t * parameter);
00167 
00168 SERVER_EXPORT bool
00169 jackctl_parameter_reset(
00170         jackctl_parameter_t * parameter);
00171 
00172 SERVER_EXPORT union jackctl_parameter_value
00173 jackctl_parameter_get_value(
00174         jackctl_parameter_t * parameter);
00175 
00176 SERVER_EXPORT bool
00177 jackctl_parameter_set_value(
00178         jackctl_parameter_t * parameter,
00179         const union jackctl_parameter_value * value_ptr);
00180 
00181 SERVER_EXPORT union jackctl_parameter_value
00182 jackctl_parameter_get_default_value(
00183         jackctl_parameter_t * parameter);
00184 
00185 SERVER_EXPORT union jackctl_parameter_value
00186 jackctl_parameter_get_default_value(
00187     jackctl_parameter *parameter_ptr);
00188 
00189 SERVER_EXPORT bool
00190 jackctl_parameter_has_range_constraint(
00191         jackctl_parameter_t * parameter_ptr);
00192 
00193 SERVER_EXPORT bool
00194 jackctl_parameter_has_enum_constraint(
00195         jackctl_parameter_t * parameter_ptr);
00196 
00197 SERVER_EXPORT uint32_t
00198 jackctl_parameter_get_enum_constraints_count(
00199         jackctl_parameter_t * parameter_ptr);
00200 
00201 SERVER_EXPORT union jackctl_parameter_value
00202 jackctl_parameter_get_enum_constraint_value(
00203         jackctl_parameter_t * parameter_ptr,
00204         uint32_t index);
00205 
00206 SERVER_EXPORT const char *
00207 jackctl_parameter_get_enum_constraint_description(
00208         jackctl_parameter_t * parameter_ptr,
00209         uint32_t index);
00210 
00211 SERVER_EXPORT void
00212 jackctl_parameter_get_range_constraint(
00213         jackctl_parameter_t * parameter_ptr,
00214         union jackctl_parameter_value * min_ptr,
00215         union jackctl_parameter_value * max_ptr);
00216 
00217 SERVER_EXPORT bool
00218 jackctl_parameter_constraint_is_strict(
00219         jackctl_parameter_t * parameter_ptr);
00220 
00221 SERVER_EXPORT bool
00222 jackctl_parameter_constraint_is_fake_value(
00223         jackctl_parameter_t * parameter_ptr);
00224 
00225 SERVER_EXPORT const JSList *
00226 jackctl_server_get_internals_list(
00227     jackctl_server *server_ptr);
00228 
00229 SERVER_EXPORT const char *
00230 jackctl_internal_get_name(
00231     jackctl_internal *internal_ptr);
00232 
00233 SERVER_EXPORT const JSList *
00234 jackctl_internal_get_parameters(
00235     jackctl_internal *internal_ptr);
00236 
00237 SERVER_EXPORT bool jackctl_server_load_internal(
00238     jackctl_server * server,
00239     jackctl_internal * internal);
00240 
00241 SERVER_EXPORT bool jackctl_server_unload_internal(
00242     jackctl_server * server,
00243     jackctl_internal * internal);
00244 
00245 SERVER_EXPORT bool jackctl_server_add_slave(jackctl_server_t * server,
00246                             jackctl_driver_t * driver);
00247 
00248 SERVER_EXPORT bool jackctl_server_remove_slave(jackctl_server_t * server,
00249                             jackctl_driver_t * driver);
00250 
00251 SERVER_EXPORT bool
00252 jackctl_server_switch_master(jackctl_server_t * server,
00253                             jackctl_driver_t * driver);
00254 
00255 #if 0
00256 { /* Adjust editor indent */
00257 #endif
00258 #ifdef __cplusplus
00259 } /* extern "C" */
00260 #endif
00261 
00262 #endif
00263