1#if defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
8static const char *
const TAG =
"usb_cdc_acm";
20 if (event ==
nullptr) {
21 ESP_LOGW(TAG,
"Event pool exhausted, line state event dropped (itf=%d)", this->
itf_);
26 event->data.line_state.dtr = dtr;
27 event->data.line_state.rts = rts;
39 if (event ==
nullptr) {
40 ESP_LOGW(TAG,
"Event pool exhausted, line coding event dropped (itf=%d)", this->
itf_);
45 event->data.line_coding.bit_rate = bit_rate;
46 event->data.line_coding.stop_bits = stop_bits;
47 event->data.line_coding.parity = parity;
48 event->data.line_coding.data_bits = data_bits;
60 switch (event->
type) {
62 bool dtr =
event->data.line_state.dtr;
63 bool rts =
event->data.line_state.rts;
72 uint32_t bit_rate =
event->data.line_coding.bit_rate;
73 uint8_t stop_bits =
event->data.line_coding.stop_bits;
74 uint8_t parity =
event->data.line_coding.parity;
75 uint8_t data_bits =
event->data.line_coding.data_bits;
83 this->
stop_bits_ = (stop_bits == 0) ? 1 : (stop_bits == 1) ? 1 : 2;
124 if (interface !=
nullptr) {
133 if (interface !=
nullptr) {
142 " Number of Interfaces: %d",
143 ESPHOME_MAX_USB_CDC_INSTANCES);
144 for (uint8_t i = 0; i < ESPHOME_MAX_USB_CDC_INSTANCES; ++i) {
148 ESP_LOGCONFIG(TAG,
" Interface %u is disabled", i);
154 uint8_t itf_num =
static_cast<uint8_t
>(interface->
get_itf());
155 if (itf_num < ESPHOME_MAX_USB_CDC_INSTANCES) {
158 ESP_LOGE(TAG,
"Interface number must be less than %u", ESPHOME_MAX_USB_CDC_INSTANCES);
164 if ((interface !=
nullptr) && (interface->get_itf() == itf)) {
void wake_loop_threadsafe()
Wake the main event loop from another thread or callback.
UARTParityOptions parity_
Main USB CDC ACM component that manages the USB device and all CDC interfaces.
void add_interface(USBCDCACMInstance *interface)
std::array< USBCDCACMInstance *, ESPHOME_MAX_USB_CDC_INSTANCES > interfaces_
USBCDCACMInstance * get_interface_by_number(uint8_t itf)
void dump_config() override
Represents a single CDC ACM interface instance.
EventPool< CDCEvent, EVENT_QUEUE_SIZE - 1 > event_pool_
LineStateCallback line_state_callback_
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)
LineCodingCallback line_coding_callback_
void queue_line_state_event(bool dtr, bool rts)
@ UART_CONFIG_PARITY_EVEN
@ UART_CONFIG_PARITY_NONE
@ CDC_EVENT_LINE_CODING_CHANGED
@ CDC_EVENT_LINE_STATE_CHANGED
USBCDCACMComponent * global_usb_cdc_component
Application App
Global storage of Application pointer - only one Application can exist.