|
libxr
1.0
Want to be the best embedded framework
|
USB 端点基类 / USB Endpoint base class. More...
#include <ep.hpp>
Data Structures | |
| struct | Config |
| 端点配置参数 / Endpoint configuration parameters More... | |
Public Types | |
| enum class | Direction : uint8_t { OUT = 0 , IN = 1 , BOTH = 2 } |
| 端点方向 Endpoint direction More... | |
| enum class | EPNumber : uint8_t { EP0 = 0 , EP1 = 1 , EP2 = 2 , EP3 = 3 , EP4 = 4 , EP5 = 5 , EP6 = 6 , EP7 = 7 , EP8 = 8 , EP9 = 9 , EP10 = 10 , EP11 = 11 , EP12 = 12 , EP13 = 13 , EP14 = 14 , EP15 = 15 , EP_MAX_NUM = 16 , EP_AUTO = 0xFE , EP_INVALID = 0xFF } |
| 端点号 Endpoint number More... | |
| enum class | Type : uint8_t { CONTROL = 0 , ISOCHRONOUS = 1 , BULK = 2 , INTERRUPT = 3 } |
| 端点类型 Endpoint type More... | |
| enum class | State : uint8_t { DISABLED , IDLE , BUSY , STALLED , ERROR } |
| 端点状态 Endpoint state More... | |
Public Member Functions | |
| Endpoint (EPNumber number, Direction dir, RawData buffer) | |
| 构造函数 / Constructor | |
| virtual | ~Endpoint ()=default |
| 虚析构函数 / Virtual destructor | |
| Endpoint (const Endpoint &)=delete | |
| Endpoint & | operator= (const Endpoint &)=delete |
| EPNumber | GetNumber () const |
| 获取端点号 / Get endpoint number | |
| Direction | AvailableDirection () const |
| 获取允许配置的方向 / Get allowed endpoint direction | |
| Direction | GetDirection () const |
| 获取当前端点方向 / Get current endpoint direction | |
| uint8_t | GetAddress () const |
| 获取端点地址(方向 + 号) / Get endpoint address (dir + num) | |
| State | GetState () const |
| 获取端点状态 / Get endpoint state | |
| void | SetState (State state) |
| 设置端点状态 / Set endpoint state | |
| Type | GetType () const |
| 获取端点类型 / Get endpoint type | |
| uint16_t | MaxPacketSize () const |
| 获取最大包长 / Get max packet size | |
| bool | IsStalled () const |
| 是否处于 STALL 状态 / Whether endpoint is stalled | |
| bool | UseDoubleBuffer () const |
| 是否启用双缓冲 / Whether double buffer is enabled | |
| RawData | GetBuffer () const |
| 获取当前可用于传输的缓冲区 / Get current transfer buffer | |
| void | SetOnTransferCompleteCallback (Callback< ConstRawData & > cb) |
| 设置传输完成回调 / Set transfer complete callback | |
| void | SetActiveLength (uint16_t len) |
| 设置当前活动缓冲区有效长度 / Set active buffer valid length | |
| size_t | GetActiveLength () |
| 获取当前活动缓冲区有效长度 / Get active buffer valid length | |
| virtual size_t | MaxTransferSize () const |
| 返回当前最大可传输字节数 / Return maximum transferable size at this time | |
| virtual void | Configure (const Config &cfg)=0 |
| 配置端点协议参数 / Configure endpoint protocol parameters | |
| virtual void | Close ()=0 |
| 关闭端点 / Close endpoint | |
| virtual ErrorCode | Stall ()=0 |
| 置 STALL / Stall endpoint | |
| virtual ErrorCode | ClearStall ()=0 |
| 清除 STALL / Clear stall | |
| virtual ErrorCode | Transfer (size_t size)=0 |
| 启动一次传输 / Start a transfer | |
| virtual ErrorCode | TransferMultiBulk (RawData &data) |
| Bulk 多包传输辅助接口 / Helper for multi-packet bulk transfer. | |
| virtual ErrorCode | TransferZLP () |
| 发送/接收 ZLP(零长度包) / Transfer zero length packet (ZLP) | |
| void | OnTransferCompleteCallback (bool in_isr, size_t actual_transfer_size) |
| 由底层在传输完成时调用 / Called by low-level driver when transfer completes | |
Static Public Member Functions | |
| static constexpr uint8_t | EPNumberToInt8 (EPNumber ep) |
| 端点号转换为 uint8_t / Convert endpoint number to uint8_t | |
| static constexpr uint8_t | EPNumberToAddr (EPNumber ep, Direction dir) |
| 端点号转换为端点地址 / Convert endpoint number to endpoint address | |
| static constexpr EPNumber | AddrToEPNumber (uint8_t addr, Direction &dir) |
| 端点地址转换为端点号 / Convert endpoint address to endpoint number | |
| static constexpr EPNumber | NextEPNumber (EPNumber ep) |
| 获取下一个端点号 / Get the next endpoint number | |
Protected Member Functions | |
| Config & | GetConfig () |
| 获取当前配置引用 / Get endpoint config reference | |
| virtual void | SwitchBuffer () |
| 切换双缓冲 / Switch double buffer | |
| virtual void | SetActiveBlock (bool active_block) |
| 设置当前活动缓冲块 / Set active buffer block | |
Private Attributes | |
| LibXR::Callback< LibXR::ConstRawData & > | on_transfer_complete_ |
| 传输完成回调 / Transfer complete callback | |
| EPNumber | number_ |
| 端点号 / Endpoint number | |
| Direction | avail_direction_ |
| 可配置方向 / Allowed direction | |
| Config | config_ |
| 当前配置 / Current configuration | |
| State | state_ = State::DISABLED |
| 当前状态 / Current state | |
| LibXR::RawData | buffer_ |
| 端点缓冲区 / Endpoint buffer | |
| LibXR::DoubleBuffer | double_buffer_ |
| 双缓冲管理 / Double buffer manager | |
| bool | multi_bulk_ = false |
| 多包 bulk 状态机使能 / Multi-bulk state enabled | |
| RawData | multi_bulk_data_ |
| 多包 bulk 应用层 buffer / App buffer for multi-bulk | |
| size_t | multi_bulk_remain_ |
| 多包 bulk 剩余字节数 / Remaining bytes for multi-bulk | |
USB 端点基类 / USB Endpoint base class.
用于描述与操作 USB 端点,提供端点配置、传输控制、状态管理与回调接口。 Used for describing and manipulating USB endpoints, providing endpoint configuration, transfer control, state management, and callback interfaces.
|
strong |
|
strong |
端点号 Endpoint number
| Enumerator | |
|---|---|
| EP0 | 端点 0 / Endpoint 0 |
| EP1 | 端点 1 / Endpoint 1 |
| EP2 | 端点 2 / Endpoint 2 |
| EP3 | 端点 3 / Endpoint 3 |
| EP4 | 端点 4 / Endpoint 4 |
| EP5 | 端点 5 / Endpoint 5 |
| EP6 | 端点 6 / Endpoint 6 |
| EP7 | 端点 7 / Endpoint 7 |
| EP8 | 端点 8 / Endpoint 8 |
| EP9 | 端点 9 / Endpoint 9 |
| EP10 | 端点 10 / Endpoint 10 |
| EP11 | 端点 11 / Endpoint 11 |
| EP12 | 端点 12 / Endpoint 12 |
| EP13 | 端点 13 / Endpoint 13 |
| EP14 | 端点 14 / Endpoint 14 |
| EP15 | 端点 15 / Endpoint 15 |
| EP_MAX_NUM | 端点数量上限 / Maximum number of endpoints |
| EP_AUTO | 自动分配端点号 / Auto allocate |
| EP_INVALID | 非法端点号 / Invalid endpoint |
|
strong |
|
strong |
构造函数 / Constructor
Definition at line 152 of file ep.hpp.
|
inlinestaticconstexpr |
|
inline |
|
pure virtual |
|
pure virtual |
关闭端点 / Close endpoint
Implemented in LibXR::STM32Endpoint.
|
pure virtual |
配置端点协议参数 / Configure endpoint protocol parameters
| cfg | 配置参数 / Configuration parameters |
Implemented in LibXR::STM32Endpoint.
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inline |
获取当前活动缓冲区有效长度 / Get active buffer valid length
Definition at line 276 of file ep.hpp.
|
inline |
获取端点地址(方向 + 号) / Get endpoint address (dir + num)
Definition at line 194 of file ep.hpp.
|
inline |
获取当前可用于传输的缓冲区 / Get current transfer buffer
Definition at line 245 of file ep.hpp.
|
inlineprotected |
|
inline |
获取当前端点方向 / Get current endpoint direction
Definition at line 181 of file ep.hpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
获取最大包长 / Get max packet size
Definition at line 225 of file ep.hpp.
|
inlinevirtual |
返回当前最大可传输字节数 / Return maximum transferable size at this time
Reimplemented in LibXR::STM32Endpoint.
Definition at line 282 of file ep.hpp.
获取下一个端点号 / Get the next endpoint number
| ep | 当前端点号 / Current endpoint number |
|
inline |
由底层在传输完成时调用 / Called by low-level driver when transfer completes
| in_isr | 是否在中断上下文 / Whether in ISR context |
| actual_transfer_size | 实际传输长度 / Actual transferred size |
Definition at line 386 of file ep.hpp.
|
inlineprotectedvirtual |
设置当前活动缓冲块 / Set active buffer block
| active_block | true 使用第二块;false 使用第一块 / true selects second block; false selects first block |
Definition at line 523 of file ep.hpp.
|
inline |
设置当前活动缓冲区有效长度 / Set active buffer valid length
| len | 有效长度 / Valid length |
Definition at line 270 of file ep.hpp.
|
inline |
设置传输完成回调 / Set transfer complete callback
| cb | 回调函数 / Callback |
|
inline |
|
pure virtual |
|
inlineprotectedvirtual |
切换双缓冲 / Switch double buffer
Definition at line 512 of file ep.hpp.
|
pure virtual |
启动一次传输 / Start a transfer
| size | 传输长度 / Transfer size |
Implemented in LibXR::STM32Endpoint.
|
inlinevirtual |
Bulk 多包传输辅助接口 / Helper for multi-packet bulk transfer.
| data | 应用层缓冲区(IN:待发送数据;OUT:接收缓冲区) / App buffer (IN: data to send; OUT: receive buffer) |
Definition at line 320 of file ep.hpp.
|
inlinevirtual |
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |