jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
4.8KB

  1. /*
  2. JACK control API
  3. Copyright (C) 2008 Nedko Arnaudov
  4. Copyright (C) 2008 Grame
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; version 2 of the License.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15. */
  16. #ifndef __JackControlAPI__
  17. #define __JackControlAPI__
  18. #include "jslist.h"
  19. #include "JackCompilerDeps.h"
  20. #ifdef WIN32
  21. #ifdef __MINGW32__
  22. #include <sys/types.h>
  23. #else
  24. typedef HANDLE sigset_t;
  25. #endif
  26. #endif
  27. /** Parameter types, intentionally similar to jack_driver_param_type_t */
  28. typedef enum
  29. {
  30. JackParamInt = 1, /**< @brief value type is a signed integer */
  31. JackParamUInt, /**< @brief value type is an unsigned integer */
  32. JackParamChar, /**< @brief value type is a char */
  33. JackParamString, /**< @brief value type is a string with max size of ::JACK_PARAM_STRING_MAX+1 chars */
  34. JackParamBool, /**< @brief value type is a boolean */
  35. } jackctl_param_type_t;
  36. /** @brief Max value that jackctl_param_type_t type can have */
  37. #define JACK_PARAM_MAX (JackParamBool + 1)
  38. /** @brief Max length of string parameter value, excluding terminating nul char */
  39. #define JACK_PARAM_STRING_MAX 63
  40. /** @brief Type for parameter value */
  41. /* intentionally similar to jack_driver_param_value_t */
  42. union jackctl_parameter_value
  43. {
  44. uint32_t ui; /**< @brief member used for ::JackParamUInt */
  45. int32_t i; /**< @brief member used for ::JackParamInt */
  46. char c; /**< @brief member used for ::JackParamChar */
  47. char str[JACK_PARAM_STRING_MAX + 1]; /**< @brief member used for ::JackParamString */
  48. bool b; /**< @brief member used for ::JackParamBool */
  49. };
  50. /** opaque type for server object */
  51. typedef struct jackctl_server jackctl_server_t;
  52. /** opaque type for driver object */
  53. typedef struct jackctl_driver jackctl_driver_t;
  54. /** opaque type for internal client object */
  55. typedef struct jackctl_internal jackctl_internal_t;
  56. /** opaque type for parameter object */
  57. typedef struct jackctl_parameter jackctl_parameter_t;
  58. #ifdef __cplusplus
  59. extern "C" {
  60. #endif
  61. #if 0
  62. } /* Adjust editor indent */
  63. #endif
  64. EXPORT sigset_t
  65. jackctl_setup_signals(
  66. unsigned int flags);
  67. EXPORT void
  68. jackctl_wait_signals(
  69. sigset_t signals);
  70. EXPORT jackctl_server_t *
  71. jackctl_server_create();
  72. EXPORT void
  73. jackctl_server_destroy(
  74. jackctl_server_t * server);
  75. EXPORT const JSList *
  76. jackctl_server_get_drivers_list(
  77. jackctl_server_t * server);
  78. EXPORT bool
  79. jackctl_server_start(
  80. jackctl_server_t * server,
  81. jackctl_driver_t * driver);
  82. EXPORT bool
  83. jackctl_server_stop(
  84. jackctl_server_t * server);
  85. EXPORT const JSList *
  86. jackctl_server_get_parameters(
  87. jackctl_server_t * server);
  88. EXPORT const char *
  89. jackctl_driver_get_name(
  90. jackctl_driver_t * driver);
  91. EXPORT const JSList *
  92. jackctl_driver_get_parameters(
  93. jackctl_driver_t * driver);
  94. EXPORT const char *
  95. jackctl_parameter_get_name(
  96. jackctl_parameter_t * parameter);
  97. EXPORT const char *
  98. jackctl_parameter_get_short_description(
  99. jackctl_parameter_t * parameter);
  100. EXPORT const char *
  101. jackctl_parameter_get_long_description(
  102. jackctl_parameter_t * parameter);
  103. EXPORT jackctl_param_type_t
  104. jackctl_parameter_get_type(
  105. jackctl_parameter_t * parameter);
  106. EXPORT char
  107. jackctl_parameter_get_id(
  108. jackctl_parameter_t * parameter);
  109. EXPORT bool
  110. jackctl_parameter_is_set(
  111. jackctl_parameter_t * parameter);
  112. EXPORT bool
  113. jackctl_parameter_reset(
  114. jackctl_parameter_t * parameter);
  115. EXPORT union jackctl_parameter_value
  116. jackctl_parameter_get_value(
  117. jackctl_parameter_t * parameter);
  118. EXPORT bool
  119. jackctl_parameter_set_value(
  120. jackctl_parameter_t * parameter,
  121. const union jackctl_parameter_value * value_ptr);
  122. EXPORT union jackctl_parameter_value
  123. jackctl_parameter_get_default_value(
  124. jackctl_parameter_t * parameter);
  125. EXPORT union jackctl_parameter_value
  126. jackctl_parameter_get_default_value(
  127. jackctl_parameter *parameter_ptr);
  128. EXPORT const JSList *
  129. jackctl_server_get_internals_list(
  130. jackctl_server *server_ptr);
  131. EXPORT const char *
  132. jackctl_internal_get_name(
  133. jackctl_internal *internal_ptr);
  134. EXPORT const JSList *
  135. jackctl_internal_get_parameters(
  136. jackctl_internal *internal_ptr);
  137. EXPORT bool jackctl_server_load_internal(
  138. jackctl_server * server,
  139. jackctl_internal * internal);
  140. EXPORT bool jackctl_server_unload_internal(
  141. jackctl_server * server,
  142. jackctl_internal * internal);
  143. #if 0
  144. { /* Adjust editor indent */
  145. #endif
  146. #ifdef __cplusplus
  147. } /* extern "C" */
  148. #endif
  149. #endif