47template<
typename... Ts>
class CanbusSendAction;
50static const uint8_t CAN_MAX_DATA_LENGTH = 8;
68 void setup()
override;
74 const std::vector<uint8_t> &data);
77 return this->
send_data(can_id, use_extended_id,
false, data);
95 std::function<
void(uint32_t can_id,
bool extended_id,
bool rtr,
const std::vector<uint8_t> &data)> callback) {
105 CallbackManager<void(uint32_t can_id,
bool extended_id,
bool rtr,
const std::vector<uint8_t> &data)>
135 void play(
const Ts &...
x)
override {
137 auto use_extended_id =
139 std::vector<uint8_t> data;
140 if (this->
len_ >= 0) {
142 data.assign(this->
data_.
data, this->data_.data + this->len_);
156 std::vector<uint8_t> (*
func)(Ts...);
166 const bool use_extended_id)
Helper class to easily give an object a parent of type T.
CallbackManager< void(uint32_t can_id, bool extended_id, bool rtr, const std::vector< uint8_t > &data)> callback_manager_
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_trigger(CanbusTrigger *trigger)
canbus::Error send_data(uint32_t can_id, bool use_extended_id, const std::vector< uint8_t > &data)
void add_callback(std::function< void(uint32_t can_id, bool extended_id, bool rtr, const std::vector< uint8_t > &data)> callback)
Add a callback to be called when a CAN message is received.
void set_bitrate(CanSpeed bit_rate)
void set_can_id(uint32_t can_id)
float get_setup_priority() const override
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
void set_data_template(std::vector< uint8_t >(*func)(Ts...))
bool remote_transmission_request_
void set_remote_transmission_request(bool remote_transmission_request)
void set_data_static(const uint8_t *data, size_t len)
optional< uint32_t > can_id_
void play(const Ts &...x) override
void set_use_extended_id(bool use_extended_id)
optional< bool > use_extended_id_
void set_can_id(uint32_t can_id)
union esphome::canbus::CanbusSendAction::Data data_
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)
const float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Providing packet encoding functions for exchanging data with a remote host.
uint8_t can_data_length_code
uint8_t data[CAN_MAX_DATA_LENGTH] __attribute__((aligned(8)))
bool remote_transmission_request
std::vector< uint8_t >(* func)(Ts...)