lets see if this still detects sentinels

This commit is contained in:
iceman1001 2022-08-21 09:40:36 +02:00
parent 28449aa580
commit 38a664f00c

View file

@ -131,24 +131,17 @@ bool set_nonlinear_field(wiegand_message_t *data, uint64_t value, uint8_t numBit
static uint8_t get_length_from_header(wiegand_message_t *data) { static uint8_t get_length_from_header(wiegand_message_t *data) {
/** /**
* detect if message has "preamble" / "sentinel bit" * detect if message has "preamble" / "sentinel bit"
* * Right now we just calculate the highest bit set
* 37 bit formats is hard to detect since it doesnt have a sentinel bit
*/ */
uint8_t len = 0; uint8_t len = 0;
uint32_t hfmt = 0; // for calculating card length uint32_t hfmt = 0; // for calculating card length
if ((data->Top & 0x000FFFFF) > 0) { // > 64 bits if ((data->Top & 0x000FFFFF) > 0) { // > 64 bits
hfmt = data->Top & 0x000FFFFF; hfmt = data->Top & 0x000FFFFF;
len = 64; len = 64;
} else if ((data->Mid & 0xFFFFFFC0) > 0) { // < 63-38 bits } else if (data->Mid > 0) { // < 63-32 bits
hfmt = data->Mid & 0xFFFFFFC0; hfmt = data->Mid;
len = 32;
} else if (data->Mid && (data->Mid & 0x00000020) == 0) { // 37 bits;
hfmt = 0;
len = 37;
} else if ((data->Mid & 0x0000001F) > 0) { // 36-32 bits
hfmt = data->Mid & 0x0000001F;
len = 32; len = 32;
} else { } else {
hfmt = data->Bot; hfmt = data->Bot;
@ -159,8 +152,11 @@ static uint8_t get_length_from_header(wiegand_message_t *data) {
hfmt >>= 1; hfmt >>= 1;
len++; len++;
} }
// everything less than 26 bits found, assume 26 bits
if (len < 26) if (len < 26)
len = 26; len = 26;
return len; return len;
} }