4#include "libxr_def.hpp"
5#include "usb/core/ep.hpp"
10class CH32EndpointOtgFs :
public USB::Endpoint
13 CH32EndpointOtgFs(EPNumber ep_num, Direction dir,
LibXR::RawData buffer,
16 void Configure(
const Config& cfg)
override;
17 void Close()
override;
18 ErrorCode Transfer(
size_t size)
override;
20 void TransferComplete(
size_t size);
21 ErrorCode Stall()
override;
22 ErrorCode ClearStall()
override;
24 void SwitchBuffer()
override;
27 bool is_isochronous_ =
false;
29 size_t last_transfer_size_ = 0;
33 static constexpr uint8_t EP_OTG_FS_MAX_SIZE = 8;
34 static inline CH32EndpointOtgFs* map_otg_fs_[EP_OTG_FS_MAX_SIZE][2] = {};
39class CH32EndpointOtgHs :
public USB::Endpoint
42 CH32EndpointOtgHs(EPNumber ep_num, Direction dir,
LibXR::RawData buffer,
45 void Configure(
const Config& cfg)
override;
46 void Close()
override;
47 ErrorCode Transfer(
size_t size)
override;
49 void TransferComplete(
size_t size);
50 ErrorCode Stall()
override;
51 ErrorCode ClearStall()
override;
53 void SwitchBuffer()
override;
58 bool hw_double_buffer_ =
false;
60 size_t last_transfer_size_ = 0;
64 static constexpr uint8_t EP_OTG_HS_MAX_SIZE = 16;
65 static inline CH32EndpointOtgHs* map_otg_hs_[EP_OTG_HS_MAX_SIZE][2] = {};
原始数据封装类。 A class for encapsulating raw data.