3#include "double_buffer.hpp"
5#include "stm32_usb.hpp"
6#include "stm32_usb_ep.hpp"
7#include "usb/core/ep_pool.hpp"
8#include "usb/device/dev_core.hpp"
10#if defined(HAL_PCD_MODULE_ENABLED)
13stm32_usb_dev_id_t STM32USBDeviceGetID(PCD_HandleTypeDef* hpcd);
22 PCD_HandleTypeDef* hpcd, stm32_usb_dev_id_t
id,
size_t max_ep_num,
25 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
26 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
28 USB::Speed
speed = USB::Speed::FULL, USB::USBSpec spec = USB::USBSpec::USB_2_0)
42 void Start()
override { HAL_PCD_Start(hpcd_); }
43 void Stop()
override { HAL_PCD_Stop(hpcd_); }
45 PCD_HandleTypeDef* hpcd_;
46 stm32_usb_dev_id_t id_;
50#if defined(USB_OTG_FS)
51#if !defined(USB_OTG_FS_TOTAL_FIFO_SIZE)
52#if defined(STM32H7) || defined(STM32N6)
53#define USB_OTG_FS_TOTAL_FIFO_SIZE 4096
55#define USB_OTG_FS_TOTAL_FIFO_SIZE 1280
58class STM32USBDeviceOtgFS :
public STM32USBDevice
68 PCD_HandleTypeDef* hpcd,
size_t rx_fifo_size,
69 const std::initializer_list<LibXR::RawData> RX_EP_CFGS,
70 const std::initializer_list<EPInConfig> TX_EP_CFGS,
71 USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid,
73 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
74 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
77 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
82#if defined(USB_OTG_HS)
83#if !defined(USB_OTG_HS_TOTAL_FIFO_SIZE)
84#define USB_OTG_HS_TOTAL_FIFO_SIZE 4096
86class STM32USBDeviceOtgHS :
public STM32USBDevice
96 PCD_HandleTypeDef* hpcd,
size_t rx_fifo_size,
97 const std::initializer_list<LibXR::RawData> RX_EP_CFGS,
98 const std::initializer_list<EPInConfig> TX_EP_CFGS,
99 USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid,
101 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
102 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
105 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
110class STM32USBDeviceDevFs :
public STM32USBDevice
116 size_t hw_buffer_size1, hw_buffer_size2;
117 bool double_buffer =
false;
118 bool double_buffer_is_in =
false;
120 EPConfig(
LibXR::RawData buffer,
size_t hw_buffer_size,
bool is_in)
123 hw_buffer_size1(hw_buffer_size),
126 double_buffer_is_in(is_in)
131 size_t hw_buffer_size_in,
size_t hw_buffer_size_out)
132 : buffer1(buffer_in),
134 hw_buffer_size1(hw_buffer_size_in),
135 hw_buffer_size2(hw_buffer_size_out)
143 PCD_HandleTypeDef* hpcd,
const std::initializer_list<EPConfig> EP_CFGS,
144 USB::DeviceDescriptor::PacketSize0 packet_size, uint16_t vid, uint16_t pid,
146 const std::initializer_list<const USB::DescriptorStrings::LanguagePack*> LANG_LIST,
147 const std::initializer_list<
const std::initializer_list<USB::ConfigDescriptorItem*>>
150 ErrorCode SetAddress(uint8_t address, USB::DeviceCore::Context context)
override;
原始数据封装类。 A class for encapsulating raw data.
void Deinit() override
反初始化 USB 设备 / Deinitialize USB device
void Start() override
启动 USB 设备 / Start USB device
void Stop() override
停止 USB 设备 / Stop USB device
void Init() override
初始化 USB 设备 / Initialize USB device
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.