From d253ada94487232ccd33b68a69fd44ff7840fab7 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Wed, 10 May 2017 18:39:25 +0200 Subject: Use a tree instead of separated object lists. WIP Now we respect JSON description file, which is can_message_set contains can_message_definition which contains can_signals. Diagnostic messages aren't processed for now. Change-Id: I94aaf5eded14dd84395bd4fd749df58dee5f533e Signed-off-by: Romain Forlot --- .../binding/configuration-generated.cpp | 206 ++++++++++----------- .../low-can-binding/binding/configuration.cpp | 15 +- .../low-can-binding/binding/configuration.hpp | 13 +- 3 files changed, 107 insertions(+), 127 deletions(-) (limited to 'CAN-binder/low-can-binding/binding') diff --git a/CAN-binder/low-can-binding/binding/configuration-generated.cpp b/CAN-binder/low-can-binding/binding/configuration-generated.cpp index c96a103..3ab911a 100644 --- a/CAN-binder/low-can-binding/binding/configuration-generated.cpp +++ b/CAN-binder/low-can-binding/binding/configuration-generated.cpp @@ -3,117 +3,103 @@ configuration_t::configuration_t() :can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}} - , can_message_set_{{0, "example", 0, 1, 5, 0, 20}} - , can_message_definition_ - { - { - can_message_definition_t{0, "can0", 0x620, can_message_format_t::STANDARD, frequency_clock_t(0.00000f), true} - } - } - , can_signals_ - { - { - { - 0, - 0, - "doors.coffer.open", - 56, - 1, - 1.00000f, - 0, - 0, - 0, - frequency_clock_t(0.00000f), - false, - false, - { - }, - false, - decoder_t::booleanDecoder, - nullptr, - false - }, - { - 0, - 0, - "doors.driver.open", - 46, - 1, - 1.00000f, - 0, - 0, - 0, - frequency_clock_t(0.00000f), - false, - false, + , can_message_set_{ + can_message_set_t{0, "example", 0, 1, 5, 0, 20, { + {std::make_shared(can_message_definition_t{"can0", 0x620, can_message_format_t::STANDARD, frequency_clock_t(0.00000f), true, { - }, - false, - decoder_t::booleanDecoder, - nullptr, - false - }, - { - 0, - 0, - "doors.passenger.open", - 47, - 1, - 1.00000f, - 0, - 0, - 0, - frequency_clock_t(0.00000f), - false, - false, - { - }, - false, - decoder_t::booleanDecoder, - nullptr, - false - }, - { - 0, - 0, - "doors.rearleft.open", - 54, - 1, - 1.00000f, - 0, - 0, - 0, - frequency_clock_t(0.00000f), - false, - false, - { - }, - false, - decoder_t::booleanDecoder, - nullptr, - false - }, - { - 0, - 0, - "doors.rearright.open", - 55, - 4, - 1.00000f, - 0, - 0, - 0, - frequency_clock_t(0.00000f), - false, - false, - { - }, - false, - decoder_t::booleanDecoder, - nullptr, - false - } - } + {std::make_shared( + can_signal_t{ + "doors.coffer.open", + 56, + 1, + 1.00000f, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + false, + false, + {}, + false, + decoder_t::booleanDecoder, + nullptr, + false + })}, + {std::make_shared ( + can_signal_t{ + "doors.driver.open", + 46, + 1, + 1.00000f, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + false, + false, + {}, + false, + decoder_t::booleanDecoder, + nullptr, + false + })}, + {std::make_shared ( + can_signal_t{ + "doors.passenger.open", + 47, + 1, + 1.00000f, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + false, + false, + {}, + false, + decoder_t::booleanDecoder, + nullptr, + false + })}, + {std::make_shared ( + can_signal_t{ + "doors.rearleft.open", + 54, + 1, + 1.00000f, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + false, + false, + {}, + false, + decoder_t::booleanDecoder, + nullptr, + false + })}, + {std::make_shared ( + can_signal_t{ + "doors.rearright.open", + 55, + 4, + 1.00000f, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + false, + false, + {}, + false, + decoder_t::booleanDecoder, + nullptr, + false + })} + } + })} + }} } , diagnostic_messages_ { diff --git a/CAN-binder/low-can-binding/binding/configuration.cpp b/CAN-binder/low-can-binding/binding/configuration.cpp index 0c0c9ba..da9d16b 100644 --- a/CAN-binder/low-can-binding/binding/configuration.cpp +++ b/CAN-binder/low-can-binding/binding/configuration.cpp @@ -52,9 +52,9 @@ const std::vector& configuration_t::get_can_message_set() return can_message_set_; } -std::vector& configuration_t::get_can_signals() +std::vector > configuration_t::get_can_signals() { - return can_signals_[active_message_set_]; + return can_message_set_[active_message_set_].get_can_signals(); } std::vector& configuration_t::get_diagnostic_messages() @@ -62,14 +62,9 @@ std::vector& configuration_t::get_diagnostic_messages() return diagnostic_messages_[active_message_set_]; } -const std::vector& configuration_t::get_can_message_definition() +std::vector > configuration_t::get_can_message_definition() { - return can_message_definition_[active_message_set_]; -} - -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]; + return can_message_set_[active_message_set_].get_can_message_definition(); } uint32_t configuration_t::get_signal_id(diagnostic_message_t& sig) const @@ -79,7 +74,7 @@ uint32_t configuration_t::get_signal_id(diagnostic_message_t& sig) const uint32_t configuration_t::get_signal_id(can_signal_t& sig) const { - return sig.get_message().get_id(); + return sig.get_message()->get_id(); } void configuration_t::set_active_message_set(uint8_t id) diff --git a/CAN-binder/low-can-binding/binding/configuration.hpp b/CAN-binder/low-can-binding/binding/configuration.hpp index dd25a20..4488164 100644 --- a/CAN-binder/low-can-binding/binding/configuration.hpp +++ b/CAN-binder/low-can-binding/binding/configuration.hpp @@ -20,11 +20,11 @@ #include #include #include -#include +#include #include "../can/can-bus.hpp" +#include "../can/can-message-set.hpp" #include "../can/can-signals.hpp" -#include "../can/can-message.hpp" #include "../diagnostic/diagnostic-manager.hpp" #include "low-can-hat.hpp" @@ -48,8 +48,8 @@ class configuration_t uint8_t active_message_set_ = 0; ///< Which is the active message set ? Default to 0. std::vector can_message_set_; ///< Vector holding all message set from JSON signals description file - std::vector> can_message_definition_; ///< Vector of vector holding all can message definition from JSON signals description file. This describe a CAN message. First vector map to message set - std::vector> can_signals_; ///< Vector of vector holding all can signasl from JSON signals description file. A CAN signal is a part of a CAN message. First vector map to message set + //std::vector> can_message_definition_; ///< Vector of vector holding all can message definition from JSON signals description file. This describe a CAN message. First vector map to message set + //std::vector> can_signals_; ///< Vector of vector holding all can signasl from JSON signals description file. A CAN signal is a part of a CAN message. First vector map to message set std::vector> diagnostic_messages_; ///< Vector of vector holding all diagnostics messages from JSON signals description file. First vector map to message set configuration_t(); ///< Private constructor with implementation generated by the AGL generator. @@ -69,14 +69,13 @@ class configuration_t const std::vector& get_can_message_set(); - std::vector& get_can_signals(); + std::vector > get_can_signals(); std::vector& get_diagnostic_messages(); const std::vector& get_signals_prefix() const; - const std::vector& get_can_message_definition(); - can_message_definition_t& get_can_message_definition(std::uint8_t message_set_id, std::uint8_t message_id); + std::vector > get_can_message_definition(); uint32_t get_signal_id(diagnostic_message_t& sig) const; -- cgit 1.2.3-korg