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