44 static const uint8_t CAN_MAX_DATA_LENGTH = 8;
56 uint8_t data[CAN_MAX_DATA_LENGTH]
__attribute__((aligned(8)));
62 void setup()
override;
63 void dump_config()
override;
67 void send_data(uint32_t can_id,
bool use_extended_id,
bool remote_transmission_request,
68 const std::vector<uint8_t> &data);
69 void send_data(uint32_t can_id,
bool use_extended_id,
const std::vector<uint8_t> &data) {
71 this->send_data(can_id, use_extended_id,
false, data);
81 std::vector<CanbusTrigger *> triggers_{};
86 virtual bool setup_internal();
94 this->data_func_ = func;
95 this->static_ =
false;
98 this->data_static_ = data;
111 auto can_id = this->can_id_.has_value() ? *this->can_id_ : this->parent_->can_id_;
112 auto use_extended_id =
113 this->use_extended_id_.has_value() ? *this->use_extended_id_ : this->parent_->use_extended_id_;
115 this->parent_->send_data(can_id, use_extended_id, this->remote_transmission_request_, this->data_static_);
117 auto val = this->data_func_(x...);
118 this->parent_->send_data(can_id, use_extended_id, this->remote_transmission_request_,
val);
125 bool remote_transmission_request_{
false};
127 std::function<std::vector<uint8_t>(Ts...)> data_func_{};
128 std::vector<uint8_t> data_static_{};
136 const bool use_extended_id)
137 : parent_(parent), can_id_(can_id), can_id_mask_(can_id_mask), use_extended_id_(use_extended_id){};
143 void setup()
override { this->parent_->add_trigger(
this); }
void send_data(uint32_t can_id, bool use_extended_id, const std::vector< uint8_t > &data)
void set_data_static(const std::vector< uint8_t > &data)
float get_setup_priority() const override
uint8_t can_data_length_code
void set_bitrate(CanSpeed bit_rate)
CanbusTrigger(Canbus *parent, const std::uint32_t can_id, const std::uint32_t can_id_mask, const bool use_extended_id)
void set_can_id(uint32_t can_id)
bool remote_transmission_request
void set_use_extended_id(bool use_extended_id)
void set_data_template(const std::function< std::vector< uint8_t >(Ts...)> func)
void set_remote_transmission_request(bool remote_transmission_request)
void set_use_extended_id(bool use_extended_id)
void play(Ts... x) override
uint8_t data [CAN_MAX_DATA_LENGTH] __attribute__((aligned(8)))
const float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
void set_can_id(uint32_t can_id)
Helper class to easily give an object a parent of type T.
void set_remote_transmission_request(bool remote_transmission_request)