ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
esp32_can.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_ESP32
4
7
8#include <driver/twai.h>
9
10namespace esphome::esp32_can {
11
17
18class ESP32Can final : public canbus::Canbus {
19 public:
20 void set_rx(int rx) { rx_ = rx; }
21 void set_tx(int tx) { tx_ = tx; }
23 void set_tx_queue_len(uint32_t tx_queue_len) { this->tx_queue_len_ = tx_queue_len; }
24 void set_rx_queue_len(uint32_t rx_queue_len) { this->rx_queue_len_ = rx_queue_len; }
25 void set_tx_enqueue_timeout_ms(uint32_t tx_enqueue_timeout_ms) {
26 this->tx_enqueue_timeout_ticks_ = pdMS_TO_TICKS(tx_enqueue_timeout_ms);
27 }
30
31 protected:
32 bool setup_internal() override;
34 canbus::Error send_message(struct canbus::CanFrame *frame) override;
35 canbus::Error read_message(struct canbus::CanFrame *frame) override;
37
38 int rx_{-1};
39 int tx_{-1};
41 bool recovery_pending_{false};
42 bool restart_pending_{false};
44 optional<uint32_t> tx_queue_len_{};
45 optional<uint32_t> rx_queue_len_{};
46 twai_handle_t twai_handle_{nullptr};
47};
48
49} // namespace esphome::esp32_can
50
51#endif
BedjetMode mode
BedJet operating mode.
canbus::Error read_message(struct canbus::CanFrame *frame) override
canbus::CanEventFlags get_events() override
void set_mode(CanMode mode)
Definition esp32_can.h:22
optional< uint32_t > rx_queue_len_
Definition esp32_can.h:45
TickType_t tx_enqueue_timeout_ticks_
Definition esp32_can.h:43
void set_tx_enqueue_timeout_ms(uint32_t tx_enqueue_timeout_ms)
Definition esp32_can.h:25
void set_tx_queue_len(uint32_t tx_queue_len)
Definition esp32_can.h:23
optional< uint32_t > tx_queue_len_
Definition esp32_can.h:44
void set_rx_queue_len(uint32_t rx_queue_len)
Definition esp32_can.h:24
canbus::Error send_message(struct canbus::CanFrame *frame) override
bool setup_internal() override
Definition esp32_can.cpp:73
canbus::CanStatus get_status() override
static void uint32_t