Merge pull request #1 from xmos/removed_warnings

Removed warnings
This commit is contained in:
Ross Owen
2017-05-23 15:41:17 +01:00
committed by GitHub
4 changed files with 99 additions and 102 deletions

View File

@@ -4,6 +4,7 @@ sc_usb_audio Change Log
7.2.0 7.2.0
----- -----
- ADDED: DFU to UAC1 descriptors (guarded by DFU and FORCE_UAC1_DFU) - ADDED: DFU to UAC1 descriptors (guarded by DFU and FORCE_UAC1_DFU)
- RESOLVED: Removed 'reinterpretation to type of larger alignment' warnings
7.1.0 7.1.0
----- -----

View File

@@ -274,7 +274,7 @@ static void updateVol(int unitID, int channel, chanend ?c_mix_ctl)
int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, chanend c_audioControl, chanend ?c_mix_ctl, chanend ?c_clk_ctl int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, chanend c_audioControl, chanend ?c_mix_ctl, chanend ?c_clk_ctl
) )
{ {
unsigned char buffer[128]; unsigned int buffer[32];
int unitID; int unitID;
XUD_Result_t result; XUD_Result_t result;
unsigned datalength; unsigned datalength;
@@ -306,7 +306,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D) if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D)
{ {
/* Get OUT data with Sample Rate into buffer*/ /* Get OUT data with Sample Rate into buffer*/
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
@@ -315,7 +315,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if(datalength == 4) if(datalength == 4)
{ {
/* Re-construct Sample Freq */ /* Re-construct Sample Freq */
int newSampleRate = buffer[0] | (buffer[1] << 8) | buffer[2] << 16 | buffer[3] << 24; int newSampleRate = buffer[0];
/* Instruct audio thread to change sample freq (if change required) */ /* Instruct audio thread to change sample freq (if change required) */
if(newSampleRate != g_curSamFreq) if(newSampleRate != g_curSamFreq)
@@ -387,22 +387,22 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
outuint(c_clk_ctl, GET_FREQ); outuint(c_clk_ctl, GET_FREQ);
outuint(c_clk_ctl, CLOCK_SPDIF_INDEX); outuint(c_clk_ctl, CLOCK_SPDIF_INDEX);
outct(c_clk_ctl, XS1_CT_END); outct(c_clk_ctl, XS1_CT_END);
(buffer, unsigned[])[0] = inuint(c_clk_ctl); buffer[0] = inuint(c_clk_ctl);
chkct(c_clk_ctl, XS1_CT_END); chkct(c_clk_ctl, XS1_CT_END);
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 4, sp.wLength ); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 4, sp.wLength );
} }
else else
{ {
(buffer, unsigned[])[0] = g_curSamFreq; buffer[0] = g_curSamFreq;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 4, sp.wLength ); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 4, sp.wLength );
} }
break; break;
#endif #endif
case ID_CLKSRC_INT: case ID_CLKSRC_INT:
/* Always report our current operating frequency */ /* Always report our current operating frequency */
(buffer, unsigned[])[0] = g_curSamFreq; buffer[0] = g_curSamFreq;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 4, sp.wLength ); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 4, sp.wLength );
break; break;
default: default:
@@ -422,8 +422,8 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
case ID_CLKSRC_INT: case ID_CLKSRC_INT:
/* Internal clock always valid */ /* Internal clock always valid */
buffer[0] = 1; (buffer, unsigned char[])[0] = 1;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 1, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 1, sp.wLength);
break; break;
case ID_CLKSRC_SPDIF: case ID_CLKSRC_SPDIF:
@@ -434,9 +434,9 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
outuint(c_clk_ctl, GET_VALID); outuint(c_clk_ctl, GET_VALID);
outuint(c_clk_ctl, CLOCK_SPDIF_INDEX); outuint(c_clk_ctl, CLOCK_SPDIF_INDEX);
outct(c_clk_ctl, XS1_CT_END); outct(c_clk_ctl, XS1_CT_END);
buffer[0] = inuint(c_clk_ctl); (buffer, unsigned char[])[0] = inuint(c_clk_ctl);
chkct(c_clk_ctl, XS1_CT_END); chkct(c_clk_ctl, XS1_CT_END);
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 1, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 1, sp.wLength);
} }
break; break;
@@ -448,9 +448,9 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
outuint(c_clk_ctl, GET_VALID); outuint(c_clk_ctl, GET_VALID);
outuint(c_clk_ctl, CLOCK_ADAT_INDEX); outuint(c_clk_ctl, CLOCK_ADAT_INDEX);
outct(c_clk_ctl, XS1_CT_END); outct(c_clk_ctl, XS1_CT_END);
buffer[0] = inuint(c_clk_ctl); (buffer, unsigned char[])[0] = inuint(c_clk_ctl);
chkct(c_clk_ctl, XS1_CT_END); chkct(c_clk_ctl, XS1_CT_END);
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 1, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 1, sp.wLength);
} }
break; break;
@@ -477,7 +477,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
/* Direction: Host-to-device */ /* Direction: Host-to-device */
if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D ) if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D )
{ {
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
@@ -488,7 +488,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if (!isnull(c_clk_ctl)) if (!isnull(c_clk_ctl))
{ {
outuint(c_clk_ctl, SET_SEL); outuint(c_clk_ctl, SET_SEL);
outuint(c_clk_ctl, buffer[0]); outuint(c_clk_ctl, (buffer, unsigned char[])[0]);
outct(c_clk_ctl, XS1_CT_END); outct(c_clk_ctl, XS1_CT_END);
} }
/* Send 0 Length as status stage */ /* Send 0 Length as status stage */
@@ -499,15 +499,15 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
else else
{ {
/* Direction: Device-to-host: Send Current Selection */ /* Direction: Device-to-host: Send Current Selection */
buffer[0] = 1; (buffer, unsigned char[])[0] = 1;
if (!isnull(c_clk_ctl)) if (!isnull(c_clk_ctl))
{ {
outuint(c_clk_ctl, GET_SEL); outuint(c_clk_ctl, GET_SEL);
outct(c_clk_ctl, XS1_CT_END); outct(c_clk_ctl, XS1_CT_END);
buffer[0] = inuint(c_clk_ctl); (buffer, unsigned char[])[0] = inuint(c_clk_ctl);
chkct(c_clk_ctl, XS1_CT_END); chkct(c_clk_ctl, XS1_CT_END);
} }
return XUD_DoGetRequest( ep0_out, ep0_in, buffer, 1, sp.wLength ); return XUD_DoGetRequest( ep0_out, ep0_in, (buffer, unsigned char[]), 1, sp.wLength );
} }
} }
@@ -527,7 +527,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D) if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D)
{ {
/* Expect OUT here (with volume) */ /* Expect OUT here (with volume) */
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
@@ -536,7 +536,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT) if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT)
{ {
volsOut[ sp.wValue&0xff ] = buffer[0] | (((int) (signed char) buffer[1]) << 8); volsOut[ sp.wValue&0xff ] = (buffer, unsigned char[])[0] | (((int) (signed char) (buffer, unsigned char[])[1]) << 8);
updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl ); updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl );
return XUD_DoSetRequestStatus(ep0_in); return XUD_DoSetRequestStatus(ep0_in);
} }
@@ -545,7 +545,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if ((sp.wValue & 0xff) <= NUM_USB_CHAN_IN) if ((sp.wValue & 0xff) <= NUM_USB_CHAN_IN)
{ {
volsIn[ sp.wValue&0xff ] = buffer[0] | (((int) (signed char) buffer[1]) << 8); volsIn[ sp.wValue&0xff ] = (buffer, unsigned char[])[0] | (((int) (signed char) (buffer, unsigned char[])[1]) << 8);
updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl ); updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl );
return XUD_DoSetRequestStatus(ep0_in); return XUD_DoSetRequestStatus(ep0_in);
} }
@@ -557,18 +557,18 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT) if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT)
{ {
buffer[0] = volsOut[ sp.wValue&0xff ]; (buffer, unsigned char[])[0] = volsOut[ sp.wValue&0xff ];
buffer[1] = volsOut[ sp.wValue&0xff ] >> 8; (buffer, unsigned char[])[1] = volsOut[ sp.wValue&0xff ] >> 8;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 2, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 2, sp.wLength);
} }
} }
else else
{ {
if ((sp.wValue & 0xff) <= NUM_USB_CHAN_IN) if ((sp.wValue & 0xff) <= NUM_USB_CHAN_IN)
{ {
buffer[0] = volsIn[ sp.wValue&0xff ]; (buffer, unsigned char[])[0] = volsIn[ sp.wValue&0xff ];
buffer[1] = volsIn[ sp.wValue&0xff ] >> 8; (buffer, unsigned char[])[1] = volsIn[ sp.wValue&0xff ] >> 8;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 2, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 2, sp.wLength);
} }
} }
} }
@@ -579,7 +579,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D) if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D)
{ {
/* Expect OUT here with mute */ /* Expect OUT here with mute */
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
@@ -588,7 +588,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT) if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT)
{ {
mutesOut[sp.wValue & 0xff] = buffer[0]; mutesOut[sp.wValue & 0xff] = (buffer, unsigned char[])[0];
updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl); updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl);
return XUD_DoSetRequestStatus(ep0_in); return XUD_DoSetRequestStatus(ep0_in);
} }
@@ -597,7 +597,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if((sp.wValue & 0xff) <= NUM_USB_CHAN_IN) if((sp.wValue & 0xff) <= NUM_USB_CHAN_IN)
{ {
mutesIn[ sp.wValue&0xff ] = buffer[0]; mutesIn[ sp.wValue&0xff ] = (buffer, unsigned char[])[0];
updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl); updateVol( unitID, ( sp.wValue & 0xff ), c_mix_ctl);
return XUD_DoSetRequestStatus(ep0_in); return XUD_DoSetRequestStatus(ep0_in);
} }
@@ -609,16 +609,16 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT) if ((sp.wValue & 0xff) <= NUM_USB_CHAN_OUT)
{ {
buffer[0] = mutesOut[sp.wValue&0xff]; (buffer, unsigned char[])[0] = mutesOut[sp.wValue&0xff];
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
} }
} }
else else
{ {
if((sp.wValue & 0xff) <= NUM_USB_CHAN_IN) if((sp.wValue & 0xff) <= NUM_USB_CHAN_IN)
{ {
buffer[0] = mutesIn[ sp.wValue&0xff ]; (buffer, unsigned char[])[0] = mutesIn[ sp.wValue&0xff ];
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
} }
} }
} }
@@ -641,12 +641,12 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
int c = sp.wValue & 0xff; int c = sp.wValue & 0xff;
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
channelMapAud[c] = buffer[0] | buffer[1] << 8; channelMapAud[c] = (buffer, unsigned char[])[0] | (buffer, unsigned char[])[1] << 8;
if (!isnull(c_mix_ctl)) if (!isnull(c_mix_ctl))
{ {
@@ -664,10 +664,10 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
} }
else else
{ {
buffer[0] = channelMapAud[sp.wValue & 0xff]; (buffer, unsigned char[])[0] = channelMapAud[sp.wValue & 0xff];
buffer[1] = 0; (buffer, unsigned char[])[1] = 0;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
} }
} }
@@ -679,12 +679,12 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
unsigned volume = 0; unsigned volume = 0;
int c = sp.wValue & 0xff; int c = sp.wValue & 0xff;
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
channelMapUsb[c] = buffer[0] | buffer[1] << 8; channelMapUsb[c] = (buffer, unsigned char[])[0] | (buffer, unsigned char[])[1] << 8;
if (c < NUM_USB_CHAN_IN) if (c < NUM_USB_CHAN_IN)
{ {
@@ -701,9 +701,9 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
else else
{ {
/* Direction: Device-to-host */ /* Direction: Device-to-host */
buffer[0] = channelMapUsb[sp.wValue & 0xff]; (buffer, unsigned char[])[0] = channelMapUsb[sp.wValue & 0xff];
buffer[1] = 0; (buffer, unsigned char[])[1] = 0;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
} }
break; break;
@@ -716,7 +716,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D) if(sp.bmRequestType.Direction == USB_BM_REQTYPE_DIRECTION_H2D)
{ {
/* Direction: Host-to-device */ /* Host-to-device */ /* Direction: Host-to-device */ /* Host-to-device */
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
@@ -731,13 +731,13 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if(cs < (MAX_MIX_COUNT + 1)) if(cs < (MAX_MIX_COUNT + 1))
{ {
/* Check for "off" - update local state */ /* Check for "off" - update local state */
if(buffer[0] == 0xFF) if((buffer, unsigned char[])[0] == 0xFF)
{ {
mixSel[cs][cn] = (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + MAX_MIX_COUNT); mixSel[cs][cn] = (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + MAX_MIX_COUNT);
} }
else else
{ {
mixSel[cs][cn] = buffer[0]; mixSel[cs][cn] = (buffer, unsigned char[])[0];
} }
if(cs == 0) if(cs == 0)
@@ -770,7 +770,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
else else
{ {
/* Direction: Device-to-Host (GET) */ /* Direction: Device-to-Host (GET) */
buffer[0] = 0; (buffer, unsigned char[])[0] = 0;
/* Channel Number bounds check for safety */ /* Channel Number bounds check for safety */
if(cn < MIX_INPUTS) if(cn < MIX_INPUTS)
@@ -779,8 +779,8 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
/* TODO ideally have a return for cs = 0. I.e all mix maps */ /* TODO ideally have a return for cs = 0. I.e all mix maps */
if((cs > 0) && (cs < (MAX_MIX_COUNT+1))) if((cs > 0) && (cs < (MAX_MIX_COUNT+1)))
{ {
buffer[0] = mixSel[cs-1][cn]; (buffer, unsigned char[])[0] = mixSel[cs-1][cn];
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 1, 1 ); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 1, 1 );
} }
} }
} }
@@ -794,12 +794,12 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
unsigned volume = 0; unsigned volume = 0;
/* Expect OUT here with mute */ /* Expect OUT here with mute */
if((result = XUD_GetBuffer(ep0_out, buffer, datalength)) != XUD_RES_OKAY) if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), datalength)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
mixer1Weights[sp.wValue & 0xff] = buffer[0] | buffer[1] << 8; mixer1Weights[sp.wValue & 0xff] = (buffer, unsigned char[])[0] | (buffer, unsigned char[])[1] << 8;
if (mixer1Weights[sp.wValue & 0xff] == 0x8000) if (mixer1Weights[sp.wValue & 0xff] == 0x8000)
{ {
@@ -824,10 +824,10 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
else else
{ {
short weight = mixer1Weights[sp.wValue & 0xff]; short weight = mixer1Weights[sp.wValue & 0xff];
buffer[0] = weight & 0xff; (buffer, unsigned char[])[0] = weight & 0xff;
buffer[1] = (weight >> 8) & 0xff; (buffer, unsigned char[])[1] = (weight >> 8) & 0xff;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
} }
break; break;
@@ -882,7 +882,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if((lowSampleRateList[k] >= MIN_FREQ) && (lowSampleRateList[k] <= MAX_FREQ)) if((lowSampleRateList[k] >= MIN_FREQ) && (lowSampleRateList[k] <= MAX_FREQ))
{ {
storeFreq(buffer, i, lowSampleRateList[k]); storeFreq((buffer, unsigned char[]), i, lowSampleRateList[k]);
num_freqs++; num_freqs++;
} }
} }
@@ -894,7 +894,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
{ {
if((currentFreq44 <= maxFreq) && (currentFreq44 >= MIN_FREQ)) if((currentFreq44 <= maxFreq) && (currentFreq44 >= MIN_FREQ))
{ {
storeFreq(buffer, i, currentFreq44); storeFreq((buffer, unsigned char[]), i, currentFreq44);
num_freqs++; num_freqs++;
currentFreq44*=2; currentFreq44*=2;
} }
@@ -902,7 +902,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
if((currentFreq48 <= maxFreq)) if((currentFreq48 <= maxFreq))
{ {
/* Note i passed byref here */ /* Note i passed byref here */
storeFreq(buffer, i, currentFreq48); storeFreq((buffer, unsigned char[]), i, currentFreq48);
num_freqs++; num_freqs++;
currentFreq48*=2; currentFreq48*=2;
} }
@@ -915,14 +915,14 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
unsigned srList[] = {SAMPLE_RATE_LIST}; unsigned srList[] = {SAMPLE_RATE_LIST};
for(int j = 0; j < sizeof(srList)/(sizeof(srList[0])); j++) for(int j = 0; j < sizeof(srList)/(sizeof(srList[0])); j++)
{ {
storeFreq(buffer, i, srList[j]); storeFreq((buffer, unsigned char[]), i, srList[j]);
num_freqs++; num_freqs++;
} }
#endif #endif
storeShort(buffer, 0, num_freqs); storeShort((buffer, unsigned char[]), 0, num_freqs);
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, i, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), i, sp.wLength);
} }
break; break;
@@ -943,11 +943,11 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
/* Volume control, send back same range for all channels (i.e. ignore CN) */ /* Volume control, send back same range for all channels (i.e. ignore CN) */
case FU_VOLUME_CONTROL: case FU_VOLUME_CONTROL:
storeShort(buffer, 0, 1); storeShort((buffer, unsigned char[]), 0, 1);
storeShort(buffer, 2, MIN_VOLUME); storeShort((buffer, unsigned char[]), 2, MIN_VOLUME);
storeShort(buffer, 4, MAX_VOLUME); storeShort((buffer, unsigned char[]), 4, MAX_VOLUME);
storeShort(buffer, 6, VOLUME_RES); storeShort((buffer, unsigned char[]), 6, VOLUME_RES);
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
break; break;
default: default:
@@ -960,11 +960,11 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
#ifdef MIXER #ifdef MIXER
/* Mixer Unit */ /* Mixer Unit */
case ID_MIXER_1: case ID_MIXER_1:
storeShort(buffer, 0, 1); storeShort((buffer, unsigned char[]), 0, 1);
storeShort(buffer, 2, MIN_MIXER_VOLUME); storeShort((buffer, unsigned char[]), 2, MIN_MIXER_VOLUME);
storeShort(buffer, 4, MAX_MIXER_VOLUME); storeShort((buffer, unsigned char[]), 4, MAX_MIXER_VOLUME);
storeShort(buffer, 6, VOLUME_RES_MIXER); storeShort((buffer, unsigned char[]), 6, VOLUME_RES_MIXER);
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, sp.wLength, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), sp.wLength, sp.wLength);
break; break;
#endif #endif
@@ -1006,12 +1006,12 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
outuint(c_mix_ctl, GET_STREAM_LEVELS); outuint(c_mix_ctl, GET_STREAM_LEVELS);
outuint(c_mix_ctl, i); outuint(c_mix_ctl, i);
outct(c_mix_ctl, XS1_CT_END); outct(c_mix_ctl, XS1_CT_END);
storeShort(buffer, i*2, (inuint(c_mix_ctl) >> 15)); storeShort((buffer, unsigned char[]), i*2, (inuint(c_mix_ctl) >> 15));
chkct(c_mix_ctl, XS1_CT_END); chkct(c_mix_ctl, XS1_CT_END);
} }
else else
{ {
storeShort(buffer, i*2, 0); storeShort((buffer, unsigned char[]), i*2, 0);
} }
} }
else else
@@ -1021,12 +1021,12 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
outuint(c_mix_ctl, GET_INPUT_LEVELS); outuint(c_mix_ctl, GET_INPUT_LEVELS);
outuint(c_mix_ctl, (i - NUM_USB_CHAN_OUT)); outuint(c_mix_ctl, (i - NUM_USB_CHAN_OUT));
outct(c_mix_ctl, XS1_CT_END); outct(c_mix_ctl, XS1_CT_END);
storeShort(buffer, i*2, (inuint(c_mix_ctl) >> 15)); storeShort((buffer, unsigned char[]), i*2, (inuint(c_mix_ctl) >> 15));
chkct(c_mix_ctl, XS1_CT_END); chkct(c_mix_ctl, XS1_CT_END);
} }
else else
{ {
storeShort(buffer, i*2, 0); storeShort((buffer, unsigned char[]), i*2, 0);
} }
} }
} }
@@ -1043,18 +1043,18 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c
outuint(c_mix_ctl, GET_OUTPUT_LEVELS); outuint(c_mix_ctl, GET_OUTPUT_LEVELS);
outuint(c_mix_ctl, i); outuint(c_mix_ctl, i);
outct(c_mix_ctl, XS1_CT_END); outct(c_mix_ctl, XS1_CT_END);
storeShort(buffer, i*2, (inuint(c_mix_ctl) >> 15)); storeShort((buffer, unsigned char[]), i*2, (inuint(c_mix_ctl) >> 15));
chkct(c_mix_ctl, XS1_CT_END); chkct(c_mix_ctl, XS1_CT_END);
} }
else else
{ {
storeShort(buffer, i*2, 0); storeShort((buffer, unsigned char[]), i*2, 0);
} }
} }
break; break;
} }
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, length, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), length, sp.wLength);
} }
break; break;
} }
@@ -1078,7 +1078,7 @@ int AudioEndpointRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp
*/ */
XUD_Result_t result; XUD_Result_t result;
unsigned char buffer[128]; unsigned int buffer[32];
unsigned length; unsigned length;
/* Host to Device */ /* Host to Device */
@@ -1092,7 +1092,7 @@ int AudioEndpointRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp
/* Check Control Selector */ /* Check Control Selector */
unsigned short controlSelector = sp.wValue>>8; unsigned short controlSelector = sp.wValue>>8;
if((result != XUD_GetBuffer(ep0_out, buffer, length)) != XUD_RES_OKAY) if((result != XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), length)) != XUD_RES_OKAY)
{ {
return result; return result;
} }
@@ -1103,7 +1103,7 @@ int AudioEndpointRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp
if((sp.wLength == 3) && (length == 3)) if((sp.wLength == 3) && (length == 3))
{ {
/* Recontruct sample-freq */ /* Recontruct sample-freq */
int newSampleRate = buffer[0] | (buffer [1] << 8) | (buffer[2] << 16); int newSampleRate = (buffer, unsigned char[])[0] | ((buffer, unsigned char[])[1] << 8) | ((buffer, unsigned char[])[2] << 16);
if(newSampleRate != g_curSamFreq) if(newSampleRate != g_curSamFreq)
{ {
@@ -1130,11 +1130,11 @@ int AudioEndpointRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp
FeedbackStabilityDelay(); FeedbackStabilityDelay();
} }
} }
return XUD_SetBuffer(ep0_in, buffer, 0); return XUD_SetBuffer(ep0_in, (buffer, unsigned char[]), 0);
} }
} }
#else #else
return XUD_SetBuffer(ep0_in, buffer, 0); return XUD_SetBuffer(ep0_in, (buffer, unsigned char[]), 0);
#endif #endif
} }
break; break;
@@ -1145,8 +1145,8 @@ int AudioEndpointRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp
switch(sp.bRequest) switch(sp.bRequest)
{ {
case UAC_B_REQ_GET_CUR: case UAC_B_REQ_GET_CUR:
(buffer, unsigned[])[0] = g_curSamFreq; buffer[0] = g_curSamFreq;
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 3, sp.wLength); return XUD_DoGetRequest(ep0_out, ep0_in, (buffer, unsigned char[]), 3, sp.wLength);
break; break;
} }
} }

