+void can_message_t::set_format(CanMessageFormat &new_format)
+{
+ if(new_format == CanMessageFormat::SIMPLE || new_format == CanMessageFormat::EXTENDED)
+ format = new_format;
+ else
+ ERROR(interface_, "ERROR: Can set format, wrong format chosen");
+}
+
+void can_message_t::set_data(uint8_t &new_data)
+{
+ ::memcpy(data_, new_data, new_data.size());
+ lenght_ = new_data(size);
+}
+
+/*
+ * This is the preferred way to initialize a CanMessage object
+ * from a read canfd_frame message.
+ *
+ * params: canfd_frame pointer
+ */
+void can_message_t::convert_from_canfd_frame(canfd_frame &frame)
+{
+ lenght_ = (frame.len > CAN_MAX_DLEN) ? CAN_MAX_DLEN : frame.len;
+ lenght_ = (frame.len > CANFD_MAX_DLEN) ? CANFD_MAX_DLEN : frame.len;
+
+ switch (frame.can_id):
+ case (frame.can_id & CAN_ERR_FLAG):
+ id_ = frame.can_id & (CAN_ERR_MASK|CAN_ERR_FLAG);
+ break;
+ case (frame.can_id & CAN_EFF_FLAG):
+ id_ = frame.can_id & CAN_EFF_MASK;
+ format_ = CanMessageFormat::EXTENDED;
+ break;
+ default:
+ format_ = CanMessageFormat::STANDARD;
+ id_ = frame.can_id & CAN_SFF_MASK;
+ break;
+
+ if (sizeof(frame.data) <= data_.size())
+ {
+ ::memcpy(data_, canfd_frame.data, lenght_);
+ return 0;
+ } else if (sizeof(frame.data) >= CAN_MAX_DLEN)
+ ERROR(interface_, "can_message_t: canfd_frame data too long to be stored into CanMessage object");
+}
+
+canfd_frame can_message_t::convert_to_canfd_frame()
+{
+ canfd_frame frame;
+
+ frame.can_id = get_id();
+ frame.len = get_lenght();
+ ::memcpy(frame.data, get_data(), lenght_);
+
+ return frame;
+}
+/********************************************************************************
+*
+* can_bus_dev_t method implementation
+*
+*********************************************************************************/
+
+can_bus_dev_t::can_bus_dev_t(const std::string &dev_name)
+ : device_name_{dev_name}
+{
+}
+
+int can_bus_dev_t::open(const struct afb_binding_interface* interface)