subghz overflow experimental mode

This commit is contained in:
MX
2025-10-21 01:32:02 +03:00
parent bd02e2f53c
commit a1c8dfb61b
12 changed files with 199 additions and 70 deletions

View File

@@ -145,17 +145,28 @@ static void subghz_protocol_encoder_hay21_get_upload(SubGhzProtocolEncoderHay21*
instance->generic.btn = subghz_protocol_hay21_get_btn_code();
// Counter increment
if(instance->generic.cnt < 0xF) {
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xF) {
// Check for OFEX (overflow experimental) mode
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
if(instance->generic.cnt < 0xF) {
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xF) {
instance->generic.cnt = 0;
} else {
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
}
if(furi_hal_subghz_get_rolling_counter_mult() >= 0xF) {
instance->generic.cnt = 0xF;
}
} else if(instance->generic.cnt >= 0xF) {
instance->generic.cnt = 0;
}
} else {
if((instance->generic.cnt + 0x1) > 0xF) {
instance->generic.cnt = 0;
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xE) {
instance->generic.cnt = 0xE;
} else {
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
instance->generic.cnt++;
}
if(furi_hal_subghz_get_rolling_counter_mult() >= 0xF) {
instance->generic.cnt = 0xF;
}
} else if(instance->generic.cnt >= 0xF) {
instance->generic.cnt = 0;
}
// Reconstruction of the data