From df1480b6d379c5feaa5ce7853b9a24193a5fa084 Mon Sep 17 00:00:00 2001 From: fabik111 Date: Fri, 4 Jul 2025 16:34:56 +0200 Subject: [PATCH] in case of error clear the wire buffer and put in idle mode --- src/ECCX08.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ECCX08.cpp b/src/ECCX08.cpp index 502497b..150549b 100644 --- a/src/ECCX08.cpp +++ b/src/ECCX08.cpp @@ -915,6 +915,12 @@ int ECCX08Class::receiveResponse(void* response, size_t length) // make sure length matches if (responseBuffer[0] != responseSize) { + // Clear the buffer + for (size_t i = 1; _wire->available(); i++) { + (void) _wire->read(); + } + delay(1); + idle(); return 0; } @@ -925,9 +931,11 @@ int ECCX08Class::receiveResponse(void* response, size_t length) // verify CRC uint16_t responseCrc = responseBuffer[length + 1] | (responseBuffer[length + 2] << 8); if (responseCrc != crc16(responseBuffer, responseSize - 2)) { + delay(1); + idle(); return 0; } - + memcpy(response, &responseBuffer[1], length); return 1;