From a9f596cdb63860a51ba92c3639a7ef41d845dd25 Mon Sep 17 00:00:00 2001 From: Sascha Date: Fri, 5 Nov 2021 15:31:58 +0100 Subject: [PATCH] Fix rare issue where the RFID tag is read before queues are initialized --- src/LogMessages_DE.cpp | 1 + src/LogMessages_EN.cpp | 1 + src/RfidPn5180.cpp | 6 ++++++ src/main.cpp | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/LogMessages_DE.cpp b/src/LogMessages_DE.cpp index 5dba278..994c419 100644 --- a/src/LogMessages_DE.cpp +++ b/src/LogMessages_DE.cpp @@ -51,6 +51,7 @@ const char trackChangeWebstream[] PROGMEM = "Im Webradio-Modus kann nicht an den Anfang gesprungen werden."; const char endOfPlaylistReached[] PROGMEM = "Ende der Playlist erreicht."; const char trackStartatPos[] PROGMEM = "Titel wird abgespielt ab Position"; + const char waitingForTaskQueues[] PROGMEM = "Task Queue für RFID existiert noch nicht, warte..."; const char rfidScannerReady[] PROGMEM = "RFID-Tags koennen jetzt gescannt werden..."; const char rfidTagDetected[] PROGMEM = "RFID-Karte erkannt: "; const char rfid15693TagDetected[] PROGMEM = "RFID-Karte (ISO-15693) erkannt: "; diff --git a/src/LogMessages_EN.cpp b/src/LogMessages_EN.cpp index ef7182f..ee180bb 100644 --- a/src/LogMessages_EN.cpp +++ b/src/LogMessages_EN.cpp @@ -51,6 +51,7 @@ const char trackChangeWebstream[] PROGMEM = "Playing from the very beginning is not possible while webradio-mode is active."; const char endOfPlaylistReached[] PROGMEM = "Reached end of playlist."; const char trackStartatPos[] PROGMEM = "Starting track at position"; + const char waitingForTaskQueues[] PROGMEM = "Task Queue for RFID does not exist yet, waiting..."; const char rfidScannerReady[] PROGMEM = "RFID-tags can now be applied..."; const char rfidTagDetected[] PROGMEM = "RFID-tag detected: "; const char rfid15693TagDetected[] PROGMEM = "RFID-ta (ISO-15693) detected: "; diff --git a/src/RfidPn5180.cpp b/src/RfidPn5180.cpp index 3d79089..eab8f24 100644 --- a/src/RfidPn5180.cpp +++ b/src/RfidPn5180.cpp @@ -95,6 +95,12 @@ extern unsigned long Rfid_LastRfidCheckTimestamp; static byte cardId[cardIdSize], lastCardId[cardIdSize]; uint8_t uid[10]; + // wait until queues are created + while(gRfidCardQueue == NULL){ + Log_Println((char *) FPSTR(waitingForTaskQueues), LOGLEVEL_DEBUG); + vTaskDelay(50); + } + for (;;) { vTaskDelay(portTICK_RATE_MS * 10u); #ifdef PN5180_ENABLE_LPCD diff --git a/src/main.cpp b/src/main.cpp index ecd38f8..c80c1ae 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,6 +128,7 @@ void printWakeUpReason() { void setup() { Log_Init(); + Queues_Init(); #ifdef RFID_READER_TYPE_PN5180 Rfid_Init(); #endif @@ -206,7 +207,6 @@ void setup() { Serial.println(F("UNKNOWN")); } - Queues_Init(); #ifdef PORT_EXPANDER_ENABLE Port_Init(); #endif