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