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"
23 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
24 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
26 USB::Speed
speed = USB::Speed::FULL, USB::USBSpec spec = USB::USBSpec::USB_2_1)
28 USB::
DeviceCore(*this, spec,
speed, packet_size, vid, pid, bcd, LANG_LIST,
40#if defined(RCC_APB1Periph_USB) || defined(__DOXYGEN__)
65 const std::initializer_list<EPConfig> EP_CFGS,
68 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
69 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
75 void Start(
bool in_isr)
override;
76 void Stop(
bool in_isr)
override;
83#if defined(USBFSD) || defined(__DOXYGEN__)
107 const std::initializer_list<EPConfig> EP_CFGS,
110 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
111 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
118 void Stop(
bool in_isr)
override;
125#if defined(USBHSD) || defined(__DOXYGEN__)
144 : buffer_tx(buffer), buffer_rx(buffer), double_buffer(
false), is_in(
false)
149 : buffer_tx(buffer), buffer_rx(buffer), double_buffer(
true), is_in(is_in)
154 : buffer_tx(buffer_tx), buffer_rx(buffer_rx), double_buffer(
false), is_in(
false)
163 const std::initializer_list<EPConfig> EP_CFGS, uint16_t vid, uint16_t pid,
165 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
166 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
173 void Stop(
bool in_isr)
override;
CH32 FSDEV 设备驱动 / CH32 FSDEV device driver.
void Stop(bool in_isr) override
停止设备(由子类实现)/ Stop device (implemented by derived class)
CH32USBDeviceFS(const std::initializer_list< EPConfig > EP_CFGS, USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid, uint16_t bcd, const std::initializer_list< const USB::DescriptorStrings::LanguagePack * > LANG_LIST, const std::initializer_list< const std::initializer_list< USB::ConfigDescriptorItem * > > CONFIGS, ConstRawData uid={nullptr, 0})
构造 FSDEV 设备对象 / Construct FSDEV device object
void Start(bool in_isr) override
启动设备(由子类实现)/ Start device (implemented by derived class)
ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context) override
设置设备地址(由子类实现) Set device address (implemented by derived class).
CH32USBDevice(ch32_usb_dev_id_t id, size_t max_ep_num, USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid, uint16_t bcd, const std::initializer_list< const USB::DescriptorStrings::LanguagePack * > LANG_LIST, const std::initializer_list< const std::initializer_list< USB::ConfigDescriptorItem * > > CONFIGS, USB::Speed speed=USB::Speed::FULL, USB::USBSpec spec=USB::USBSpec::USB_2_1)
构造 CH32 USB 设备核心对象 / Construct CH32 USB device core
void Init(bool in_isr) override
初始化 / Initialize
void Deinit(bool in_isr) override
反初始化 / Deinitialize
CH32 OTG FS 设备驱动 / CH32 OTG FS device driver.
void Start(bool in_isr) override
启动设备(由子类实现)/ Start device (implemented by derived class)
CH32USBOtgFS(const std::initializer_list< EPConfig > EP_CFGS, USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid, uint16_t bcd, const std::initializer_list< const USB::DescriptorStrings::LanguagePack * > LANG_LIST, const std::initializer_list< const std::initializer_list< USB::ConfigDescriptorItem * > > CONFIGS, ConstRawData uid={nullptr, 0})
构造 OTG FS 设备对象 / Construct OTG FS device object
void Stop(bool in_isr) override
停止设备(由子类实现)/ Stop device (implemented by derived class)
ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context) override
设置设备地址(由子类实现) Set device address (implemented by derived class).
CH32 OTG HS 设备驱动 / CH32 OTG HS device driver.
ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context) override
设置设备地址(由子类实现) Set device address (implemented by derived class).
CH32USBOtgHS(const std::initializer_list< EPConfig > EP_CFGS, uint16_t vid, uint16_t pid, uint16_t bcd, const std::initializer_list< const USB::DescriptorStrings::LanguagePack * > LANG_LIST, const std::initializer_list< const std::initializer_list< USB::ConfigDescriptorItem * > > CONFIGS, ConstRawData uid={nullptr, 0})
构造 OTG HS 设备对象 / Construct OTG HS device object
void Start(bool in_isr) override
启动设备(由子类实现)/ Start device (implemented by derived class)
void Stop(bool in_isr) override
停止设备(由子类实现)/ Stop device (implemented by derived class)
只读原始数据视图 / Immutable raw data view
可写原始数据视图 / Mutable raw data view
USB 设备协议栈核心:EP0 控制传输、描述符、配置、标准/类/厂商请求 USB device core: EP0 control transfer, descriptors,...
virtual void Deinit(bool in_isr)
反初始化 / Deinitialize
Context
控制传输上下文 / Control transfer context
virtual void Init(bool in_isr)
初始化 / Initialize
DeviceCore(EndpointPool &ep_pool, USBSpec spec, Speed speed, DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid, uint16_t bcd, const std::initializer_list< const DescriptorStrings::LanguagePack * > &lang_list, const std::initializer_list< const std::initializer_list< ConfigDescriptorItem * > > &configs, ConstRawData uid={nullptr, 0})
构造函数 / Constructor
Speed speed
设备速度 / Device speed
PacketSize0
控制端点0最大包长度枚举 Packet size for endpoint 0 (bMaxPacketSize0)
USB端点池类 / USB endpoint pool class.
EndpointPool(size_t endpoint_num)
构造函数 / Constructor
LibXR 命名空间 / LibXR namespace.
ErrorCode
定义错误码枚举 / Defines an enumeration for error codes
ch32_usb_dev_id_t
CH32 USB 控制器编号 / CH32 USB controller identifiers.
FSDEV 端点配置 / FSDEV endpoint configuration.
OTG FS 端点配置 / OTG FS endpoint configuration.
OTG HS 端点配置 / OTG HS endpoint configuration.