Skip to content

Commit 02a1a93

Browse files
authored
Merge pull request #72 from fabik111/fix-command-on-error
In case of error clear the wire buffer and put in idle mode
2 parents 22e5f1b + df1480b commit 02a1a93

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/ECCX08.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,12 @@ int ECCX08Class::receiveResponse(void* response, size_t length)
915915

916916
// make sure length matches
917917
if (responseBuffer[0] != responseSize) {
918+
// Clear the buffer
919+
for (size_t i = 1; _wire->available(); i++) {
920+
(void) _wire->read();
921+
}
922+
delay(1);
923+
idle();
918924
return 0;
919925
}
920926

@@ -925,9 +931,11 @@ int ECCX08Class::receiveResponse(void* response, size_t length)
925931
// verify CRC
926932
uint16_t responseCrc = responseBuffer[length + 1] | (responseBuffer[length + 2] << 8);
927933
if (responseCrc != crc16(responseBuffer, responseSize - 2)) {
934+
delay(1);
935+
idle();
928936
return 0;
929937
}
930-
938+
931939
memcpy(response, &responseBuffer[1], length);
932940

933941
return 1;

0 commit comments

Comments
 (0)