arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
Communication
USB
USBAudioConstants.h
Go to the documentation of this file.
1
#pragma once
2
#include <stdint.h>
3
4
namespace
audio_tools
{
5
6
// ── UAC2 / USB 2.0 spec constants ───────────────────────────────────────────
7
// These are fixed byte values defined by the USB 2.0 and UAC1/UAC2 specs, not
8
// TinyUSB API surface (TinyUSB's own headers just give them names). Owned
9
// here directly so USBAudioDeviceBase and USBAudioHostBase have zero
10
// dependency on any particular USB stack's headers.
11
12
// Descriptor types (USB 2.0 spec Table 9-5).
13
static
constexpr
uint8_t
kUsbDescTypeConfiguration
= 0x02;
14
static
constexpr
uint8_t
kUsbDescTypeInterface
= 0x04;
15
static
constexpr
uint8_t
kUsbDescTypeEndpoint
= 0x05;
16
static
constexpr
uint8_t
kUsbDescTypeIad
= 0x0B;
17
static
constexpr
uint8_t
kUsbDescTypeCsInterface
= 0x24;
18
static
constexpr
uint8_t
kUsbDescTypeCsEndpoint
= 0x25;
19
20
// Audio class/subclass/protocol codes (UAC2 spec Appendix A).
21
static
constexpr
uint8_t
kUsbClassAudio
= 0x01;
22
static
constexpr
uint8_t
kAudioSubclassControl
= 0x01;
23
static
constexpr
uint8_t
kAudioSubclassStreaming
= 0x02;
24
static
constexpr
uint8_t
kAudioIntProtocolCodeV2
= 0x20;
25
26
// AC interface descriptor subtypes (UAC1 Table A-5 / UAC2 Table A-9).
27
static
constexpr
uint8_t
kAudioCsAcHeader
= 0x01;
28
static
constexpr
uint8_t
kAudioCsAcInputTerminal
= 0x02;
29
static
constexpr
uint8_t
kAudioCsAcOutputTerminal
= 0x03;
30
static
constexpr
uint8_t
kAudioCsAcFeatureUnit
= 0x06;
31
static
constexpr
uint8_t
kAudioCsAcClockSource
= 0x0A;
// UAC2 only
32
// AS interface descriptor subtypes (UAC2 Table A-11).
33
static
constexpr
uint8_t
kAudioCsAsGeneral
= 0x01;
34
static
constexpr
uint8_t
kAudioCsAsFormatType
= 0x02;
35
// Format type code (UAC1/UAC2): Type I PCM.
36
static
constexpr
uint8_t
kAudioFormatTypeI
= 0x01;
37
// Control request codes (UAC2 Table A-15). UAC1 uses SET_CUR=0x01,
38
// GET_CUR=0x81, GET_MIN=0x82, GET_MAX=0x83, GET_RES=0x84.
39
static
constexpr
uint8_t
kAudioCsReqCur
= 0x01;
40
static
constexpr
uint8_t
kAudioCsReqRange
= 0x02;
41
static
constexpr
uint8_t
kAudio1ReqGetCur
= 0x81;
42
static
constexpr
uint8_t
kAudio1ReqGetMin
= 0x82;
43
static
constexpr
uint8_t
kAudio1ReqGetMax
= 0x83;
44
// Clock Source control selectors (UAC2 Table A-18).
45
static
constexpr
uint8_t
kAudioCsCtrlSamFreq
= 0x01;
46
static
constexpr
uint8_t
kAudioCsCtrlClkValid
= 0x02;
47
// UAC1 endpoint control selector: Sampling Frequency (UAC1 Table A-19).
48
static
constexpr
uint8_t
kAudio1EpCtrlSamplingFreq
= 0x01;
49
// Feature Unit control selectors (UAC2 Table A-23).
50
static
constexpr
uint8_t
AUDIO_FU_CTRL_MUTE
= 0x01;
51
static
constexpr
uint8_t
AUDIO_FU_CTRL_VOLUME
= 0x02;
52
// Terminal type: USB Streaming (UAC2 Table 2-1).
53
static
constexpr
uint16_t
kAudioTermTypeUsbStreaming
= 0x0101;
54
// Interface Association Descriptor length — fixed 8 bytes.
55
static
constexpr
uint16_t
kAudioDescIadLen
= 8;
56
57
// Standard request: SET_INTERFACE (USB 2.0 Table 9-4).
58
static
constexpr
uint8_t
kUsbReqSetInterface
= 0x0B;
59
60
// USB control-transfer state-machine stages (universal to any USB stack's
61
// control-transfer handling, not TinyUSB-specific).
62
static
constexpr
uint8_t
kControlStageSetup
= 1;
63
static
constexpr
uint8_t
kControlStageData
= 2;
64
65
static
inline
uint8_t
u16Low
(uint16_t v) {
return
(uint8_t)(v & 0xFF); }
66
static
inline
uint8_t
u16High
(uint16_t v) {
return
(uint8_t)(v >> 8); }
67
68
}
// namespace audio_tools
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
LMSEchoCancellationStream.h:6
audio_tools::kAudio1ReqGetMin
static constexpr uint8_t kAudio1ReqGetMin
Definition
USBAudioConstants.h:42
audio_tools::kAudioSubclassControl
static constexpr uint8_t kAudioSubclassControl
Definition
USBAudioConstants.h:22
audio_tools::kAudioCsCtrlSamFreq
static constexpr uint8_t kAudioCsCtrlSamFreq
Definition
USBAudioConstants.h:45
audio_tools::kAudioDescIadLen
static constexpr uint16_t kAudioDescIadLen
Definition
USBAudioConstants.h:55
audio_tools::kUsbDescTypeConfiguration
static constexpr uint8_t kUsbDescTypeConfiguration
Definition
USBAudioConstants.h:13
audio_tools::kUsbDescTypeCsEndpoint
static constexpr uint8_t kUsbDescTypeCsEndpoint
Definition
USBAudioConstants.h:18
audio_tools::kUsbClassAudio
static constexpr uint8_t kUsbClassAudio
Definition
USBAudioConstants.h:21
audio_tools::kAudioIntProtocolCodeV2
static constexpr uint8_t kAudioIntProtocolCodeV2
Definition
USBAudioConstants.h:24
audio_tools::kAudioCsReqCur
static constexpr uint8_t kAudioCsReqCur
Definition
USBAudioConstants.h:39
audio_tools::kAudioFormatTypeI
static constexpr uint8_t kAudioFormatTypeI
Definition
USBAudioConstants.h:36
audio_tools::kAudioCsAcOutputTerminal
static constexpr uint8_t kAudioCsAcOutputTerminal
Definition
USBAudioConstants.h:29
audio_tools::kAudio1ReqGetCur
static constexpr uint8_t kAudio1ReqGetCur
Definition
USBAudioConstants.h:41
audio_tools::kAudioSubclassStreaming
static constexpr uint8_t kAudioSubclassStreaming
Definition
USBAudioConstants.h:23
audio_tools::kControlStageData
static constexpr uint8_t kControlStageData
Definition
USBAudioConstants.h:63
audio_tools::AUDIO_FU_CTRL_VOLUME
static constexpr uint8_t AUDIO_FU_CTRL_VOLUME
Definition
USBAudioConstants.h:51
audio_tools::kAudio1ReqGetMax
static constexpr uint8_t kAudio1ReqGetMax
Definition
USBAudioConstants.h:43
audio_tools::u16Low
static uint8_t u16Low(uint16_t v)
Definition
USBAudioConstants.h:65
audio_tools::kUsbDescTypeEndpoint
static constexpr uint8_t kUsbDescTypeEndpoint
Definition
USBAudioConstants.h:15
audio_tools::u16High
static uint8_t u16High(uint16_t v)
Definition
USBAudioConstants.h:66
audio_tools::kAudioCsCtrlClkValid
static constexpr uint8_t kAudioCsCtrlClkValid
Definition
USBAudioConstants.h:46
audio_tools::AUDIO_FU_CTRL_MUTE
static constexpr uint8_t AUDIO_FU_CTRL_MUTE
Definition
USBAudioConstants.h:50
audio_tools::kAudioCsAcFeatureUnit
static constexpr uint8_t kAudioCsAcFeatureUnit
Definition
USBAudioConstants.h:30
audio_tools::kAudioCsAcHeader
static constexpr uint8_t kAudioCsAcHeader
Definition
USBAudioConstants.h:27
audio_tools::kAudioTermTypeUsbStreaming
static constexpr uint16_t kAudioTermTypeUsbStreaming
Definition
USBAudioConstants.h:53
audio_tools::kAudioCsAcInputTerminal
static constexpr uint8_t kAudioCsAcInputTerminal
Definition
USBAudioConstants.h:28
audio_tools::kUsbDescTypeIad
static constexpr uint8_t kUsbDescTypeIad
Definition
USBAudioConstants.h:16
audio_tools::kUsbDescTypeCsInterface
static constexpr uint8_t kUsbDescTypeCsInterface
Definition
USBAudioConstants.h:17
audio_tools::kUsbDescTypeInterface
static constexpr uint8_t kUsbDescTypeInterface
Definition
USBAudioConstants.h:14
audio_tools::kAudioCsAsGeneral
static constexpr uint8_t kAudioCsAsGeneral
Definition
USBAudioConstants.h:33
audio_tools::kAudioCsAsFormatType
static constexpr uint8_t kAudioCsAsFormatType
Definition
USBAudioConstants.h:34
audio_tools::kAudio1EpCtrlSamplingFreq
static constexpr uint8_t kAudio1EpCtrlSamplingFreq
Definition
USBAudioConstants.h:48
audio_tools::kAudioCsAcClockSource
static constexpr uint8_t kAudioCsAcClockSource
Definition
USBAudioConstants.h:31
audio_tools::kControlStageSetup
static constexpr uint8_t kControlStageSetup
Definition
USBAudioConstants.h:62
audio_tools::kAudioCsReqRange
static constexpr uint8_t kAudioCsReqRange
Definition
USBAudioConstants.h:40
audio_tools::kUsbReqSetInterface
static constexpr uint8_t kUsbReqSetInterface
Definition
USBAudioConstants.h:58
Generated by
1.9.8