From 6c40a7192cd6ddf89e625b53dd489b7a91a423e1 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Sun, 12 Mar 2017 19:44:07 +0100 Subject: Use of signals prefix to be able to distinguish type of messages to be processed. For now, processing prefix is hardcoded but idea is to process them dynamically if possible. To be studied. Change-Id: Iac0c96228fc5f53e3c637e54350188ff3de6d57f Signed-off-by: Romain Forlot --- src/configuration.hpp | 12 +++++++----- src/low-can-binding.cpp | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/configuration.hpp b/src/configuration.hpp index 9aaf41e5..516b0ff8 100644 --- a/src/configuration.hpp +++ b/src/configuration.hpp @@ -44,6 +44,12 @@ class configuration_t can_bus_t can_bus_manager_ = can_bus_t(afb_daemon_rootdir_open_locale(binder_interface->daemon, "can_buses.json", O_RDONLY, NULL)); diagnostic_manager_t diagnostic_manager_; uint8_t active_message_set_ = 0; + std::vector signals_prefix_; + + std::vector can_message_set_; + std::vector> can_signals_; + std::vector> obd2_signals_; + std::vector> can_message_definition_; /// Private constructor with implementation generated by the AGL generator. configuration_t(); @@ -51,11 +57,6 @@ class configuration_t public: static configuration_t& instance(); - std::vector can_message_set_; - std::vector> can_signals_; - std::vector> obd2_signals_; - std::vector> can_message_definition_; - configuration_t& get_configuration() ; can_bus_t& get_can_bus_manager(); @@ -72,6 +73,7 @@ class configuration_t std::vector& get_obd2_signals(); + const std::vector& get_signals_prefix() const; uint32_t get_signal_id(obd2_signal_t& sig) const; uint32_t get_signal_id(can_signal_t& sig) const; diff --git a/src/low-can-binding.cpp b/src/low-can-binding.cpp index 394d906a..52e893d9 100644 --- a/src/low-can-binding.cpp +++ b/src/low-can-binding.cpp @@ -120,6 +120,10 @@ static int subscribe_unsubscribe_signal(struct afb_req request, bool subscribe, static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe, const std::vector& signals) { int rets = 0; + //TODO: Implement way to dynamically call the right function no matter + // how much signals types we have. + const std::string& can_prefix = configuration_t::instance().get_can_signals().front().get_prefix(); + const std::string& obd2_prefix = configuration_t::instance().get_obd2_signals().front().get_prefix(); for(auto& sig : signals) { -- cgit 1.2.3-korg