46template<
typename... Ts>
class CanbusSendAction;
49static const uint8_t CAN_MAX_DATA_LENGTH = 8;
51static const uint8_t CAN_ERROR_PASSIVE_THRESHOLD = 128;
73static constexpr uint32_t CAN_STATUS_UNSET = UINT32_MAX;
89 void setup()
override;
97 const std::vector<uint8_t> &data) {
98 return this->
send_data(can_id, use_extended_id, remote_transmission_request, data.data(), data.size());
102 return this->
send_data(can_id, use_extended_id,
false, data);
147#ifdef ESPHOME_LOG_HAS_VERBOSE
160 TEMPLATABLE_BYTES(data)
164 void set_use_extended_id(
bool use_extended_id) { this->
use_extended_id_ = use_extended_id; }
166 void set_remote_transmission_request(
bool remote_transmission_request) {
170 void play(
const Ts &...
x)
override {
172 auto use_extended_id =
174 this->data_.template visit<CAN_MAX_DATA_LENGTH>(
175 [&](
const uint8_t *data,
size_t len) {
192 const bool use_extended_id)
Helper class to easily give an object a parent of type T.
virtual CanStatus get_status()
CallbackManager< void(uint32_t can_id, bool extended_id, bool rtr, const std::vector< uint8_t > &data)> callback_manager_
static constexpr uint32_t EVENT_CHECK_INTERVAL_MS
void log_events_(CanEventFlags events, uint32_t now)
void set_max_frames_per_loop(uint32_t max_frames_per_loop)
void set_use_extended_id(bool use_extended_id)
canbus::Error send_data(uint32_t can_id, bool use_extended_id, bool remote_transmission_request, const std::vector< uint8_t > &data)
void add_callback(F &&callback)
Add a callback to be called when a CAN message is received.
static constexpr uint32_t STATE_LOG_INTERVAL_MS
canbus::Error send_data(uint32_t can_id, bool use_extended_id, bool remote_transmission_request, const uint8_t *data, size_t len)
void add_trigger(CanbusTrigger *trigger)
virtual CanEventFlags get_events()
uint32_t last_state_log_time_
uint32_t max_frames_per_loop_
canbus::Error send_data(uint32_t can_id, bool use_extended_id, const std::vector< uint8_t > &data)
uint32_t last_event_log_time_
void set_bitrate(CanSpeed bit_rate)
void set_can_id(uint32_t can_id)
float get_setup_priority() const override
static constexpr uint32_t EVENT_LOG_THROTTLE_MS
void dump_config() override
static constexpr uint32_t EVENT_LOG_BUS_OFF_HOLDOFF_MS
virtual Error send_message(struct CanFrame *frame)=0
uint32_t last_bus_off_time_
virtual bool setup_internal()=0
std::vector< CanbusTrigger * > triggers_
uint32_t last_event_check_time_
virtual Error read_message(struct CanFrame *frame)=0
bool remote_transmission_request_
optional< uint32_t > can_id_
optional< bool > use_extended_id_
optional< bool > remote_transmission_request_
CanbusTrigger(Canbus *parent, const std::uint32_t can_id, const std::uint32_t can_id_mask, const bool use_extended_id)
void set_remote_transmission_request(bool remote_transmission_request)
@ CAN_EVENT_RX_QUEUE_FULL
constexpr float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
uint8_t can_data_length_code
uint8_t data[CAN_MAX_DATA_LENGTH] __attribute__((aligned(8)))
bool remote_transmission_request
uint32_t rx_overrun_count