// the license.
//-----------------------------------------------------------------------------
// Low frequency Noralsy tag commands
-// ASK/Manchester, STT, RF/32, 96 bits long
+// ASK/Manchester, STT, RF/32, 96 bits long (some bits unknown)
//-----------------------------------------------------------------------------
#include "cmdlfnoralsy.h"
#include <string.h>
/*
*
* 2520116 | BB0214FF2529900116360000 | 10111011 00000011 00010100 11111111 00100101 00101001 10010000 00000001 00010110 00110110 00000000 00000000
-* aaaaaaaaiii***iiiicc---- iiiiiiii iiiiYYYY YYYY**** iiiiiiii iiiiiiii cccccccc
+* aaa*aaaaiiiYY*iiiicc---- **** iiiiiiii iiiiYYYY YYYY**** iiiiiiii iiiiiiii cccccccc
*
-* a = fixed value BB0314FF
+* a = fixed value BB0*14FF
* i = printed id, BCD-format
* Y = year
* c = checksum
-*
+* * = unknown
+*
**/
//see ASKDemod for what args are accepted
int CmdNoralsyDemod(const char *Cmd) {
//ASK / Manchester
- DemodBufferLen = getFromGraphBuf(DemodBuffer);
- if (DemodBufferLen < 255) return 0;
- int foundclk = 0;
- size_t ststart = 0, stend = 0;
- bool st = DetectST_ext(DemodBuffer, &DemodBufferLen, &foundclk, &ststart, &stend);
- if (!st) return 0;
-
- if (!ASKDemod_ext("32 0 0", FALSE, FALSE, 1, &st)) {
+ bool st = true;
+ if (!ASKDemod_ext("32 0 0", false, false, 1, &st)) {
if (g_debugMode) PrintAndLog("DEBUG: Error - Noralsy: ASK/Manchester Demod failed");
return 0;
}
+ if (!st) return 0;
+
size_t size = DemodBufferLen;
int ans = NoralsyDemod_AM(DemodBuffer, &size);
if (ans < 0){
return 0;
}
setDemodBuf(DemodBuffer, 96, ans);
+ setClockGrid(g_DemodClock, g_DemodStartIdx + (ans*g_DemodClock));
//setGrid_Clock(32);
//got a good demod
}
int CmdNoralsyRead(const char *Cmd) {
- CmdLFRead("s");
- getSamples("8000",TRUE);
+ lf_read(true, 8000);
return CmdNoralsyDemod(Cmd);
}