Compare commits

...

2 Commits

Author SHA1 Message Date
Andrea Santaniello
dc0f30dad9 Update psa.c
All checks were successful
Build Dev Firmware / build (push) Successful in 6m46s
2026-03-29 14:34:00 +02:00
Andrea
38f261e23b Revert "Make psa more strict to avoid false positives"
All checks were successful
Build Dev Firmware / build (push) Successful in 6m43s
This reverts commit cb1daaa4f1.
2026-03-28 21:44:11 +01:00

View File

@@ -743,14 +743,6 @@ 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;
@@ -766,6 +758,17 @@ void subghz_protocol_decoder_psa_feed(void* context, bool level, uint32_t durati
instance->mode_serialize = 0x36;
}
// Only fire callback if decrypted or validation nibble matches
if(instance->decrypted != 0x50 &&
(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->generic.data = ((uint64_t)instance->key1_high << 32) | instance->key1_low;
instance->generic.data_count_bit = 64;
instance->decoder.decode_data = instance->generic.data;
@@ -1034,14 +1037,6 @@ 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;
@@ -1057,6 +1052,17 @@ void subghz_protocol_decoder_psa_feed(void* context, bool level, uint32_t durati
instance->mode_serialize = 0x36;
}
// Only fire callback if decrypted or validation nibble matches
if(instance->decrypted != 0x50 &&
(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->generic.data = ((uint64_t)instance->key1_high << 32) | instance->key1_low;
instance->generic.data_count_bit = 64;
instance->decoder.decode_data = instance->generic.data;