libxr
Embedded C++ framework for bare-metal, RTOS and Linux
Loading...
Searching...
No Matches
LibXR::CH32EndpointDevFs Class Reference

CH32 FSDEV 端点实现 / CH32 FSDEV endpoint implementation. More...

#include <ch32_usb_endpoint.hpp>

Inheritance diagram for LibXR::CH32EndpointDevFs:
[legend]
Collaboration diagram for LibXR::CH32EndpointDevFs:
[legend]

Public Member Functions

 CH32EndpointDevFs (EPNumber ep_num, Direction dir, LibXR::RawData buffer, bool is_isochronous)
 
void Configure (const Config &cfg) override
 配置端点协议参数 / Configure endpoint protocol parameters
 
void Close () override
 关闭端点 / Close endpoint
 
ErrorCode Transfer (size_t size) override
 启动一次传输 / Start a transfer
 
void TransferComplete (size_t size)
 
void CopyRxDataToBuffer (size_t size)
 
ErrorCode Stall () override
 置 STALL / Stall endpoint
 
ErrorCode ClearStall () override
 清除 STALL / Clear stall
 
void SwitchBuffer () override
 切换双缓冲 / Switch double buffer
 
- Public Member Functions inherited from LibXR::USB::Endpoint
 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 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 void ResetPMAAllocator ()
 
static void SetEpTxStatus (uint8_t ep, uint16_t status)
 
static void SetEpRxStatus (uint8_t ep, uint16_t status)
 
static void ClearEpCtrTx (uint8_t ep)
 
static void ClearEpCtrRx (uint8_t ep)
 
static uint16_t GetRxCount (uint8_t ep)
 
- Static Public Member Functions inherited from LibXR::USB::Endpoint
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
 

Public Attributes

bool is_isochronous_ = false
 
size_t last_transfer_size_ = 0
 
uint16_t pma_addr_ = 0
 

Static Public Attributes

static constexpr uint8_t EP_DEV_FS_MAX_SIZE = 8
 
static CH32EndpointDevFs * map_dev_fs_ [EP_DEV_FS_MAX_SIZE][2] = {}
 

Additional Inherited Members

- Public Types inherited from LibXR::USB::Endpoint
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_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...
 
- Protected Member Functions inherited from LibXR::USB::Endpoint
Config & GetConfig ()
 获取当前配置引用 / Get endpoint config reference
 
virtual void SetActiveBlock (bool active_block)
 设置当前活动缓冲块 / Set active buffer block
 

Detailed Description

CH32 FSDEV 端点实现 / CH32 FSDEV endpoint implementation.

Definition at line 50 of file ch32_usb_endpoint.hpp.

Member Function Documentation

◆ ClearStall()

ErrorCode LibXR::CH32EndpointDevFs::ClearStall ( )
overridevirtual

清除 STALL / Clear stall

Returns
ErrorCode 错误码 / Error code

Implements LibXR::USB::Endpoint.

◆ Close()

void LibXR::CH32EndpointDevFs::Close ( )
overridevirtual

关闭端点 / Close endpoint

Implements LibXR::USB::Endpoint.

◆ Configure()

void LibXR::CH32EndpointDevFs::Configure ( const Config & cfg)
overridevirtual

配置端点协议参数 / Configure endpoint protocol parameters

Parameters
cfg配置参数 / Configuration parameters

Implements LibXR::USB::Endpoint.

◆ Stall()

ErrorCode LibXR::CH32EndpointDevFs::Stall ( )
overridevirtual

置 STALL / Stall endpoint

Returns
ErrorCode 错误码 / Error code

Implements LibXR::USB::Endpoint.

◆ SwitchBuffer()

void LibXR::CH32EndpointDevFs::SwitchBuffer ( )
overridevirtual

切换双缓冲 / Switch double buffer

Reimplemented from LibXR::USB::Endpoint.

◆ Transfer()

ErrorCode LibXR::CH32EndpointDevFs::Transfer ( size_t size)
overridevirtual

启动一次传输 / Start a transfer

Parameters
size传输长度 / Transfer size
Returns
ErrorCode 错误码 / Error code

Implements LibXR::USB::Endpoint.

Member Data Documentation

◆ EP_DEV_FS_MAX_SIZE

uint8_t LibXR::CH32EndpointDevFs::EP_DEV_FS_MAX_SIZE = 8
staticconstexpr

Definition at line 82 of file ch32_usb_endpoint.hpp.

◆ is_isochronous_

bool LibXR::CH32EndpointDevFs::is_isochronous_ = false

Definition at line 76 of file ch32_usb_endpoint.hpp.

◆ last_transfer_size_

size_t LibXR::CH32EndpointDevFs::last_transfer_size_ = 0

Definition at line 78 of file ch32_usb_endpoint.hpp.

◆ map_dev_fs_

CH32EndpointDevFs* LibXR::CH32EndpointDevFs::map_dev_fs_[EP_DEV_FS_MAX_SIZE][2] = {}
inlinestatic

Definition at line 83 of file ch32_usb_endpoint.hpp.

83{};

◆ pma_addr_

uint16_t LibXR::CH32EndpointDevFs::pma_addr_ = 0

Definition at line 80 of file ch32_usb_endpoint.hpp.


The documentation for this class was generated from the following file: