diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-10 15:53:27 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-16 17:10:41 +0100 |
commit | 093d7a35c23c65ffef888ded40aea9e77f0e4975 (patch) | |
tree | e19ad22f612560f0000aa6076fd0d59226bc9323 /src/can | |
parent | 127d46e303af839a2b160051722d38e6056dc10b (diff) |
Manage prefix on CAN and OBD2 prefix. Searching signals
is made on generic_name (without prefix) and returned
vector of string is filled with name with prefix. Then
you can process on them based upon their name differently.
OBD2 signals will generated recurring request on diagnostic
manager and decoding will not be handled the same way too.
Change-Id: I2c5239ef49661941a0a748debe0bd536b2954b3a
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'src/can')
-rw-r--r-- | src/can/can-bus.cpp | 2 | ||||
-rw-r--r-- | src/can/can-signals.cpp | 10 | ||||
-rw-r--r-- | src/can/can-signals.hpp | 6 |
3 files changed, 16 insertions, 2 deletions
diff --git a/src/can/can-bus.cpp b/src/can/can-bus.cpp index a8a474c..7a18ce8 100644 --- a/src/can/can-bus.cpp +++ b/src/can/can-bus.cpp @@ -94,7 +94,7 @@ void can_bus_t::can_decode_message() DEBUG(binder_interface, "Operator[] key string: %s, event valid? %d", sig.generic_name, afb_event_is_valid(s[std::string(sig.generic_name)])); DEBUG(binder_interface, "Nb elt matched char: %d", (int)s.count(sig.generic_name)); DEBUG(binder_interface, "Nb elt matched string: %d", (int)s.count(std::string(sig.generic_name)));*/ - if( s.find(sig->get_generic_name()) != s.end() && afb_event_is_valid(s[sig->get_generic_name()])) + if( s.find(sig->get_name()) != s.end() && afb_event_is_valid(s[sig->get_name()])) { decoded_message = decoder_t::translateSignal(*sig, can_message, configuration_t::instance().get_can_signals()); diff --git a/src/can/can-signals.cpp b/src/can/can-signals.cpp index 0f774a1..2d2e7ea 100644 --- a/src/can/can-signals.cpp +++ b/src/can/can-signals.cpp @@ -35,6 +35,11 @@ std::string& can_signal_t::get_generic_name() return generic_name_; } +std::string can_signal_t::get_name() +{ + return prefix_ + "." + generic_name_; +} + uint8_t can_signal_t::get_bit_position() const { return bit_position_; @@ -114,6 +119,11 @@ float can_signal_t::get_last_value() const return last_value_; } +void can_signal_t::set_prefix(std::string val) +{ + prefix_ = val; +} + void can_signal_t::set_received(bool r) { received_ = r; diff --git a/src/can/can-signals.hpp b/src/can/can-signals.hpp index e906d26..10403da 100644 --- a/src/can/can-signals.hpp +++ b/src/can/can-signals.hpp @@ -76,7 +76,9 @@ class can_signal_t { private: can_message_definition_t message_; /*!< message_ - The message this signal is a part of. */ - std::string generic_name_; /*!< generic_name_ - The name of the signal to be output over USB.*/ + std::string generic_name_; /*!< generic_name_ - The name of the signal to be output.*/ + std::string prefix_ = "messages."; /*!< prefix_ - generic_name_ will be prefixed with it. It has to reflect the used protocol. + * which make easier to sort message when the come in.*/ uint8_t bit_position_; /*!< bitPosition_ - The starting bit of the signal in its CAN message (assuming * non-inverted bit numbering, i.e. the most significant bit of * each byte is 0) */ @@ -109,6 +111,7 @@ private: public: can_message_definition_t& get_message(); std::string& get_generic_name(); + std::string get_name(); uint8_t get_bit_position() const; uint8_t get_bit_size() const; float get_factor() const; @@ -126,6 +129,7 @@ public: bool get_received() const; float get_last_value() const; + void set_prefix(std::string val); void set_received(bool r); void set_last_value(float val); };
\ No newline at end of file |