summaryrefslogtreecommitdiff
path: root/common/usbx_device_classes/inc/ux_device_class_audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/usbx_device_classes/inc/ux_device_class_audio.h')
-rw-r--r--common/usbx_device_classes/inc/ux_device_class_audio.h91
1 files changed, 88 insertions, 3 deletions
diff --git a/common/usbx_device_classes/inc/ux_device_class_audio.h b/common/usbx_device_classes/inc/ux_device_class_audio.h
index 4cc5be3..63ce8c3 100644
--- a/common/usbx_device_classes/inc/ux_device_class_audio.h
+++ b/common/usbx_device_classes/inc/ux_device_class_audio.h
@@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_device_class_audio.h PORTABLE C */
-/* 6.2.0 */
+/* 6.2.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -62,6 +62,9 @@
/* 10-31-2022 Yajun Xia Modified comment(s), */
/* added standalone support, */
/* resulting in version 6.2.0 */
+/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */
+/* added error checks support, */
+/* resulting in version 6.2.1 */
/* */
/**************************************************************************/
@@ -85,6 +88,13 @@ extern "C" {
/* Compile option: if defined, audio interrupt endpoint is supported. */
/* #define UX_DEVICE_CLASS_AUDIO_INTERRUPT_SUPPORT */
+/* Internal option: enable the basic USBX error checking. This define is typically used
+ while debugging application. */
+#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_DEVICE_CLASS_AUDIO_ENABLE_ERROR_CHECKING)
+#define UX_DEVICE_CLASS_AUDIO_ENABLE_ERROR_CHECKING
+#endif
+
+
/* Define Audio Class OS related constants. */
#define UX_DEVICE_CLASS_AUDIO_FEEDBACK_THREAD_STACK_SIZE UX_THREAD_STACK_SIZE
@@ -514,12 +524,85 @@ VOID _ux_device_class_audio_interrupt_thread_entry(ULONG audio_inst);
UINT _ux_device_class_audio_interrupt_task_function(UX_DEVICE_CLASS_AUDIO *audio);
UINT _ux_device_class_audio_interrupt_send(UX_DEVICE_CLASS_AUDIO *audio, UCHAR *int_data);
-#if defined(UX_DEVICE_STANDALONE)
UINT _ux_device_class_audio_tasks_run(VOID *instance);
-#endif
+
+
+UINT _uxe_device_class_audio_initialize(UX_SLAVE_CLASS_COMMAND *command);
+
+UINT _uxe_device_class_audio_ioctl(UX_DEVICE_CLASS_AUDIO *audio, ULONG ioctl_function,
+ VOID *parameter);
+
+UINT _uxe_device_class_audio_stream_get(UX_DEVICE_CLASS_AUDIO *audio, ULONG stream_index, UX_DEVICE_CLASS_AUDIO_STREAM **stream);
+
+VOID _uxe_device_class_audio_write_thread_entry(ULONG audio_stream);
+VOID _uxe_device_class_audio_read_thread_entry(ULONG audio_stream);
+UINT _uxe_device_class_audio_write_task_function(UX_DEVICE_CLASS_AUDIO_STREAM *stream);
+UINT _uxe_device_class_audio_read_task_function(UX_DEVICE_CLASS_AUDIO_STREAM *stream);
+UINT _uxe_device_class_audio_reception_start(UX_DEVICE_CLASS_AUDIO_STREAM *audio);
+UINT _uxe_device_class_audio_sample_read8(UX_DEVICE_CLASS_AUDIO_STREAM *audio, UCHAR *sample);
+UINT _uxe_device_class_audio_sample_read16(UX_DEVICE_CLASS_AUDIO_STREAM *audio, USHORT *sample);
+UINT _uxe_device_class_audio_sample_read24(UX_DEVICE_CLASS_AUDIO_STREAM *audio, ULONG *sample);
+UINT _uxe_device_class_audio_sample_read32(UX_DEVICE_CLASS_AUDIO_STREAM *audio, ULONG *sample);
+
+UINT _uxe_device_class_audio_read_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *audio, UCHAR **frame_data, ULONG *frame_length);
+UINT _uxe_device_class_audio_read_frame_free(UX_DEVICE_CLASS_AUDIO_STREAM *audio);
+
+UINT _uxe_device_class_audio_transmission_start(UX_DEVICE_CLASS_AUDIO_STREAM *audio);
+UINT _uxe_device_class_audio_frame_write(UX_DEVICE_CLASS_AUDIO_STREAM *audio, UCHAR *frame, ULONG length);
+
+UINT _uxe_device_class_audio_write_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *audio, UCHAR **buffer, ULONG *max_length);
+UINT _uxe_device_class_audio_write_frame_commit(UX_DEVICE_CLASS_AUDIO_STREAM *audio, ULONG length);
+
+UINT _uxe_device_class_audio_feedback_set(UX_DEVICE_CLASS_AUDIO_STREAM *audio, UCHAR *encoded_feedback);
+UINT _uxe_device_class_audio_feedback_get(UX_DEVICE_CLASS_AUDIO_STREAM *audio, UCHAR *encoded_feedback);
+ULONG _uxe_device_class_audio_speed_get(UX_DEVICE_CLASS_AUDIO_STREAM *audio);
+
+VOID _uxe_device_class_audio_interrupt_thread_entry(ULONG audio_inst);
+UINT _uxe_device_class_audio_interrupt_task_function(UX_DEVICE_CLASS_AUDIO *audio);
+UINT _uxe_device_class_audio_interrupt_send(UX_DEVICE_CLASS_AUDIO *audio, UCHAR *int_data);
+
/* Define Device Class Audio API prototypes. */
+#if defined(UX_DEVICE_CLASS_AUDIO_ENABLE_ERROR_CHECKING)
+
+#define ux_device_class_audio_entry _ux_device_class_audio_entry
+
+#define ux_device_class_audio_read_thread_entry _ux_device_class_audio_read_thread_entry
+#define ux_device_class_audio_write_thread_entry _ux_device_class_audio_write_thread_entry
+
+#define ux_device_class_audio_read_task_function _ux_device_class_audio_read_task_function
+#define ux_device_class_audio_write_task_function _ux_device_class_audio_write_task_function
+
+#define ux_device_class_audio_stream_get _uxe_device_class_audio_stream_get
+
+#define ux_device_class_audio_reception_start _uxe_device_class_audio_reception_start
+#define ux_device_class_audio_sample_read8 _uxe_device_class_audio_sample_read8
+#define ux_device_class_audio_sample_read16 _uxe_device_class_audio_sample_read16
+#define ux_device_class_audio_sample_read24 _uxe_device_class_audio_sample_read24
+#define ux_device_class_audio_sample_read32 _uxe_device_class_audio_sample_read32
+
+#define ux_device_class_audio_read_frame_get _uxe_device_class_audio_read_frame_get
+#define ux_device_class_audio_read_frame_free _uxe_device_class_audio_read_frame_free
+
+#define ux_device_class_audio_transmission_start _uxe_device_class_audio_transmission_start
+#define ux_device_class_audio_frame_write _uxe_device_class_audio_frame_write
+
+#define ux_device_class_audio_write_frame_get _uxe_device_class_audio_write_frame_get
+#define ux_device_class_audio_write_frame_commit _uxe_device_class_audio_write_frame_commit
+
+#define ux_device_class_audio_ioctl _uxe_device_class_audio_ioctl
+
+#define ux_device_class_audio_speed_get _ux_device_class_audio_speed_get
+#define ux_device_class_audio_feedback_thread_entry _ux_device_class_audio_feedback_thread_entry
+#define ux_device_class_audio_feedback_task_function _ux_device_class_audio_feedback_task_function
+#define ux_device_class_audio_feedback_get _uxe_device_class_audio_feedback_get
+#define ux_device_class_audio_feedback_set _uxe_device_class_audio_feedback_set
+
+#define ux_device_class_audio_interrupt_send _uxe_device_class_audio_interrupt_send
+
+#else
+
#define ux_device_class_audio_entry _ux_device_class_audio_entry
#define ux_device_class_audio_read_thread_entry _ux_device_class_audio_read_thread_entry
@@ -555,6 +638,8 @@ UINT _ux_device_class_audio_tasks_run(VOID *instance);
#define ux_device_class_audio_interrupt_send _ux_device_class_audio_interrupt_send
+#endif
+
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus