From bf7163bdb387693ea592c212c659bbb095f84cb4 Mon Sep 17 00:00:00 2001 From: "henryk@ploetzli.ch" Date: Fri, 27 Sep 2013 13:48:20 +0000 Subject: [PATCH 1/1] * Add an option to lf read command to use an arbitrary divisor, enabling reading at frequencies other than 125 and 134 kHz. --- armsrc/apps.h | 2 +- armsrc/lfops.c | 8 +++++--- client/cmdlf.c | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/armsrc/apps.h b/armsrc/apps.h index 64ec29a3..c0faaca2 100644 --- a/armsrc/apps.h +++ b/armsrc/apps.h @@ -108,7 +108,7 @@ void SetAdcMuxFor(uint32_t whichGpio); #define FPGA_HF_ISO14443A_READER_MOD (4<<0) /// lfops.h -void AcquireRawAdcSamples125k(int at134khz); +void AcquireRawAdcSamples125k(int divisor); void ModThenAcquireRawAdcSamples125k(int delay_off,int period_0,int period_1,uint8_t *command); void ReadTItag(void); void WriteTItag(uint32_t idhi, uint32_t idlo, uint16_t crc); diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 17d293ed..fbd07e65 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -15,12 +15,14 @@ #include "crc16.h" #include "string.h" -void AcquireRawAdcSamples125k(int at134khz) +void AcquireRawAdcSamples125k(int divisor) { - if (at134khz) + if ( (divisor == 1) || (divisor < 0) || (divisor > 255) ) FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 88); //134.8Khz - else + else if (divisor == 0) FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz + else + FpgaSendCommand(FPGA_CMD_SET_DIVISOR, divisor); FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_READER); diff --git a/client/cmdlf.c b/client/cmdlf.c index 271dcb78..6511ba13 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -362,8 +362,8 @@ int CmdLFRead(const char *Cmd) c.arg[0] = 1; } else if (*Cmd == '\0') { c.arg[0] = 0; - } else { - PrintAndLog("use 'read' or 'read h'"); + } else if (sscanf(Cmd, "%i", &c.arg[0]) != 1) { + PrintAndLog("use 'read' or 'read h', or 'read '"); return 0; } SendCommand(&c); @@ -534,7 +534,7 @@ static command_t CommandTable[] = {"hid", CmdLFHID, 1, "{ HID RFIDs... }"}, {"indalademod", CmdIndalaDemod, 1, "['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"}, {"indalaclone", CmdIndalaClone, 1, " ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID"}, - {"read", CmdLFRead, 0, "['h'] -- Read 125/134 kHz LF ID-only tag (option 'h' for 134)"}, + {"read", CmdLFRead, 0, "['h'|] -- Read 125/134 kHz LF ID-only tag (option 'h' for 134, alternatively: f=12MHz/(divisor+1))"}, {"sim", CmdLFSim, 0, "[GAP] -- Simulate LF tag from buffer with optional GAP (in microseconds)"}, {"simbidir", CmdLFSimBidir, 0, "Simulate LF tag (with bidirectional data transmission between reader and tag)"}, {"simman", CmdLFSimManchester, 0, " [GAP] Simulate arbitrary Manchester LF tag"}, -- 2.39.5