diff --git a/esphome/components/canbus/canbus.cpp b/esphome/components/canbus/canbus.cpp index d04190fd57..7ddcd40c86 100644 --- a/esphome/components/canbus/canbus.cpp +++ b/esphome/components/canbus/canbus.cpp @@ -20,11 +20,11 @@ void Canbus::send_data(uint32_t can_id, const std::vector data) { struct can_frame can_message; uint8_t size = static_cast(data.size()); - ESP_LOGD(TAG, "size=%d", size); + ESP_LOGD(TAG, "canid=%d size=%d", can_id, size); if (size > CAN_MAX_DLC) size = CAN_MAX_DLC; can_message.can_dlc = size; - can_message.can_id = this->sender_id_; + can_message.can_id = can_id; for (int i = 0; i < size; i++) { can_message.data[i] = data[i]; @@ -34,17 +34,22 @@ void Canbus::send_data(uint32_t can_id, const std::vector data) { this->send_message_(&can_message); } +void Canbus::add_trigger(CanbusTrigger *trigger) { + ESP_LOGD(TAG, "add trigger for canid:%d", trigger->can_id_); + this->triggers_.push_back(trigger); +}; + void Canbus::loop() { struct can_frame can_message; - //readmessage - if( this->read_message_(&can_message) == canbus::ERROR_OK ) { - ESP_LOGD(TAG,"received can message can_id=%04x length=%d",can_message.can_id, can_message.can_dlc); - //show data received - for(int i = 0; i< can_message.can_dlc;i++) - ESP_LOGD(TAG,"data[%d]=%02x",i, can_message.data[i]); - //fire all triggers - for(auto trigger: this->triggers_){ - if(trigger->can_id_ == can_message.can_id) { + // readmessage + if (this->read_message_(&can_message) == canbus::ERROR_OK) { + ESP_LOGD(TAG, "received can message can_id=%d length=%d", can_message.can_id, can_message.can_dlc); + // show data received + for (int i = 0; i < can_message.can_dlc; i++) + ESP_LOGD(TAG, "data[%d]=%02x", i, can_message.data[i]); + // fire all triggers + for (auto trigger : this->triggers_) { + if (trigger->can_id_ == can_message.can_id) { trigger->trigger(); } } diff --git a/esphome/components/canbus/canbus.h b/esphome/components/canbus/canbus.h index 4e9585817c..4582108514 100644 --- a/esphome/components/canbus/canbus.h +++ b/esphome/components/canbus/canbus.h @@ -68,7 +68,7 @@ class Canbus : public Component { void set_sender_id(int sender_id) { this->sender_id_ = sender_id; } void set_bitrate(CAN_SPEED bit_rate) { this->bit_rate_ = bit_rate; } - void add_trigger(CanbusTrigger *trigger) {this->triggers_.push_back(trigger);}; + void add_trigger(CanbusTrigger *trigger); protected: std::vector triggers_{};