summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-03-12 19:44:07 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-03-16 17:10:41 +0100
commit6c40a7192cd6ddf89e625b53dd489b7a91a423e1 (patch)
tree097b637dd4e751211303a7fa255dd8bb914283ee
parent24057b7fad6d4d1f1f264995d0f5865acf466004 (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.hpp12
-rw-r--r--src/low-can-binding.cpp4
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)
{