Implement setting last_value at message definition level.
authorRomain Forlot <romain.forlot@iot.bzh>
Wed, 10 May 2017 07:47:50 +0000 (09:47 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Wed, 10 May 2017 16:45:55 +0000 (18:45 +0200)
In addition to signal last_values, now message last value is also set.

Change-Id: I87c2be3e4e68073d7708b2ddf681889576337410
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
CAN-binder/low-can-binding/binding/configuration.cpp
CAN-binder/low-can-binding/binding/configuration.hpp
CAN-binder/low-can-binding/can/can-decoder.cpp
CAN-binder/low-can-binding/can/can-message-definition.cpp
CAN-binder/low-can-binding/can/can-message-definition.hpp
CAN-binder/low-can-binding/can/can-message.cpp
CAN-binder/low-can-binding/can/can-message.hpp
CAN-binder/low-can-binding/can/can-signals.cpp
CAN-binder/low-can-binding/can/can-signals.hpp

index 40d6c11..0c0c9ba 100644 (file)
@@ -67,7 +67,7 @@ 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)
+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];
 }
index 10bdf4b..dd25a20 100644 (file)
@@ -76,7 +76,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);
+               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;
 
index f36c4b9..442e373 100644 (file)
@@ -172,6 +172,7 @@ openxc_DynamicField decoder_t::translateSignal(can_signal_t& signal, can_message
                *send = false;
        }
        signal.set_last_value(value);
+       signal.get_message().set_last_value(message);
        return decoded_value;
 }
 
index 9829428..3603bf2 100644 (file)
@@ -57,4 +57,8 @@ const std::string& can_message_definition_t::get_bus_name() const
 uint32_t can_message_definition_t::get_id() const
 {
        return id_;
+
+void can_message_definition_t::set_last_value(const can_message_t& cm)
+{
+       last_value_= cm.get_data_vector();
 }
\ No newline at end of file
index c3ce2ee..42eef89 100644 (file)
@@ -54,4 +54,6 @@ public:
 
        const std::string& get_bus_name() const;
        uint32_t get_id() const;
+
+       void set_last_value(const can_message_t& cm);
 };
index ac2610e..3fe2a5c 100644 (file)
@@ -99,6 +99,16 @@ const uint8_t* can_message_t::get_data() const
        return data_.data();
 }
 
+///
+/// @brief Retrieve data_ member whole vector
+///
+/// @return the vector as is
+///
+const std::vector<uint8_t> can_message_t::get_data_vector() const
+{
+       return data_;
+}
+
 ///
 /// @brief Retrieve length_ member value.
 ///
index d38f7ba..a7c7452 100644 (file)
@@ -64,6 +64,7 @@ public:
        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;
 
        void set_format(const can_message_format_t new_format);
index d072fb3..ec0b311 100644 (file)
@@ -71,7 +71,7 @@ utils::socketcan_bcm_t can_signal_t::get_socket() const
        return socket_;
 }
 
-const can_message_definition_t& can_signal_t::get_message() const
+can_message_definition_t& can_signal_t::get_message() const
 {
        return configuration_t::instance().get_can_message_definition(message_set_id_, message_id_);
 }
index 6152b79..75faedf 100644 (file)
@@ -132,7 +132,7 @@ public:
                bool received);
 
        utils::socketcan_bcm_t get_socket() const;
-       const 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;