ESPHome 2026.3.0
Loading...
Searching...
No Matches
cdc_acm.cpp
Go to the documentation of this file.
1#if defined(CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT)
2#include "cdc_acm.h"
3#include <zephyr/drivers/uart.h>
4#include <zephyr/drivers/uart/cdc_acm.h>
5
6#define DEVICE_AND_COMMA(node_id) DEVICE_DT_GET(node_id),
7
8namespace esphome::zephyr {
9
11
13#if DT_HAS_COMPAT_STATUS_OKAY(zephyr_cdc_acm_uart)
14 const struct device *cdc_dev[] = {DT_FOREACH_STATUS_OKAY(zephyr_cdc_acm_uart, DEVICE_AND_COMMA)};
15 for (auto &idx : cdc_dev) {
16 // only one global callback can be registered
17 cdc_acm_dte_rate_callback_set(idx, CdcAcm::cdc_dte_rate_callback_);
18 }
19#endif // DT_HAS_COMPAT_STATUS_OKAY(zephyr_cdc_acm_uart)
20}
21
22void CdcAcm::cdc_dte_rate_callback_(const struct device *device, uint32_t rate) {
23 global_cdc_acm->defer([device, rate]() { global_cdc_acm->rate_callbacks_.call(device, rate); });
24}
25
26CdcAcm *global_cdc_acm; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
27
28} // namespace esphome::zephyr
29
30#endif
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi defer)(const char *name, std::function< void()> &&f)
Defer a callback to the next loop() call.
Definition component.h:501
CallbackManager< void(const device *, uint32_t)> rate_callbacks_
Definition cdc_acm.h:20
void setup() override
Definition cdc_acm.cpp:12
static void cdc_dte_rate_callback_(const device *device, uint32_t rate)
Definition cdc_acm.cpp:22
CdcAcm * global_cdc_acm
Definition cdc_acm.cpp:26
static void uint32_t