Rename some of the classes removing can- prefix
[apps/agl-service-can-low-level.git] / low-can-binding / diagnostic / diagnostic-message.hpp
index 873c7ff..e7877d6 100644 (file)
@@ -21,8 +21,8 @@
 #include <string>
 
 #include "uds/uds.h"
-#include "../can/can-message-set.hpp"
-#include "../can/can-message.hpp"
+#include "../can/message-set.hpp"
+#include "../can/message/can-message.hpp"
 #include "active-diagnostic-request.hpp"
 
 enum UNIT {
@@ -39,13 +39,13 @@ enum UNIT {
        INVALID
 };
 
-class can_message_set_t;
+class message_set_t;
 
 /// @brief - A representation of an OBD-II PID Mode 01 (Note : An OBD-II PID mode 01 contains only one information).
 class diagnostic_message_t
 {
        private:
-               can_message_set_t* parent_; /*!< parent_ - Pointer to the CAN message set holding this diagnostic message */
+               std::shared_ptr<message_set_t> parent_; /*!< parent_ - Pointer to the CAN message set holding this diagnostic message */
                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 */
@@ -60,10 +60,25 @@ class diagnostic_message_t
 
                bool supported_; /*!< supported_ - boolean indicating whether this pid is supported by the vehicle or not.*/
 
+               uint64_t last_timestamp_; /*!< last_timestamp_ - the last time (in microseconds since epoch)
+                                                               * that the message has been received. */
+
+               bool received_; /*!< received_ - True if this signal has ever been received. */
+               float last_value_; /*!< last_value_ - The last received value of the diagnostic message.
+                                                               * If 'received_' is false, this value is undefined. */
+
        public:
                const char* generic_name = generic_name_.c_str();
-               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);
+               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,
+                                    bool received);
 
                uint32_t get_pid();
                const std::string get_generic_name() const;
@@ -73,8 +88,16 @@ class diagnostic_message_t
                DiagnosticResponseCallback get_callback() const;
                bool get_supported() const;
 
+               bool get_received() const;
+               float get_last_value() const;
+               std::pair<float, uint64_t> get_last_value_with_timestamp() const;
+
+               void set_received(bool r);
+               void set_last_value(float val);
+               void set_timestamp(uint64_t timestamp);
+
                void set_supported(bool value);
-               void set_parent(can_message_set_t* parent);
+               void set_parent(std::shared_ptr<message_set_t> parent);
                const DiagnosticRequest build_diagnostic_request() const;
 
                bool is_obd2_response(const can_message_t& can_message);