diff --git a/src/Adafruit_Fingerprint.cpp b/src/Adafruit_Fingerprint.cpp index 941118c..bab482e 100644 --- a/src/Adafruit_Fingerprint.cpp +++ b/src/Adafruit_Fingerprint.cpp @@ -38,7 +38,9 @@ Adafruit_Fingerprint_Packet packet(FINGERPRINT_COMMANDPACKET, sizeof(data), \ data); \ writeStructuredPacket(packet); \ - if (getStructuredPacket(&packet) != FINGERPRINT_OK) \ + uint16_t timeout = data[0] == \ + FINGERPRINT_REGMODEL ? TIMEOUT_CREATEMODEL : DEFAULTTIMEOUT; \ + if (getStructuredPacket(&packet, timeout) != FINGERPRINT_OK) \ return FINGERPRINT_PACKETRECIEVEERR; \ if (packet.type != FINGERPRINT_ACKPACKET) \ return FINGERPRINT_PACKETRECIEVEERR; @@ -780,7 +782,9 @@ Adafruit_Fingerprint::getStructuredPacket(Adafruit_Fingerprint_Packet *packet, uint16_t idx = 0, timer = 0; #ifdef FINGERPRINT_DEBUG - Serial.print("<- "); + Serial.print("max. "); + Serial.print(timeout); + Serial.print(" ms: <- "); #endif while (true) { diff --git a/src/Adafruit_Fingerprint.h b/src/Adafruit_Fingerprint.h index f186ff5..6e9b0de 100644 --- a/src/Adafruit_Fingerprint.h +++ b/src/Adafruit_Fingerprint.h @@ -135,6 +135,7 @@ //#define FINGERPRINT_DEBUG #define DEFAULTTIMEOUT 2000 //!< UART reading timeout in milliseconds +#define TIMEOUT_CREATEMODEL 10000 //!< UART reading timeout in milliseconds ///! Helper class to craft UART packets struct Adafruit_Fingerprint_Packet {