forked from PAWPAW-Mirror/lib_xua
implemented descriptor handler flow for USB_DESCRIPTOR_OVERRIDE_RATE_RES
This commit is contained in:
@@ -88,6 +88,12 @@ int min(int x, int y);
|
||||
/* Global current device config var*/
|
||||
extern unsigned char g_currentConfig;
|
||||
|
||||
|
||||
#if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES))
|
||||
extern unsigned int g_curAudOut_SamFreq;
|
||||
extern unsigned int g_curAudIn_SamFreq;
|
||||
#endif
|
||||
|
||||
/* Global endpoint status arrays - declared in usb_device.xc */
|
||||
extern unsigned char g_interfaceAlt[];
|
||||
|
||||
@@ -777,6 +783,27 @@ void XUA_Endpoint0_loop(XUD_Result_t result, USB_SetupPacket_t sp, chanend c_ep0
|
||||
#endif
|
||||
#elif (AUDIO_CLASS == 1)
|
||||
/* Return Audio 1.0 Descriptors in FS, should never be in HS! */
|
||||
|
||||
|
||||
#ifdef USB_DESCRIPTOR_OVERRIDE_RATE_RES //change USB descriptor frequencies and bit resolution values here
|
||||
int i=0;
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = g_curAudOut_SamFreq & 0xff;
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (g_curAudOut_SamFreq & 0xff00)>> 8;
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (g_curAudOut_SamFreq & 0xff0000)>> 16;
|
||||
}
|
||||
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = g_curAudIn_SamFreq & 0xff;
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (g_curAudIn_SamFreq & 0xff00)>> 8;
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (g_curAudIn_SamFreq & 0xff0000)>> 16;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
result = USB_StandardRequests(ep0_out, ep0_in,
|
||||
null, 0,
|
||||
null, 0,
|
||||
|
||||
@@ -2357,7 +2357,7 @@ const unsigned num_freqs_a1 = MAX(3, (0
|
||||
/* Note, this is different that INTERFACE_COUNT since we dont support items such as MIDI, iAP etc in UAC1 mode */
|
||||
#define NUM_INTERFACES_A1 (1 + INPUT_INTERFACES_A1 + OUTPUT_INTERFACES_A1 + NUM_CONTROL_USB_INTERFACES + DFU_INTERFACES_A1 + HID_INTERFACES_A1)
|
||||
|
||||
#if (NUM_USB_CHAN_IN == 0) || defined(UAC_FORCE_FEEDBACK_EP)
|
||||
#if ((NUM_USB_CHAN_IN == 0) || defined(UAC_FORCE_FEEDBACK_EP))
|
||||
#define CFG_TOTAL_LENGTH_A1 (18 + AC_TOTAL_LENGTH + (INPUT_INTERFACES_A1 * (49 + num_freqs_a1 * 3)) + (OUTPUT_INTERFACES_A1 * (58 + num_freqs_a1 * 3)) + CONTROL_INTERFACE_BYTES + DFU_INTERFACE_BYTES + HID_INTERFACE_BYTES)
|
||||
#else
|
||||
#ifdef USB_CMD_CFG_SAMP_FREQ
|
||||
@@ -2367,6 +2367,13 @@ const unsigned num_freqs_a1 = MAX(3, (0
|
||||
#endif //USB_CMD_CFG_SAMP_FREQ
|
||||
#endif
|
||||
|
||||
#ifdef USB_DESCRIPTOR_OVERRIDE_RATE_RES
|
||||
#define AS_INTERFACE_BYTES (7)
|
||||
#define INTERFACE_DESCRIPTOR_BYTES (9)
|
||||
#define USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ (18 + AC_TOTAL_LENGTH + (OUTPUT_INTERFACES_A1 * (49 + num_freqs_a1 * 3)) + (2*INTERFACE_DESCRIPTOR_BYTES) + (AS_INTERFACE_BYTES) + 8)
|
||||
#define USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ (18 + AC_TOTAL_LENGTH + (2*INTERFACE_DESCRIPTOR_BYTES) + (AS_INTERFACE_BYTES) + 8)
|
||||
#endif
|
||||
|
||||
#define CHARIFY_SR(x) (x & 0xff),((x & 0xff00)>> 8),((x & 0xff0000)>> 16)
|
||||
|
||||
#if (MIN_FREQ_FS < 12000) && (MAX_FREQ_FS > 48000)
|
||||
|
||||
@@ -53,7 +53,7 @@ extern unsigned char mixSel[MAX_MIX_COUNT][MIX_INPUTS];
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef USB_CMD_CFG_SAMP_FREQ
|
||||
#if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES))
|
||||
extern unsigned int g_curAudOut_SamFreq;
|
||||
extern unsigned int g_curAudIn_SamFreq;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user