arduino-audio-tools
Loading...
Searching...
No Matches
USBAudioHostBackend.h
Go to the documentation of this file.
1#pragma once
2#include <cstddef>
3#include <cstdint>
4
7
8namespace audio_tools {
9
11enum class UsbHostStreamRole : uint8_t {
13 RxData = 0,
15 TxData = 1,
17 Feedback = 2
18};
19
27 public:
28 virtual ~USBAudioHostEvents() = default;
29
34 virtual uint16_t onAttach(uint8_t daddr, uint16_t vid, uint16_t pid,
35 const uint8_t* desc, uint16_t len) = 0;
36
39 virtual void onConfigured(uint8_t daddr) = 0;
40
42 virtual void onDetach(uint8_t daddr) = 0;
43
46 virtual void onControlComplete(bool ok, uint16_t len) = 0;
47
49 virtual void onIsoIn(UsbHostStreamRole role, const uint8_t* data,
50 uint16_t len) = 0;
51
54 virtual uint16_t onIsoOut(uint8_t* data, uint16_t max) = 0;
55};
56
74 public:
75 virtual ~USBAudioHostBackend() = default;
76
78 virtual bool begin(USBAudioHostEvents* events, const USBAudioConfig& cfg) = 0;
79
81 virtual void end() = 0;
82
84 virtual void task() = 0;
85
89 virtual bool control(uint8_t daddr, const UsbSetupPacket& setup,
90 uint8_t* data) = 0;
91
94 virtual bool setInterface(uint8_t daddr, uint8_t itf, uint8_t alt) = 0;
95
98 virtual bool openStream(uint8_t daddr, const UsbEndpointDescriptorView& ep,
99 UsbHostStreamRole role) = 0;
100
102 virtual void closeStream(uint8_t daddr, uint8_t ep_addr) = 0;
103
105 virtual UsbSpeed speed() const { return UsbSpeed::Full; }
106
108 virtual uint32_t millis() const = 0;
109};
110
111} // namespace audio_tools
void setup()
Abstract seam for every raw USB host stack call the UAC host class logic (USBAudioHostBase) needs....
Definition USBAudioHostBackend.h:73
virtual bool control(uint8_t daddr, const UsbSetupPacket &setup, uint8_t *data)=0
virtual void task()=0
Pump the host stack on platforms where the application drives it.
virtual ~USBAudioHostBackend()=default
virtual bool openStream(uint8_t daddr, const UsbEndpointDescriptorView &ep, UsbHostStreamRole role)=0
virtual UsbSpeed speed() const
Bus speed of the attached device.
Definition USBAudioHostBackend.h:105
virtual uint32_t millis() const =0
Milliseconds since start (for control request timeouts).
virtual void end()=0
Stop all streams (the host stack itself keeps running).
virtual bool setInterface(uint8_t daddr, uint8_t itf, uint8_t alt)=0
virtual bool begin(USBAudioHostEvents *events, const USBAudioConfig &cfg)=0
Start the host stack and register the event receiver.
virtual void closeStream(uint8_t daddr, uint8_t ep_addr)=0
Stop streaming the indicated endpoint.
Upcalls from a USB host backend into the stack independent UAC host class logic (USBAudioHostBase)....
Definition USBAudioHostBackend.h:26
virtual void onDetach(uint8_t daddr)=0
The device was removed.
virtual uint16_t onIsoOut(uint8_t *data, uint16_t max)=0
virtual ~USBAudioHostEvents()=default
virtual void onConfigured(uint8_t daddr)=0
virtual void onIsoIn(UsbHostStreamRole role, const uint8_t *data, uint16_t len)=0
One isochronous IN packet was received (RxData or Feedback).
virtual void onControlComplete(bool ok, uint16_t len)=0
virtual uint16_t onAttach(uint8_t daddr, uint16_t vid, uint16_t pid, const uint8_t *desc, uint16_t len)=0
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition LMSEchoCancellationStream.h:6
UsbHostStreamRole
Role of an isochronous endpoint which is streamed by a host backend.
Definition USBAudioHostBackend.h:11
@ TxData
Audio data to the attached device (speaker): ISO OUT.
@ RxData
Audio data from the attached device (microphone): ISO IN.
@ Feedback
Explicit feedback from the attached speaker: ISO IN.
UsbSpeed
Device enumerated bus speed, mirrors tusb_speed_t's relevant values.
Definition USBAudioBackend.h:19
Configuration for USB Audio (inherits sample_rate / channels / bits_per_sample from AudioInfo).
Definition USBAudioConfig.h:117
Backend-agnostic mirror of tusb_desc_endpoint_t (USB 2.0 spec Table 9-13). wMaxPacketSize is kept in ...
Definition USBAudioBackend.h:86
Backend-agnostic mirror of the standard 8-byte USB SETUP packet (TinyUSB's tusb_control_request_t)....
Definition USBAudioBackend.h:34