From 398a468fd709d34df4081f61db5a914f84228fa7 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Wed, 31 Jan 2024 18:32:48 +0300 Subject: [PATCH] disable em4100 16clk due to non working read 32 is working well --- lib/lfrfid/protocols/lfrfid_protocols.c | 3 +- lib/lfrfid/protocols/lfrfid_protocols.h | 3 +- lib/lfrfid/protocols/protocol_em4100.c | 109 +++++++++--------------- lib/lfrfid/protocols/protocol_em4100.h | 2 - 4 files changed, 42 insertions(+), 75 deletions(-) diff --git a/lib/lfrfid/protocols/lfrfid_protocols.c b/lib/lfrfid/protocols/lfrfid_protocols.c index a8d0ff280..a15b25ed4 100644 --- a/lib/lfrfid/protocols/lfrfid_protocols.c +++ b/lib/lfrfid/protocols/lfrfid_protocols.c @@ -20,8 +20,7 @@ const ProtocolBase* lfrfid_protocols[] = { [LFRFIDProtocolEM4100] = &protocol_em4100, - [LFRFIDProtocolEM410032] = &protocol_em4100_32, - [LFRFIDProtocolEM410016] = &protocol_em4100_16, + [LFRFIDProtocolEM4100_32] = &protocol_em4100_32, [LFRFIDProtocolH10301] = &protocol_h10301, [LFRFIDProtocolIdteck] = &protocol_idteck, [LFRFIDProtocolIndala26] = &protocol_indala26, diff --git a/lib/lfrfid/protocols/lfrfid_protocols.h b/lib/lfrfid/protocols/lfrfid_protocols.h index 64a9fcba2..ce14ca1c9 100644 --- a/lib/lfrfid/protocols/lfrfid_protocols.h +++ b/lib/lfrfid/protocols/lfrfid_protocols.h @@ -9,8 +9,7 @@ typedef enum { typedef enum { LFRFIDProtocolEM4100, - LFRFIDProtocolEM410032, - LFRFIDProtocolEM410016, + LFRFIDProtocolEM4100_32, LFRFIDProtocolH10301, LFRFIDProtocolIdteck, LFRFIDProtocolIndala26, diff --git a/lib/lfrfid/protocols/protocol_em4100.c b/lib/lfrfid/protocols/protocol_em4100.c index 8dd3b2ce0..5a49eeb87 100644 --- a/lib/lfrfid/protocols/protocol_em4100.c +++ b/lib/lfrfid/protocols/protocol_em4100.c @@ -39,71 +39,60 @@ typedef struct { uint8_t clock_per_bit; } ProtocolEM4100; -uint16_t protocol_em4100_get_time_divisor(ProtocolEM4100 *proto) { - switch (proto->clock_per_bit) { - case 64: - return 1; - case 32: - return 2; - case 16: - return 4; - default: - return 1; - } +uint16_t protocol_em4100_get_time_divisor(ProtocolEM4100* proto) { + switch(proto->clock_per_bit) { + case 64: + return 1; + case 32: + return 2; + default: + return 1; + } } -uint32_t protocol_em4100_get_t5577_bitrate(ProtocolEM4100 *proto) { - switch (proto->clock_per_bit) { - case 64: - return LFRFID_T5577_BITRATE_RF_64; - case 32: - return LFRFID_T5577_BITRATE_RF_32; - case 16: - return LFRFID_T5577_BITRATE_RF_16; - default: - return LFRFID_T5577_BITRATE_RF_64; - } +uint32_t protocol_em4100_get_t5577_bitrate(ProtocolEM4100* proto) { + switch(proto->clock_per_bit) { + case 64: + return LFRFID_T5577_BITRATE_RF_64; + case 32: + return LFRFID_T5577_BITRATE_RF_32; + default: + return LFRFID_T5577_BITRATE_RF_64; + } } -uint16_t protocol_em4100_get_short_time_low(ProtocolEM4100 *proto) { - return EM_READ_SHORT_TIME_BASE / protocol_em4100_get_time_divisor(proto) - EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); +uint16_t protocol_em4100_get_short_time_low(ProtocolEM4100* proto) { + return EM_READ_SHORT_TIME_BASE / protocol_em4100_get_time_divisor(proto) - + EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); } -uint16_t protocol_em4100_get_short_time_high(ProtocolEM4100 *proto) { - return EM_READ_SHORT_TIME_BASE / protocol_em4100_get_time_divisor(proto) + EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); +uint16_t protocol_em4100_get_short_time_high(ProtocolEM4100* proto) { + return EM_READ_SHORT_TIME_BASE / protocol_em4100_get_time_divisor(proto) + + EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); } -uint16_t protocol_em4100_get_long_time_low(ProtocolEM4100 *proto) { - return EM_READ_LONG_TIME_BASE / protocol_em4100_get_time_divisor(proto) - EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); - +uint16_t protocol_em4100_get_long_time_low(ProtocolEM4100* proto) { + return EM_READ_LONG_TIME_BASE / protocol_em4100_get_time_divisor(proto) - + EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); } -uint16_t protocol_em4100_get_long_time_high(ProtocolEM4100 *proto) { - return EM_READ_LONG_TIME_BASE / protocol_em4100_get_time_divisor(proto) + EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); +uint16_t protocol_em4100_get_long_time_high(ProtocolEM4100* proto) { + return EM_READ_LONG_TIME_BASE / protocol_em4100_get_time_divisor(proto) + + EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto); } - - ProtocolEM4100* protocol_em4100_alloc(void) { ProtocolEM4100* proto = malloc(sizeof(ProtocolEM4100)); proto->clock_per_bit = 64; return (void*)proto; }; -ProtocolEM4100* protocol_em4100_16_alloc(void) { - ProtocolEM4100* proto = malloc(sizeof(ProtocolEM4100)); - proto->clock_per_bit = 16; - return (void*)proto; -}; - ProtocolEM4100* protocol_em4100_32_alloc(void) { ProtocolEM4100* proto = malloc(sizeof(ProtocolEM4100)); proto->clock_per_bit = 32; return (void*)proto; }; - - void protocol_em4100_free(ProtocolEM4100* proto) { free(proto); }; @@ -199,13 +188,16 @@ bool protocol_em4100_decoder_feed(ProtocolEM4100* proto, bool level, uint32_t du ManchesterEvent event = ManchesterEventReset; - if(duration > protocol_em4100_get_short_time_low(proto) && duration < protocol_em4100_get_short_time_high(proto)) { + if(duration > protocol_em4100_get_short_time_low(proto) && + duration < protocol_em4100_get_short_time_high(proto)) { if(!level) { event = ManchesterEventShortHigh; } else { event = ManchesterEventShortLow; } - } else if(duration > protocol_em4100_get_long_time_low(proto) && duration < protocol_em4100_get_long_time_high(proto)) { + } else if( + duration > protocol_em4100_get_long_time_low(proto) && + duration < protocol_em4100_get_long_time_high(proto)) { if(!level) { event = ManchesterEventLongHigh; } else { @@ -327,7 +319,11 @@ bool protocol_em4100_write_data(ProtocolEM4100* protocol, void* data) { void protocol_em4100_render_data(ProtocolEM4100* protocol, FuriString* result) { uint8_t* data = protocol->data; furi_string_printf( - result, "FC: %03u, Card: %05u (RF/%u)", data[2], (uint16_t)((data[3] << 8) | (data[4])), protocol->clock_per_bit); + result, + "FC: %03u, Card: %05u (RF/%u)", + data[2], + (uint16_t)((data[3] << 8) | (data[4])), + protocol->clock_per_bit); }; const ProtocolBase protocol_em4100 = { @@ -354,7 +350,6 @@ const ProtocolBase protocol_em4100 = { .write_data = (ProtocolWriteData)protocol_em4100_write_data, }; - const ProtocolBase protocol_em4100_32 = { .name = "EM4100/32", .manufacturer = "EM-Micro", @@ -378,27 +373,3 @@ const ProtocolBase protocol_em4100_32 = { .render_brief_data = (ProtocolRenderData)protocol_em4100_render_data, .write_data = (ProtocolWriteData)protocol_em4100_write_data, }; - -const ProtocolBase protocol_em4100_16 = { - .name = "EM4100/16", - .manufacturer = "EM-Micro", - .data_size = EM4100_DECODED_DATA_SIZE, - .features = LFRFIDFeatureASK | LFRFIDFeaturePSK, - .validate_count = 3, - .alloc = (ProtocolAlloc)protocol_em4100_16_alloc, - .free = (ProtocolFree)protocol_em4100_free, - .get_data = (ProtocolGetData)protocol_em4100_get_data, - .decoder = - { - .start = (ProtocolDecoderStart)protocol_em4100_decoder_start, - .feed = (ProtocolDecoderFeed)protocol_em4100_decoder_feed, - }, - .encoder = - { - .start = (ProtocolEncoderStart)protocol_em4100_encoder_start, - .yield = (ProtocolEncoderYield)protocol_em4100_encoder_yield, - }, - .render_data = (ProtocolRenderData)protocol_em4100_render_data, - .render_brief_data = (ProtocolRenderData)protocol_em4100_render_data, - .write_data = (ProtocolWriteData)protocol_em4100_write_data, -}; diff --git a/lib/lfrfid/protocols/protocol_em4100.h b/lib/lfrfid/protocols/protocol_em4100.h index 23af66e27..b19a29705 100644 --- a/lib/lfrfid/protocols/protocol_em4100.h +++ b/lib/lfrfid/protocols/protocol_em4100.h @@ -4,5 +4,3 @@ extern const ProtocolBase protocol_em4100; extern const ProtocolBase protocol_em4100_32; - -extern const ProtocolBase protocol_em4100_16;