From: Romain Forlot Date: Sun, 12 Mar 2017 18:44:07 +0000 (+0100) Subject: Use of signals prefix to be able to distinguish type of X-Git-Tag: 3.99.1~304 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=6c40a7192cd6ddf89e625b53dd489b7a91a423e1;p=apps%2Flow-level-can-service.git 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 --- diff --git a/src/configuration.hpp b/src/configuration.hpp index 9aaf41e..516b0ff 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 394d906..52e893d 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) {