3#if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32P4)
14class USBUartTypeCdcAcm;
15class USBUartComponent;
18static const char *
const TAG =
"usb_uart";
20static constexpr uint8_t USB_CDC_SUBCLASS_ACM = 0x02;
21static constexpr uint8_t USB_SUBCLASS_COMMON = 0x02;
22static constexpr uint8_t USB_SUBCLASS_NULL = 0x00;
23static constexpr uint8_t USB_PROTOCOL_NULL = 0x00;
24static constexpr uint8_t USB_DEVICE_PROTOCOL_IAD = 0x01;
25static constexpr uint8_t USB_VENDOR_IFC = usb_host::USB_TYPE_VENDOR | usb_host::USB_RECIP_INTERFACE;
26static constexpr uint8_t USB_VENDOR_DEV = usb_host::USB_TYPE_VENDOR | usb_host::USB_RECIP_DEVICE;
50static const char *
const PARITY_NAMES[] = {
"NONE",
"ODD",
"EVEN",
"MARK",
"SPACE"};
51static const char *
const STOP_BITS_NAMES[] = {
"1",
"1.5",
"2"};
62 void push(uint8_t item);
63 void push(
const uint8_t *data,
size_t len);
65 size_t pop(uint8_t *data,
size_t len);
127 void setup()
override;
128 void loop()
override;
Helper class to easily give an object a parent of type T.
USBClient(uint16_t vid, uint16_t pid)
RingBuffer(uint16_t buffer_size)
size_t get_free_space() const
size_t get_available() const
void set_dummy_receiver(bool dummy_receiver)
std::atomic< bool > input_started_
std::atomic< bool > initialised_
bool peek_byte(uint8_t *data) override
void set_parity(UARTParityOptions parity)
UARTParityOptions parity_
void write_array(const uint8_t *data, size_t len) override
void check_logger_conflict() override
RingBuffer output_buffer_
bool read_array(uint8_t *data, size_t len) override
USBUartChannel(uint8_t index, uint16_t buffer_size)
void set_debug(bool debug)
std::atomic< bool > output_started_
void add_channel(USBUartChannel *channel)
EventPool< UsbDataChunk, USB_DATA_QUEUE_SIZE > chunk_pool_
USBUartComponent(uint16_t vid, uint16_t pid)
std::vector< USBUartChannel * > channels_
LockFreeQueue< UsbDataChunk, USB_DATA_QUEUE_SIZE > usb_data_queue_
void start_output(USBUartChannel *channel)
void dump_config() override
void start_input(USBUartChannel *channel)
std::vector< USBUartChannel * > get_channels()
static constexpr int USB_DATA_QUEUE_SIZE
void enable_channels() override
CH34x.
USBUartTypeCH34X(uint16_t vid, uint16_t pid)
USBUartTypeCP210X(uint16_t vid, uint16_t pid)
std::vector< CdcEps > parse_descriptors(usb_device_handle_t dev_hdl) override
void enable_channels() override
void on_disconnected() override
void on_connected() override
USBUartTypeCdcAcm(uint16_t vid, uint16_t pid)
virtual std::vector< CdcEps > parse_descriptors(usb_device_handle_t dev_hdl)
virtual void enable_channels()
@ UART_CONFIG_STOP_BITS_1_5
@ UART_CONFIG_STOP_BITS_1
@ UART_CONFIG_STOP_BITS_2
@ UART_CONFIG_PARITY_SPACE
@ UART_CONFIG_PARITY_MARK
@ UART_CONFIG_PARITY_NONE
@ UART_CONFIG_PARITY_EVEN
Providing packet encoding functions for exchanging data with a remote host.
const usb_ep_desc_t * out_ep
uint8_t bulk_interface_number
const usb_ep_desc_t * notify_ep
const usb_ep_desc_t * in_ep
uint8_t interrupt_interface_number
uint8_t data[MAX_CHUNK_SIZE]
static constexpr size_t MAX_CHUNK_SIZE