diff --git a/module_usb_audio/endpoint0/endpoint0.c b/module_usb_audio/endpoint0/endpoint0.c index 5c70df08..523f00bd 100755 --- a/module_usb_audio/endpoint0/endpoint0.c +++ b/module_usb_audio/endpoint0/endpoint0.c @@ -97,6 +97,8 @@ unsigned g_curStreamAlt_In = 0; /* Global variable for current USB bus speed (i.e. FS/HS) */ XUD_BusSpeed_t g_curUsbSpeed = 0; + +/* Subslot */ const unsigned g_subSlot_Out_HS[OUTPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_OUTPUT_1_SUBSLOT_BYTES, #if(OUTPUT_FORMAT_COUNT > 1) HS_STREAM_FORMAT_OUTPUT_2_SUBSLOT_BYTES, @@ -115,10 +117,25 @@ const unsigned g_subSlot_Out_FS[OUTPUT_FORMAT_COUNT] = {FS_STREAM_FORMAT_OUTP #endif }; -const unsigned g_subSlot_In_HS[INPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_INPUT_1_SUBSLOT_BYTES}; +const unsigned g_subSlot_In_HS[INPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_INPUT_1_SUBSLOT_BYTES, +#if(INPUT_FORMAT_COUNT > 1) + HS_STREAM_FORMAT_INPUT_2_SUBSLOT_BYTES, +#endif +#if(INPUT_FORMAT_COUNT > 2) + HS_STREAM_FORMAT_INPUT_3_SUBSLOT_BYTES +#endif +}; -const unsigned g_subSlot_In_FS[INPUT_FORMAT_COUNT] = {FS_STREAM_FORMAT_INPUT_1_SUBSLOT_BYTES}; +const unsigned g_subSlot_In_FS[INPUT_FORMAT_COUNT] = {FS_STREAM_FORMAT_INPUT_1_SUBSLOT_BYTES, +#if(INPUT_FORMAT_COUNT > 1) + FS_STREAM_FORMAT_INPUT_2_SUBSLOT_BYTES, +#endif +#if(INPUT_FORMAT_COUNT > 2) + FS_STREAM_FORMAT_INPUT_3_SUBSLOT_BYTES +#endif +}; +/* Sample Resolution */ const unsigned g_sampRes_Out_HS[OUTPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS, #if(OUTPUT_FORMAT_COUNT > 1) HS_STREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS, @@ -137,12 +154,26 @@ const unsigned g_sampRes_Out_FS[OUTPUT_FORMAT_COUNT] = {FS_STREAM_FORMAT_OUTP #endif }; -const unsigned g_sampRes_In_HS[OUTPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_INPUT_1_RESOLUTION_BITS}; +const unsigned g_sampRes_In_HS[INPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_INPUT_1_RESOLUTION_BITS, +#if(INPUT_FORMAT_COUNT > 1) + HS_STREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS, +#endif +#if(INPUT_FORMAT_COUNT > 2) + HS_STREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS +#endif +}; -const unsigned g_sampRes_In_FS[OUTPUT_FORMAT_COUNT] = {FS_STREAM_FORMAT_INPUT_1_RESOLUTION_BITS}; +const unsigned g_sampRes_In_FS[INPUT_FORMAT_COUNT] = {FS_STREAM_FORMAT_INPUT_1_RESOLUTION_BITS, +#if(INPUT_FORMAT_COUNT > 1) + FS_STREAM_FORMAT_INPUT_2_RESOLUTION_BITS, +#endif +#if(INPUT_FORMAT_COUNT > 2) + FS_STREAM_FORMAT_INPUT_3_RESOLUTION_BITS +#endif +}; +/* Data Format (Note, this is shared over HS and FS */ const unsigned g_dataFormat_Out[OUTPUT_FORMAT_COUNT] = {STREAM_FORMAT_OUTPUT_1_DATAFORMAT, - #if(OUTPUT_FORMAT_COUNT > 1) STREAM_FORMAT_OUTPUT_2_DATAFORMAT, #endif @@ -151,7 +182,25 @@ const unsigned g_dataFormat_Out[OUTPUT_FORMAT_COUNT] = {STREAM_FORMAT_OUTPUT_ #endif }; -const unsigned g_dataFormat_In[INPUT_FORMAT_COUNT] = {STREAM_FORMAT_INPUT_1_DATAFORMAT}; +const unsigned g_dataFormat_In[INPUT_FORMAT_COUNT] = {STREAM_FORMAT_INPUT_1_DATAFORMAT, +#if(INPUT_FORMAT_COUNT > 1) + STREAM_FORMAT_INPUT_2_DATAFORMAT, +#endif +#if(INPUT_FORMAT_COUNT > 2) + STREAM_FORMAT_INPUT_3_DATAFORMAT +#endif +}; + +/* Channel count */ +/* Note, currently only input changes.. */ +const unsigned g_chanCount_In_HS[INPUT_FORMAT_COUNT] = {HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT, +#if(INPUT_FORMAT_COUNT > 1) + HS_STREAM_FORMAT_INPUT_2_CHAN_COUNT, +#endif +#if(INPUT_FORMAT_COUNT > 2) + HS_STREAM_FORMAT_INPUT_3_CHAN_COUNT +#endif +}; /* Endpoint 0 function. Handles all requests to the device */ void Endpoint0(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl,