7static const char *
const TAG =
"canbus";
11 ESP_LOGE(TAG,
"setup error!");
18 ESP_LOGCONFIG(TAG,
"config extended id=0x%08" PRIx32, this->
can_id_);
20 ESP_LOGCONFIG(TAG,
"config standard id=0x%03" PRIx32, this->
can_id_);
25 const std::vector<uint8_t> &data) {
28 uint8_t
size =
static_cast<uint8_t
>(data.size());
29 if (use_extended_id) {
30 ESP_LOGD(TAG,
"send extended id=0x%08" PRIx32
" rtr=%s size=%d", can_id, TRUEFALSE(remote_transmission_request),
33 ESP_LOGD(TAG,
"send standard id=0x%03" PRIx32
" rtr=%s size=%d", can_id, TRUEFALSE(remote_transmission_request),
36 if (
size > CAN_MAX_DATA_LENGTH)
37 size = CAN_MAX_DATA_LENGTH;
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_);
71 int message_counter = 0;
75 ESP_LOGD(TAG,
"received can message (#%d) extended can_id=0x%" PRIx32
" size=%d", message_counter,
78 ESP_LOGD(TAG,
"received can message (#%d) std can_id=0x%" PRIx32
" size=%d", message_counter, can_message.
can_id,
82 std::vector<uint8_t> data;
86 ESP_LOGV(TAG,
" can_message.data[%d]=%02x", i, can_message.data[i]);
87 data.push_back(can_message.data[i]);
95 if ((trigger->can_id_ == (can_message.
can_id & trigger->can_id_mask_)) &&
97 (!trigger->remote_transmission_request_.has_value() ||
void mark_failed()
Mark this component as failed.
CallbackManager< void(uint32_t can_id, bool extended_id, bool rtr, const std::vector< uint8_t > &data)> callback_manager_
canbus::Error send_data(uint32_t can_id, bool use_extended_id, bool remote_transmission_request, const std::vector< uint8_t > &data)
void add_trigger(CanbusTrigger *trigger)
void dump_config() override
virtual Error send_message(struct CanFrame *frame)=0
virtual bool setup_internal()=0
std::vector< CanbusTrigger * > triggers_
virtual Error read_message(struct CanFrame *frame)=0
Providing packet encoding functions for exchanging data with a remote host.
uint8_t can_data_length_code
bool remote_transmission_request