-
-/// @brief Write a value in a CAN signal in the destination buffer.
-///
-/// @param[in] signal - The CAN signal to write, including the bit position and bit size.
-/// @param[in] value - The encoded integer value to write in the CAN signal.
-/// @param[out] data - The destination buffer.
-/// @param[in] length - The length of the destination buffer.
-///
-/// @return Returns a canfd_frame struct initialized and ready to be send.
-const canfd_frame encoder_t::build_frame(const std::shared_ptr<signal_t>& signal, uint64_t value)
-{
- struct canfd_frame cf;
- ::memset(&cf, 0, sizeof(cf));
-
- cf.can_id = signal->get_message()->get_id();
- cf.len = signal->get_message()->is_fd() ?
- CANFD_MAX_DLEN : CAN_MAX_DLEN;
-
- signal->set_last_value((float)value);
-
- for(const auto& sig: signal->get_message()->get_signals())
- {
- float last_value = sig->get_last_value();
- bitfield_encode_float(last_value,
- sig->get_bit_position(),
- sig->get_bit_size(),
- sig->get_factor(),
- sig->get_offset(),
- cf.data,
- cf.len);
- }
- return cf;
-}
-