From c3f988804213c2d1a9614883c112434f91deaac1 Mon Sep 17 00:00:00 2001 From: ahmedtariqh Date: Fri, 30 Dec 2022 00:36:20 +0200 Subject: [PATCH 1/5] Add files via upload From 88868d9d60d87338c619eba20f809794adfeace7 Mon Sep 17 00:00:00 2001 From: ahmedtariqh Date: Fri, 30 Dec 2022 00:38:34 +0200 Subject: [PATCH 2/5] Add files via upload --- arduino-OBD2-master.rar | Bin 0 -> 14443 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 arduino-OBD2-master.rar diff --git a/arduino-OBD2-master.rar b/arduino-OBD2-master.rar new file mode 100644 index 0000000000000000000000000000000000000000..1b9b2676c1d5d943eec6db47549fa9cbd3452224 GIT binary patch literal 14443 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 literal 0 HcmV?d00001 From becd4b55d0565b3044cd8506a4ce8e1ba2ee314f Mon Sep 17 00:00:00 2001 From: ahmedtariqh Date: Fri, 30 Dec 2022 00:39:53 +0200 Subject: [PATCH 3/5] Update OBD2.h --- src/OBD2.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/OBD2.h b/src/OBD2.h index 0605763..e808e5b 100644 --- a/src/OBD2.h +++ b/src/OBD2.h @@ -133,6 +133,9 @@ class OBD2Class { int clearAllStoredDTC(); + int pidReadCustom(uint8_t mode, uint8_t pid, void* data, int length); + void getDTC(void* data,int length); + private: int supportedPidsRead(); From 32301f76aae7aa92007a65b51b142a38ef0a7060 Mon Sep 17 00:00:00 2001 From: ahmedtariqh Date: Fri, 30 Dec 2022 00:40:20 +0200 Subject: [PATCH 4/5] Update OBD2.cpp --- src/OBD2.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/OBD2.cpp b/src/OBD2.cpp index 8fd329c..659d41b 100644 --- a/src/OBD2.cpp +++ b/src/OBD2.cpp @@ -795,4 +795,79 @@ int OBD2Class::pidRead(uint8_t mode, uint8_t pid, void* data, int length) return 0; } +int OBD2Class::pidReadCustom(uint8_t mode, uint8_t pid, void* data, int length) +{ + // make sure at least 60 ms have passed since the last response + unsigned long lastResponseDelta = millis() - _lastPidResponseMillis; + if (lastResponseDelta < 60) { + delay(60 - lastResponseDelta); + } + + for (int retries = 10; retries > 0; retries--) { + if (_useExtendedAddressing) { + CAN.beginExtendedPacket(0x18db33f1, 8); + } else { + CAN.beginPacket(0x7df, 8); + } + CAN.write(0x02); // number of additional bytes + CAN.write(mode); + CAN.write(pid); + if (CAN.endPacket()) { + // send success + break; + } else if (retries <= 1) { + return 0; + } + } + + bool splitResponse = (length > 5); + + for (unsigned long start = millis(); (millis() - start) < _responseTimeout;) { + if (CAN.parsePacket() != 0 && + (splitResponse ? (CAN.read() == 0x10 && CAN.read()) : CAN.read()) && + (CAN.read() == (mode | 0x40) && CAN.read() == pid)) { + + _lastPidResponseMillis = millis(); + + // got a response + if (!splitResponse) { + return CAN.readBytes((uint8_t*)data, length); + } + + int read = CAN.readBytes((uint8_t*)data, 3); + + for (int i = 0; read < length; i++) { + delay(60); + + // send the request for the next chunk + if (_useExtendedAddressing) { + CAN.beginExtendedPacket(0x18db33f1, 8); + } else { + CAN.beginPacket(0x7df, 8); + } + CAN.write(0x30); + CAN.endPacket(); + + // wait for response + while (CAN.parsePacket() == 0 || + CAN.read() != (0x21 + i)); // correct sequence number + + while (CAN.available()) { + ((uint8_t*)data)[read++] = CAN.read(); + } + } + + _lastPidResponseMillis = millis(); + + return read; + } + } + + return 0; +} + +OBD2Class::getDTC(void* data,int length){ + pidReadCustom(0x03,0x01,data,length); +} + OBD2Class OBD2; From bc3e585b6d0a83c65b9081681498fe1a04ca3d60 Mon Sep 17 00:00:00 2001 From: ahmedtariqh Date: Fri, 30 Dec 2022 00:41:08 +0200 Subject: [PATCH 5/5] Delete arduino-OBD2-master.rar --- arduino-OBD2-master.rar | Bin 14443 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 arduino-OBD2-master.rar diff --git a/arduino-OBD2-master.rar b/arduino-OBD2-master.rar deleted file mode 100644 index 1b9b2676c1d5d943eec6db47549fa9cbd3452224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14443 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