forked from PAWPAW-Mirror/lib_xua
Compare commits
13 Commits
experiment
...
takstar_us
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d9006f5e7 | |||
|
|
460b5d11e0 | ||
|
|
b29e6ffa91 | ||
|
|
a336bec81b | ||
|
|
791c142c94 | ||
|
|
487ab06213 | ||
|
|
def348a763 | ||
|
|
c9f7738efd | ||
|
|
a485ffe41a | ||
|
|
f25a9eeade | ||
|
|
f7331a1ed3 | ||
|
|
15036f2bcc | ||
|
|
fa5723947f |
@@ -1,8 +1,10 @@
|
||||
lib_xua
|
||||
#######
|
||||
|
||||
:Version: 3.5.0
|
||||
:Version: 3.5.1
|
||||
:Vendor: XMOS
|
||||
|
||||
|
||||
:Scope: General Use
|
||||
|
||||
Summary
|
||||
|
||||
@@ -50,6 +50,10 @@ void XUA_Buffer(
|
||||
#if (HID_CONTROLS)
|
||||
, chanend c_hid
|
||||
#endif
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
, chanend c_hid
|
||||
, chanend c_hid_out
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
, chanend c_aud
|
||||
#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC) || defined(__DOXYGEN__)
|
||||
, client interface pll_ref_if i_pll_ref
|
||||
@@ -78,6 +82,10 @@ void XUA_Buffer_Ep(chanend c_aud_out,
|
||||
#if (HID_CONTROLS)
|
||||
, chanend c_hid
|
||||
#endif
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
, chanend c_hid
|
||||
, chanend c_hid_out
|
||||
#endif //#ifdef PAWPAW_INOUTHID
|
||||
#ifdef CHAN_BUFF_CTRL
|
||||
, chanend c_buff_ctrl
|
||||
#endif
|
||||
|
||||
@@ -38,12 +38,12 @@ void InitPorts_master(buffered _XUA_CLK_DIR port:32 p_lrclk, buffered _XUA_CLK_D
|
||||
#endif
|
||||
|
||||
unsigned tmp;
|
||||
|
||||
|
||||
if(XUA_I2S_N_BITS == 32)
|
||||
p_lrclk <: 0 @ tmp;
|
||||
else
|
||||
tmp = partout_timestamped(p_lrclk, XUA_I2S_N_BITS, 0);
|
||||
|
||||
|
||||
tmp += 100;
|
||||
|
||||
/* Since BCLK is free-running, setup outputs/inputs at a known point in the future */
|
||||
@@ -72,7 +72,7 @@ void InitPorts_master(buffered _XUA_CLK_DIR port:32 p_lrclk, buffered _XUA_CLK_D
|
||||
for(int i = 0; i < I2S_WIRES_ADC; i++)
|
||||
{
|
||||
asm("setpt res[%0], %1"::"r"(p_i2s_adc[i]),"r"(tmp-1));
|
||||
|
||||
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
set_port_shift_count(p_i2s_adc[i], XUA_I2S_N_BITS);
|
||||
}
|
||||
@@ -127,13 +127,13 @@ void InitPorts_slave(buffered _XUA_CLK_DIR port:32 p_lrclk, buffered _XUA_CLK_DI
|
||||
for(int i = 0; i < I2S_WIRES_ADC; i++)
|
||||
{
|
||||
asm("setpt res[%0], %1"::"r"(p_i2s_adc[i]),"r"(tmp-1));
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
set_port_shift_count(p_i2s_adc[i], XUA_I2S_N_BITS);
|
||||
}
|
||||
#endif
|
||||
|
||||
asm("setpt res[%0], %1"::"r"(p_lrclk),"r"(tmp-1));
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
set_port_shift_count(p_lrclk, XUA_I2S_N_BITS);
|
||||
#endif /* (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) */
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
unsigned samplesOut[MAX(NUM_USB_CHAN_OUT, I2S_CHANS_DAC)];
|
||||
|
||||
/* Two buffers for ADC data to allow for DAC and ADC I2S ports being offset */
|
||||
#define IN_CHAN_COUNT (I2S_CHANS_ADC + XUA_NUM_PDM_MICS + (8*XUA_ADAT_RX_EN) + (2*XUA_SPDIF_RX_EN))
|
||||
#define IN_CHAN_COUNT (I2S_CHANS_ADC + XUA_NUM_PDM_MICS + (8*XUA_ADAT_RX_EN) + (2*XUA_SPDIF_RX_EN) + EXTRA_I2S_ADC)
|
||||
|
||||
unsigned samplesIn[2][MAX(NUM_USB_CHAN_IN, IN_CHAN_COUNT)];
|
||||
|
||||
@@ -86,7 +86,7 @@ static inline int HandleSampleClock(int frameCount, buffered _XUA_CLK_DIR port:3
|
||||
unsigned syncError = 0;
|
||||
unsigned lrval = 0;
|
||||
const unsigned lrval_mask = (0xffffffff << (32 - XUA_I2S_N_BITS));
|
||||
|
||||
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
{
|
||||
asm volatile("in %0, res[%1]":"=r"(lrval):"r"(p_lrclk):"memory");
|
||||
@@ -306,7 +306,7 @@ unsigned static AudioHub_MainLoop(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]));
|
||||
|
||||
|
||||
sample = bitrev(sample);
|
||||
if(XUA_I2S_N_BITS != 32)
|
||||
{
|
||||
|
||||
@@ -394,7 +394,7 @@ __builtin_unreachable();
|
||||
unsigned l;
|
||||
unsafe
|
||||
{
|
||||
mult = multInPtr[i];
|
||||
mult = multInPtr[i];
|
||||
}
|
||||
{h, l} = macs(mult, sample, 0, 0);
|
||||
sample = h << 3;
|
||||
@@ -427,7 +427,7 @@ __builtin_unreachable();
|
||||
unsigned l;
|
||||
unsafe
|
||||
{
|
||||
mult = multInPtr[i];
|
||||
mult = multInPtr[i];
|
||||
}
|
||||
{h, l} = macs(mult, sample, 0, 0);
|
||||
sample = h << 3;
|
||||
@@ -461,7 +461,7 @@ __builtin_unreachable();
|
||||
unsigned l;
|
||||
unsafe
|
||||
{
|
||||
mult = multInPtr[i];
|
||||
mult = multInPtr[i];
|
||||
}
|
||||
{h, l} = macs(mult, sample, 0, 0);
|
||||
sample = h << 3;
|
||||
|
||||
@@ -17,6 +17,13 @@
|
||||
unsigned char g_hidData[HID_MAX_DATA_BYTES] = {0U};
|
||||
#endif
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
#include "user_hid_ctrl.h"
|
||||
#include "stdio.h"
|
||||
unsigned char g_hidData_in[PAWPAW_CFG_HID_IN_BUFSIZE] = {0};
|
||||
unsigned char g_hidData_out[PAWPAW_CFG_HID_OUT_BUFSIZE] = {0};
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
|
||||
void GetADCCounts(unsigned samFreq, int &min, int &mid, int &max);
|
||||
#define BUFFER_SIZE_OUT (1028 >> 2)
|
||||
#define BUFFER_SIZE_IN (1028 >> 2)
|
||||
@@ -103,6 +110,10 @@ void XUA_Buffer(
|
||||
#if (HID_CONTROLS )
|
||||
, chanend c_hid
|
||||
#endif
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
, chanend c_hid
|
||||
, chanend c_hid_out
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
, chanend c_aud
|
||||
#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC)
|
||||
, client interface pll_ref_if i_pll_ref
|
||||
@@ -137,6 +148,11 @@ void XUA_Buffer(
|
||||
#if XUA_HID_ENABLED
|
||||
, c_hid
|
||||
#endif
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
, c_hid
|
||||
, c_hid_out
|
||||
#endif //#ifdef PAWPAW_INOUTHID
|
||||
#ifdef CHAN_BUFF_CTRL
|
||||
, c_buff_ctrl
|
||||
#endif
|
||||
@@ -187,6 +203,11 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
#if(HID_CONTROLS)
|
||||
, chanend c_hid
|
||||
#endif
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
, chanend c_hid
|
||||
, chanend c_hid_out
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
|
||||
#ifdef CHAN_BUFF_CTRL
|
||||
, chanend c_buff_ctrl
|
||||
#endif
|
||||
@@ -227,6 +248,12 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
#if XUA_HID_ENABLED
|
||||
XUD_ep ep_hid = XUD_InitEp(c_hid);
|
||||
#endif
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
XUD_ep ep_hid = XUD_InitEp(c_hid);
|
||||
XUD_ep ep_hid_out = XUD_InitEp(c_hid_out);//dwj+
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
|
||||
unsigned u_tmp;
|
||||
unsigned sampleFreq = DEFAULT_FREQ;
|
||||
unsigned masterClockFreq = DEFAULT_MCLK_FREQ;
|
||||
@@ -365,6 +392,11 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
i_pll_ref.toggle();
|
||||
#endif
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
XUD_SetReady_In(ep_hid, g_hidData_in, 5);// 上行
|
||||
XUD_SetReady_Out(ep_hid_out,g_hidData_out);// 下行
|
||||
|
||||
#endif //#ifdef d
|
||||
while(1)
|
||||
{
|
||||
XUD_Result_t result;
|
||||
@@ -898,7 +930,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
#endif
|
||||
|
||||
#if XUA_HID_ENABLED
|
||||
/* HID Report Data */
|
||||
/* HID Report Data */
|
||||
case XUD_SetData_Select(c_hid, ep_hid, result):
|
||||
hid_ready_flag = 0U;
|
||||
unsigned reportTime;
|
||||
@@ -910,6 +942,41 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
case XUD_SetData_Select(c_hid, ep_hid, result):
|
||||
{
|
||||
// printf("HID IN\n");
|
||||
if( hid_Buffer_exchange(BUF_XMOS_PC,g_hidData_in)){
|
||||
}
|
||||
XUD_SetReady_In(ep_hid, g_hidData_in, 5);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
#if (HID_OUT_REQUIRED)
|
||||
case XUD_GetData_Select(c_hid_out, ep_hid_out,length, result):
|
||||
{
|
||||
XUD_SetReady_Out(ep_hid_out,g_hidData_out);
|
||||
hid_Buffer_exchange(BUF_PC_XMOS,g_hidData_out);
|
||||
// XMOS 获取到的HID数据
|
||||
// g_hidData_out[0]...g_hidData_out[7]
|
||||
// printf("g_hidData_out %d\n",length);
|
||||
// for (size_t i = 0; i < 5; i++)
|
||||
// {
|
||||
// printf("%x ",g_hidData_out[i]);
|
||||
// }
|
||||
// printf("\n",length);
|
||||
|
||||
}
|
||||
break;
|
||||
#endif //#if (HID_OUT_REQUIRED)
|
||||
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
|
||||
#ifdef MIDI
|
||||
/* Received word from MIDI thread - Check for ACK or Data */
|
||||
case midi_get_ack_or_data(c_midi, is_ack, datum):
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 1-1)
|
||||
.outputChanStr_1 = ""
|
||||
#if (1 < I2S_CHANS_DAC+1)
|
||||
"Analogue 1"
|
||||
"Playback 1"
|
||||
#endif
|
||||
#if ((1 < SPDIF_TX_INDEX+2+1) && (1 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (1 < I2S_CHANS_DAC+1)
|
||||
@@ -50,7 +50,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 2-1)
|
||||
.outputChanStr_2 = ""
|
||||
#if (2 < I2S_CHANS_DAC+1)
|
||||
"Analogue 2"
|
||||
"Playback 2"
|
||||
#endif
|
||||
#if ((2 < SPDIF_TX_INDEX+2+1) && (2 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (2 < I2S_CHANS_DAC+1)
|
||||
@@ -90,7 +90,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 3-1)
|
||||
.outputChanStr_3 = ""
|
||||
#if (3 < I2S_CHANS_DAC+1)
|
||||
"Analogue 3"
|
||||
"Playback 3"
|
||||
#endif
|
||||
#if ((3 < SPDIF_TX_INDEX+2+1) && (3 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (3 < I2S_CHANS_DAC+1)
|
||||
@@ -130,7 +130,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 4-1)
|
||||
.outputChanStr_4 = ""
|
||||
#if (4 < I2S_CHANS_DAC+1)
|
||||
"Analogue 4"
|
||||
"Playback 4"
|
||||
#endif
|
||||
#if ((4 < SPDIF_TX_INDEX+2+1) && (4 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (4 < I2S_CHANS_DAC+1)
|
||||
@@ -170,7 +170,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 5-1)
|
||||
.outputChanStr_5 = ""
|
||||
#if (5 < I2S_CHANS_DAC+1)
|
||||
"Analogue 5"
|
||||
"Playback 5"
|
||||
#endif
|
||||
#if ((5 < SPDIF_TX_INDEX+2+1) && (5 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (5 < I2S_CHANS_DAC+1)
|
||||
@@ -210,7 +210,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 6-1)
|
||||
.outputChanStr_6 = ""
|
||||
#if (6 < I2S_CHANS_DAC+1)
|
||||
"Analogue 6"
|
||||
"Playback 6"
|
||||
#endif
|
||||
#if ((6 < SPDIF_TX_INDEX+2+1) && (6 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (6 < I2S_CHANS_DAC+1)
|
||||
@@ -250,7 +250,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 7-1)
|
||||
.outputChanStr_7 = ""
|
||||
#if (7 < I2S_CHANS_DAC+1)
|
||||
"Analogue 7"
|
||||
"Playback 7"
|
||||
#endif
|
||||
#if ((7 < SPDIF_TX_INDEX+2+1) && (7 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (7 < I2S_CHANS_DAC+1)
|
||||
@@ -290,7 +290,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 8-1)
|
||||
.outputChanStr_8 = ""
|
||||
#if (8 < I2S_CHANS_DAC+1)
|
||||
"Analogue 8"
|
||||
"Playback 8"
|
||||
#endif
|
||||
#if ((8 < SPDIF_TX_INDEX+2+1) && (8 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (8 < I2S_CHANS_DAC+1)
|
||||
@@ -330,7 +330,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 9-1)
|
||||
.outputChanStr_9 = ""
|
||||
#if (9 < I2S_CHANS_DAC+1)
|
||||
"Analogue 9"
|
||||
" "
|
||||
#endif
|
||||
#if ((9 < SPDIF_TX_INDEX+2+1) && (9 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (9 < I2S_CHANS_DAC+1)
|
||||
@@ -370,7 +370,7 @@
|
||||
#if (NUM_USB_CHAN_OUT > 10-1)
|
||||
.outputChanStr_10 = ""
|
||||
#if (10 < I2S_CHANS_DAC+1)
|
||||
"Analogue 10"
|
||||
" "
|
||||
#endif
|
||||
#if ((10 < SPDIF_TX_INDEX+2+1) && (10 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN)
|
||||
#if (10 < I2S_CHANS_DAC+1)
|
||||
@@ -1291,9 +1291,9 @@
|
||||
|
||||
|
||||
#if (NUM_USB_CHAN_IN > 1-1)
|
||||
.inputChanStr_1 = ""
|
||||
.inputChanStr_1 = "Mic1"
|
||||
#if (1 < I2S_CHANS_ADC+1)
|
||||
"Analogue 1"
|
||||
"Mix 1"
|
||||
#endif
|
||||
#if ((1 < SPDIF_RX_INDEX+2+1) && (1 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN)
|
||||
#if (1 < I2S_CHANS_ADC+1)
|
||||
@@ -1331,7 +1331,7 @@
|
||||
#endif
|
||||
|
||||
#if (NUM_USB_CHAN_IN > 2-1)
|
||||
.inputChanStr_2 = ""
|
||||
.inputChanStr_2 = "Mic2"
|
||||
#if (2 < I2S_CHANS_ADC+1)
|
||||
"Analogue 2"
|
||||
#endif
|
||||
@@ -1371,9 +1371,9 @@
|
||||
#endif
|
||||
|
||||
#if (NUM_USB_CHAN_IN > 3-1)
|
||||
.inputChanStr_3 = ""
|
||||
.inputChanStr_3 = "OTG In 3"
|
||||
#if (3 < I2S_CHANS_ADC+1)
|
||||
"Analogue 3"
|
||||
"OTG In 3"
|
||||
#endif
|
||||
#if ((3 < SPDIF_RX_INDEX+2+1) && (3 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN)
|
||||
#if (3 < I2S_CHANS_ADC+1)
|
||||
@@ -1411,9 +1411,9 @@
|
||||
#endif
|
||||
|
||||
#if (NUM_USB_CHAN_IN > 4-1)
|
||||
.inputChanStr_4 = ""
|
||||
.inputChanStr_4 = "OTG In 4"
|
||||
#if (4 < I2S_CHANS_ADC+1)
|
||||
"Analogue 4"
|
||||
"OTG In 4"
|
||||
#endif
|
||||
#if ((4 < SPDIF_RX_INDEX+2+1) && (4 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN)
|
||||
#if (4 < I2S_CHANS_ADC+1)
|
||||
@@ -1451,9 +1451,9 @@
|
||||
#endif
|
||||
|
||||
#if (NUM_USB_CHAN_IN > 5-1)
|
||||
.inputChanStr_5 = ""
|
||||
.inputChanStr_5 = "Line In 5"
|
||||
#if (5 < I2S_CHANS_ADC+1)
|
||||
"Analogue 5"
|
||||
"Line In 5"
|
||||
#endif
|
||||
#if ((5 < SPDIF_RX_INDEX+2+1) && (5 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN)
|
||||
#if (5 < I2S_CHANS_ADC+1)
|
||||
@@ -1491,9 +1491,9 @@
|
||||
#endif
|
||||
|
||||
#if (NUM_USB_CHAN_IN > 6-1)
|
||||
.inputChanStr_6 = ""
|
||||
.inputChanStr_6 = "Line In 6"
|
||||
#if (6 < I2S_CHANS_ADC+1)
|
||||
"Analogue 6"
|
||||
"Line In 6"
|
||||
#endif
|
||||
#if ((6 < SPDIF_RX_INDEX+2+1) && (6 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN)
|
||||
#if (6 < I2S_CHANS_ADC+1)
|
||||
|
||||
@@ -450,6 +450,26 @@ static unsigned char hidReportDescriptorPtr[] = {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
#define hidReportDescriptorLength (sizeof(hidReportDescriptorPtr))
|
||||
static unsigned char hidReportDescriptorPtr[] = {
|
||||
0x05, 0x01, // USAGE_PAGE (Generic Desktop) //dwj cp 长沙西鲸
|
||||
0x09, 0x00, // USAGE (0)
|
||||
0xa1, 0x01, // COLLECTION (Application)
|
||||
0x15, 0x00, // LOGICAL_MINIMUM (0)
|
||||
0x25, 0xff, // LOGICAL_MAXIMUM (255)
|
||||
0x19, 0x01, // USAGE_MINIMUM (1)
|
||||
0x29, 0x05, // USAGE_MAXIMUM (8) -dwj
|
||||
0x95, 0x05, // REPORT_COUNT (8) -dwj
|
||||
0x75, 0x08, // REPORT_SIZE (8)
|
||||
0x81, 0x02, // INPUT (Data,Var,Abs)
|
||||
0x19, 0x01, // USAGE_MINIMUM (1)
|
||||
0x29, 0x05, // USAGE_MAXIMUM (8) -dwj
|
||||
0x91, 0x02, // OUTPUT (Data,Var,Abs)
|
||||
0xc0 // END_COLLECTION
|
||||
};
|
||||
#endif //#ifdef PAWPAW_INOUTHID
|
||||
|
||||
|
||||
void XUA_Endpoint0_init(chanend c_ep0_out, chanend c_ep0_in, NULLABLE_RESOURCE(chanend, c_audioControl),
|
||||
chanend c_mix_ctl, chanend c_clk_ctl, chanend c_EANativeTransport_ctrl, CLIENT_INTERFACE(i_dfu, dfuInterface) VENDOR_REQUESTS_PARAMS_DEC_)
|
||||
@@ -878,6 +898,16 @@ void XUA_Endpoint0_loop(XUD_Result_t result, USB_SetupPacket_t sp, chanend c_ep0
|
||||
result = HidInterfaceClassRequests(ep0_out, ep0_in, &sp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
if (interfaceNum == INTERFACE_NUMBER_HID)
|
||||
{
|
||||
debug_printf("INTERFACE_NUMBER_HID");
|
||||
extern XUD_Result_t HidInterfaceClassRequests_PAWPAW(XUD_ep c_ep0_out, XUD_ep c_ep0_in, USB_SetupPacket_t sp);
|
||||
HidInterfaceClassRequests_PAWPAW(ep0_out, ep0_in, sp);
|
||||
}
|
||||
#endif//#ifdef PAWPAW_INOUTHID
|
||||
|
||||
/* Check for: - Audio CONTROL interface request - always 0, note we check for DFU first
|
||||
* - Audio STREAMING interface request (In or Out)
|
||||
* - Audio endpoint request (Audio 1.0 Sampling freq requests are sent to the endpoint)
|
||||
|
||||
@@ -117,7 +117,7 @@ static unsigned longMul(unsigned a, unsigned b, int prec)
|
||||
ret = (x << (32-prec) | (y >> prec));
|
||||
return ret;
|
||||
}
|
||||
|
||||
extern void sound_effect_set_pc_connect_status( int status);
|
||||
/* Update master volume i.e. i.e update weights for all channels */
|
||||
static void updateMasterVol(int unitID, chanend ?c_mix_ctl)
|
||||
{
|
||||
@@ -145,7 +145,7 @@ static void updateMasterVol(int unitID, chanend ?c_mix_ctl)
|
||||
outuint(c_mix_ctl, x);
|
||||
outct(c_mix_ctl, XS1_CT_END);
|
||||
}
|
||||
#else
|
||||
#else
|
||||
unsafe
|
||||
{
|
||||
unsigned int * unsafe multOutPtr = multOut;
|
||||
@@ -166,7 +166,9 @@ static void updateMasterVol(int unitID, chanend ?c_mix_ctl)
|
||||
unsigned vol = volsIn[i] == 0x8000 ? 0 : db_to_mult(volsIn[i], 8, 29);
|
||||
|
||||
int x = longMul(master_vol, vol, 29) * !mutesIn[0] * !mutesIn[i];
|
||||
|
||||
//mac
|
||||
|
||||
sound_effect_set_pc_connect_status(1);
|
||||
#if (IN_VOLUME_IN_MIXER)
|
||||
if (!isnull(c_mix_ctl))
|
||||
{
|
||||
@@ -235,6 +237,7 @@ static void updateVol(int unitID, int channel, chanend ?c_mix_ctl)
|
||||
}
|
||||
case FU_USBIN:
|
||||
{
|
||||
//windows
|
||||
/* Calc multipliers with 29 fractional bits from a db value with 8 fractional bits */
|
||||
/* 0x8000 is a special value representing -inf (i.e. mute) */
|
||||
unsigned master_vol = volsIn[0] == 0x8000 ? 0 : db_to_mult(volsIn[0], 8, 29);
|
||||
|
||||
@@ -405,6 +405,9 @@ void usb_audio_io(chanend ?c_aud_in,
|
||||
#define USER_MAIN_CORES
|
||||
#endif
|
||||
|
||||
#ifndef USER_UNSAFE_USE
|
||||
#define USER_UNSAFE_USE
|
||||
#endif
|
||||
|
||||
/* Main for USB Audio Applications */
|
||||
int main()
|
||||
@@ -562,6 +565,10 @@ int main()
|
||||
#if (XUA_HID_ENABLED)
|
||||
, c_xud_in[ENDPOINT_NUMBER_IN_HID]
|
||||
#endif
|
||||
#ifdef PAWPAW_INOUTHID
|
||||
, c_xud_in[ENDPOINT_NUMBER_IN_HID]
|
||||
, c_xud_out[ENDPOINT_NUMBER_OUT_HID]
|
||||
#endif //#ifdef PAWPAW_INOUTHID
|
||||
, c_mix_out
|
||||
#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC)
|
||||
, i_pll_ref
|
||||
@@ -582,6 +589,9 @@ int main()
|
||||
on tile[AUDIO_IO_TILE]:
|
||||
{
|
||||
/* Audio I/O task, includes mixing etc */
|
||||
//user unsafe use
|
||||
USER_UNSAFE_USE
|
||||
|
||||
usb_audio_io(c_mix_out
|
||||
#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE)
|
||||
, c_spdif_tx
|
||||
|
||||
Reference in New Issue
Block a user