From b8b041737462b425caf2b418afdae01ac7285f81 Mon Sep 17 00:00:00 2001 From: SG Date: Mon, 9 Aug 2021 22:33:13 +1000 Subject: [PATCH] [FL-1629] Better RFID writing (#632) * RFID: ground the antenna when writing * RFID: forced switch to indala mode --- applications/lfrfid/helpers/rfid-reader.cpp | 22 +++++++-------------- applications/lfrfid/helpers/rfid-reader.h | 6 +++++- applications/lfrfid/helpers/rfid-writer.cpp | 1 + 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/applications/lfrfid/helpers/rfid-reader.cpp b/applications/lfrfid/helpers/rfid-reader.cpp index 62f75ed3..1af1999e 100644 --- a/applications/lfrfid/helpers/rfid-reader.cpp +++ b/applications/lfrfid/helpers/rfid-reader.cpp @@ -20,7 +20,10 @@ void RfidReader::decode(bool polarity) { uint32_t period = current_dwt_value - last_dwt_value; last_dwt_value = current_dwt_value; - //decoder_gpio_out.process_front(polarity, period); +#ifdef RFID_GPIO_DEBUG + decoder_gpio_out.process_front(polarity, period); +#endif + switch(type) { case Type::Normal: decoder_em.process_front(polarity, period); @@ -86,20 +89,9 @@ void RfidReader::start() { } void RfidReader::start_forced(RfidReader::Type _type) { - type = _type; - switch(type) { - case Type::Normal: - start(); - break; - case Type::Indala: - furi_hal_rfid_pins_read(); - furi_hal_rfid_tim_read(62500.0f, 0.25f); - furi_hal_rfid_tim_read_start(); - start_comparator(); - - switch_timer_reset(); - last_readed_count = 0; - break; + start(); + if(_type == Type::Indala) { + switch_mode(); } } diff --git a/applications/lfrfid/helpers/rfid-reader.h b/applications/lfrfid/helpers/rfid-reader.h index 3e6acacd..004cad89 100644 --- a/applications/lfrfid/helpers/rfid-reader.h +++ b/applications/lfrfid/helpers/rfid-reader.h @@ -6,6 +6,8 @@ #include "decoder-indala.h" #include "key-info.h" +//#define RFID_GPIO_DEBUG 1 + class RfidReader { public: enum class Type : uint8_t { @@ -26,7 +28,9 @@ private: friend struct RfidReaderAccessor; //DecoderAnalyzer decoder_analyzer; - //DecoderGpioOut decoder_gpio_out; +#ifdef RFID_GPIO_DEBUG + DecoderGpioOut decoder_gpio_out; +#endif DecoderEMMarine decoder_em; DecoderHID26 decoder_hid26; DecoderIndala decoder_indala; diff --git a/applications/lfrfid/helpers/rfid-writer.cpp b/applications/lfrfid/helpers/rfid-writer.cpp index d849e9eb..f983ce35 100644 --- a/applications/lfrfid/helpers/rfid-writer.cpp +++ b/applications/lfrfid/helpers/rfid-writer.cpp @@ -37,6 +37,7 @@ void RfidWriter::start() { furi_hal_rfid_tim_read(125000, 0.5); furi_hal_rfid_pins_read(); furi_hal_rfid_tim_read_start(); + hal_gpio_write(&gpio_rfid_pull, true); } void RfidWriter::stop() {