arduino-audio-tools
Loading...
Searching...
No Matches
USBAudioConstants.h
Go to the documentation of this file.
1#pragma once
2#include <stdint.h>
3
4namespace 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).
13static constexpr uint8_t kUsbDescTypeConfiguration = 0x02;
14static constexpr uint8_t kUsbDescTypeInterface = 0x04;
15static constexpr uint8_t kUsbDescTypeEndpoint = 0x05;
16static constexpr uint8_t kUsbDescTypeIad = 0x0B;
17static constexpr uint8_t kUsbDescTypeCsInterface = 0x24;
18static constexpr uint8_t kUsbDescTypeCsEndpoint = 0x25;
19
20// Audio class/subclass/protocol codes (UAC2 spec Appendix A).
21static constexpr uint8_t kUsbClassAudio = 0x01;
22static constexpr uint8_t kAudioSubclassControl = 0x01;
23static constexpr uint8_t kAudioSubclassStreaming = 0x02;
24static constexpr uint8_t kAudioIntProtocolCodeV2 = 0x20;
25
26// AC interface descriptor subtypes (UAC1 Table A-5 / UAC2 Table A-9).
27static constexpr uint8_t kAudioCsAcHeader = 0x01;
28static constexpr uint8_t kAudioCsAcInputTerminal = 0x02;
29static constexpr uint8_t kAudioCsAcOutputTerminal = 0x03;
30static constexpr uint8_t kAudioCsAcFeatureUnit = 0x06;
31static constexpr uint8_t kAudioCsAcClockSource = 0x0A; // UAC2 only
32// AS interface descriptor subtypes (UAC2 Table A-11).
33static constexpr uint8_t kAudioCsAsGeneral = 0x01;
34static constexpr uint8_t kAudioCsAsFormatType = 0x02;
35// Format type code (UAC1/UAC2): Type I PCM.
36static 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.
39static constexpr uint8_t kAudioCsReqCur = 0x01;
40static constexpr uint8_t kAudioCsReqRange = 0x02;
41static constexpr uint8_t kAudio1ReqGetCur = 0x81;
42static constexpr uint8_t kAudio1ReqGetMin = 0x82;
43static constexpr uint8_t kAudio1ReqGetMax = 0x83;
44// Clock Source control selectors (UAC2 Table A-18).
45static constexpr uint8_t kAudioCsCtrlSamFreq = 0x01;
46static constexpr uint8_t kAudioCsCtrlClkValid = 0x02;
47// UAC1 endpoint control selector: Sampling Frequency (UAC1 Table A-19).
48static constexpr uint8_t kAudio1EpCtrlSamplingFreq = 0x01;
49// Feature Unit control selectors (UAC2 Table A-23).
50static constexpr uint8_t AUDIO_FU_CTRL_MUTE = 0x01;
51static constexpr uint8_t AUDIO_FU_CTRL_VOLUME = 0x02;
52// Terminal type: USB Streaming (UAC2 Table 2-1).
53static constexpr uint16_t kAudioTermTypeUsbStreaming = 0x0101;
54// Interface Association Descriptor length — fixed 8 bytes.
55static constexpr uint16_t kAudioDescIadLen = 8;
56
57// Standard request: SET_INTERFACE (USB 2.0 Table 9-4).
58static 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).
62static constexpr uint8_t kControlStageSetup = 1;
63static constexpr uint8_t kControlStageData = 2;
64
65static inline uint8_t u16Low(uint16_t v) { return (uint8_t)(v & 0xFF); }
66static inline uint8_t u16High(uint16_t v) { return (uint8_t)(v >> 8); }
67
68} // namespace audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition LMSEchoCancellationStream.h:6
static constexpr uint8_t kAudio1ReqGetMin
Definition USBAudioConstants.h:42
static constexpr uint8_t kAudioSubclassControl
Definition USBAudioConstants.h:22
static constexpr uint8_t kAudioCsCtrlSamFreq
Definition USBAudioConstants.h:45
static constexpr uint16_t kAudioDescIadLen
Definition USBAudioConstants.h:55
static constexpr uint8_t kUsbDescTypeConfiguration
Definition USBAudioConstants.h:13
static constexpr uint8_t kUsbDescTypeCsEndpoint
Definition USBAudioConstants.h:18
static constexpr uint8_t kUsbClassAudio
Definition USBAudioConstants.h:21
static constexpr uint8_t kAudioIntProtocolCodeV2
Definition USBAudioConstants.h:24
static constexpr uint8_t kAudioCsReqCur
Definition USBAudioConstants.h:39
static constexpr uint8_t kAudioFormatTypeI
Definition USBAudioConstants.h:36
static constexpr uint8_t kAudioCsAcOutputTerminal
Definition USBAudioConstants.h:29
static constexpr uint8_t kAudio1ReqGetCur
Definition USBAudioConstants.h:41
static constexpr uint8_t kAudioSubclassStreaming
Definition USBAudioConstants.h:23
static constexpr uint8_t kControlStageData
Definition USBAudioConstants.h:63
static constexpr uint8_t AUDIO_FU_CTRL_VOLUME
Definition USBAudioConstants.h:51
static constexpr uint8_t kAudio1ReqGetMax
Definition USBAudioConstants.h:43
static uint8_t u16Low(uint16_t v)
Definition USBAudioConstants.h:65
static constexpr uint8_t kUsbDescTypeEndpoint
Definition USBAudioConstants.h:15
static uint8_t u16High(uint16_t v)
Definition USBAudioConstants.h:66
static constexpr uint8_t kAudioCsCtrlClkValid
Definition USBAudioConstants.h:46
static constexpr uint8_t AUDIO_FU_CTRL_MUTE
Definition USBAudioConstants.h:50
static constexpr uint8_t kAudioCsAcFeatureUnit
Definition USBAudioConstants.h:30
static constexpr uint8_t kAudioCsAcHeader
Definition USBAudioConstants.h:27
static constexpr uint16_t kAudioTermTypeUsbStreaming
Definition USBAudioConstants.h:53
static constexpr uint8_t kAudioCsAcInputTerminal
Definition USBAudioConstants.h:28
static constexpr uint8_t kUsbDescTypeIad
Definition USBAudioConstants.h:16
static constexpr uint8_t kUsbDescTypeCsInterface
Definition USBAudioConstants.h:17
static constexpr uint8_t kUsbDescTypeInterface
Definition USBAudioConstants.h:14
static constexpr uint8_t kAudioCsAsGeneral
Definition USBAudioConstants.h:33
static constexpr uint8_t kAudioCsAsFormatType
Definition USBAudioConstants.h:34
static constexpr uint8_t kAudio1EpCtrlSamplingFreq
Definition USBAudioConstants.h:48
static constexpr uint8_t kAudioCsAcClockSource
Definition USBAudioConstants.h:31
static constexpr uint8_t kControlStageSetup
Definition USBAudioConstants.h:62
static constexpr uint8_t kAudioCsReqRange
Definition USBAudioConstants.h:40
static constexpr uint8_t kUsbReqSetInterface
Definition USBAudioConstants.h:58