arduino-audio-tools
Loading...
Searching...
No Matches
USBAudioDeviceTinyUSB.h
Go to the documentation of this file.
1#pragma once
2#include <Adafruit_TinyUSB.h>
3
4#include <cstring>
5
7
8namespace audio_tools {
9
10
35 public Adafruit_USBD_Interface {
36 public:
39
42
43 // ── Adafruit_USBD_Interface
44 // ─────────────────────────────────────────────────
45
57 uint16_t bufsize) override {
58 if (buf) {
61 config_.ep_in = TinyUSBDevice.allocEndpoint(TUSB_DIR_IN);
64 if (this->isFeedbackEpEnabled())
65 config_.ep_fb = TinyUSBDevice.allocEndpoint(TUSB_DIR_IN);
66 }
68 assert(bufsize >= len);
69 return len;
70 }
71
72 protected:
73 bool beginUSB() override {
75 TinyUSBDevice.setManufacturerDescriptor(config_.manufacturer);
76 TinyUSBDevice.setProductDescriptor(config_.product);
77 TinyUSBDevice.setSerialDescriptor(config_.serial);
79 if (!TinyUSBDevice.addInterface(*this)) {
80 return false;
81 }
82 return true;
83 }
84
86 BaseBuffer<uint8_t>& bufferTx() override { return buffer_tx_; }
87
89 BaseBuffer<uint8_t>& bufferRx() override { return buffer_rx_; }
90
99
102
104 static uint8_t buffer[USB_DESCR_MAX_LEN];
105 TinyUSBDevice.setConfigurationBuffer(buffer, USB_DESCR_MAX_LEN);
106 }
107};
108
116using USBAudioStream = USBAudioDeviceTinyUSB;
117
118
119} // namespace audio_tools
#define USB_DESCR_MAX_LEN
Definition USBAudioDeviceBase.h:37
#define assert(T)
Definition avr.h:10
Shared functionality of all buffers.
Definition Buffers.h:22
Implements a typed Ringbuffer.
Definition Buffers.h:341
virtual bool resize(int len)
Resizes the buffer if supported: returns false if not supported.
Definition Buffers.h:418
USB Audio Device class for audio streaming over USB.
Definition USBAudioDeviceBase.h:111
bool isEpInEnabled() const
Returns true if the IN endpoint is enabled.
Definition USBAudioDeviceBase.h:375
USBAudioConfig config_
Definition USBAudioDeviceBase.h:834
uint16_t getDescriptor(uint8_t *desc)
Returns the audio-function descriptor block for use in tud_descriptor_configuration_cb().
Definition USBAudioDeviceBase.h:727
uint8_t numInterfaces() const
Total number of USB interfaces claimed by the audio function (1 AC + 1 or 2 AS), for use in the bNumI...
Definition USBAudioDeviceBase.h:737
uint16_t packetSize() const
Definition USBAudioDeviceBase.h:1082
bool isFeedbackEpEnabled() const
Returns true if the feedback endpoint is enabled. Only meaningful in pure RX (OUT-only) mode: with an...
Definition USBAudioDeviceBase.h:383
bool isEpOutEnabled() const
Returns true if the OUT endpoint is enabled.
Definition USBAudioDeviceBase.h:378
USBAudioDeviceBase subclass for RP2040 / Adafruit TinyUSB.
Definition USBAudioDeviceTinyUSB.h:35
BaseBuffer< uint8_t > & bufferTx() override
Returns the TX audio buffer (NBuffer block pool).
Definition USBAudioDeviceTinyUSB.h:86
USBAudioDeviceTinyUSB(USBAudioConfig cfg)
Constructor with config.
Definition USBAudioDeviceTinyUSB.h:41
RingBuffer< uint8_t > buffer_rx_
Definition USBAudioDeviceTinyUSB.h:101
bool beginUSB() override
Override in platform subclasses to register descriptors and start the USB host-controller stack (e....
Definition USBAudioDeviceTinyUSB.h:73
uint16_t getInterfaceDescriptor(uint8_t, uint8_t *buf, uint16_t bufsize) override
Definition USBAudioDeviceTinyUSB.h:56
void resizeBuffers() override
Resize buffers as block pools: block size = one USB frame at the current sample rate,...
Definition USBAudioDeviceTinyUSB.h:93
void setupDescrBuffer()
Definition USBAudioDeviceTinyUSB.h:103
RingBuffer< uint8_t > buffer_tx_
Definition USBAudioDeviceTinyUSB.h:100
BaseBuffer< uint8_t > & bufferRx() override
Returns the RX audio buffer (NBuffer block pool).
Definition USBAudioDeviceTinyUSB.h:89
USBAudioDeviceTinyUSB()
Default construcotr using default config.
Definition USBAudioDeviceTinyUSB.h:38
USBAudioDeviceESP32 USBAudioStream
USBAudioStream type alias for ESP32.
Definition USBAudioDeviceESP32.h:195
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
static Emulated_TinyUSB TinyUSBDevice
Definition USBAudioDeviceESP32.h:186
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512
Configuration for USB Audio (inherits sample_rate / channels / bits_per_sample from AudioInfo).
Definition USBAudioConfig.h:27
uint8_t ep_fb
ISO IN (explicit feedback, RX-only mode)
Definition USBAudioConfig.h:40
uint8_t ep_in
ISO IN (device → host, capture/microphone)
Definition USBAudioConfig.h:38
const char * serial
Definition USBAudioConfig.h:58
const char * product
Definition USBAudioConfig.h:57
const char * manufacturer
Definition USBAudioConfig.h:56
uint16_t pid
Definition USBAudioConfig.h:55
uint16_t vid
Definition USBAudioConfig.h:54
bool enable_ep_in
device → host (capture / microphone)
Definition USBAudioConfig.h:31
uint8_t ep_out
ISO OUT (host → device, playback/speaker)
Definition USBAudioConfig.h:39
uint8_t itf_num_ac
Definition USBAudioConfig.h:46
uint8_t fifo_packets
Definition USBAudioConfig.h:51
bool enable_ep_out
host → device (playback / speaker)
Definition USBAudioConfig.h:32