12 ESP_LOGE(TAG,
"setup error!");
19 ESP_LOGCONFIG(TAG,
"config extended id=0x%08" PRIx32, this->
can_id_);
21 ESP_LOGCONFIG(TAG,
"config standard id=0x%03" PRIx32, this->
can_id_);
26 const uint8_t *data,
size_t len) {
30 const uint8_t
size =
static_cast<uint8_t
>(std::min<size_t>(
len, CAN_MAX_DATA_LENGTH));
31 if (use_extended_id) {
32 ESP_LOGD(TAG,
"send extended id=0x%08" PRIx32
" rtr=%s size=%d", can_id, TRUEFALSE(remote_transmission_request),
35 ESP_LOGD(TAG,
"send standard id=0x%03" PRIx32
" rtr=%s size=%d", can_id, TRUEFALSE(remote_transmission_request),
39 can_message.
can_id = can_id;
43 for (
int i = 0; i <
size; i++) {
44 can_message.data[i] = data[i];
45 ESP_LOGVV(TAG,
" data[%d]=%02x", i, can_message.data[i]);
50 if (use_extended_id) {
51 ESP_LOGW(TAG,
"send to extended id=0x%08" PRIx32
" failed with error %d!", can_id, error);
53 ESP_LOGW(TAG,
"send to standard id=0x%03" PRIx32
" failed with error %d!", can_id, error);
61 ESP_LOGVV(TAG,
"add trigger for extended canid=0x%08" PRIx32, trigger->
can_id_);
63 ESP_LOGVV(TAG,
"add trigger for std canid=0x%03" PRIx32, trigger->
can_id_);
83 ESP_LOGD(TAG,
"received can message (#%" PRIu32
") extended can_id=0x%" PRIx32
" size=%d", message_counter + 1,
86 ESP_LOGD(TAG,
"received can message (#%" PRIu32
") std can_id=0x%" PRIx32
" size=%d", message_counter + 1,
90 std::vector<uint8_t> data;
94 ESP_LOGV(TAG,
" can_message.data[%d]=%02x", i, can_message.data[i]);
95 data.push_back(can_message.data[i]);
103 if ((trigger->can_id_ == (can_message.
can_id & trigger->can_id_mask_)) &&
105 (!trigger->remote_transmission_request_.has_value() ||
112 if (message_counter == this->max_frames_per_loop_) {
114 "Reached max_frames_per_loop=%" PRIu32
", deferring remaining CAN frames. Some frames might be dropped",
115 this->max_frames_per_loop_);
147 error_passive =
status.rx_error_counter >= CAN_ERROR_PASSIVE_THRESHOLD ||
148 status.tx_error_counter >= CAN_ERROR_PASSIVE_THRESHOLD;
150 ESP_LOGW(TAG,
"entered %s", error_passive ? LOG_STR_LITERAL(
"error-passive") : LOG_STR_LITERAL(
"error-active"));
153 ESP_LOGD(TAG,
"receive buffer overrun");
160#ifdef ESPHOME_LOG_HAS_VERBOSE
163 ESP_LOGV(TAG,
"Status: bus_off %d, tx_err %d, rx_err %d",
status.bus_off,
status.tx_error_counter,
uint32_t IRAM_ATTR HOT get_loop_component_start_time() const
Get the cached time in milliseconds from when the current component started its loop execution.
void mark_failed()
Mark this component as failed.
void status_set_warning()
void status_clear_warning()
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)
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_
uint32_t last_event_log_time_
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
ESPHOME_LOG_TAG(TAG, "canbus")
@ CAN_EVENT_RX_QUEUE_FULL
Application App
Global storage of Application pointer - only one Application can exist.
uint8_t can_data_length_code
bool remote_transmission_request