get usb_adaptive to compile

This commit is contained in:
shuchitak
2020-02-17 12:09:54 +00:00
parent 6402051165
commit dac808e9fa
3 changed files with 33 additions and 27 deletions

View File

@@ -18,10 +18,10 @@
#define MAX(x,y) ((x)>(y) ? (x) : (y)) #define MAX(x,y) ((x)>(y) ? (x) : (y))
#if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES)) #if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES))
unsigned int xua_lite_curAudToUsbFreq(void); extern uint32_t get_usb_to_device_rate();
unsigned int xua_lite_curUsbToAudFreq(void); extern uint32_t get_device_to_usb_rate();
unsigned int xua_lite_curUSB_Res_In(void); extern uint32_t get_usb_to_device_bit_res();
unsigned int xua_lite_curUSB_Res_Out(void); extern uint32_t get_device_to_usb_bit_res();
#endif #endif
/* TODO use SLOTSIZE to potentially save memory */ /* TODO use SLOTSIZE to potentially save memory */
@@ -165,8 +165,8 @@ int g_maxPacketSize = MAX_DEVICE_AUD_PACKET_SIZE_IN_FS;
void handle_audio_request(chanend c_mix_out) void handle_audio_request(chanend c_mix_out)
{ {
int space_left; int space_left;
g_curSubSlot_Out = xua_lite_curUSB_Res_Out() >> 3; g_curSubSlot_Out = get_usb_to_device_bit_res() >> 3;
g_curSubSlot_In = xua_lite_curUSB_Res_In() >> 3; g_curSubSlot_In = get_device_to_usb_bit_res() >> 3;
/* Input word that triggered interrupt and handshake back */ /* Input word that triggered interrupt and handshake back */
unsigned underflowSample = inuint(c_mix_out); unsigned underflowSample = inuint(c_mix_out);

View File

@@ -7,6 +7,7 @@
#include <xs1.h> #include <xs1.h>
#include <safestring.h> #include <safestring.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h>
#include "xua.h" #include "xua.h"
@@ -65,10 +66,10 @@ extern void device_reboot(void);
#endif #endif
#if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES)) #if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES))
unsigned int xua_lite_curAudToUsbFreq(void); extern uint32_t get_usb_to_device_rate();
unsigned int xua_lite_curUsbToAudFreq(void); extern uint32_t get_device_to_usb_rate();
unsigned int xua_lite_curUSB_Res_In(void); extern uint32_t get_usb_to_device_bit_res();
unsigned int xua_lite_curUSB_Res_Out(void); extern uint32_t get_device_to_usb_bit_res();
#endif #endif
unsigned int DFU_mode_active = 0; // 0 - App active, 1 - DFU active unsigned int DFU_mode_active = 0; // 0 - App active, 1 - DFU active
@@ -345,33 +346,33 @@ void XUA_Endpoint0_init(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioCont
#ifdef USB_DESCRIPTOR_OVERRIDE_RATE_RES //change USB descriptor frequencies and bit resolution values here #ifdef USB_DESCRIPTOR_OVERRIDE_RATE_RES //change USB descriptor frequencies and bit resolution values here
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = xua_lite_curUSB_Res_In() >> 3; //sub frame rate = bit rate /8 cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = get_device_to_usb_bit_res() >> 3; //sub frame rate = bit rate /8
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (xua_lite_curUSB_Res_In() & 0xff); //bit resolution cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (get_device_to_usb_bit_res() & 0xff); //bit resolution
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = xua_lite_curUSB_Res_Out() >> 3; //sub frame rate = bit rate /8 cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = get_usb_to_device_bit_res() >> 3; //sub frame rate = bit rate /8
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (xua_lite_curUSB_Res_Out() & 0xff); //bit resolution cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (get_usb_to_device_bit_res() & 0xff); //bit resolution
const unsigned num_of_usb_descriptor_freq=3; //This should be =3 according to the comments "sing a value of <=2 or > 7 for num_freqs_a1 causes enumeration issues on Windows" in xua_ep0_descriptors.h const unsigned num_of_usb_descriptor_freq=3; //This should be =3 according to the comments "sing a value of <=2 or > 7 for num_freqs_a1 causes enumeration issues on Windows" in xua_ep0_descriptors.h
int i=0; int i=0;
for(i=0;i<num_of_usb_descriptor_freq;i++) for(i=0;i<num_of_usb_descriptor_freq;i++)
{ {
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = xua_lite_curAudToUsbFreq() & 0xff; cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = get_device_to_usb_rate() & 0xff;
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (xua_lite_curAudToUsbFreq() & 0xff00)>> 8; cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (get_device_to_usb_rate() & 0xff00)>> 8;
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (xua_lite_curAudToUsbFreq() & 0xff0000)>> 16; cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (get_device_to_usb_rate() & 0xff0000)>> 16;
} }
for(i=0;i<num_of_usb_descriptor_freq;i++) for(i=0;i<num_of_usb_descriptor_freq;i++)
{ {
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = xua_lite_curUsbToAudFreq() & 0xff; cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = get_usb_to_device_rate() & 0xff;
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (xua_lite_curUsbToAudFreq() & 0xff00)>> 8; cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (get_usb_to_device_rate() & 0xff00)>> 8;
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (xua_lite_curUsbToAudFreq() & 0xff0000)>> 16; cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (get_usb_to_device_rate() & 0xff0000)>> 16;
} }
cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((xua_lite_curUSB_Res_In() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff; //max packet size cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((get_device_to_usb_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff; //max packet size
cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((xua_lite_curUSB_Res_In() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff00) >> 8; //max packet size cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((get_device_to_usb_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff00) >> 8; //max packet size
cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((xua_lite_curUSB_Res_Out() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff; //max packet size cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((get_usb_to_device_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff; //max packet size
cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((xua_lite_curUSB_Res_Out() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff00) >> 8; //max packet size cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((get_usb_to_device_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff00) >> 8; //max packet size
#endif #endif

View File

@@ -53,10 +53,15 @@ extern unsigned char mixSel[MAX_MIX_COUNT][MIX_INPUTS];
#endif #endif
/* Global var for current frequency, set to default freq */ /* Global var for current frequency, set to default freq */
#ifdef USB_CMD_CFG_SAMP_FREQ #if((defined USB_CMD_CFG_SAMP_FREQ) || (defined USB_DESCRIPTOR_OVERRIDE_RATE_RES))
#define g_curUSBin_SamFreq xua_lite_curAudToUsbFreq() extern uint32_t get_usb_to_device_rate();
#define g_curUSBout_SamFreq xua_lite_curUsbToAudFreq() extern uint32_t get_device_to_usb_rate();
extern uint32_t get_usb_to_device_bit_res();
extern uint32_t get_device_to_usb_bit_res();
#define g_curUSBin_SamFreq get_device_to_usb_rate()
#define g_curUSBout_SamFreq get_usb_to_device_rate()
unsigned int g_curSamFreq = DEFAULT_FREQ; // should no longer be used unsigned int g_curSamFreq = DEFAULT_FREQ; // should no longer be used
#else #else