View File

@@ -2280,10 +2280,6 @@ const unsigned num_freqs_a1 = MAX(3, (0
#define STREAMING_INTERFACES (INPUT_INTERFACES_A1 + OUTPUT_INTERFACES_A1) #define STREAMING_INTERFACES (INPUT_INTERFACES_A1 + OUTPUT_INTERFACES_A1)
/* Number of interfaces for Audio 1.0 (+1 for control ) */
/* 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_INTERFACES)
//#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) //#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)
//#endif //#endif

View File

@@ -80,7 +80,7 @@ static unsigned int g_midi_from_host_buffer[MAX_USB_MIDI_PACKET_SIZE/4];
unsigned char gc_zero_buffer[4]; unsigned char gc_zero_buffer[4];
#endif #endif
unsigned char fb_clocks[16]; unsigned int fb_clocks[4];
//#define FB_TOLERANCE_TEST //#define FB_TOLERANCE_TEST
#define FB_TOLERANCE 0x100 #define FB_TOLERANCE 0x100
@@ -239,7 +239,7 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in,
SET_SHARED_GLOBAL(g_aud_to_host_flag, 1); SET_SHARED_GLOBAL(g_aud_to_host_flag, 1);
#endif #endif
(fb_clocks, unsigned[])[0] = 0; fb_clocks[0] = 0;
/* Mark OUT endpoints ready to receive data from host */ /* Mark OUT endpoints ready to receive data from host */
#ifdef MIDI #ifdef MIDI
@@ -261,7 +261,7 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in,
#if (AUDIO_CLASS == 1) #if (AUDIO_CLASS == 1)
#if (NUM_USB_CHAN_IN == 0) || defined (UAC_FORCE_FEEDBACK_EP) #if (NUM_USB_CHAN_IN == 0) || defined (UAC_FORCE_FEEDBACK_EP)
/* In UAC1 we dont use a stream start event (and we are always FS) so mark FB EP ready now */ /* In UAC1 we dont use a stream start event (and we are always FS) so mark FB EP ready now */
XUD_SetReady_In(ep_aud_fb, fb_clocks, 3); XUD_SetReady_In(ep_aud_fb, (fb_clocks, unsigned char[]), 3);
#endif #endif
#endif #endif
@@ -390,11 +390,11 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in,
if (busSpeed == XUD_SPEED_HS) if (busSpeed == XUD_SPEED_HS)
{ {
XUD_SetReady_In(ep_aud_fb, fb_clocks, 4); XUD_SetReady_In(ep_aud_fb, (fb_clocks, unsigned char[]), 4);
} }
else else
{ {
XUD_SetReady_In(ep_aud_fb, fb_clocks, 3); XUD_SetReady_In(ep_aud_fb, (fb_clocks, unsigned char[]), 3);
} }
#endif #endif
} }
@@ -468,11 +468,11 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in,
if (usb_speed == XUD_SPEED_HS) if (usb_speed == XUD_SPEED_HS)
{ {
(fb_clocks, unsigned[])[0] = clocks; fb_clocks[0] = clocks;
} }
else else
{ {
(fb_clocks, unsigned[])[0] = clocks>>2; fb_clocks[0] = clocks>>2;
} }
} }
#ifdef FB_TOLERANCE_TEST #ifdef FB_TOLERANCE_TEST
@@ -535,11 +535,11 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in,
if (usb_speed == XUD_SPEED_HS) if (usb_speed == XUD_SPEED_HS)
{ {
(fb_clocks, unsigned[])[0] = clocks; fb_clocks[0] = clocks;
} }
else else
{ {
(fb_clocks, unsigned[])[0] = clocks >> 2; fb_clocks[0] = clocks >> 2;
} }
} }
#ifdef FB_TOLERANCE_TEST #ifdef FB_TOLERANCE_TEST
@@ -578,11 +578,11 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in,
if (busSpeed == XUD_SPEED_HS) if (busSpeed == XUD_SPEED_HS)
{ {
XUD_SetReady_In(ep_aud_fb, fb_clocks, 4); XUD_SetReady_In(ep_aud_fb, (fb_clocks, unsigned char[]), 4);
} }
else else
{ {
XUD_SetReady_In(ep_aud_fb, fb_clocks, 3); XUD_SetReady_In(ep_aud_fb, (fb_clocks, unsigned char[]), 3);
} }
} }
break; break;