00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
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 }
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 {
00245 #endif
00246 #ifdef __cplusplus
00247 }
00248 #endif
00249
00250 #endif