From cb1daaa4f16e5469ec904170727f4209ecae79e9 Mon Sep 17 00:00:00 2001 From: Andrea Santaniello Date: Sat, 28 Mar 2026 18:31:50 +0100 Subject: [PATCH] Make psa more strict to avoid false positives --- lib/subghz/protocols/psa.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/subghz/protocols/psa.c b/lib/subghz/protocols/psa.c index a539ecd..42a9d79 100644 --- a/lib/subghz/protocols/psa.c +++ b/lib/subghz/protocols/psa.c @@ -743,6 +743,14 @@ void subghz_protocol_decoder_psa_feed(void* context, bool level, uint32_t durati } if(end_diff <= 199) { instance->validation_field = (uint16_t)(instance->decode_data_low & 0xFFFF); + if((instance->validation_field & 0xf) != 0xa) { + instance->decode_data_low = 0; + instance->decode_data_high = 0; + instance->decode_count_bit = 0; + new_state = PSADecoderState0; + instance->state = new_state; + return; + } instance->key2_low = instance->decode_data_low; instance->key2_high = instance->decode_data_high; instance->mode_serialize = 1; @@ -1026,6 +1034,14 @@ void subghz_protocol_decoder_psa_feed(void* context, bool level, uint32_t durati } instance->validation_field = (uint16_t)(instance->decode_data_low & 0xFFFF); + if((instance->validation_field & 0xf) != 0xa) { + instance->decode_data_low = 0; + instance->decode_data_high = 0; + instance->decode_count_bit = 0; + new_state = PSADecoderState0; + instance->state = new_state; + return; + } instance->key2_low = instance->decode_data_low; instance->key2_high = instance->decode_data_high; instance->mode_serialize = 2;