diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-12 19:44:07 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-16 17:10:41 +0100 |
commit | 6c40a7192cd6ddf89e625b53dd489b7a91a423e1 (patch) | |
tree | 097b637dd4e751211303a7fa255dd8bb914283ee | |
parent | 24057b7fad6d4d1f1f264995d0f5865acf466004 (diff) |
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 <romain.forlot@iot.bzh>
-rw-r--r-- | src/configuration.hpp | 12 | ||||
-rw-r--r-- | src/low-can-binding.cpp | 4 |
2 files changed, 11 insertions, 5 deletions
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<std::string> signals_prefix_; + + std::vector<can_message_set_t> can_message_set_; + std::vector<std::vector<can_signal_t>> can_signals_; + std::vector<std::vector<obd2_signal_t>> obd2_signals_; + std::vector<std::vector<can_message_definition_t>> 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_t> can_message_set_; - std::vector<std::vector<can_signal_t>> can_signals_; - std::vector<std::vector<obd2_signal_t>> obd2_signals_; - std::vector<std::vector<can_message_definition_t>> can_message_definition_; - configuration_t& get_configuration() ; can_bus_t& get_can_bus_manager(); @@ -72,6 +73,7 @@ class configuration_t std::vector<obd2_signal_t>& get_obd2_signals(); + const std::vector<std::string>& 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<std::string>& 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) { |