Browse Source

Use usb audio alternate setting info

teensy4-core
PaulStoffregen 8 years ago
parent
commit
6af8589c49
4 changed files with 23 additions and 6 deletions
  1. +15
    -0
      teensy3/usb_audio.cpp
  2. +2
    -0
      teensy3/usb_audio.h
  3. +4
    -6
      teensy3/usb_dev.c
  4. +2
    -0
      teensy3/usb_dev.h

+ 15
- 0
teensy3/usb_audio.cpp View File

@@ -47,6 +47,7 @@ uint8_t AudioInputUSB::receive_flag;
#define DMABUFATTR __attribute__ ((section(".dmabuffers"), aligned (4)))
uint16_t usb_audio_receive_buffer[AUDIO_RX_SIZE/2] DMABUFATTR;
uint32_t usb_audio_sync_feedback DMABUFATTR;
uint8_t usb_audio_receive_setting=0;

static uint32_t feedback_accumulator = 185042824;

@@ -212,6 +213,7 @@ uint16_t AudioOutputUSB::outgoing_count;


uint16_t usb_audio_transmit_buffer[AUDIO_TX_SIZE/2] DMABUFATTR;
uint8_t usb_audio_transmit_setting=0;

void AudioOutputUSB::begin(void)
{
@@ -227,6 +229,19 @@ void AudioOutputUSB::update(void)

left = receiveReadOnly(0); // input 0 = left channel
right = receiveReadOnly(1); // input 1 = right channel
if (usb_audio_transmit_setting == 0) {
if (left) release(left);
if (right) release(right);
if (outgoing_count) {
if (left_1st) release(left_1st);
if (left_2nd) release(left_2nd);
if (right_1st) release(right_1st);
if (right_2nd) release(right_2nd);
outgoing_count = 0;
offset_1st = 0;
}
return;
}
if (left == NULL) {
if (right == NULL) return;
right->ref_count++;

+ 2
- 0
teensy3/usb_audio.h View File

@@ -12,6 +12,8 @@ extern uint16_t usb_audio_transmit_buffer[];
extern void usb_audio_receive_callback(unsigned int len);
extern unsigned int usb_audio_transmit_callback(void);
extern uint32_t usb_audio_sync_feedback;
extern uint8_t usb_audio_receive_setting;
extern uint8_t usb_audio_transmit_setting;
#ifdef __cplusplus
}


+ 4
- 6
teensy3/usb_dev.c View File

@@ -384,9 +384,9 @@ static void usb_setup(void)
#if defined(AUDIO_INTERFACE)
case 0x0B01: // SET_INTERFACE (alternate setting)
if (setup.wIndex == AUDIO_INTERFACE+1) {
//audio_tx_alternate_setting = setup.wValue;
usb_audio_transmit_setting = setup.wValue;
} else if (setup.wIndex == AUDIO_INTERFACE+2) {
//audio_rx_alternate_setting = setup.wValue;
usb_audio_receive_setting = setup.wValue;
} else {
endpoint0_stall();
return;
@@ -396,11 +396,9 @@ static void usb_setup(void)
datalen = 1;
data = reply_buffer;
if (setup.wIndex == AUDIO_INTERFACE+1) {
reply_buffer[0] = 0;
//reply_buffer[0] = audio_tx_alternate_setting;
reply_buffer[0] = usb_audio_transmit_setting;
} else if (setup.wIndex == AUDIO_INTERFACE+2) {
reply_buffer[0] = 0;
//reply_buffer[0] = audio_rx_alternate_setting;
reply_buffer[0] = usb_audio_receive_setting;
} else {
endpoint0_stall();
return;

+ 2
- 0
teensy3/usb_dev.h View File

@@ -102,6 +102,8 @@ extern void usb_flightsim_flush_callback(void);
extern uint16_t usb_audio_receive_buffer[];
extern uint16_t usb_audio_transmit_buffer[];
extern uint32_t usb_audio_sync_feedback;
extern uint8_t usb_audio_receive_setting;
extern uint8_t usb_audio_transmit_setting;
extern void usb_audio_receive_callback(unsigned int len);
extern unsigned int usb_audio_transmit_callback(void);
#endif

Loading…
Cancel
Save