Added timestamp to received CAN messages
[apps/agl-service-can-low-level.git] / CAN-binder / low-can-binding / can / can-message.hpp
index d38f7ba..910b3e9 100644 (file)
 #include <linux/can.h>
 
 #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.
@@ -36,7 +33,7 @@ class can_bus_dev_t;
 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'*/
+       INVALID,    /*!< INVALID - INVALID code used at initialization to signify that it isn't usable'*/
 };
 
 /**
@@ -54,24 +51,28 @@ private:
        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<uint8_t> 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*/
 
 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<uint8_t> 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<uint8_t> 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;
        const uint8_t* get_data() const;
+       const std::vector<uint8_t> get_data_vector() const;
        uint8_t get_length() const;
+       uint64_t get_timestamp() const;
 
+       void set_timestamp(uint64_t timestamp);
        void set_format(const can_message_format_t new_format);
 
        bool is_correct_to_send();
 
-       static can_message_t convert_from_frame(const canfd_frame& frame, size_t nbytes);
-       static can_message_t convert_from_frame(const can_frame& frame, size_t nbytes);
+       static can_message_t convert_from_frame(const canfd_frame& frame, size_t nbytes, uint64_t timestamp);
+       static can_message_t convert_from_frame(const can_frame& frame, size_t nbytes, uint64_t timestamp);
 
        struct canfd_frame convert_to_canfd_frame();
        struct can_frame convert_to_can_frame();