Merge pull request #808 from MalteHillmann/master

Fixed bugs for FDX-B demod
This commit is contained in:
marshmellow42 2019-03-28 19:15:44 -04:00 committed by GitHub
commit 1f61f19767
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 10 deletions

View file

@ -367,18 +367,20 @@ int Cmdmandecoderaw(const char *Cmd)
return 1; return 1;
} }
//by marshmellow /**
//biphase decode * @author marshmellow
//take 01 or 10 = 0 and 11 or 00 = 1 * biphase decode
//takes 2 arguments "offset" default = 0 if 1 it will shift the decode by one bit * decdoes 01 or 10 to 0 and 11 or 00 to 1
// and "invert" default = 0 if 1 it will invert output * param offset adjust start position
// the argument offset allows us to manually shift if the output is incorrect - [EDIT: now auto detects] * param invert invert output
* param maxErr maximum tolerated errors
*/
int CmdBiphaseDecodeRaw(const char *Cmd) int CmdBiphaseDecodeRaw(const char *Cmd)
{ {
size_t size=0; size_t size=0;
int offset=0, invert=0, maxErr=20, errCnt=0; int offset=0, invert=0, maxErr=20, errCnt=0;
char cmdp = param_getchar(Cmd, 0); char cmdp = param_getchar(Cmd, 0);
if (strlen(Cmd) > 3 || cmdp == 'h' || cmdp == 'H') { if (strlen(Cmd) > 7 || cmdp == 'h' || cmdp == 'H') {
PrintAndLog("Usage: data biphaserawdecode [offset] [invert] [maxErr]"); PrintAndLog("Usage: data biphaserawdecode [offset] [invert] [maxErr]");
PrintAndLog(" Converts 10 or 01 to 1 and 11 or 00 to 0"); PrintAndLog(" Converts 10 or 01 to 1 and 11 or 00 to 0");
PrintAndLog(" --must have binary sequence in demodbuffer (run data askrawdemod first)"); PrintAndLog(" --must have binary sequence in demodbuffer (run data askrawdemod first)");
@ -427,7 +429,7 @@ int CmdBiphaseDecodeRaw(const char *Cmd)
int ASKbiphaseDemod(const char *Cmd, bool verbose) int ASKbiphaseDemod(const char *Cmd, bool verbose)
{ {
//ask raw demod GraphBuffer first //ask raw demod GraphBuffer first
int offset=0, clk=0, invert=0, maxErr=0; int offset=0, clk=0, invert=0, maxErr=100;
sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr); sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
uint8_t BitStream[MAX_GRAPH_TRACE_LEN]; uint8_t BitStream[MAX_GRAPH_TRACE_LEN];

View file

@ -137,7 +137,7 @@ int CmdFdxDemod(const char *Cmd){
//Differential Biphase / di-phase (inverted biphase) //Differential Biphase / di-phase (inverted biphase)
//get binary from ask wave //get binary from ask wave
if (!ASKbiphaseDemod("0 32 1 0", false)) { if (!ASKbiphaseDemod("0 32 1 100", false)) {
if (g_debugMode) PrintAndLog("DEBUG: Error - FDX-B ASKbiphaseDemod failed"); if (g_debugMode) PrintAndLog("DEBUG: Error - FDX-B ASKbiphaseDemod failed");
return 0; return 0;
} }
@ -206,7 +206,7 @@ int CmdFdxDemod(const char *Cmd){
} }
int CmdFdxRead(const char *Cmd) { int CmdFdxRead(const char *Cmd) {
lf_read(true, 10000); lf_read(true, 39999);
return CmdFdxDemod(Cmd); return CmdFdxDemod(Cmd);
} }