diff options
| author | Chaoqiong Xiao <[email protected]> | 2023-03-08 08:32:02 +0000 |
|---|---|---|
| committer | Chaoqiong Xiao <[email protected]> | 2023-03-08 08:32:02 +0000 |
| commit | 2d357c5912709485aac36a3bf3800cf282477d34 (patch) | |
| tree | 70e5abeff5343d3ff88577e6bfca3f0bac11ce9e /common/usbx_device_classes | |
| parent | 813361a875870d3c3c4ae7b830a54e0748e889e1 (diff) | |
Release 6.2.1 on 08 Mar 2023. Expand to see details.v6.2.1_rel
e180182e Update owners
a6785db8 Update for release.
bc77918b Improve host audio sampling set and check (fixed a memory issue).
97d66e5d Add optimization options to ux_user.h
eea2c732 USBX device printer error checking support.
1760cc8c USBX device audio error checking support
a39f2f26 Fixed a macro name issue in device audio 1.0
83278dd8 Supported multiple report IDs in host HID.
c548fe33 Fixed host CDC-ACM capability get.
b64f8cdb Fix vendor request handling.
Diffstat (limited to 'common/usbx_device_classes')
45 files changed, 1534 insertions, 97 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 diff --git a/common/usbx_device_classes/inc/ux_device_class_audio10.h b/common/usbx_device_classes/inc/ux_device_class_audio10.h index d366ef2..355821d 100644 --- a/common/usbx_device_classes/inc/ux_device_class_audio10.h +++ b/common/usbx_device_classes/inc/ux_device_class_audio10.h @@ -26,7 +26,7 @@ /* COMPONENT DEFINITION RELEASE */ /* */ /* ux_device_class_audio10.h PORTABLE C */ -/* 6.1.12 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -53,6 +53,10 @@ /* 07-29-2022 Chaoqiong Xiao Modified comment(s), */ /* added sampling control, */ /* resulting in version 6.1.12 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* added error checks support, */ +/* fixed a macro name, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ @@ -70,6 +74,13 @@ extern "C" { #endif +/* 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 specific AC interface descriptor subclasses. */ #define UX_DEVICE_CLASS_AUDIO10_AC_UNDEFINED 0x00 @@ -377,7 +388,7 @@ typedef struct UX_DEVICE_CLASS_AUDIO10_CONTROL_STRUCT #define UX_DEVICE_CLASS_AUDIO10_CONTROL_MUTE_CHANGED 1u #define UX_DEVICE_CLASS_AUDIO10_CONTROL_VOLUME_CHANGED 2u -#define UX_DEVICE_CLASS_AUDIO20_CONTROL_FREQUENCY_CHANGED 4u +#define UX_DEVICE_CLASS_AUDIO10_CONTROL_FREQUENCY_CHANGED 4u typedef struct UX_DEVICE_CLASS_AUDIO10_CONTROL_GROUP_STRUCT { @@ -389,8 +400,20 @@ UINT _ux_device_class_audio10_control_process(UX_DEVICE_CLASS_AUDIO *audio, UX_SLAVE_TRANSFER *transfer_request, UX_DEVICE_CLASS_AUDIO10_CONTROL_GROUP *group); +UINT _uxe_device_class_audio10_control_process(UX_DEVICE_CLASS_AUDIO *audio, + UX_SLAVE_TRANSFER *transfer_request, + UX_DEVICE_CLASS_AUDIO10_CONTROL_GROUP *group); + +#if defined(UX_DEVICE_CLASS_AUDIO_ENABLE_ERROR_CHECKING) + +#define ux_device_class_audio10_control_process _uxe_device_class_audio10_control_process + +#else + #define ux_device_class_audio10_control_process _ux_device_class_audio10_control_process +#endif + /* Determine if a C++ compiler is being used. If so, complete the standard C conditional started above. */ #ifdef __cplusplus diff --git a/common/usbx_device_classes/inc/ux_device_class_audio20.h b/common/usbx_device_classes/inc/ux_device_class_audio20.h index aa7cc4f..7c2da21 100644 --- a/common/usbx_device_classes/inc/ux_device_class_audio20.h +++ b/common/usbx_device_classes/inc/ux_device_class_audio20.h @@ -26,7 +26,7 @@ /* COMPONENT DEFINITION RELEASE */ /* */ /* ux_device_class_audio20.h PORTABLE C */ -/* 6.1.12 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -55,6 +55,9 @@ /* sampling frequencies, */ /* added clock multiplier DEFs,*/ /* resulting in version 6.1.12 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* added error checks support, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ @@ -72,6 +75,13 @@ extern "C" { #endif +/* 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 function category codes. */ #define UX_DEVICE_CLASS_AUDIO20_CATEGORY_UNDEFINED 0x00 @@ -449,8 +459,20 @@ UINT _ux_device_class_audio20_control_process(UX_DEVICE_CLASS_AUDIO *audio, UX_SLAVE_TRANSFER *transfer, UX_DEVICE_CLASS_AUDIO20_CONTROL_GROUP *group); +UINT _uxe_device_class_audio20_control_process(UX_DEVICE_CLASS_AUDIO *audio, + UX_SLAVE_TRANSFER *transfer, + UX_DEVICE_CLASS_AUDIO20_CONTROL_GROUP *group); + +#if defined(UX_DEVICE_CLASS_AUDIO_ENABLE_ERROR_CHECKING) + +#define ux_device_class_audio20_control_process _uxe_device_class_audio20_control_process + +#else + #define ux_device_class_audio20_control_process _ux_device_class_audio20_control_process +#endif + /* Determine if a C++ compiler is being used. If so, complete the standard C conditional started above. */ #ifdef __cplusplus diff --git a/common/usbx_device_classes/inc/ux_device_class_ccid.h b/common/usbx_device_classes/inc/ux_device_class_ccid.h index a35a76a..4cf51bd 100644 --- a/common/usbx_device_classes/inc/ux_device_class_ccid.h +++ b/common/usbx_device_classes/inc/ux_device_class_ccid.h @@ -24,7 +24,7 @@ /* COMPONENT DEFINITION RELEASE */ /* */ /* ux_device_class_ccid.h PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -39,9 +39,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ diff --git a/common/usbx_device_classes/inc/ux_device_class_printer.h b/common/usbx_device_classes/inc/ux_device_class_printer.h index 52ae8ce..80d79dc 100644 --- a/common/usbx_device_classes/inc/ux_device_class_printer.h +++ b/common/usbx_device_classes/inc/ux_device_class_printer.h @@ -24,7 +24,7 @@ /* COMPONENT DEFINITION RELEASE */ /* */ /* ux_device_class_printer.h PORTABLE C */ -/* 6.2.0 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -47,6 +47,9 @@ /* 10-31-2022 Yajun xia Modified comment(s), */ /* added standalone support, */ /* resulting in version 6.2.0 */ +/* 03-08-2023 Yajun xia Modified comment(s), */ +/* added error checks support, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ @@ -63,6 +66,12 @@ extern "C" { #endif +/* 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_PRINTER_ENABLE_ERROR_CHECKING) +#define UX_DEVICE_CLASS_PRINTER_ENABLE_ERROR_CHECKING +#endif + /* Defined, _write is pending ZLP automatically (complete transfer) after buffer is sent. */ /* #define UX_DEVICE_CLASS_PRINTER_WRITE_AUTO_ZLP */ @@ -174,13 +183,31 @@ UINT _ux_device_class_printer_read_run(UX_DEVICE_CLASS_PRINTER *printer, UCHAR ULONG requested_length, ULONG *actual_length); #endif +UINT _uxe_device_class_printer_initialize(UX_SLAVE_CLASS_COMMAND *command); +UINT _uxe_device_class_printer_read(UX_DEVICE_CLASS_PRINTER *printer, UCHAR *buffer, + ULONG requested_length, ULONG *actual_length); +UINT _uxe_device_class_printer_write(UX_DEVICE_CLASS_PRINTER *printer, UCHAR *buffer, + ULONG requested_length, ULONG *actual_length); +UINT _uxe_device_class_printer_ioctl(UX_DEVICE_CLASS_PRINTER *printer, ULONG ioctl_function, + VOID *parameter); + /* Define Device Printer Class API prototypes. */ +#if defined(UX_DEVICE_CLASS_PRINTER_ENABLE_ERROR_CHECKING) + +#define ux_device_class_printer_entry _ux_device_class_printer_entry +#define ux_device_class_printer_read _uxe_device_class_printer_read +#define ux_device_class_printer_write _uxe_device_class_printer_write +#define ux_device_class_printer_ioctl _uxe_device_class_printer_ioctl + +#else #define ux_device_class_printer_entry _ux_device_class_printer_entry #define ux_device_class_printer_read _ux_device_class_printer_read #define ux_device_class_printer_write _ux_device_class_printer_write #define ux_device_class_printer_ioctl _ux_device_class_printer_ioctl +#endif + #if defined(UX_DEVICE_STANDALONE) #define ux_device_class_printer_read_run _ux_device_class_printer_read_run #define ux_device_class_printer_write_run _ux_device_class_printer_write_run diff --git a/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c b/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c index f38e9cc..ecd0075 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c +++ b/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c @@ -35,7 +35,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio10_control_process PORTABLE C */ -/* 6.1.12 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -66,7 +66,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -84,6 +84,9 @@ /* 07-29-2022 Chaoqiong Xiao Modified comment(s), */ /* added sampling control, */ /* resulting in version 6.1.12 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* fixed a macro name, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio10_control_process(UX_DEVICE_CLASS_AUDIO *audio, @@ -180,7 +183,7 @@ ULONG i; if (sam > max) sam = max; control -> ux_device_class_audio10_control_sam_freq = sam; - control -> ux_device_class_audio10_control_changed = UX_DEVICE_CLASS_AUDIO20_CONTROL_FREQUENCY_CHANGED; + control -> ux_device_class_audio10_control_changed = UX_DEVICE_CLASS_AUDIO10_CONTROL_FREQUENCY_CHANGED; return(UX_SUCCESS); case UX_DEVICE_CLASS_AUDIO10_GET_CUR: @@ -335,3 +338,58 @@ ULONG i; /* Done error. */ return(UX_ERROR); } + + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio10_control_process PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in control processing function call. */ +/* */ +/* INPUT */ +/* */ +/* audio Address of audio class */ +/* instance */ +/* transfer Address of transfer request */ +/* instance */ +/* group Request process data */ +/* */ +/* OUTPUT */ +/* */ +/* Completion Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio10_control_process */ +/* Process control requests */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio10_control_process(UX_DEVICE_CLASS_AUDIO *audio, + UX_SLAVE_TRANSFER *transfer, UX_DEVICE_CLASS_AUDIO10_CONTROL_GROUP *group) +{ + + /* Sanity checks. */ + if (audio == UX_NULL || transfer == UX_NULL || group == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Process control request. */ + return(_ux_device_class_audio10_control_process(audio, transfer, group)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c b/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c index c98e5fa..270e3bd 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c +++ b/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c @@ -35,7 +35,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio20_control_process PORTABLE C */ -/* 6.1.12 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -69,7 +69,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -89,6 +89,8 @@ /* added support of multiple */ /* sampling frequencies, */ /* resulting in version 6.1.12 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio20_control_process(UX_DEVICE_CLASS_AUDIO *audio, @@ -394,3 +396,60 @@ ULONG n_sub, pos, min, max, res, freq; _ux_device_stack_endpoint_stall(endpoint); return(UX_ERROR); } + + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio20_control_process PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in control request processing function */ +/* call. */ +/* */ +/* INPUT */ +/* */ +/* audio Address of audio class */ +/* instance */ +/* transfer Address of transfer request */ +/* instance */ +/* group Request process data */ +/* */ +/* OUTPUT */ +/* */ +/* Completion Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio20_control_process */ +/* Process control requests */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio20_control_process(UX_DEVICE_CLASS_AUDIO *audio, + UX_SLAVE_TRANSFER *transfer, + UX_DEVICE_CLASS_AUDIO20_CONTROL_GROUP *group) +{ + + /* Sanity checks. */ + if (audio == UX_NULL || transfer == UX_NULL || group == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Process control requests. */ + return(_ux_device_class_audio20_control_process(audio, transfer, group)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_entry.c b/common/usbx_device_classes/src/ux_device_class_audio_entry.c index cc2e164..e4adb2a 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_entry.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_entry.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_entry PORTABLE C */ -/* 6.1.12 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -77,6 +77,9 @@ /* 07-29-2022 Chaoqiong Xiao Modified comment(s), */ /* returned request status, */ /* resulting in version 6.1.12 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* added error checks support, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_entry(UX_SLAVE_CLASS_COMMAND *command) @@ -93,7 +96,11 @@ UINT status; case UX_SLAVE_CLASS_COMMAND_INITIALIZE: /* Call the init function of the Audio class. */ +#if defined(UX_DEVICE_CLASS_AUDIO_ENABLE_ERROR_CHECKING) + status = _uxe_device_class_audio_initialize(command); +#else status = _ux_device_class_audio_initialize(command); +#endif /* Return the completion status. */ return(status); @@ -157,4 +164,3 @@ UINT status; return(UX_FUNCTION_NOT_SUPPORTED); } } - diff --git a/common/usbx_device_classes/src/ux_device_class_audio_feedback_get.c b/common/usbx_device_classes/src/ux_device_class_audio_feedback_get.c index eede854..7c8539c 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_feedback_get.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_feedback_get.c @@ -115,3 +115,55 @@ UCHAR *buffer; return(UX_SUCCESS); #endif } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_feedback_get PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in encoded feedback getting function */ +/* call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* encoded_feedback Feedback data (3 or 4 bytes) */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_feedback_get Get encoded feedback */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_feedback_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + UCHAR *encoded_feedback) +{ + + /* Sanity check on input parameters. */ + if (stream == UX_NULL || encoded_feedback == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Get feedback. */ + return(_ux_device_class_audio_feedback_get(stream, encoded_feedback)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_feedback_set.c b/common/usbx_device_classes/src/ux_device_class_audio_feedback_set.c index 898eeea..000cb4f 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_feedback_set.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_feedback_set.c @@ -115,3 +115,55 @@ UCHAR *buffer; return(UX_SUCCESS); #endif } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_feedback_set PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in encoded feedback setting function */ +/* call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* encoded_feedback Feedback data (3 or 4 bytes) */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_feedback_set Set encoded feedback */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_feedback_set(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + UCHAR *encoded_feedback) +{ + + /* Sanity check on input parameters. */ + if (stream == UX_NULL || encoded_feedback == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Get feedback. */ + return(_ux_device_class_audio_feedback_set(stream, encoded_feedback)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c b/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c index 20538c6..fd7c9ec 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_frame_write PORTABLE C */ -/* 6.1.10 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -61,7 +61,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -75,6 +75,8 @@ /* 01-31-2022 Chaoqiong Xiao Modified comment(s), */ /* fixed frame length check, */ /* resulting in version 6.1.10 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_frame_write(UX_DEVICE_CLASS_AUDIO_STREAM *stream, UCHAR *frame, ULONG length) @@ -132,3 +134,54 @@ ULONG frame_buffer_size; return(UX_SUCCESS); } +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_frame_write PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in writing frame function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* frame Pointer to buffer to save */ +/* frame data */ +/* length Frame length in bytes */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_frame_write Write frame to buffer to send */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_frame_write(UX_DEVICE_CLASS_AUDIO_STREAM *stream, UCHAR *frame, ULONG length) +{ + + /* Sanity checks. */ + if (stream == UX_NULL || frame == UX_NULL || length == 0) + return(UX_INVALID_PARAMETER); + + /* Write to frame. */ + return(_ux_device_class_audio_frame_write(stream, frame, length)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_initialize.c b/common/usbx_device_classes/src/ux_device_class_audio_initialize.c index 4ba297a..d2e74b5 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_initialize.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_initialize.c @@ -446,3 +446,67 @@ ULONG i; return(status); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_initialize PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in audio initialization function call. */ +/* */ +/* INPUT */ +/* */ +/* command Pointer to audio command */ +/* */ +/* OUTPUT */ +/* */ +/* Completion Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_initialize Initialize audio instance */ +/* */ +/* CALLED BY */ +/* */ +/* Device Audio Class */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_initialize(UX_SLAVE_CLASS_COMMAND *command) +{ + +UX_DEVICE_CLASS_AUDIO_PARAMETER *audio_parameter; + + /* Get the pointer to the application parameters for the audio class. */ + audio_parameter = (UX_DEVICE_CLASS_AUDIO_PARAMETER *)command -> ux_slave_class_command_parameter; + + /* Sanity checks. */ + + /* There must be at least one stream. */ + if (audio_parameter -> ux_device_class_audio_parameter_streams == UX_NULL || + audio_parameter -> ux_device_class_audio_parameter_streams_nb < 1) + return(UX_INVALID_PARAMETER); + +#if defined(UX_DEVICE_CLASS_AUDIO_INTERRUPT_SUPPORT) + + /* There must be status setting for event queue. */ + if (audio_parameter -> ux_device_class_audio_parameter_status_queue_size == 0 || + audio_parameter -> ux_device_class_audio_parameter_status_size == 0) + return(UX_INVALID_PARAMETER); +#endif + + /* Do initialize. */ + return(_ux_device_class_audio_initialize(command)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_interrupt_send.c b/common/usbx_device_classes/src/ux_device_class_audio_interrupt_send.c index eb5d438..3cc4569 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_interrupt_send.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_interrupt_send.c @@ -168,3 +168,58 @@ ULONG i; return(UX_SUCCESS); #endif } + + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_interrupt_send PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in queuing audio interrupt data */ +/* function call. */ +/* */ +/* Note the interrupt data size is predefined and not checked: */ +/* - for Audio 1.0 interrupt status word is 2 bytes */ +/* - for Audio 2.0 interrupt data message is 6 bytes */ +/* */ +/* INPUT */ +/* */ +/* audio Address of audio instance */ +/* int_data Interrupt data (2 or 6 bytes) */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_interrupt_send Queue interrupt data to send */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_interrupt_send(UX_DEVICE_CLASS_AUDIO *audio, UCHAR *int_data) +{ + + /* Sanity check. */ + if (audio == UX_NULL || int_data == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Send interrupt data. */ + return(_ux_device_class_audio_interrupt_send(audio, int_data)); +}
\ No newline at end of file diff --git a/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c b/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c index d8bee50..a6eb89d 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_ioctl PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -45,10 +45,10 @@ /* */ /* INPUT */ /* */ -/* audio Address of audio class */ -/* instance */ -/* ioctl_function IOCTL function code */ -/* parameter Parameter for function */ +/* audio Address of audio class */ +/* instance */ +/* ioctl_function IOCTL function code */ +/* parameter Parameter for function */ /* */ /* OUTPUT */ /* */ @@ -59,7 +59,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -68,6 +68,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_ioctl(UX_DEVICE_CLASS_AUDIO *audio, ULONG ioctl_function, @@ -106,3 +108,54 @@ VOID **pptr_parameter; } +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_ioctl PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in ioctl function call. */ +/* */ +/* INPUT */ +/* */ +/* audio Address of audio class */ +/* instance */ +/* ioctl_function IOCTL function code */ +/* parameter Parameter for function */ +/* */ +/* OUTPUT */ +/* */ +/* Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_ioctl Perform IOCTL function */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_ioctl(UX_DEVICE_CLASS_AUDIO *audio, ULONG ioctl_function, + VOID *parameter) +{ + + /* Sanity check. */ + if (audio == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Dispatch IOCTL commands. */ + return(_ux_device_class_audio_ioctl(audio, ioctl_function, parameter)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c index b2430b5..31ba753 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_read_frame_free PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -57,7 +57,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -66,6 +66,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_read_frame_free(UX_DEVICE_CLASS_AUDIO_STREAM *stream) @@ -124,3 +126,54 @@ UCHAR *next_frame; return(UX_SUCCESS); } + + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_read_frame_free PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in freeing access buffer function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_read_frame_free */ +/* Free an item in FIFO */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_read_frame_free(UX_DEVICE_CLASS_AUDIO_STREAM *stream) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Free frame buffer. */ + return(_ux_device_class_audio_read_frame_free(stream)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c index 3cfd71a..fa644e5 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_read_frame_get PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -61,7 +61,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -70,6 +70,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_read_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream, @@ -112,3 +114,57 @@ UX_SLAVE_DEVICE *device; return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_read_frame_get PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in frame buffer getting function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* frame_data Pointer to buffer to save */ +/* pointer to frame data */ +/* frame_length Pointer to buffer to save */ +/* pointer to frame length */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_read_frame_get Get buffer from 1st FIFO item */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_read_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + UCHAR **frame_data, ULONG *frame_length) +{ + + /* Sanity checks. */ + if (stream == UX_NULL || frame_data == UX_NULL || frame_length == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Get frame access buffer. */ + return(_ux_device_class_audio_read_frame_get(stream, frame_data, frame_length)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c b/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c index 078ce81..f756213 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_reception_start PORTABLE C */ -/* 6.2.0 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -58,7 +58,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -73,6 +73,8 @@ /* 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), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_reception_start(UX_DEVICE_CLASS_AUDIO_STREAM *stream) @@ -118,3 +120,54 @@ UX_SLAVE_DEVICE *device; #endif return(UX_SUCCESS); } + + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_reception_start PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in stream reception start function. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_reception_start */ +/* Audio stream reception start */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_reception_start(UX_DEVICE_CLASS_AUDIO_STREAM *stream) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Start reception. */ + return(_ux_device_class_audio_reception_start(stream)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c index 04dbd26..2c9f98d 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_sample_read16 PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -59,7 +59,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -68,6 +68,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_sample_read16(UX_DEVICE_CLASS_AUDIO_STREAM *stream, @@ -141,3 +143,55 @@ ULONG next_frame_sample; return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_sample_read16 PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in reading 16-bit sample function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* buffer Pointer to buffer to save */ +/* sample data */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_sample_read16 Read 16-bit sample */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_sample_read16(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + USHORT *buffer) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Read 16-bit sample. */ + return(_ux_device_class_audio_sample_read16(stream, buffer)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c index cd53dd9..973b4e2 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_sample_read24 PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -59,7 +59,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -68,6 +68,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_sample_read24(UX_DEVICE_CLASS_AUDIO_STREAM *stream, @@ -141,3 +143,55 @@ ULONG next_frame_sample; return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_sample_read24 PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in reading 24-bit sample function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* buffer Pointer to buffer to save */ +/* sample data */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_sample_read24 Read 24-bit sample */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_sample_read24(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + ULONG *buffer) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Read 24-bit sample. */ + return(_ux_device_class_audio_sample_read24(stream, buffer)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c index 0e53daa..e98a40b 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_sample_read32 PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -59,7 +59,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -68,6 +68,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_sample_read32(UX_DEVICE_CLASS_AUDIO_STREAM *stream, ULONG *buffer) @@ -143,3 +145,55 @@ ULONG next_frame_sample; return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_sample_read32 PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in reading 32-bit sample function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* buffer Pointer to buffer to save */ +/* sample data */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_sample_read32 Read 32-bit sample */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_sample_read32(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + ULONG *buffer) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Read 32-bit sample. */ + return(_ux_device_class_audio_sample_read32(stream, buffer)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c index 2eab8e3..b00e1ed 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_sample_read8 PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -59,7 +59,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -68,6 +68,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_sample_read8(UX_DEVICE_CLASS_AUDIO_STREAM *stream, @@ -141,3 +143,54 @@ ULONG next_frame_sample; return(UX_SUCCESS); } +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_sample_read8 PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in reading 8-bit sample function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* buffer Pointer to buffer to save */ +/* sample data */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_sample_read8 Read 8-bit sample */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_sample_read8(UX_DEVICE_CLASS_AUDIO_STREAM *stream, + UCHAR *buffer) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Read 8-bit sample. */ + return(_ux_device_class_audio_sample_read8(stream, buffer)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c b/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c index 1abb5af..71739d4 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_stream_get PORTABLE C */ -/* 6.1.10 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -60,7 +60,7 @@ /* */ /* CALLED BY */ /* */ -/* Audio Class */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -71,25 +71,79 @@ /* resulting in version 6.1 */ /* 01-31-2022 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1.10 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* added error checks support, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_stream_get(UX_DEVICE_CLASS_AUDIO *audio, ULONG stream_index, UX_DEVICE_CLASS_AUDIO_STREAM **stream) { + /* Store the stream instance found. */ + *stream = audio -> ux_device_class_audio_streams + stream_index; + + /* Return completion status. */ + return(UX_SUCCESS); +} + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_stream_get PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in stream instance getting function. */ +/* */ +/* INPUT */ +/* */ +/* audio Address of audio class */ +/* instance */ +/* stream_index Stream instance index 0 based */ +/* stream Pointer to buffer to fill */ +/* pointer to stream instance */ +/* */ +/* OUTPUT */ +/* */ +/* Completion Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_stream_get Get stream instance */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_stream_get(UX_DEVICE_CLASS_AUDIO *audio, + ULONG stream_index, UX_DEVICE_CLASS_AUDIO_STREAM **stream) +{ /* Sanity check. */ if (audio == UX_NULL) - return(UX_ERROR); + return(UX_INVALID_PARAMETER); /* Index validation. */ if (stream_index >= audio -> ux_device_class_audio_streams_nb) - return(UX_ERROR); + return(UX_INVALID_PARAMETER); /* Store the stream instance found. */ - if (stream) - *stream = audio -> ux_device_class_audio_streams + stream_index; + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); - /* Return completion status. */ - return(UX_SUCCESS); + /* Get audio stream instance. */ + return(_ux_device_class_audio_stream_get(audio, stream_index, stream)); } diff --git a/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c b/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c index 69b58c5..7304637 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_transmission_start PORTABLE C */ -/* 6.2.0 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -58,7 +58,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -73,6 +73,8 @@ /* 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), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_transmission_start(UX_DEVICE_CLASS_AUDIO_STREAM *stream) @@ -118,3 +120,54 @@ UX_SLAVE_DEVICE *device; #endif return(UX_SUCCESS); } + + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_transmission_start PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in starting sending function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_transmission_start */ +/* Start transmission */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_transmission_start(UX_DEVICE_CLASS_AUDIO_STREAM *stream) +{ + + /* Sanity check. */ + if (stream == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Start transmission. */ + return(_ux_device_class_audio_transmission_start(stream)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c index f772e0f..b040d0a 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_write_frame_commit PORTABLE C */ -/* 6.1.11 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -60,7 +60,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -72,6 +72,8 @@ /* 01-31-2022 Chaoqiong Xiao Modified comment(s), */ /* fixed frame length check, */ /* resulting in version 6.1.10 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_write_frame_commit(UX_DEVICE_CLASS_AUDIO_STREAM *stream, ULONG length) @@ -129,3 +131,55 @@ UCHAR *next_pos; return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_write_frame_commit PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in setting frame buffer function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* buffer Pointer to buffer to save */ +/* frame data */ +/* length Frame length in bytes */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_write_frame_commit */ +/* Append a frame to FIFO */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_write_frame_commit(UX_DEVICE_CLASS_AUDIO_STREAM *stream, ULONG length) +{ + + /* Sanity checks. */ + if (stream == UX_NULL || length < 1) + return(UX_INVALID_PARAMETER); + + return(_ux_device_class_audio_write_frame_commit(stream, length)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c index ca95236..eec501f 100644 --- a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c +++ b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_audio_write_frame_get PORTABLE C */ -/* 6.1 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -61,7 +61,7 @@ /* */ /* CALLED BY */ /* */ -/* ThreadX */ +/* Application */ /* */ /* RELEASE HISTORY */ /* */ @@ -70,6 +70,8 @@ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_audio_write_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream, UCHAR **frame, ULONG *length) @@ -113,3 +115,57 @@ UX_SLAVE_DEVICE *device; return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_audio_write_frame_get PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Chaoqiong Xiao, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in getting frame buffer function call. */ +/* */ +/* INPUT */ +/* */ +/* stream Address of audio stream */ +/* instance */ +/* frame Pointer to buffer to save */ +/* frame buffer pointer */ +/* length Pointer to save frame */ +/* buffer length in bytes */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_audio_write_frame_get */ +/* Get frame buffer */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_audio_write_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream, UCHAR **frame, ULONG *length) +{ + + /* Sanity checks. */ + if (stream == UX_NULL || frame == UX_NULL || length == UX_NULL) + return(UX_INVALID_PARAMETER); + + /* Get frame buffer and length. */ + return(_ux_device_class_audio_write_frame_get(stream, frame, length)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_activate.c b/common/usbx_device_classes/src/ux_device_class_ccid_activate.c index ed842da..990f584 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_activate.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_activate.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_activate PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -67,9 +67,9 @@ /* fixed parameter/variable */ /* names conflict C++ keyword, */ /* resulting in version 6.1.12 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_activate(UX_SLAVE_CLASS_COMMAND *command) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_done.c b/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_done.c index b3dbf49..5a485eb 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_done.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_done.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_auto_seq_done PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -67,9 +67,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_auto_seq_done(UX_DEVICE_CLASS_CCID *ccid, ULONG slot, ULONG icc_status) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_start.c b/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_start.c index a2353e9..e3352ee 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_start.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_auto_seq_start.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_auto_seq_start PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -63,9 +63,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_auto_seq_start(UX_DEVICE_CLASS_CCID *ccid, ULONG slot) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_control_abort.c b/common/usbx_device_classes/src/ux_device_class_ccid_control_abort.c index f2e7ae5..ab94067 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_control_abort.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_control_abort.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_control_abort PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -64,9 +64,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_control_abort(UX_DEVICE_CLASS_CCID *ccid, ULONG slot, ULONG seq) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_hardware_error.c b/common/usbx_device_classes/src/ux_device_class_ccid_hardware_error.c index 794a58e..d13a076 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_hardware_error.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_hardware_error.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_hardware_error PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -64,9 +64,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_hardware_error(UX_DEVICE_CLASS_CCID *ccid, ULONG slot, ULONG error) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_icc_insert.c b/common/usbx_device_classes/src/ux_device_class_ccid_icc_insert.c index 5eb5999..6af4328 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_icc_insert.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_icc_insert.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_icc_insert PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -67,9 +67,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_icc_insert(UX_DEVICE_CLASS_CCID *ccid, ULONG slot, ULONG seq_start) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_icc_remove.c b/common/usbx_device_classes/src/ux_device_class_ccid_icc_remove.c index 9c88722..ffefc79 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_icc_remove.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_icc_remove.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_icc_remove PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -63,9 +63,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_icc_remove(UX_DEVICE_CLASS_CCID *ccid, ULONG slot) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_initialize.c b/common/usbx_device_classes/src/ux_device_class_ccid_initialize.c index 50504d0..5e20857 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_initialize.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_initialize.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_initialize PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -72,9 +72,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_initialize(UX_SLAVE_CLASS_COMMAND *command) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_notify_task_run.c b/common/usbx_device_classes/src/ux_device_class_ccid_notify_task_run.c index 11ac29d..732e93c 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_notify_task_run.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_notify_task_run.c @@ -37,7 +37,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_notify_task_run PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -70,7 +70,7 @@ /* */ /* DATE NAME DESCRIPTION */ /* */ -/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_notify_task_run(UX_DEVICE_CLASS_CCID *ccid) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_notify_thread_entry.c b/common/usbx_device_classes/src/ux_device_class_ccid_notify_thread_entry.c index 91350df..b42638d 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_notify_thread_entry.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_notify_thread_entry.c @@ -36,7 +36,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_notify_thread_entry PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -68,9 +68,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ VOID _ux_device_class_ccid_notify_thread_entry(ULONG ccid_inst) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_response.c b/common/usbx_device_classes/src/ux_device_class_ccid_response.c index 3d17288..33c24ee 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_response.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_response.c @@ -33,7 +33,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_response PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -64,9 +64,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_response(UX_DEVICE_CLASS_CCID *ccid, UCHAR *buffer, ULONG length) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_runner_task_run.c b/common/usbx_device_classes/src/ux_device_class_ccid_runner_task_run.c index 0ee07d9..4ba38b9 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_runner_task_run.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_runner_task_run.c @@ -37,7 +37,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_runner_task_run PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -70,7 +70,7 @@ /* */ /* DATE NAME DESCRIPTION */ /* */ -/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_runner_task_run(UX_DEVICE_CLASS_CCID *ccid) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_runner_thread_entry.c b/common/usbx_device_classes/src/ux_device_class_ccid_runner_thread_entry.c index 747d08b..c997889 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_runner_thread_entry.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_runner_thread_entry.c @@ -35,7 +35,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_runner_thread_entry PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -66,9 +66,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ VOID _ux_device_class_ccid_runner_thread_entry(ULONG ccid_runner) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_tasks_run.c b/common/usbx_device_classes/src/ux_device_class_ccid_tasks_run.c index cc56297..936c0c1 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_tasks_run.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_tasks_run.c @@ -40,7 +40,7 @@ static inline UINT _ux_device_class_ccid_rsp_task(UX_DEVICE_CLASS_CCID *ccid); /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_tasks_run PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -75,7 +75,7 @@ static inline UINT _ux_device_class_ccid_rsp_task(UX_DEVICE_CLASS_CCID *ccid); /* */ /* DATE NAME DESCRIPTION */ /* */ -/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */ +/* 03-08-2023 Chaoqiong Xiao Initial Version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_ccid_tasks_run(VOID *instance) diff --git a/common/usbx_device_classes/src/ux_device_class_ccid_thread_entry.c b/common/usbx_device_classes/src/ux_device_class_ccid_thread_entry.c index d983672..2fb99bc 100644 --- a/common/usbx_device_classes/src/ux_device_class_ccid_thread_entry.c +++ b/common/usbx_device_classes/src/ux_device_class_ccid_thread_entry.c @@ -35,7 +35,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_ccid_thread_entry PORTABLE C */ -/* 6.x */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -68,9 +68,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 04-25-2022 Chaoqiong Xiao Initial Version 6.1.11 */ -/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */ +/* 03-08-2023 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ -/* resulting in version 6.x */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ VOID _ux_device_class_ccid_thread_entry(ULONG ccid_inst) diff --git a/common/usbx_device_classes/src/ux_device_class_printer_entry.c b/common/usbx_device_classes/src/ux_device_class_printer_entry.c index b4d00a2..c1eea7d 100644 --- a/common/usbx_device_classes/src/ux_device_class_printer_entry.c +++ b/common/usbx_device_classes/src/ux_device_class_printer_entry.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_printer_entry PORTABLE C */ -/* 6.1.10 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -72,6 +72,9 @@ /* DATE NAME DESCRIPTION */ /* */ /* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */ +/* 03-08-2023 Yajun Xia Modified comment(s), */ +/* added error checks support, */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_printer_entry(UX_SLAVE_CLASS_COMMAND *command) @@ -88,7 +91,11 @@ UINT status; case UX_SLAVE_CLASS_COMMAND_INITIALIZE: /* Call the init function of the Printer class. */ +#if defined(UX_DEVICE_CLASS_PRINTER_ENABLE_ERROR_CHECKING) + status = _uxe_device_class_printer_initialize(command); +#else status = _ux_device_class_printer_initialize(command); +#endif /* Return the completion status. */ return(status); diff --git a/common/usbx_device_classes/src/ux_device_class_printer_initialize.c b/common/usbx_device_classes/src/ux_device_class_printer_initialize.c index f07e446..49722b9 100644 --- a/common/usbx_device_classes/src/ux_device_class_printer_initialize.c +++ b/common/usbx_device_classes/src/ux_device_class_printer_initialize.c @@ -148,3 +148,61 @@ UINT status; /* Return completion status. */ return(UX_SUCCESS); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_printer_initialize PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Yajun Xia, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in printer initialization function call.*/ +/* */ +/* INPUT */ +/* */ +/* command Pointer to printer command */ +/* */ +/* OUTPUT */ +/* */ +/* Completion Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_printer_initialize Initialize printer instance */ +/* */ +/* CALLED BY */ +/* */ +/* Device Stack */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Yajun Xia Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_printer_initialize(UX_SLAVE_CLASS_COMMAND *command) +{ +UX_DEVICE_CLASS_PRINTER_PARAMETER *printer_parameter; +ULONG length; + + /* Get the pointer to the application parameters for the printer class. */ + printer_parameter = command -> ux_slave_class_command_parameter; + + /* Sanity checks. */ + + /* Length of data (first two bytes in big endian). */ + length = _ux_utility_short_get_big_endian(printer_parameter -> ux_device_class_printer_device_id); + + if (length > UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH) + { + return(UX_INVALID_PARAMETER); + } + + return (_ux_device_class_printer_initialize(command)); +} diff --git a/common/usbx_device_classes/src/ux_device_class_printer_ioctl.c b/common/usbx_device_classes/src/ux_device_class_printer_ioctl.c index c859930..2979b19 100644 --- a/common/usbx_device_classes/src/ux_device_class_printer_ioctl.c +++ b/common/usbx_device_classes/src/ux_device_class_printer_ioctl.c @@ -34,7 +34,7 @@ /* FUNCTION RELEASE */ /* */ /* _ux_device_class_printer_ioctl PORTABLE C */ -/* 6.1.10 */ +/* 6.2.1 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ @@ -47,6 +47,8 @@ /* */ /* printer Address of printer class */ /* instance */ +/* ioctl_function Ioctl function */ +/* Parameter Parameter of ioctl function */ /* */ /* OUTPUT */ /* */ @@ -65,6 +67,8 @@ /* DATE NAME DESCRIPTION */ /* */ /* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */ +/* 03-08-2023 Yajun Xia Modified comment(s), */ +/* resulting in version 6.2.1 */ /* */ /**************************************************************************/ UINT _ux_device_class_printer_ioctl(UX_DEVICE_CLASS_PRINTER *printer, ULONG ioctl_function, @@ -124,3 +128,56 @@ UX_SLAVE_TRANSFER *transfer; return(status); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_printer_ioctl PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Yajun Xia, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in printer class ioctl function */ +/* */ +/* INPUT */ +/* */ +/* printer Address of printer class */ +/* instance */ +/* ioctl_function Ioctl function */ +/* Parameter Parameter of ioctl function */ +/* */ +/* OUTPUT */ +/* */ +/* Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_printer_ioctl Printer class ioctl function */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Yajun Xia Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_printer_ioctl(UX_DEVICE_CLASS_PRINTER *printer, ULONG ioctl_function, + VOID *parameter) +{ + + /* Sanity checks. */ + if (printer == UX_NULL) + { + return (UX_INVALID_PARAMETER); + } + + return (_ux_device_class_printer_ioctl(printer, ioctl_function, parameter)); +}
\ No newline at end of file diff --git a/common/usbx_device_classes/src/ux_device_class_printer_read.c b/common/usbx_device_classes/src/ux_device_class_printer_read.c index a1e506b..72297bd 100644 --- a/common/usbx_device_classes/src/ux_device_class_printer_read.c +++ b/common/usbx_device_classes/src/ux_device_class_printer_read.c @@ -201,3 +201,59 @@ ULONG local_requested_length; /* Simply return the last transaction result. */ return(status); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_printer_read PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Yajun Xia, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in printer class read function */ +/* */ +/* INPUT */ +/* */ +/* printer Address of printer class */ +/* instance */ +/* buffer Pointer to buffer to save */ +/* received data */ +/* requested_length Length of bytes to read */ +/* actual_length Pointer to save number of */ +/* bytes read */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_printer_read Printer class read function */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Yajun Xia Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_printer_read(UX_DEVICE_CLASS_PRINTER *printer, UCHAR *buffer, + ULONG requested_length, ULONG *actual_length) +{ + + /* Sanity checks. */ + if ((printer == UX_NULL) || (buffer == UX_NULL) || (actual_length == UX_NULL)) + { + return (UX_INVALID_PARAMETER); + } + + return (_ux_device_class_printer_read(printer, buffer, requested_length, actual_length)); +}
\ No newline at end of file diff --git a/common/usbx_device_classes/src/ux_device_class_printer_write.c b/common/usbx_device_classes/src/ux_device_class_printer_write.c index 2c10958..b04266e 100644 --- a/common/usbx_device_classes/src/ux_device_class_printer_write.c +++ b/common/usbx_device_classes/src/ux_device_class_printer_write.c @@ -225,3 +225,59 @@ UINT status = 0; /* Simply return the last transaction result. */ return(status); } + +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _uxe_device_class_printer_write PORTABLE C */ +/* 6.2.1 */ +/* AUTHOR */ +/* */ +/* Yajun Xia, Microsoft Corporation */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function checks errors in printer class write function */ +/* */ +/* INPUT */ +/* */ +/* printer Address of printer class */ +/* instance */ +/* buffer Pointer to data to write */ +/* requested_length Length of bytes to write, */ +/* set to 0 to issue ZLP */ +/* actual_length Pointer to save number of */ +/* bytes written */ +/* */ +/* OUTPUT */ +/* */ +/* None */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_class_printer_write Printer class write function */ +/* */ +/* CALLED BY */ +/* */ +/* Application */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* 03-08-2023 Yajun Xia Initial Version 6.2.1 */ +/* */ +/**************************************************************************/ +UINT _uxe_device_class_printer_write(UX_DEVICE_CLASS_PRINTER *printer, UCHAR *buffer, + ULONG requested_length, ULONG *actual_length) +{ + + /* Sanity checks. */ + if ((printer == UX_NULL) || (buffer == UX_NULL) || (actual_length == UX_NULL)) + { + return (UX_INVALID_PARAMETER); + } + + return (_ux_device_class_printer_write(printer, buffer, requested_length, actual_length)); +}
\ No newline at end of file |
