From db02a1f3065583804ad1f8e404fd3c7ebd4dd946 Mon Sep 17 00:00:00 2001 From: Uli Heilmeier Date: Mon, 30 Mar 2020 10:22:45 +0200 Subject: [PATCH] HF_Legic: remove global variable and cleanup As requested by @iceman1001: * removed global variable * updated according to make style * added entry in CHANGELOG.md --- CHANGELOG.md | 1 + armsrc/Standalone/hf_legic.c | 81 ++++++++++++++++++------------------ armsrc/legicrf.c | 8 ++-- armsrc/legicrf.h | 3 +- 4 files changed, 45 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6192b8068..3032b04fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `HF_LEGIC` standalone mode to read and simulate a Legic prime tag (@Pizza_4u) - Added keri MS decode/encode and update 'lf keri clone' to support MS fc/cid cloning. (@mwalker33) - Fix 'hf mfdes enum' - now actually manages to enumerate files under all AID's. :smiley: (@iceman1001) - Fix 'hf mfdes info' - now detects DESFire light and work properly Wrapped commands :+1: (@iceman1001) diff --git a/armsrc/Standalone/hf_legic.c b/armsrc/Standalone/hf_legic.c index f4a395737..1e7aa7114 100644 --- a/armsrc/Standalone/hf_legic.c +++ b/armsrc/Standalone/hf_legic.c @@ -20,7 +20,7 @@ #include "legicrfsim.h" void ModInfo(void) { - DbpString(" HF Legic Prime standalone "); + DbpString(" HF Legic Prime standalone "); } // Searching for Legic card until found and read. @@ -29,53 +29,52 @@ void ModInfo(void) { // A, B, C = Reading // A, D = Simulating -void RunMod(){ - StandAloneMode(); - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - Dbprintf(">> HF Legic Prime Read/Simulate Started <<"); +void RunMod() { + StandAloneMode(); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + Dbprintf(">> HF Legic Prime Read/Simulate Started <<"); - int read_success; - for(;;){ - WDT_HIT(); + int read_success; + for (;;) { + WDT_HIT(); - //exit from hf_legic, send usbcommand - if(data_available()) break; + //exit from hf_legic, send usbcommand + if (data_available()) break; - //Was our button held down or pressed? - int button_pressed = BUTTON_HELD(280); - if(button_pressed != BUTTON_HOLD) continue; + //Was our button held down or pressed? + int button_pressed = BUTTON_HELD(280); + if (button_pressed != BUTTON_HOLD) continue; - LED_A_OFF(); - LED_B_OFF(); - LED_C_ON(); - LED_D_OFF(); + LED_A_OFF(); + LED_B_OFF(); + LED_C_ON(); + LED_D_OFF(); - WAIT_BUTTON_RELEASED(); + WAIT_BUTTON_RELEASED(); - //record - DbpString("[=] start recording"); + //record + DbpString("[=] start recording"); - //search for legic card until reading successfull or button pressed - do{ - LED_C_ON(); - SpinDelay(1000); - // We don't care if we read a MIM256, MIM512 or MIM1024 - // we just read 1024 bytes - LegicRfReader(0, 1024, 0x55); - read_success = check_success(); - }while(read_success == 0 && !BUTTON_PRESS()); + //search for legic card until reading successfull or button pressed + do { + LED_C_ON(); + SpinDelay(1000); + // We don't care if we read a MIM256, MIM512 or MIM1024 + // we just read 1024 bytes + read_success = LegicRfReader(0, 1024, 0x55); + } while (read_success == 0 && !BUTTON_PRESS()); - //simulate if read successfully - if(read_success == 1){ - LED_A_OFF(); - LED_B_OFF(); - LED_C_OFF(); - LED_D_ON(); - // The read data is migrated to a MIM1024 card - LegicRfSimulate(2); - }else{ - LEDsoff(); - WAIT_BUTTON_RELEASED(); + //simulate if read successfully + if (read_success == 1) { + LED_A_OFF(); + LED_B_OFF(); + LED_C_OFF(); + LED_D_ON(); + // The read data is migrated to a MIM1024 card + LegicRfSimulate(2); + } else { + LEDsoff(); + WAIT_BUTTON_RELEASED(); + } } - } } diff --git a/armsrc/legicrf.c b/armsrc/legicrf.c index 78e6e19b4..313b38fc5 100644 --- a/armsrc/legicrf.c +++ b/armsrc/legicrf.c @@ -28,7 +28,6 @@ static uint8_t *legic_mem; /* card memory, used for read, write */ static legic_card_select_t card;/* metadata of currently selected card */ static crc_t legic_crc; -int read_success = 0; //----------------------------------------------------------------------------- // Frame timing and pseudorandom number generator @@ -442,10 +441,10 @@ OUT: StopTicks(); } -void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv) { +int LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv) { + int read_success = 0; // configure ARM and FPGA init_reader(false); - read_success = 0; // establish shared secret and detect card type uint8_t card_type = setup_phase(iv); @@ -475,6 +474,7 @@ void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv) { OUT: switch_off(); StopTicks(); + return read_success; } void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data) { @@ -515,5 +515,3 @@ OUT: switch_off(); StopTicks(); } - -int check_success(void){return read_success;} diff --git a/armsrc/legicrf.h b/armsrc/legicrf.h index 77233406d..6e59f4ca7 100644 --- a/armsrc/legicrf.h +++ b/armsrc/legicrf.h @@ -15,7 +15,6 @@ #include "common.h" void LegicRfInfo(void); -void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv); +int LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv); void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data); -int check_success(void); #endif /* __LEGICRF_H */