|
libxr
Embedded C++ framework for bare-metal, RTOS and Linux
|
USB 组合管理器:class 列表、字符串、BOS、配置切换 USB composition manager: class list, strings, BOS, and configuration switching. More...
#include <device_composition.hpp>
Public Member Functions | |
| DeviceComposition (EndpointPool &endpoint_pool, const std::initializer_list< const DescriptorStrings::LanguagePack * > &lang_list, const std::initializer_list< const std::initializer_list< ConfigDescriptorItem * > > &configs, ConstRawData uid={nullptr, 0}, uint8_t bmAttributes=CFG_BUS_POWERED, uint8_t bMaxPower=50) | |
| 构造 USB 组合管理器 Construct the USB composition manager. | |
| DeviceComposition (const DeviceComposition &)=delete | |
| DeviceComposition & | operator= (const DeviceComposition &)=delete |
| DeviceComposition (DeviceComposition &&)=delete | |
| DeviceComposition & | operator= (DeviceComposition &&)=delete |
| void | Init (bool in_isr) |
| 初始化当前 configuration 的运行态资源 Initialize runtime resources for the active configuration. | |
| void | Deinit (bool in_isr) |
| 释放当前 configuration 的运行态资源 Release runtime resources for the active configuration. | |
| ErrorCode | SwitchConfig (size_t index, bool in_isr) |
| 切换到指定 configuration value Switch to the given configuration value. | |
| ErrorCode | BuildConfigDescriptor () |
| 生成当前 configuration 描述符缓存 Build the current configuration descriptor cache. | |
| RawData | GetConfigDescriptor () const |
| 获取当前 configuration 描述符缓存 Get the current configuration descriptor cache. | |
| ConstRawData | GetBosDescriptor () |
| 获取当前 BOS 描述符缓存 / Get the current BOS descriptor cache | |
| ErrorCode | ProcessBosVendorRequest (bool in_isr, const SetupPacket *setup, BosVendorResult &result) |
| 分发 BOS vendor request / Dispatch BOS vendor requests | |
| ErrorCode | GetStringDescriptor (uint8_t string_index, uint16_t lang, ConstRawData &data) |
| 获取字符串描述符(含 interface string) Get a string descriptor, including runtime-generated interface strings. | |
| bool | IsComposite () const |
| 是否为复合设备 / Whether this is a composite device | |
| ErrorCode | TryOverrideDeviceDescriptor (DeviceDescriptor &descriptor) |
| 用当前配置覆盖 device descriptor 的类字段 Try to override device-descriptor class fields from the current configuration. | |
| size_t | GetConfigNum () const |
| 配置数量 / Number of configurations | |
| size_t | GetCurrentConfig () const |
| 当前 configuration value / Current configuration value | |
| uint16_t | GetDeviceStatus () const |
| 设备 GET_STATUS 返回值 / Device-level GET_STATUS value | |
| DeviceClass * | FindClassByInterfaceNumber (size_t index) const |
| 按接口号查找所属 class Find the owning class by interface number. | |
| DeviceClass * | FindClassByEndpointAddress (uint8_t addr) const |
| 按端点地址查找所属 class Find the owning class by endpoint address. | |
USB 组合管理器:class 列表、字符串、BOS、配置切换 USB composition manager: class list, strings, BOS, and configuration switching.
Definition at line 20 of file device_composition.hpp.
| DeviceComposition::DeviceComposition | ( | EndpointPool & | endpoint_pool, |
| const std::initializer_list< const DescriptorStrings::LanguagePack * > & | lang_list, | ||
| const std::initializer_list< const std::initializer_list< ConfigDescriptorItem * > > & | configs, | ||
| ConstRawData | uid = {nullptr, 0}, | ||
| uint8_t | bmAttributes = CFG_BUS_POWERED, | ||
| uint8_t | bMaxPower = 50 ) |
构造 USB 组合管理器 Construct the USB composition manager.
负责把 class/config/string/BOS 相关静态信息整理成 DeviceCore 可直接使用的形态。 This flattens class/config/string/BOS metadata into the shape consumed by DeviceCore.
Definition at line 345 of file device_composition.cpp.
| LibXR::ErrorCode DeviceComposition::BuildConfigDescriptor | ( | ) |
生成当前 configuration 描述符缓存 Build the current configuration descriptor cache.
Definition at line 454 of file device_composition.cpp.
| void DeviceComposition::Deinit | ( | bool | in_isr | ) |
释放当前 configuration 的运行态资源 Release runtime resources for the active configuration.
Definition at line 421 of file device_composition.cpp.
|
nodiscard |
按端点地址查找所属 class Find the owning class by endpoint address.
Definition at line 573 of file device_composition.cpp.
|
nodiscard |
按接口号查找所属 class Find the owning class by interface number.
Definition at line 541 of file device_composition.cpp.
|
nodiscard |
获取当前 BOS 描述符缓存 / Get the current BOS descriptor cache
Definition at line 469 of file device_composition.cpp.
|
nodiscard |
获取当前 configuration 描述符缓存 Get the current configuration descriptor cache.
Definition at line 467 of file device_composition.cpp.
|
nodiscard |
配置数量 / Number of configurations
Definition at line 528 of file device_composition.cpp.
|
nodiscard |
当前 configuration value / Current configuration value
Definition at line 530 of file device_composition.cpp.
|
nodiscard |
设备 GET_STATUS 返回值 / Device-level GET_STATUS value
Definition at line 535 of file device_composition.cpp.
| LibXR::ErrorCode DeviceComposition::GetStringDescriptor | ( | uint8_t | string_index, |
| uint16_t | lang, | ||
| ConstRawData & | data ) |
获取字符串描述符(含 interface string) Get a string descriptor, including runtime-generated interface strings.
Definition at line 478 of file device_composition.cpp.
| void DeviceComposition::Init | ( | bool | in_isr | ) |
初始化当前 configuration 的运行态资源 Initialize runtime resources for the active configuration.
Definition at line 412 of file device_composition.cpp.
|
nodiscard |
是否为复合设备 / Whether this is a composite device
Definition at line 509 of file device_composition.cpp.
| LibXR::ErrorCode DeviceComposition::ProcessBosVendorRequest | ( | bool | in_isr, |
| const SetupPacket * | setup, | ||
| BosVendorResult & | result ) |
分发 BOS vendor request / Dispatch BOS vendor requests
Definition at line 471 of file device_composition.cpp.
| LibXR::ErrorCode DeviceComposition::SwitchConfig | ( | size_t | index, |
| bool | in_isr ) |
切换到指定 configuration value Switch to the given configuration value.
Definition at line 428 of file device_composition.cpp.
| LibXR::ErrorCode DeviceComposition::TryOverrideDeviceDescriptor | ( | DeviceDescriptor & | descriptor | ) |
用当前配置覆盖 device descriptor 的类字段 Try to override device-descriptor class fields from the current configuration.
Definition at line 511 of file device_composition.cpp.