From 3e968069620215b3420467a8ade5249b7ee1dd8f Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Tue, 21 Oct 2025 04:12:22 +0300 Subject: [PATCH] honeywell read old files with 62-63bits change them on the fly to new format during reading, files are not replaced, they will contain old format, you can fix them manually by replacing header to FF FE and bits to 64 --- lib/subghz/protocols/honeywell.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/subghz/protocols/honeywell.c b/lib/subghz/protocols/honeywell.c index dd556d094..106ddeead 100644 --- a/lib/subghz/protocols/honeywell.c +++ b/lib/subghz/protocols/honeywell.c @@ -371,10 +371,26 @@ SubGhzProtocolStatus subghz_protocol_decoder_honeywell_deserialize(void* context, FlipperFormat* flipper_format) { furi_assert(context); SubGhzProtocolDecoderHoneywell* instance = context; - return subghz_block_generic_deserialize_check_count_bit( - &instance->generic, - flipper_format, - subghz_protocol_honeywell_const.min_count_bit_for_found); + + SubGhzProtocolStatus res = SubGhzProtocolStatusError; + res = subghz_block_generic_deserialize(&instance->generic, flipper_format); + if(res != SubGhzProtocolStatusOk) { + return res; + } + + if(instance->generic.data_count_bit != 64) { + // Removing possible artifacts from higher bits and setting header to FF FE + instance->generic.data = + ((((((0xFF << 16) | ((instance->generic.data >> 40) & 0xFFFF)) << 16) | + ((instance->generic.data >> 24) & 0xFFFF)) + << 16) | + ((instance->generic.data >> 8) & 0xFFFF)) + << 8 | + (instance->generic.data & 0xFF); + instance->generic.data_count_bit = 64; + } + + return res; } void subghz_protocol_decoder_honeywell_get_string(void* context, FuriString* output) {