4#include "ch32_usb_endpoint.hpp"
5#include "libxr_def.hpp"
6#include "libxr_type.hpp"
7#include "usb/core/ep_pool.hpp"
8#include "usb/device/dev_core.hpp"
17 ch32_usb_dev_id_t
id,
size_t max_ep_num,
20 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
21 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
23 USB::Speed
speed = USB::Speed::FULL, USB::USBSpec spec = USB::USBSpec::USB_2_0)
39class CH32USBDeviceFS :
public USB::EndpointPool,
public USB::DeviceCore
50 EPConfig(
LibXR::RawData buffer,
bool is_in) : buffer(buffer), is_in(is_in ? 1 : 0) {}
54 const std::initializer_list<EPConfig> EP_CFGS,
55 USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid,
57 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
58 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
61 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
63 void Start()
override;
67 static inline CH32USBDeviceFS* self_ =
nullptr;
74class CH32USBDeviceHS :
public USB::EndpointPool,
public USB::DeviceCore
84 EPConfig(RawData buffer)
85 : buffer_tx(buffer), buffer_rx(buffer), double_buffer(false), is_in(false)
89 EPConfig(RawData buffer,
bool is_in)
90 : buffer_tx(buffer), buffer_rx(buffer), double_buffer(true), is_in(is_in)
94 EPConfig(RawData buffer_tx, RawData buffer_rx)
95 : buffer_tx(buffer_tx), buffer_rx(buffer_rx), double_buffer(false), is_in(false)
101 const std::initializer_list<EPConfig> EP_CFGS, uint16_t vid, uint16_t pid,
103 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
104 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
107 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
109 void Start()
override;
111 void Stop()
override;
113 static inline CH32USBDeviceHS* self_ =
nullptr;
void Init() override
初始化 USB 设备 / Initialize USB device
void Deinit() override
反初始化 USB 设备 / Deinitialize USB device
原始数据封装类。 A class for encapsulating raw data.
USB 设备协议栈核心类,负责端点 0 控制传输及配置、描述符、标准请求处理等。 USB device protocol stack core class. Handles EP0 control tr...
virtual void Deinit()
反初始化 USB 设备 / Deinitialize USB device
Speed speed
当前速度 / Current speed
virtual void Init()
初始化 USB 设备 / Initialize USB device
PacketSize0
控制端点0最大包长度枚举 Packet size for endpoint 0 (bMaxPacketSize0)
USB端点池类 / USB endpoint pool class.