libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
ch32_usb_endpoint.hpp
1#pragma once
2
3#include "ch32_usb.hpp"
4#include "libxr_def.hpp"
5#include "usb/core/ep.hpp"
6
7namespace LibXR
8{
9
11{
12 public:
14
15 void Configure(const Config& cfg) override;
16 void Close() override;
17 ErrorCode Transfer(size_t size) override;
18
19 void TransferComplete(size_t size);
20 ErrorCode Stall() override;
21 ErrorCode ClearStall() override;
22
23 void SwitchBuffer() override;
24
25 bool tog_ = false;
26
27 size_t last_transfer_size_ = 0;
28
29 RawData dma_buffer_;
30
31#if defined(USBFSD)
32 static constexpr uint8_t EP_OTG_FS_MAX_SIZE = 8;
33 static inline CH32EndpointOtgFs* map_otg_fs_[EP_OTG_FS_MAX_SIZE][2] = {};
34#endif
35};
36
38{
39 public:
41 bool double_buffer);
42
43 void Configure(const Config& cfg) override;
44 void Close() override;
45 ErrorCode Transfer(size_t size) override;
46
47 void TransferComplete(size_t size);
48 ErrorCode Stall() override;
49 ErrorCode ClearStall() override;
50
51 void SwitchBuffer() override;
52
53 uint8_t dev_id_;
54 bool tog0_ = false;
55 bool tog1_ = false;
56 bool hw_double_buffer_ = false;
57
58 size_t last_transfer_size_ = 0;
59
60 RawData dma_buffer_;
61
62#if defined(USBFSD)
63 static constexpr uint8_t EP_OTG_HS_MAX_SIZE = 16;
64 static inline CH32EndpointOtgHs* map_otg_hs_[EP_OTG_HS_MAX_SIZE][2] = {};
65#endif
66};
67
68} // namespace LibXR
void SwitchBuffer() override
切换缓冲区 Switch buffer
ErrorCode ClearStall() override
清除端点停止状态 Clear endpoint stop status
void Close() override
关闭端点(软禁用/资源复位) Close (soft disable)
ErrorCode Stall() override
停止端点传输 Stop endpoint transfer
void Configure(const Config &cfg) override
二次初始化/配置端点协议参数(由Pool/Manager分配后调用) Configure endpoint protocol parameters (call after pool allocation...
ErrorCode Transfer(size_t size) override
传输数据 Transfer data
void Close() override
关闭端点(软禁用/资源复位) Close (soft disable)
ErrorCode Stall() override
停止端点传输 Stop endpoint transfer
ErrorCode ClearStall() override
清除端点停止状态 Clear endpoint stop status
ErrorCode Transfer(size_t size) override
传输数据 Transfer data
void Configure(const Config &cfg) override
二次初始化/配置端点协议参数(由Pool/Manager分配后调用) Configure endpoint protocol parameters (call after pool allocation...
void SwitchBuffer() override
切换缓冲区 Switch buffer
原始数据封装类。 A class for encapsulating raw data.
USB端点基类 / USB Endpoint base class.
Definition ep.hpp:22
EPNumber
端点号 / Endpoint number
Definition ep.hpp:39
Direction
端点方向 Endpoint direction
Definition ep.hpp:29
LibXR 命名空间
Definition ch32_gpio.hpp:9
端点配置结构体 Endpoint configuration struct
Definition ep.hpp:140