diff options
Diffstat (limited to 'src/can')
-rw-r--r-- | src/can/can-message-definition.cpp | 12 | ||||
-rw-r--r-- | src/can/can-message-definition.hpp | 7 | ||||
-rw-r--r-- | src/can/can-signals.cpp | 46 | ||||
-rw-r--r-- | src/can/can-signals.hpp | 26 |
4 files changed, 69 insertions, 22 deletions
diff --git a/src/can/can-message-definition.cpp b/src/can/can-message-definition.cpp index 7aca19e..fb7efce 100644 --- a/src/can/can-message-definition.cpp +++ b/src/can/can-message-definition.cpp @@ -17,16 +17,16 @@ #include "can-message-definition.hpp" -can_message_definition_t::can_message_definition_t(const std::string bus) - : bus_{bus}, last_value_(CAN_MESSAGE_SIZE) +can_message_definition_t::can_message_definition_t(std::uint8_t message_set_id, const std::string bus) + : message_set_id_{message_set_id}, bus_{bus}, last_value_{CAN_MESSAGE_SIZE} {} -can_message_definition_t::can_message_definition_t(const std::string bus, uint32_t id, frequency_clock_t frequency_clock, bool force_send_changed) -: bus_{bus}, id_{id}, frequency_clock_{frequency_clock}, force_send_changed_{force_send_changed}, last_value_(CAN_MESSAGE_SIZE) +can_message_definition_t::can_message_definition_t(std::uint8_t message_set_id, const std::string bus, uint32_t id, frequency_clock_t frequency_clock, bool force_send_changed) + : message_set_id_{message_set_id}, bus_{bus}, id_{id}, frequency_clock_{frequency_clock}, force_send_changed_{force_send_changed}, last_value_{CAN_MESSAGE_SIZE} {} -can_message_definition_t::can_message_definition_t(const std::string bus, uint32_t id, can_message_format_t format, frequency_clock_t frequency_clock, bool force_send_changed) - : bus_{bus}, id_{id}, format_{format}, frequency_clock_{frequency_clock}, force_send_changed_{force_send_changed}, last_value_(CAN_MESSAGE_SIZE) +can_message_definition_t::can_message_definition_t(std::uint8_t message_set_id, const std::string bus, uint32_t id, can_message_format_t format, frequency_clock_t frequency_clock, bool force_send_changed) + : message_set_id_{message_set_id}, bus_{bus}, id_{id}, format_{format}, frequency_clock_{frequency_clock}, force_send_changed_{force_send_changed}, last_value_{CAN_MESSAGE_SIZE} {} uint32_t can_message_definition_t::get_id() const diff --git a/src/can/can-message-definition.hpp b/src/can/can-message-definition.hpp index 921b58a..98cb2c5 100644 --- a/src/can/can-message-definition.hpp +++ b/src/can/can-message-definition.hpp @@ -35,6 +35,7 @@ class can_message_definition_t { private: + std::uint8_t message_set_id_; std::string bus_; /*!< bus_ - Address of CAN bus device. */ uint32_t id_; /*!< id_ - The ID of the message.*/ can_message_format_t format_; /*!< format_ - the format of the message's ID.*/ @@ -48,9 +49,9 @@ private: * needs to compare an incoming CAN message with the previous frame.*/ public: - can_message_definition_t(const std::string bus); - can_message_definition_t(const std::string bus, uint32_t id, frequency_clock_t frequency_clock, bool force_send_changed); - can_message_definition_t(const std::string bus, uint32_t id, can_message_format_t format, frequency_clock_t frequency_clock, bool force_send_changed); + can_message_definition_t(std::uint8_t message_set_id, const std::string bus); + can_message_definition_t(std::uint8_t message_set_id, const std::string bus, uint32_t id, frequency_clock_t frequency_clock, bool force_send_changed); + can_message_definition_t(std::uint8_t message_set_id, const std::string bus, uint32_t id, can_message_format_t format, frequency_clock_t frequency_clock, bool force_send_changed); uint32_t get_id() const; }; diff --git a/src/can/can-signals.cpp b/src/can/can-signals.cpp index 0dcc629..72c9301 100644 --- a/src/can/can-signals.cpp +++ b/src/can/can-signals.cpp @@ -27,17 +27,47 @@ std::string can_signal_t::prefix_ = "messages"; -can_signal_t::can_signal_t(can_message_definition_t& message, std::string generic_name, uint8_t bit_position, uint8_t bit_size, - float factor, float offset, float min_value, float max_value, frequency_clock_t frequency, bool send_same, bool force_send_changed, - std::map<uint8_t, std::string> states, bool writable, SignalDecoder decoder, SignalEncoder encoder, bool received) - : message_{message}, generic_name_{generic_name}, bit_position_{bit_position}, bit_size_{bit_size}, factor_{factor}, offset_{offset}, - min_value_{min_value}, max_value_{max_value}, frequency_{frequency}, send_same_{send_same}, force_send_changed_{force_send_changed}, states_{states}, - writable_{writable}, decoder_{decoder}, encoder_{encoder}, received_{received}, last_value_{(float)NULL} +can_signal_t::can_signal_t(std::uint8_t message_set_id, + std::uint8_t message_id, + std::string generic_name, + uint8_t bit_position, + uint8_t bit_size, + float factor, + float offset, + float min_value, + float max_value, + frequency_clock_t frequency, + bool send_same, + bool force_send_changed, + std::map<uint8_t, std::string> states, + bool writable, + SignalDecoder decoder, + SignalEncoder encoder, + bool received) + : message_set_id_{ message_set_id } + , message_id_{ message_id } + , generic_name_{ generic_name } + , bit_position_{ bit_position } + , bit_size_{ bit_size } + , factor_{ factor } + , offset_{ offset } + , min_value_{min_value} + , max_value_{max_value} + , frequency_{frequency} + , send_same_{send_same} + , force_send_changed_{force_send_changed} + , states_{states} + , writable_{writable} + , decoder_{decoder} + , encoder_{encoder} + , received_{received} + , last_value_{.0f} {} -can_message_definition_t& can_signal_t::get_message() + +const can_message_definition_t& can_signal_t::get_message() const { - return message_; + return configuration_t::instance().get_can_message_definition(message_set_id_, message_id_); } const std::string& can_signal_t::get_generic_name() const diff --git a/src/can/can-signals.hpp b/src/can/can-signals.hpp index b22bf7a..aacb888 100644 --- a/src/can/can-signals.hpp +++ b/src/can/can-signals.hpp @@ -76,7 +76,8 @@ typedef uint64_t (*SignalEncoder)(can_signal_t* signal, class can_signal_t { private: - can_message_definition_t message_; /*!< message_ - The message this signal is a part of. */ + std::uint8_t message_set_id_; + std::uint8_t message_id_; std::string generic_name_; /*!< generic_name_ - The name of the signal to be output.*/ static std::string prefix_; /*!< prefix_ - generic_name_ will be prefixed with it. It has to reflect the used protocol. * which make easier to sort message when the come in.*/ @@ -110,11 +111,26 @@ private: * this value is undefined. */ public: - can_signal_t(can_message_definition_t& message, std::string generic_name, uint8_t bit_position, uint8_t bit_size, - float factor, float offset, float min_value, float max_value, frequency_clock_t frequency, bool send_same, bool force_send_changed, - std::map<uint8_t, std::string> states, bool writable, SignalDecoder decoder, SignalEncoder encoder, bool received); + can_signal_t( + std::uint8_t message_set_id, + std::uint8_t message_id, + std::string generic_name, + uint8_t bit_position, + uint8_t bit_size, + float factor, + float offset, + float min_value, + float max_value, + frequency_clock_t frequency, + bool send_same, + bool force_send_changed, + std::map<uint8_t, std::string> states, + bool writable, + SignalDecoder decoder, + SignalEncoder encoder, + bool received); - can_message_definition_t& get_message(); + const can_message_definition_t& get_message() const; const std::string& get_generic_name() const; const std::string get_name() const; const std::string& get_prefix() const; |