2#if defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
10#include "freertos/ringbuf.h"
11#include "tusb_cdc_acm.h"
15static const uint8_t EVENT_QUEUE_SIZE = 12;
16static const uint8_t MAX_USB_CDC_INSTANCES = 2;
19using LineCodingCallback = std::function<void(uint32_t bit_rate, uint8_t stop_bits, uint8_t parity, uint8_t data_bits)>;
51class USBCDCACMComponent;
87 void flush()
override;
96 tinyusb_cdcacm_itf_t
itf_{TINYUSB_CDC_ACM_0};
119 void setup()
override;
120 void loop()
override;
129 std::array<USBCDCACMInstance *, MAX_USB_CDC_INSTANCES>
interfaces_{
nullptr,
nullptr};
Helper class to easily give an object a parent of type T.
Main USB CDC ACM component that manages the USB device and all CDC interfaces.
void add_interface(USBCDCACMInstance *interface)
USBCDCACMInstance * get_interface_by_number(uint8_t itf)
std::array< USBCDCACMInstance *, MAX_USB_CDC_INSTANCES > interfaces_
float get_setup_priority() const override
void dump_config() override
Represents a single CDC ACM interface instance.
TaskHandle_t usb_tx_task_handle_
tinyusb_cdcacm_itf_t itf_
RingbufHandle_t get_rx_ringbuf() const
void set_interface_number(uint8_t itf)
bool read_array(uint8_t *data, size_t len) override
EventPool< CDCEvent, EVENT_QUEUE_SIZE > event_pool_
bool peek_byte(uint8_t *data) override
RingbufHandle_t usb_tx_ringbuf_
LineStateCallback line_state_callback_
void check_logger_conflict() override
RingbufHandle_t get_tx_ringbuf() const
void set_line_state_callback(LineStateCallback callback)
tinyusb_cdcacm_itf_t get_itf() const
LockFreeQueue< CDCEvent, EVENT_QUEUE_SIZE > event_queue_
void queue_line_coding_event(uint32_t bit_rate, uint8_t stop_bits, uint8_t parity, uint8_t data_bits)
TaskHandle_t get_tx_task_handle() const
LineCodingCallback line_coding_callback_
void set_line_coding_callback(LineCodingCallback callback)
static void usb_tx_task_fn(void *arg)
void write_array(const uint8_t *data, size_t len) override
void queue_line_state_event(bool dtr, bool rts)
RingbufHandle_t usb_rx_ringbuf_
const float IO
For components that represent GPIO pins like PCF8573.
std::function< void(uint32_t bit_rate, uint8_t stop_bits, uint8_t parity, uint8_t data_bits)> LineCodingCallback
@ CDC_EVENT_LINE_CODING_CHANGED
@ CDC_EVENT_LINE_STATE_CHANGED
USBCDCACMComponent * global_usb_cdc_component
std::function< void(bool dtr, bool rts)> LineStateCallback
union esphome::usb_cdc_acm::CDCEvent::@159 data
struct esphome::usb_cdc_acm::CDCEvent::@159::@160 line_state
struct esphome::usb_cdc_acm::CDCEvent::@159::@161 line_coding