From 9e743be100dd44eab9f5dd67a4f3dfc0101a0512 Mon Sep 17 00:00:00 2001 From: Bartlomiej Zimon Date: Fri, 10 Apr 2020 10:29:51 +0000 Subject: [PATCH] P040_ID12/RDM6300: fix for triggering new tag and detection of tag unavailable #2982 --- src/_P040_ID12.ino | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/_P040_ID12.ino b/src/_P040_ID12.ino index 40b901118..d8a31837e 100644 --- a/src/_P040_ID12.ino +++ b/src/_P040_ID12.ino @@ -47,7 +47,6 @@ boolean Plugin_040(byte function, struct EventStruct *event, String& string) break; } - case PLUGIN_INIT: { Plugin_040_init = true; @@ -56,6 +55,19 @@ boolean Plugin_040(byte function, struct EventStruct *event, String& string) break; } + case PLUGIN_TIMER_IN: + { + if (Plugin_040_init) { + // Reset card id on timeout + UserVar[event->BaseVarIndex] = 0; + UserVar[event->BaseVarIndex + 1] = 0; + String log = F("RFID : Removed Tag"); + addLog(LOG_LEVEL_INFO, log); + sendData(event); + success = true; + } + break; + } case PLUGIN_SERIAL_IN: { @@ -125,14 +137,21 @@ boolean Plugin_040(byte function, struct EventStruct *event, String& string) event->sensorType = Device[DeviceIndex].VType; // endof workaround - unsigned long key = 0; + unsigned long key = 0, old_key = 0; + old_key = ((uint32_t) UserVar[event->BaseVarIndex]) | ((uint32_t) UserVar[event->BaseVarIndex + 1])<<16; for (byte i = 1; i < 5; i++) key = key | (((unsigned long) code[i] << ((4 - i) * 8))); - UserVar[event->BaseVarIndex] = (key & 0xFFFF); - UserVar[event->BaseVarIndex + 1] = ((key >> 16) & 0xFFFF); - String log = F("RFID : Tag: "); + String log = F("RFID : "); + if (old_key != key) { + UserVar[event->BaseVarIndex] = (key & 0xFFFF); + UserVar[event->BaseVarIndex + 1] = ((key >> 16) & 0xFFFF); + sendData(event); + log += F("New Tag: "); + } else { + log += F("Old Tag: "); + } log += key; addLog(LOG_LEVEL_INFO, log); - sendData(event); + setPluginTaskTimer(500, event->TaskIndex, event->Par1); } } success = true;