X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan%2Fcan-message.hpp;h=6fe03172f82617c88cc39dbbd0f4d834f547aa3c;hb=d464872942898b7412b389aabe0ebc390f17adc5;hp=bdba07baed48c92f7a1a9a59027ee12f8f950a15;hpb=250262eee0cfd5570298f8d69c498adc0688bdc6;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can/can-message.hpp b/src/can/can-message.hpp index bdba07ba..6fe03172 100644 --- a/src/can/can-message.hpp +++ b/src/can/can-message.hpp @@ -22,7 +22,8 @@ #include #include -#include "utils/timer.hpp" +#include "../utils/timer.hpp" +#include "can-message-set.hpp" #define CAN_MESSAGE_SIZE 8 @@ -45,95 +46,30 @@ enum class can_message_format_t { * buffers. */ class can_message_t { - private: - uint32_t id_; /*!< id_ - The ID of the message. */ - bool rtr_flag_; /*!< rtr_flag_ - Telling if the frame has RTR flag positionned. Then frame hasn't data field*/ - uint8_t length_; /*!< length_ - the length of the data array (max 8). */ - uint8_t flags_; /*!< flags_ - flags of a CAN FD frame. Needed if we catch FD frames.*/ - can_message_format_t format_; /*!< format_ - the format of the message's ID.*/ - 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.*/ - - public: - can_message_t(); - - 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; - uint8_t get_length() const; - - void set_format(const can_message_format_t new_format); - - bool is_correct_to_send(); - - static can_message_t convert_to_canfd_frame(const struct canfd_frame& frame, size_t nbytes); - canfd_frame convert_to_canfd_frame(); -}; - -/** - * @class can_message_definition_t - * - * @brief The definition of a CAN message. This includes a lot of metadata, so - * to save memory this struct should not be used for storing incoming and - * outgoing CAN messages. - */ -class can_message_definition_t -{ - private: - can_bus_dev_t& bus_; /*!< bus_ - A pointer to the bus this message is on. */ - uint32_t id_; /*!< id_ - The ID of the message.*/ +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.*/ - FrequencyClock clock_; /*!< clock_ - an optional frequency clock to control the output of this - * message, if sent raw, or simply to mark the max frequency for custom - * handlers to retrieve.*/ - bool force_send_changed_; /*!< force_send_changed_ - If true, regardless of the frequency, it will send CAN - * message if it has changed when using raw passthrough.*/ - std::vector last_value_; /*!< last_value_ - The last received value of the message. Defaults to undefined. - * This is required for the forceSendChanged functionality, as the stack - * needs to compare an incoming CAN message with the previous frame.*/ - - public: - can_message_definition_t(); - uint32_t get_id() const; -}; + 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.*/ -/** - * @class can_message_set_t - * - * @brief A parent wrapper for a particular set of CAN messages and associated - * CAN buses(e.g. a vehicle or program). - */ -class can_message_set_t -{ - private: - uint8_t index_; /*! data); -/** Public: Retrive a list of all possible CAN configurations. - * - * Returns a pointer to an array of all configurations. - */ -can_message_set_t* getMessageSets(); + 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; + uint8_t get_length() const; -/** Public: Return the length of the array returned by getMessageSets() */ -int getMessageSetCount(); + void set_format(const can_message_format_t new_format); -/* Public: Return an array of all CAN messages to be processed in the active - * configuration. - */ -can_message_definition_t* getMessages(); + bool is_correct_to_send(); -/* Public: Return the length of the array returned by getMessages(). */ -int getMessageCount(); \ No newline at end of file +static can_message_t convert_from_canfd_frame(const struct canfd_frame& frame, size_t nbytes); + canfd_frame convert_to_canfd_frame(); +};