X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fcan%2Fcan-message.hpp;h=032ef4d35c63156fe5466ea3ea00a975622f8475;hb=a6fb72a70f90c35e0968f2460d324a8505410562;hp=6fe03172f82617c88cc39dbbd0f4d834f547aa3c;hpb=a58d40b5ae336a54408201963b065ee049b43acd;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/can/can-message.hpp b/low-can-binding/can/can-message.hpp index 6fe03172..032ef4d3 100644 --- a/low-can-binding/can/can-message.hpp +++ b/low-can-binding/can/can-message.hpp @@ -23,53 +23,50 @@ #include #include "../utils/timer.hpp" -#include "can-message-set.hpp" #define CAN_MESSAGE_SIZE 8 -class can_bus_dev_t; - /** * @enum can_message_format_t * @brief The ID format for a CAN message. */ enum class can_message_format_t { - STANDARD, /*!< STANDARD - standard 11-bit CAN arbitration ID. */ - EXTENDED, /*!< EXTENDED - an extended frame, with a 29-bit arbitration ID. */ - ERROR, /*!< ERROR - ERROR code used at initialization to signify that it isn't usable'*/ + STANDARD, ///< STANDARD - standard 11-bit CAN arbitration ID. */ + EXTENDED, ///< EXTENDED - an extended frame, with a 29-bit arbitration ID. */ + INVALID, ///< INVALID - INVALID code used at initialization to signify that it isn't usable'*/ }; -/** - * @class can_message_t - * - * @brief A compact representation of a single CAN message, meant to be used in in/out - * buffers. - */ +/// @class can_message_t +/// +/// @brief A compact representation of a single CAN message, meant to be used in in/out +/// buffers. It is a wrapper of a can_frame struct with some sugar around it for binding purposes. class can_message_t { private: - uint8_t maxdlen_; /*!< maxdlen_ - Max data length deduce from number of bytes read from the socket.*/ - uint32_t id_; /*!< id_ - The ID of the message. */ - uint8_t length_; /*!< length_ - the length of the data array (max 8). */ - can_message_format_t format_; /*!< format_ - the format of the message's ID.*/ - bool rtr_flag_; /*!< rtr_flag_ - Telling if the frame has RTR flag positionned. Then frame hasn't data field*/ - uint8_t flags_; /*!< flags_ - flags of a CAN FD frame. Needed if we catch FD frames.*/ - std::vector data_; /*!< data_ - The message's data field with a size of 8 which is the standard about CAN bus messages.*/ + uint8_t maxdlen_; ///< maxdlen_ - Max data length deduce from number of bytes read from the socket.*/ + uint32_t id_; ///< id_ - The ID of the message. */ + uint8_t length_; ///< length_ - the length of the data array (max 8). */ + can_message_format_t format_; ///< format_ - the format of the message's ID.*/ + bool rtr_flag_; ///< rtr_flag_ - Telling if the frame has RTR flag positionned. Then frame hasn't data field*/ + uint8_t flags_; ///< flags_ - flags of a CAN FD frame. Needed if we catch FD frames.*/ + std::vector data_; ///< data_ - The message's data field with a size of 8 which is the standard about CAN bus messages.*/ + uint64_t timestamp_; ///< timestamp_ - timestamp of the received message*/ + int sub_id_; ///< sub_id_ - Subscription index. */ public: can_message_t(); - can_message_t(uint8_t maxdlen, uint32_t id, uint8_t length, can_message_format_t format, bool rtr_flag_, uint8_t flags, std::vector data); + can_message_t(uint8_t maxdlen, uint32_t id, uint8_t length, can_message_format_t format, bool rtr_flag_, uint8_t flags, std::vector& data, uint64_t timestamp); uint32_t get_id() const; - bool get_rtr_flag_() const; - can_message_format_t get_format() const; - uint8_t get_flags() const; + int get_sub_id() const; const uint8_t* get_data() const; + const std::vector get_data_vector() const; uint8_t get_length() const; + uint64_t get_timestamp() const; - void set_format(const can_message_format_t new_format); + void set_sub_id(int sub_id); + void set_timestamp(uint64_t timestamp); bool is_correct_to_send(); -static can_message_t convert_from_canfd_frame(const struct canfd_frame& frame, size_t nbytes); - canfd_frame convert_to_canfd_frame(); + static can_message_t convert_from_frame(const canfd_frame& frame, size_t nbytes, uint64_t timestamp); };