From dd2388e40d48ee228dcf64c7254bfca7abb6bcd0 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Mon, 24 Feb 2025 10:57:27 +0300 Subject: [PATCH] discard wrong hollarms if bytesum is invalid --- lib/subghz/protocols/hollarm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/subghz/protocols/hollarm.c b/lib/subghz/protocols/hollarm.c index ab2ce342f..fc76affa0 100644 --- a/lib/subghz/protocols/hollarm.c +++ b/lib/subghz/protocols/hollarm.c @@ -376,6 +376,21 @@ void subghz_protocol_decoder_hollarm_feed(void* context, bool level, volatile ui // Saving with 2bit to the right offset for proper parsing instance->generic.data = (instance->decoder.decode_data >> 2); instance->generic.data_count_bit = instance->decoder.decode_count_bit; + + uint8_t bytesum = ((instance->generic.data >> 32) & 0xFF) + + ((instance->generic.data >> 24) & 0xFF) + + ((instance->generic.data >> 16) & 0xFF) + + ((instance->generic.data >> 8) & 0xFF); + + if(bytesum != (instance->generic.data & 0xFF)) { + // Check if the key is valid by verifying the sum + instance->generic.data = 0; + instance->generic.data_count_bit = 0; + instance->decoder.decode_data = 0; + instance->decoder.decode_count_bit = 0; + instance->decoder.parser_step = HollarmDecoderStepReset; + break; + } if(instance->base.callback) instance->base.callback(&instance->base, instance->base.context); }