From 75b20ec13711505bf2b97aa99035ae3ef3706e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albin=20Cor=C3=A9n?= Date: Wed, 12 Jan 2022 17:21:51 +0100 Subject: [PATCH] Added way to check if OBD is ready for another request --- src/OBD2.cpp | 12 ++++++++++++ src/OBD2.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/OBD2.cpp b/src/OBD2.cpp index 8fd329c..cf4760b 100644 --- a/src/OBD2.cpp +++ b/src/OBD2.cpp @@ -795,4 +795,16 @@ int OBD2Class::pidRead(uint8_t mode, uint8_t pid, void* data, int length) return 0; } +bool OBD2Class::ready() +{ + // make sure at least 60 ms have passed since the last response + unsigned long lastResponseDelta = millis() - _lastPidResponseMillis; + + if (lastResponseDelta < 60) { + return false; + } + + return true; +} + OBD2Class OBD2; diff --git a/src/OBD2.h b/src/OBD2.h index 0605763..69a6f97 100644 --- a/src/OBD2.h +++ b/src/OBD2.h @@ -133,6 +133,8 @@ class OBD2Class { int clearAllStoredDTC(); + bool ready(); + private: int supportedPidsRead();