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/diagnostic | |
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/diagnostic')
-rw-r--r-- | src/diagnostic/diagnostic-message.cpp | 10 | ||||
-rw-r--r-- | src/diagnostic/diagnostic-message.hpp | 29 |
2 files changed, 15 insertions, 24 deletions
diff --git a/src/diagnostic/diagnostic-message.cpp b/src/diagnostic/diagnostic-message.cpp index 8f426534..bd76de0b 100644 --- a/src/diagnostic/diagnostic-message.cpp +++ b/src/diagnostic/diagnostic-message.cpp @@ -48,6 +48,16 @@ std::string& obd2_signal_t::get_generic_name() return generic_name_; } +std::string obd2_signal_t::get_name() +{ + return prefix_ + "." + generic_name_; +} + +void obd2_signal_t::set_prefix(std::string val) +{ + prefix_ = val; +} + bool obd2_signal_t::is_obd2_response(can_message_t can_message) { /* diff --git a/src/diagnostic/diagnostic-message.hpp b/src/diagnostic/diagnostic-message.hpp index 5ca651c3..534b9a59 100644 --- a/src/diagnostic/diagnostic-message.hpp +++ b/src/diagnostic/diagnostic-message.hpp @@ -40,35 +40,14 @@ enum UNIT { }; /** - * @brief A representation of an OBD-II PID. - * - * pid - The 1 byte PID. - * name - A human readable name to use for this PID when published. - * min - minimum value for this pid - * max - maximum value for this pid - * unit - unit used - * frequency - The frequency to request this PID if supported by the vehicle - * when automatic, recurring OBD-II requests are enabled. - * supported - is it supported by the vehicle. Initialized after scan - */ -typedef struct _Obd2Pid { - uint8_t pid; - const char* generic_name; - const int min; - const int max; - enum UNIT unit; - int frequency; - bool supported; -} Obd2Pid; - -/** - * @brief - Object to handle obd2 session with pre-scan of supported pid - * then request them regularly + * @brief - A representation of an OBD-II PID. */ class obd2_signal_t { private: uint8_t pid_; /*!< pid - The 1 byte PID.*/ std::string generic_name_; /*!< generic_name_ - A human readable name to use for this PID when published.*/ + std::string prefix_ = "diagnostic_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.*/ int min_; /*!< min_ - Minimum value that can take this pid */ int max_; /*!< max_ - Maximum value that can take this pid */ enum UNIT unit_; /*!< unit_ : Which unit system is used by that pid. See enum UNIT above.*/ @@ -81,7 +60,9 @@ class obd2_signal_t { uint32_t get_pid(); std::string& get_generic_name(); + std::string get_name(); + void set_prefix(std::string val); void add_request(int pid); bool is_obd2_response(can_message_t can_message); |