X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fdiagnostic%2Fdiagnostic-message.hpp;h=ae37d7d7e92d29afdb97999466f604d924237266;hb=1ee222a7250896fc7f2e5fb1dc50a7466d81b741;hp=e806257927ee860876ff0c17578ba8f13162baf9;hpb=53cd923a034162273fea2f4fb045b28686f51df5;p=apps%2Fagl-service-can-low-level.git diff --git a/src/diagnostic/diagnostic-message.hpp b/src/diagnostic/diagnostic-message.hpp index e8062579..ae37d7d7 100644 --- a/src/diagnostic/diagnostic-message.hpp +++ b/src/diagnostic/diagnostic-message.hpp @@ -22,6 +22,7 @@ #include "uds/uds.h" #include "../can/can-bus.hpp" #include "../can/can-message.hpp" +#include "active-diagnostic-request.hpp" #include "../low-can-binding.hpp" @@ -42,28 +43,39 @@ enum UNIT { /** * @brief - A representation of an OBD-II PID. */ -class obd2_signal_t { +class diagnostic_message_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.*/ 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.*/ - int frequency_; /*!< frequency - The frequency to request this PID if supported by the vehicle when automatic, recurring OBD-II requests are enabled.*/ + float frequency_; /*!< frequency - The frequency to request this PID if supported by the vehicle when automatic, recurring OBD-II requests are enabled.*/ + DiagnosticResponseDecoder decoder_; /*!< decoder_ - An optional DiagnosticResponseDecoder to parse the payload of responses + * to this request. If the decoder is NULL, the output will include the raw payload + * instead of a parsed value.*/ + DiagnosticResponseCallback callback_; /*!< callback_ - An optional DiagnosticResponseCallback to be notified whenever a + * response is received for this request.*/ + bool supported_; /*!< supported_ - boolean indicating whether this pid is supported by the vehicle or not.*/ public: const char* generic_name = generic_name_.c_str(); - obd2_signal_t(uint8_t pid, const char* generic_name, const int min_, const int max_, enum UNIT unit, int frequency, bool supported); + diagnostic_message_t(uint8_t pid, const std::string generic_name, const int min, const int max, enum UNIT unit, float frequency, + DiagnosticResponseDecoder decoder, DiagnosticResponseCallback callback, bool supported); uint32_t get_pid(); const std::string& get_generic_name() const; const std::string get_name() const; - int get_frequency() const; + float get_frequency() const; + DiagnosticResponseDecoder get_decoder() const; + DiagnosticResponseCallback get_callback() const; + bool get_supported() const; + + void set_supported(bool value); const DiagnosticRequest build_diagnostic_request(); bool is_obd2_response(const can_message_t& can_message); bool is_obd2_request(const DiagnosticRequest *request); - };