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*>>
60 ConstRawData uid = {
nullptr, 0});
62 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
64 void Start()
override;
68 static inline CH32USBDeviceFS* self_ =
nullptr;
75class CH32USBDeviceHS :
public USB::EndpointPool,
public USB::DeviceCore
85 EPConfig(RawData buffer)
86 : buffer_tx(buffer), buffer_rx(buffer), double_buffer(false), is_in(false)
90 EPConfig(RawData buffer,
bool is_in)
91 : buffer_tx(buffer), buffer_rx(buffer), double_buffer(true), is_in(is_in)
95 EPConfig(RawData buffer_tx, RawData buffer_rx)
96 : buffer_tx(buffer_tx), buffer_rx(buffer_rx), double_buffer(false), is_in(false)
102 const std::initializer_list<EPConfig> EP_CFGS, uint16_t vid, uint16_t pid,
104 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
105 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
107 ConstRawData uid = {
nullptr, 0});
109 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
111 void Start()
override;
113 void Stop()
override;
115 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.