summaryrefslogtreecommitdiffstats
path: root/src/diagnostic/diagnostic-manager.hpp
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-03-10 02:06:57 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-03-16 17:10:40 +0100
commitf06b6358accc3ba106c535ed0cbc70a6da60dac5 (patch)
tree4f7c09e8f0b139fc6fc52ba5849a547bf974f5ea /src/diagnostic/diagnostic-manager.hpp
parentdd915dd5b0088034ce1fb57e187f114c1e1d769d (diff)
Adding requests to diagnostic manager implemented.
Needed overload of operator and constructor set for active_diagnostic_message_t class. Without we can't make the basic operation needed by the manager. Get rid of original raw pointer on "entry" which avoid some tests. It miss the acceptance filters implementations for now. Change-Id: I1ca61ff843c13255af6d9a60ce72a8b8bc9d1c18 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'src/diagnostic/diagnostic-manager.hpp')
-rw-r--r--src/diagnostic/diagnostic-manager.hpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/diagnostic/diagnostic-manager.hpp b/src/diagnostic/diagnostic-manager.hpp
index 2b804a4..e4221de 100644
--- a/src/diagnostic/diagnostic-manager.hpp
+++ b/src/diagnostic/diagnostic-manager.hpp
@@ -32,6 +32,7 @@
*/
#define MAX_SHIM_COUNT can_bus_t.get_can_devices().size()
+
/**
* @brief The core structure for running the diagnostics module on the VI.
*
@@ -49,7 +50,7 @@ private:
* library (uds-c) into the VI's CAN peripheral.*/
can_bus_dev_t* bus_; /*!< bus_ - A pointer to the CAN bus that should be used for all standard OBD-II requests, if the bus is not
* explicitly spcified in the request. If NULL, all requests require an explicit bus.*/
- std::queue<active_diagnostic_request_t> recurring_requests_; /*!< recurringRequests - A queue of active, recurring diagnostic requests. When
+ std::vector<active_diagnostic_request_t> recurring_requests_; /*!< recurringRequests - A queue of active, recurring diagnostic requests. When
* a response is received for a recurring request or it times out, it is
* popped from the queue and pushed onto the back. */
std::vector<active_diagnostic_request_t> non_recurring_requests_; /*!< nonrecurringRequests - A list of active one-time diagnostic requests. When a
@@ -69,9 +70,20 @@ public:
void init_diagnostic_shims();
can_bus_dev_t* get_can_bus_dev();
+ active_diagnostic_request_t& get_free_entry();
+
+ void find_and_erase(active_diagnostic_request_t& entry, std::vector<active_diagnostic_request_t>& requests_list);
+ void cancel_request(active_diagnostic_request_t& entry);
+ void cleanup_request(active_diagnostic_request_t& entry, bool force);
+ void cleanup_active_requests(bool force);
+ bool lookup_recurring_request(const DiagnosticRequest* request);
+
+
+ bool validate_optional_request_attributes(float frequencyHz);
+ void reset();
void checkSupportedPids(const active_diagnostic_request_t& request,
- const DiagnosticResponse& response, float parsedPayload);
+ const DiagnosticResponse& response, float parsedPayload);
bool add_request(DiagnosticRequest* request, const std::string name,
bool waitForMultipleResponses, const DiagnosticResponseDecoder decoder,
@@ -80,6 +92,4 @@ public:
bool add_recurring_request(DiagnosticRequest* request, const char* name,
bool waitForMultipleResponses, const DiagnosticResponseDecoder decoder,
const DiagnosticResponseCallback callback, float frequencyHz);
-
- void reset();
};