Use index number between objects to set their links.
authorRomain Forlot <romain.forlot@iot.bzh>
Thu, 16 Mar 2017 17:16:56 +0000 (18:16 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 16 Mar 2017 17:16:56 +0000 (18:16 +0100)
Needed to use generator.

Change-Id: I82b44fa1e53c55e2cd90ae7017906a22b7f0636e
Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
src/can/can-message-definition.cpp
src/can/can-message-definition.hpp
src/can/can-signals.cpp
src/can/can-signals.hpp
src/configuration.cpp
src/configuration.hpp

index 7aca19e..fb7efce 100644 (file)
 
 #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
index 921b58a..98cb2c5 100644 (file)
@@ -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;
 };
index 0dcc629..72c9301 100644 (file)
 
 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
index b22bf7a..aacb888 100644 (file)
@@ -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;
index 52ddde4..8a2df90 100644 (file)
@@ -82,6 +82,11 @@ const std::vector<can_message_definition_t>& configuration_t::get_can_message_de
        return can_message_definition_[active_message_set_];
 }
 
+const can_message_definition_t& configuration_t::get_can_message_definition(std::uint8_t message_set_id, std::uint8_t message_id)
+{
+       return can_message_definition_[message_set_id][message_id];
+}
+
 uint32_t configuration_t::get_signal_id(diagnostic_message_t& sig) const
 {
        return sig.get_pid();
index 25c29b9..fb7b840 100644 (file)
@@ -78,6 +78,7 @@ class configuration_t
                const std::vector<std::string>& get_signals_prefix() const;
 
                const std::vector<can_message_definition_t>& get_can_message_definition();
+               const can_message_definition_t& get_can_message_definition(std::uint8_t message_set_id, std::uint8_t message_id);
 
                uint32_t get_signal_id(diagnostic_message_t& sig) const;