diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 028c42b5..477bcef0 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,13 +1,22 @@ sc_usb_audio Change Log ======================= -6.12.7 +6.13.0 ------ - ADDED: Device now uses implicit feedback when input stream is available (previously explicit feedback pipe always used). This saves chanend/EP resources and means less processing burden for the host. Previous behaviour available by enabling UAC_FORCE_FEEDBACK_EP - - CHANGE: Mixer and non-mixer channel comms scheme (decouple <-> audio path) now the identical - + - RESOLVED: Exception when SPDIF_TX and ADAT_TX both enabled due to clock-block being configured + after already started. Caused by SPDIF_TX define check typo + - RESOLVED: DFU flag address changed to properly conform to memory address range allocated to + apps by tools + - RESOLVED: Build failure when DFU disabled + - RESOLVED: Build issue when I2S_CHANS_ADC/DAC set to 0 and CODEC_MASTER enabled + - RESOLVED: Typo in MCLK_441 checking for MIN_FREQ define + - CHANGE: Mixer and non-mixer channel comms scheme (decouple <-> audio path) now identical + - CHANGE: Input stream buffering modified such that during overflow older samples are removed + rather than ignoring most recent samples. Removes any chance of stale input packets + being sent to host. 6.12.6 ------ diff --git a/README.rst b/README.rst index 4580f0c3..84737e8f 100644 --- a/README.rst +++ b/README.rst @@ -1,7 +1,7 @@ USB Audio Shared ................ -:Latest release: 6.12.5rc0 +:Latest release: 6.13.0beta1 :Maintainer: xross :Description: USB Audio Shared Components. For use in the XMOS USB Audio Refererence Designs. diff --git a/module_dfu/.xproject b/module_dfu/.xproject index d80aba33..de455f2e 100644 --- a/module_dfu/.xproject +++ b/module_dfu/.xproject @@ -1 +1 @@ -sc_usb_audioXM-004720-SM \ No newline at end of file +sc_usb_audioXM-004720-SM6.13.0beta0 \ No newline at end of file diff --git a/module_queue/.xproject b/module_queue/.xproject index d80aba33..de455f2e 100644 --- a/module_queue/.xproject +++ b/module_queue/.xproject @@ -1 +1 @@ -sc_usb_audioXM-004720-SM \ No newline at end of file +sc_usb_audioXM-004720-SM6.13.0beta0 \ No newline at end of file diff --git a/module_queue/module_build_info b/module_queue/module_build_info index 84cb704f..5082786c 100644 --- a/module_queue/module_build_info +++ b/module_queue/module_build_info @@ -11,4 +11,4 @@ MODULE_XCC_XC_FLAGS = $(XCC_XC_FLAGS) -DEPENDENT_MODULES = module_xassert +DEPENDENT_MODULES = lib_xassert diff --git a/module_usb_audio/.cproject b/module_usb_audio/.cproject index 5cbe48b9..4e47aeca 100644 --- a/module_usb_audio/.cproject +++ b/module_usb_audio/.cproject @@ -1,3 +1,4 @@ +<<<<<<< HEAD @@ -46,6 +47,187 @@ +======= + + + + + + + + + + + + + + + + + + xmake + -f .makefile + all + true + true + true + + + xmake + -f .makefile + clean + true + true + true + + + + + + + + + + + + + + + + + + + + @@ -878,6 +1077,7 @@ +<<<<<<< HEAD @@ -892,6 +1092,22 @@ +======= + + + + + + + + + + + + + + +>>>>>>> master diff --git a/module_usb_audio/.xproject b/module_usb_audio/.xproject index d80aba33..de455f2e 100644 --- a/module_usb_audio/.xproject +++ b/module_usb_audio/.xproject @@ -1 +1 @@ -sc_usb_audioXM-004720-SM \ No newline at end of file +sc_usb_audioXM-004720-SM6.13.0beta0 \ No newline at end of file diff --git a/module_usb_audio/audio.xc b/module_usb_audio/audio.xc index 0b07c330..99e9f97d 100755 --- a/module_usb_audio/audio.xc +++ b/module_usb_audio/audio.xc @@ -720,7 +720,7 @@ unsigned static deliver(chanend c_out, chanend ?c_spd_out, /* Manual IN instruction since compiler generates an extra setc per IN (bug #15256) */ unsigned sample; asm volatile("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); - + if(buffIndex) samplesIn_1[((frameCount-1)&(I2S_CHANS_PER_FRAME-1))+i] = bitrev(sample); // channels 1, 3, 5.. on each line. else @@ -1013,7 +1013,7 @@ chanend ?c_config, chanend ?c configure_clock_src(clk_mst_spd, p_mclk_in); configure_out_port_no_ready(p_adat_tx, clk_mst_spd, 0); set_clock_fall_delay(clk_mst_spd, 7); -#ifndef SPDIF +#ifndef SPDIF_TX start_clock(clk_mst_spd); #endif #endif diff --git a/module_usb_audio/devicedefines.h b/module_usb_audio/devicedefines.h index ad33f4cd..c4d9a2aa 100644 --- a/module_usb_audio/devicedefines.h +++ b/module_usb_audio/devicedefines.h @@ -465,14 +465,14 @@ * @brief Device firmware version number in Binary Coded Decimal format: 0xJJMN where JJ: major, M: minor, N: sub-minor version number. */ #ifndef BCD_DEVICE_M -#define BCD_DEVICE_M 12 +#define BCD_DEVICE_M 13 #endif /** * @brief Device firmware version number in Binary Coded Decimal format: 0xJJMN where JJ: major, M: minor, N: sub-minor version number. */ #ifndef BCD_DEVICE_N -#define BCD_DEVICE_N 5 +#define BCD_DEVICE_N 0 #endif /** diff --git a/module_usb_audio/endpoint0/descriptors.h b/module_usb_audio/endpoint0/descriptors.h index 339c8c92..c537f4a1 100644 --- a/module_usb_audio/endpoint0/descriptors.h +++ b/module_usb_audio/endpoint0/descriptors.h @@ -1417,10 +1417,10 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= /* Type 1 Format Type Descriptor */ .Audio_Out_Format = { - .bLength = 0x06, - .bDescriptorType = UAC_CS_DESCTYPE_INTERFACE, - .bDescriptorSubtype = UAC_CS_AS_INTERFACE_SUBTYPE_FORMAT_TYPE, - .bFormatType = UAC_FORMAT_TYPE_I, + .bLength = 0x06, + .bDescriptorType = UAC_CS_DESCTYPE_INTERFACE, + .bDescriptorSubtype = UAC_CS_AS_INTERFACE_SUBTYPE_FORMAT_TYPE, + .bFormatType = UAC_FORMAT_TYPE_I, .bSubslotSize = HS_STREAM_FORMAT_OUTPUT_1_SUBSLOT_BYTES, .bBitResolution = HS_STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS, }, @@ -1430,7 +1430,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= { .bLength = sizeof(USB_Descriptor_Endpoint_t), .bDescriptorType = USB_DESCTYPE_ENDPOINT, - .bEndpointAddress = ENDPOINT_ADDRESS_OUT_AUDIO, + .bEndpointAddress = ENDPOINT_ADDRESS_OUT_AUDIO, .bmAttributes = 0x05, /* (bitmap) */ .wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_1_MAXPACKETSIZE, .bInterval = 1, @@ -1451,11 +1451,11 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= #if (NUM_USB_CHAN_IN == 0) || defined(UAC_FORCE_FEEDBACK_EP) .Audio_Out_Fb_Endpoint = { - .bLength = 0x07, - .bDescriptorType = USB_DESCTYPE_ENDPOINT, - .bEndpointAddress = ENDPOINT_ADDRESS_IN_FEEDBACK, + .bLength = 0x07, + .bDescriptorType = USB_DESCTYPE_ENDPOINT, + .bEndpointAddress = ENDPOINT_ADDRESS_IN_FEEDBACK, .bmAttributes = 17, /* (bitmap) */ - .wMaxPacketSize = 0x0004, + .wMaxPacketSize = 0x0004, .bInterval = 4, /* Only values <= 1 frame (4) supported by MS */ }, #endif @@ -1616,7 +1616,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= .wMaxPacketSize = 0x0004, .bInterval = 4, /* Only values <= 1 frame (4) supported by MS */ }, -#endif +#endif #endif /* OUTPUT_FORMAT_COUNT > 2 */ #endif /* OUTPUT */ #if (NUM_USB_CHAN_IN > 0) diff --git a/module_usb_audio/endpoint0/endpoint0.c b/module_usb_audio/endpoint0/endpoint0.c index 7961c9fe..f3d4f51b 100755 --- a/module_usb_audio/endpoint0/endpoint0.c +++ b/module_usb_audio/endpoint0/endpoint0.c @@ -586,7 +586,7 @@ void Endpoint0(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl, * - Audio STREAMING interface request (In or Out) * - Audio endpoint request (Audio 1.0 Sampling freq requests are sent to the endpoint) */ - if(((interfaceNum == 0) || (interfaceNum == 1) || (interfaceNum == 2)) + if(((interfaceNum == 0) || (interfaceNum == 1) || (interfaceNum == 2)) #ifdef DFU && !DFU_mode_active #endif diff --git a/module_usb_audio/mixer/mixer.xc b/module_usb_audio/mixer/mixer.xc index e882f71c..e251e401 100644 --- a/module_usb_audio/mixer/mixer.xc +++ b/module_usb_audio/mixer/mixer.xc @@ -362,10 +362,10 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2) /* Request from audio()/mixer2() */ request = inuint(c_mixer2); - + /* Forward on Request for data to decouple thread */ outuint(c_host, request); - + /* Between request to decouple and respose ~ 400nS latency for interrupt to fire */ select { diff --git a/module_usb_audio/pdm_mics/pcm_pdm_mic.xc b/module_usb_audio/pdm_mics/pcm_pdm_mic.xc index 18a10225..57e8b213 100644 --- a/module_usb_audio/pdm_mics/pcm_pdm_mic.xc +++ b/module_usb_audio/pdm_mics/pcm_pdm_mic.xc @@ -24,287 +24,54 @@ in port p_mclk = PORT_PDM_MCLK; clock mclk = on tile[PDM_TILE]: XS1_CLKBLK_1; clock pdmclk = on tile[PDM_TILE]: XS1_CLKBLK_3; - -on tile[0]:p_leds leds = DEFAULT_INIT; - -// Buttons -in port p_buttons = on tile[0]: XS1_PORT_4A; - -enum buttons +void user_pdm_process(frame_audio *audio) { - BUTTON_A=1<<0, - BUTTON_B=1<<1, - BUTTON_C=1<<2, - BUTTON_D=1<<3 -}; + static unsigned gain = 8*4096*8; - -static const one_meter_thirty_degrees[6] = {0, 3, 8, 11, 8, 3}; - - - -static void set_dir(client interface led_button_if lb, unsigned dir, unsigned delay[]){ - - for(unsigned i=0;i<13;i++) - lb.set_led_brightness(i, 0); - delay[0] = 5; - for(unsigned i=0;i<6;i++) - delay[i+1] = one_meter_thirty_degrees[(i - dir + 3 +6)%6]; - - switch(dir){ - case 0:{ - lb.set_led_brightness(0, 255); - lb.set_led_brightness(1, 255); - break; - } - case 1:{ - lb.set_led_brightness(2, 255); - lb.set_led_brightness(3, 255); - break; - } - case 2:{ - lb.set_led_brightness(4, 255); - lb.set_led_brightness(5, 255); - break; - } - case 3:{ - lb.set_led_brightness(6, 255); - lb.set_led_brightness(7, 255); - break; - } - case 4:{ - lb.set_led_brightness(8, 255); - lb.set_led_brightness(9, 255); - break; - } - case 5:{ - lb.set_led_brightness(10, 255); - lb.set_led_brightness(11, 255); - break; - } + for(unsigned i=0;i<7;i++) + { + unsigned output = audio->data[i][0]; + audio->data[i][0] = ((uint64_t)output*gain)>>8; } } -void lores_DAS_fixed(streaming chanend c_ds_output_0, streaming chanend c_ds_output_1, - client interface led_button_if lb, chanend c_audio) +void pdm_process(streaming chanend c_ds_output_0, streaming chanend c_ds_output_1, chanend c_audio) { unsigned buffer = 1; //buffer index frame_audio audio[2]; //double buffered memset(audio, sizeof(frame_audio), 0); - int omni = 0; + decimator_init_audio_frame(c_ds_output_0, c_ds_output_1, buffer, audio); -#define MAX_DELAY 128 - - unsigned gain = 4096; -#ifdef FORM_BEAM - unsigned delay[7] = {0, 0, 0, 0, 0, 0, 0}; - int delay_buffer[MAX_DELAY][7]; - memset(delay_buffer, sizeof(int)*8*8, 0); - unsigned delay_head = 0; - unsigned dir = 0; - set_dir(lb, dir, delay); -#else - int summed = 0; - - /* Light center LED, kill other LEDs */ - for(unsigned i=0;i<13;i++) - lb.set_led_brightness(i, 0); - - lb.set_led_brightness(12, 255); - -#endif unsafe { - c_ds_output_0 <: (frame_audio * unsafe)audio[0].data[0]; - c_ds_output_1 <: (frame_audio * unsafe)audio[0].data[4]; + while(1) + { + frame_audio * current = decimator_get_next_audio_frame(c_ds_output_0, c_ds_output_1, buffer, audio); - while(1){ - - schkct(c_ds_output_0, 8); - schkct(c_ds_output_1, 8); - - c_ds_output_0 <: (frame_audio * unsafe)audio[buffer].data[0]; - c_ds_output_1 <: (frame_audio * unsafe)audio[buffer].data[4]; - - buffer = 1 - buffer; - -#ifdef FORM_BEAM - - //copy the current sample to the delay buffer - for(unsigned i=0;i<7;i++) - delay_buffer[delay_head][i] = audio[buffer].data[i][0]; - - //light the LED for the current direction -#endif - - - int t; - - select { - case lb.button_event():{ - unsigned button; - e_button_state pressed; - lb.get_button_event(button, pressed); - if(pressed == BUTTON_PRESSED){ - switch(button){ - case 0:{ - -#ifdef FORM_BEAM - printf("beamed\n"); - if(omni) - { - omni = 0; - lb.set_led_brightness(12, 0); - set_dir(lb, dir, delay); - } - else - { - dir--; - if(dir == -1) - dir = 5; - set_dir(lb, dir, delay); - printf("dir %d\n", dir+1); - for(unsigned i=0;i<7;i++) - printf("delay[%d] = %d\n", i, delay[i]); - printf("\n"); - } -#else - summed = !summed; - - if(summed) - { - for(unsigned i=0; i < 13; i++) - lb.set_led_brightness(i, 255); - } - else - { - for(unsigned i=0;i<13;i++) - lb.set_led_brightness(i, 0); - - lb.set_led_brightness(12, 255); - - } - -#endif - break; - } - case 1:{ - gain = ((gain<<3) + gain)>>3; - printf("gain: %d\n", gain); - break; - } - case 2:{ - gain = ((gain<<3) - gain)>>3; - printf("gain: %d\n", gain); - break; - } - case 3:{ -#ifdef FORM_BEAM - lb.set_led_brightness(12, 255); - - for(unsigned i=0;i<12;i++) - lb.set_led_brightness(i, 0); -#if 0 - dir++; - if(dir == 6) - dir = 0; - set_dir(lb, dir, delay); - printf("dir %d\n", dir+1); - for(unsigned i=0;i<7;i++) - printf("delay[%d] = %d\n", i, delay[i]); - printf("\n"); - #endif - printf("omni\n"); - omni = 1; -#endif - break; - } - } - } - break; - } - default:break; - } - int output = 0; - -#ifdef FORM_BEAM - if(!omni) - { - /* Do the sum of the delayed mics */ - for(unsigned i=0;i<7;i++) - output += delay_buffer[(delay_head - delay[i])%MAX_DELAY][i]; - - output = ((uint64_t)output*gain)>>8; - - c_audio <: output; + user_pdm_process(current); - /* Send out the individual mics */ - for(unsigned i=0;i<7;i++) - { - /* Apply gain and output samples */ - output = audio[buffer].data[i][0]; - output = ((uint64_t)output*gain)>>8; - c_audio <: output; - } - } - else + /* Send out the individual mics */ + for(unsigned i=0;i<7;i++) { - /* Send out Mic[0] 8 times */ - output = audio[buffer].data[0][0]; - output <<=2; - - output = ((uint64_t)output*gain)>>8; - - for(unsigned i=0;i<8;i++) - c_audio <: output; - } -#else - if(summed) - { - /* Output summed */ - for(unsigned i=0;i<7;i++) - output += audio[buffer].data[i][0]; - - output = ((uint64_t)output*gain)>>8; + unsigned output = current->data[i][0]; c_audio <: output; - - /* Apply gain to all mics and send */ - for(unsigned i=0;i<7;i++) - { - output = audio[buffer].data[i][0]; - output = ((uint64_t)output*gain)>>8; - c_audio <: output; - } } - else - { - /* Send mic 0 out 8 times */ - for(unsigned i=0;i<8;i++) - { - /* Apply gain and output samples */ - output = audio[buffer].data[0][0]; - output = ((uint64_t)output*gain)>>8; - c_audio <: output<<2; - } - } -#endif - -#ifdef FORM_BEAM - delay_head++; - delay_head%=MAX_DELAY; -#endif + c_audio <: 0; } } } +#define DF 1 + +#define OUTPUT_SAMPLE_RATE (48000/DF) +#define MASTER_CLOCK_FREQUENCY 24576000 + //TODO make these not global -int data_0[8*COEFS_PER_PHASE] = {0}; -int data_1[8*COEFS_PER_PHASE] = {0}; - - +int data_0[4*COEFS_PER_PHASE*DF] = {0}; +int data_1[4*COEFS_PER_PHASE*DF] = {0}; void pcm_pdm_mic(chanend c_pcm_out) { @@ -312,8 +79,6 @@ void pcm_pdm_mic(chanend c_pcm_out) streaming chan c_ds_output_0, c_ds_output_1; streaming chan c_buffer_mic0, c_buffer_mic1; - interface led_button_if lb; - configure_clock_src(mclk, p_mclk); configure_clock_src_divide(pdmclk, p_mclk, 2); configure_port_clock_output(p_pdm_clk, pdmclk); @@ -323,17 +88,15 @@ void pcm_pdm_mic(chanend c_pcm_out) unsafe { - const int * unsafe p[1] = {fir_1_coefs[0]}; - decimator_config dc0 = {0, 1, 0, 0, 1, p, data_0, 0, {0,0, 0, 0}}; - decimator_config dc1 = {0, 1, 0, 0, 1, p, data_1, 0, {0,0, 0, 0}}; + decimator_config dc0 = {FRAME_SIZE_LOG2, 1, 0, 0, DF, FIR_LUT(DF), data_0, 0, {0,0, 0, 0}}; + decimator_config dc1 = {FRAME_SIZE_LOG2, 1, 0, 0, DF, FIR_LUT(DF), data_1, 0, {0,0, 0, 0}}; par { - button_and_led_server(lb, leds, p_buttons); pdm_rx(p_pdm_mics, c_4x_pdm_mic_0, c_4x_pdm_mic_1); decimate_to_pcm_4ch(c_4x_pdm_mic_0, c_ds_output_0, dc0); decimate_to_pcm_4ch(c_4x_pdm_mic_1, c_ds_output_1, dc1); - lores_DAS_fixed(c_ds_output_0, c_ds_output_1, lb, c_pcm_out); + pdm_process(c_ds_output_0, c_ds_output_1, c_pcm_out); } } diff --git a/module_usb_audio/usb_buffer/decouple.xc b/module_usb_audio/usb_buffer/decouple.xc index 86fa931f..ee279499 100644 --- a/module_usb_audio/usb_buffer/decouple.xc +++ b/module_usb_audio/usb_buffer/decouple.xc @@ -92,7 +92,7 @@ xc_ptr g_aud_to_host_dptr; xc_ptr g_aud_to_host_rdptr; xc_ptr g_aud_to_host_zeros; int sampsToWrite = DEFAULT_FREQ/8000; /* HS assumed here. Expect to be junked during a overflow before stream start */ -int totalSampsToWrite = DEFAULT_FREQ/8000; +int totalSampsToWrite = DEFAULT_FREQ/8000; int aud_data_remaining_to_device = 0; /* Audio over/under flow flags */ @@ -436,7 +436,7 @@ __builtin_unreachable(); /* Round up to nearest word - note, not needed for slotsize == 4! */ datasize = (datasize+3) & (~0x3); - + /* Move wr ptr on by old packet length */ g_aud_to_host_wrptr += 4+datasize; @@ -447,10 +447,10 @@ __builtin_unreachable(); } g_aud_to_host_dptr = g_aud_to_host_wrptr + 4; - - /* Now calculate new packet length... + + /* Now calculate new packet length... * First get feedback val (ideally this would be syncronised) - * Note, if customer hasn't applied a valid MCLK this could go to 0 + * Note, if customer hasn't applied a valid MCLK this could go to 0 * we need to handle this gracefully */ asm volatile("ldw %0, dp[g_speed]" : "=r" (speed) :); @@ -475,36 +475,36 @@ __builtin_unreachable(); space_left = aud_to_host_fifo_end - g_aud_to_host_wrptr; } - //if((space_left > 0) && (space_left < (totalSampsToWrite * g_numUsbChan_In * g_curSubSlot_In + 4))) - if((space_left < (totalSampsToWrite * g_numUsbChan_In * g_curSubSlot_In + 4))) + //if((space_left > 0) && (space_left < (totalSampsToWrite * g_numUsbChan_In * g_curSubSlot_In + 4))) + if((space_left < (totalSampsToWrite * g_numUsbChan_In * g_curSubSlot_In + 4))) { - /* In pipe has filled its buffer - we need to overflow + /* In pipe has filled its buffer - we need to overflow * Accept the packet, and throw away the oldest in the buffer */ - + /* Keep throwing away packets until buffer is at a nice level.. */ do - { + { unsigned rdPtr; - + /* Read length of packet in buffer at read pointer */ unsigned datalength; - + GET_SHARED_GLOBAL(rdPtr, g_aud_to_host_rdptr); asm volatile("ldw %0, %1[0]":"=r"(datalength):"r"(rdPtr)); - + /* Round up datalength */ - datalength = ((datalength+3) & ~0x3) + 4; - - /* Move read pointer on by length */ + datalength = ((datalength+3) & ~0x3) + 4; + + /* Move read pointer on by length */ rdPtr += datalength; if (rdPtr >= aud_to_host_fifo_end) { rdPtr = aud_to_host_fifo_start; - } - + } + space_left += datalength; SET_SHARED_GLOBAL(g_aud_to_host_rdptr, rdPtr); - + } while(space_left < (BUFF_SIZE_IN*4/2)); } @@ -556,7 +556,7 @@ static inline void SetupZerosSendBuffer(XUD_ep aud_to_host_usb_ep, unsigned samp /* Set IN stream packet size to something sensible. We expect the buffer to * over flow and this to be reset */ SET_SHARED_GLOBAL(sampsToWrite, 0); - SET_SHARED_GLOBAL(totalSampsToWrite, 0); + SET_SHARED_GLOBAL(totalSampsToWrite, 0); mid *= g_numUsbChan_In * slotSize; @@ -564,7 +564,7 @@ static inline void SetupZerosSendBuffer(XUD_ep aud_to_host_usb_ep, unsigned samp /* Mark EP ready with the zero buffer. Note this will simply update the packet size * if it is already ready */ - + /* g_aud_to_host_buffer is already set to g_aud_to_host_zeros */ GET_SHARED_GLOBAL(p, g_aud_to_host_buffer); diff --git a/module_usb_audio/usb_buffer/usb_buffer.xc b/module_usb_audio/usb_buffer/usb_buffer.xc index 2e6fdeb3..14289ac9 100644 --- a/module_usb_audio/usb_buffer/usb_buffer.xc +++ b/module_usb_audio/usb_buffer/usb_buffer.xc @@ -94,7 +94,7 @@ unsigned char fb_clocks[16]; * @param c_aud_fb chanend for feeback to xud * @return void */ -void buffer(register chanend c_aud_out, register chanend c_aud_in, +void buffer(register chanend c_aud_out, register chanend c_aud_in, #if (NUM_USB_CHAN_IN == 0) || defined (UAC_FORCE_FEEDBACK_EP) chanend c_aud_fb, #endif @@ -322,7 +322,7 @@ void buffer(register chanend c_aud_out, register chanend c_aud_in, int min, mid, max; GetADCCounts(sampleFreq, min, mid, max); g_speed = mid<<16; - + } /* Ideally we want to wait for handshake (and pass back up) here. But we cannot keep this diff --git a/module_usb_midi/.xproject b/module_usb_midi/.xproject index d80aba33..de455f2e 100644 --- a/module_usb_midi/.xproject +++ b/module_usb_midi/.xproject @@ -1 +1 @@ -sc_usb_audioXM-004720-SM \ No newline at end of file +sc_usb_audioXM-004720-SM6.13.0beta0 \ No newline at end of file diff --git a/xpd.xml b/xpd.xml index 4ed613a0..8f35985f 100644 --- a/xpd.xml +++ b/xpd.xml @@ -17,7 +17,7 @@ module_xassert - module_queue + module_queue MIDI @@ -98,7 +98,9 @@ - + + + XM-004720-SM XMOS