Jack2 1.9.6
|
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_start( 00105 jackctl_server_t * server, 00106 jackctl_driver_t * driver); 00107 00108 EXPORT bool 00109 jackctl_server_stop( 00110 jackctl_server_t * server); 00111 00112 EXPORT const JSList * 00113 jackctl_server_get_parameters( 00114 jackctl_server_t * server); 00115 00116 EXPORT const char * 00117 jackctl_driver_get_name( 00118 jackctl_driver_t * driver); 00119 00120 EXPORT const JSList * 00121 jackctl_driver_get_parameters( 00122 jackctl_driver_t * driver); 00123 00124 EXPORT const char * 00125 jackctl_parameter_get_name( 00126 jackctl_parameter_t * parameter); 00127 00128 EXPORT const char * 00129 jackctl_parameter_get_short_description( 00130 jackctl_parameter_t * parameter); 00131 00132 EXPORT const char * 00133 jackctl_parameter_get_long_description( 00134 jackctl_parameter_t * parameter); 00135 00136 EXPORT jackctl_param_type_t 00137 jackctl_parameter_get_type( 00138 jackctl_parameter_t * parameter); 00139 00140 EXPORT char 00141 jackctl_parameter_get_id( 00142 jackctl_parameter_t * parameter); 00143 00144 EXPORT bool 00145 jackctl_parameter_is_set( 00146 jackctl_parameter_t * parameter); 00147 00148 EXPORT bool 00149 jackctl_parameter_reset( 00150 jackctl_parameter_t * parameter); 00151 00152 EXPORT union jackctl_parameter_value 00153 jackctl_parameter_get_value( 00154 jackctl_parameter_t * parameter); 00155 00156 EXPORT bool 00157 jackctl_parameter_set_value( 00158 jackctl_parameter_t * parameter, 00159 const union jackctl_parameter_value * value_ptr); 00160 00161 EXPORT union jackctl_parameter_value 00162 jackctl_parameter_get_default_value( 00163 jackctl_parameter_t * parameter); 00164 00165 EXPORT union jackctl_parameter_value 00166 jackctl_parameter_get_default_value( 00167 jackctl_parameter *parameter_ptr); 00168 00169 EXPORT bool 00170 jackctl_parameter_has_range_constraint( 00171 jackctl_parameter_t * parameter_ptr); 00172 00173 EXPORT bool 00174 jackctl_parameter_has_enum_constraint( 00175 jackctl_parameter_t * parameter_ptr); 00176 00177 EXPORT uint32_t 00178 jackctl_parameter_get_enum_constraints_count( 00179 jackctl_parameter_t * parameter_ptr); 00180 00181 EXPORT union jackctl_parameter_value 00182 jackctl_parameter_get_enum_constraint_value( 00183 jackctl_parameter_t * parameter_ptr, 00184 uint32_t index); 00185 00186 EXPORT const char * 00187 jackctl_parameter_get_enum_constraint_description( 00188 jackctl_parameter_t * parameter_ptr, 00189 uint32_t index); 00190 00191 EXPORT void 00192 jackctl_parameter_get_range_constraint( 00193 jackctl_parameter_t * parameter_ptr, 00194 union jackctl_parameter_value * min_ptr, 00195 union jackctl_parameter_value * max_ptr); 00196 00197 EXPORT bool 00198 jackctl_parameter_constraint_is_strict( 00199 jackctl_parameter_t * parameter_ptr); 00200 00201 EXPORT bool 00202 jackctl_parameter_constraint_is_fake_value( 00203 jackctl_parameter_t * parameter_ptr); 00204 00205 EXPORT const JSList * 00206 jackctl_server_get_internals_list( 00207 jackctl_server *server_ptr); 00208 00209 EXPORT const char * 00210 jackctl_internal_get_name( 00211 jackctl_internal *internal_ptr); 00212 00213 EXPORT const JSList * 00214 jackctl_internal_get_parameters( 00215 jackctl_internal *internal_ptr); 00216 00217 EXPORT bool jackctl_server_load_internal( 00218 jackctl_server * server, 00219 jackctl_internal * internal); 00220 00221 EXPORT bool jackctl_server_unload_internal( 00222 jackctl_server * server, 00223 jackctl_internal * internal); 00224 00225 EXPORT bool jackctl_server_add_slave(jackctl_server_t * server, 00226 jackctl_driver_t * driver); 00227 00228 EXPORT bool jackctl_server_remove_slave(jackctl_server_t * server, 00229 jackctl_driver_t * driver); 00230 00231 EXPORT bool 00232 jackctl_server_switch_master(jackctl_server_t * server, 00233 jackctl_driver_t * driver); 00234 00235 #if 0 00236 { /* Adjust editor indent */ 00237 #endif 00238 #ifdef __cplusplus 00239 } /* extern "C" */ 00240 #endif 00241 00242 #endif