mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 12:42:30 +04:00
subghz overflow experimental mode
This commit is contained in:
@@ -26,7 +26,7 @@ const char* const debug_pin_text[DEBUG_P_COUNT] = {
|
|||||||
"17(1W)",
|
"17(1W)",
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEBUG_COUNTER_COUNT 16
|
#define DEBUG_COUNTER_COUNT 17
|
||||||
const char* const debug_counter_text[DEBUG_COUNTER_COUNT] = {
|
const char* const debug_counter_text[DEBUG_COUNTER_COUNT] = {
|
||||||
"+1",
|
"+1",
|
||||||
"+2",
|
"+2",
|
||||||
@@ -36,6 +36,7 @@ const char* const debug_counter_text[DEBUG_COUNTER_COUNT] = {
|
|||||||
"+10",
|
"+10",
|
||||||
"+50",
|
"+50",
|
||||||
"OVFL",
|
"OVFL",
|
||||||
|
"OFEX",
|
||||||
"No",
|
"No",
|
||||||
"-1",
|
"-1",
|
||||||
"-2",
|
"-2",
|
||||||
@@ -54,6 +55,7 @@ const int32_t debug_counter_val[DEBUG_COUNTER_COUNT] = {
|
|||||||
10,
|
10,
|
||||||
50,
|
50,
|
||||||
65535,
|
65535,
|
||||||
|
65534,
|
||||||
0,
|
0,
|
||||||
-1,
|
-1,
|
||||||
-2,
|
-2,
|
||||||
|
|||||||
@@ -273,14 +273,27 @@ static bool subghz_protocol_alutech_at_4n_gen_data(
|
|||||||
instance->generic.serial = (uint32_t)(data >> 24) & 0xFFFFFFFF;
|
instance->generic.serial = (uint32_t)(data >> 24) & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
crc = subghz_protocol_alutech_at_4n_decrypt_data_crc((uint8_t)(instance->generic.cnt & 0xFF));
|
crc = subghz_protocol_alutech_at_4n_decrypt_data_crc((uint8_t)(instance->generic.cnt & 0xFF));
|
||||||
data = (uint64_t)crc << 56 | (uint64_t)instance->generic.serial << 24 |
|
data = (uint64_t)crc << 56 | (uint64_t)instance->generic.serial << 24 |
|
||||||
|
|||||||
@@ -185,14 +185,27 @@ static void subghz_protocol_encoder_came_atomo_get_upload(
|
|||||||
|
|
||||||
uint8_t pack[8] = {};
|
uint8_t pack[8] = {};
|
||||||
|
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save original button for later use
|
// Save original button for later use
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* inst
|
|||||||
data_prg[0] = 0x00;
|
data_prg[0] = 0x00;
|
||||||
|
|
||||||
if(allow_zero_seed || (instance->generic.seed != 0x0)) {
|
if(allow_zero_seed || (instance->generic.seed != 0x0)) {
|
||||||
if(!(furi_hal_subghz_get_rolling_counter_mult() >= 0xFFFF)) {
|
if(!(furi_hal_subghz_get_rolling_counter_mult() >= 0xFFFE)) {
|
||||||
if(instance->generic.cnt < 0xFFFFF) {
|
if(instance->generic.cnt < 0xFFFFF) {
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) >
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) >
|
||||||
0xFFFFF) {
|
0xFFFFF) {
|
||||||
@@ -158,7 +158,7 @@ static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* inst
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(temp_counter_backup != 0x0) {
|
if(temp_counter_backup != 0x0) {
|
||||||
if(!(furi_hal_subghz_get_rolling_counter_mult() >= 0xFFFF)) {
|
if(!(furi_hal_subghz_get_rolling_counter_mult() >= 0xFFFE)) {
|
||||||
if(temp_counter_backup < 0xFFFFF) {
|
if(temp_counter_backup < 0xFFFFF) {
|
||||||
if((temp_counter_backup + furi_hal_subghz_get_rolling_counter_mult()) >
|
if((temp_counter_backup + furi_hal_subghz_get_rolling_counter_mult()) >
|
||||||
0xFFFFF) {
|
0xFFFFF) {
|
||||||
@@ -240,7 +240,7 @@ static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* inst
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(allow_zero_seed || (instance->generic.seed != 0x0)) {
|
if(allow_zero_seed || (instance->generic.seed != 0x0)) {
|
||||||
if(!(furi_hal_subghz_get_rolling_counter_mult() >= 0xFFFF)) {
|
if(!(furi_hal_subghz_get_rolling_counter_mult() >= 0xFFFE)) {
|
||||||
if(instance->generic.cnt < 0xFFFFF) {
|
if(instance->generic.cnt < 0xFFFFF) {
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) >
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) >
|
||||||
0xFFFFF) {
|
0xFFFFF) {
|
||||||
|
|||||||
@@ -145,17 +145,28 @@ static void subghz_protocol_encoder_hay21_get_upload(SubGhzProtocolEncoderHay21*
|
|||||||
instance->generic.btn = subghz_protocol_hay21_get_btn_code();
|
instance->generic.btn = subghz_protocol_hay21_get_btn_code();
|
||||||
|
|
||||||
// Counter increment
|
// Counter increment
|
||||||
if(instance->generic.cnt < 0xF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xF) {
|
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;
|
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 {
|
} 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
|
// Reconstruction of the data
|
||||||
|
|||||||
@@ -182,18 +182,29 @@ static bool subghz_protocol_keeloq_gen_data(
|
|||||||
if(counter_up && prog_mode == PROG_MODE_OFF) {
|
if(counter_up && prog_mode == PROG_MODE_OFF) {
|
||||||
// Counter increment conditions
|
// Counter increment conditions
|
||||||
|
|
||||||
// If counter is 0xFFFF we will reset it to 0
|
// Check for OFEX (overflow experimental) mode
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
// Increase counter with value set in global settings (mult)
|
// If counter is 0xFFFF we will reset it to 0
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
// Increase counter with value set in global settings (mult)
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if(
|
} else {
|
||||||
(instance->generic.cnt >= 0xFFFF) &&
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
instance->generic.cnt = 0;
|
||||||
instance->generic.cnt = 0;
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(prog_mode == PROG_MODE_OFF) {
|
if(prog_mode == PROG_MODE_OFF) {
|
||||||
|
|||||||
@@ -155,14 +155,27 @@ static bool subghz_protocol_kinggates_stylo_4k_gen_data(
|
|||||||
}
|
}
|
||||||
instance->generic.cnt = decrypt & 0xFFFF;
|
instance->generic.cnt = decrypt & 0xFFFF;
|
||||||
|
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
instance->generic.btn = (fix >> 17) & 0x0F;
|
instance->generic.btn = (fix >> 17) & 0x0F;
|
||||||
|
|||||||
@@ -151,15 +151,29 @@ static void subghz_protocol_encoder_nice_flor_s_get_upload(
|
|||||||
instance->encoder.size_upload = size_upload;
|
instance->encoder.size_upload = size_upload;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t decrypt = ((uint64_t)instance->generic.serial << 16) | instance->generic.cnt;
|
uint64_t decrypt = ((uint64_t)instance->generic.serial << 16) | instance->generic.cnt;
|
||||||
uint64_t enc_part = subghz_protocol_nice_flor_s_encrypt(decrypt, file_name);
|
uint64_t enc_part = subghz_protocol_nice_flor_s_encrypt(decrypt, file_name);
|
||||||
|
|
||||||
|
|||||||
@@ -252,14 +252,27 @@ static bool
|
|||||||
btn = subghz_protocol_phoenix_v2_get_btn_code();
|
btn = subghz_protocol_phoenix_v2_get_btn_code();
|
||||||
|
|
||||||
// Reconstruction of the data
|
// Reconstruction of the data
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t local_data_rev = subghz_protocol_blocks_reverse_key(
|
uint64_t local_data_rev = subghz_protocol_blocks_reverse_key(
|
||||||
|
|||||||
@@ -130,14 +130,27 @@ static bool
|
|||||||
instance->generic.cnt = (data >> 24) & 0xFFFF;
|
instance->generic.cnt = (data >> 24) & 0xFFFF;
|
||||||
instance->generic.serial = data & 0xFFFFFF;
|
instance->generic.serial = data & 0xFFFFFF;
|
||||||
|
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t frame[10];
|
uint8_t frame[10];
|
||||||
|
|||||||
@@ -124,14 +124,27 @@ static bool subghz_protocol_somfy_telis_gen_data(
|
|||||||
|
|
||||||
btn = subghz_protocol_somfy_telis_get_btn_code();
|
btn = subghz_protocol_somfy_telis_get_btn_code();
|
||||||
|
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t frame[7];
|
uint8_t frame[7];
|
||||||
|
|||||||
@@ -129,14 +129,27 @@ void subghz_protocol_encoder_star_line_free(void* context) {
|
|||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
subghz_protocol_star_line_gen_data(SubGhzProtocolEncoderStarLine* instance, uint8_t btn) {
|
subghz_protocol_star_line_gen_data(SubGhzProtocolEncoderStarLine* instance, uint8_t btn) {
|
||||||
if(instance->generic.cnt < 0xFFFF) {
|
// Check for OFEX (overflow experimental) mode
|
||||||
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
if(furi_hal_subghz_get_rolling_counter_mult() != 0xFFFE) {
|
||||||
|
if(instance->generic.cnt < 0xFFFF) {
|
||||||
|
if((instance->generic.cnt + furi_hal_subghz_get_rolling_counter_mult()) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
}
|
||||||
|
} else if(
|
||||||
|
(instance->generic.cnt >= 0xFFFF) &&
|
||||||
|
(furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
||||||
instance->generic.cnt = 0;
|
instance->generic.cnt = 0;
|
||||||
} else {
|
|
||||||
instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
|
|
||||||
}
|
}
|
||||||
} else if((instance->generic.cnt >= 0xFFFF) && (furi_hal_subghz_get_rolling_counter_mult() != 0)) {
|
} else {
|
||||||
instance->generic.cnt = 0;
|
if((instance->generic.cnt + 0x1) > 0xFFFF) {
|
||||||
|
instance->generic.cnt = 0;
|
||||||
|
} else if(instance->generic.cnt >= 0x1 && instance->generic.cnt != 0xFFFE) {
|
||||||
|
instance->generic.cnt = furi_hal_subghz_get_rolling_counter_mult();
|
||||||
|
} else {
|
||||||
|
instance->generic.cnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
uint32_t fix = btn << 24 | instance->generic.serial;
|
uint32_t fix = btn << 24 | instance->generic.serial;
|
||||||
uint32_t decrypt = btn << 24 | (instance->generic.serial & 0xFF) << 16 | instance->generic.cnt;
|
uint32_t decrypt = btn << 24 | (instance->generic.serial & 0xFF) << 16 | instance->generic.cnt;
|
||||||
|
|||||||
Reference in New Issue
Block a user