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