subghz: add jarolift protocol

and various fixes
This commit is contained in:
MX
2026-01-26 11:51:28 +03:00
parent 209ae6f76f
commit 271c65a969
20 changed files with 1081 additions and 82 deletions

View File

@@ -44,6 +44,10 @@ void subghz_scene_set_button_on_enter(void* context) {
byte_ptr = &subghz->gen_info->beninca_arc.btn;
byte_count = sizeof(subghz->gen_info->beninca_arc.btn);
break;
case GenJarolift:
byte_ptr = &subghz->gen_info->jarolift.btn;
byte_count = sizeof(subghz->gen_info->jarolift.btn);
break;
case GenNiceFlorS:
byte_ptr = &subghz->gen_info->nice_flor_s.btn;
byte_count = sizeof(subghz->gen_info->nice_flor_s.btn);
@@ -92,6 +96,7 @@ bool subghz_scene_set_button_on_event(void* context, SceneManagerEvent event) {
case GenSomfyTelis:
case GenKingGatesStylo4k:
case GenBenincaARC:
case GenJarolift:
case GenNiceFlorS:
case GenSecPlus2:
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetCounter);

View File

@@ -50,6 +50,10 @@ void subghz_scene_set_counter_on_enter(void* context) {
byte_ptr = (uint8_t*)&subghz->gen_info->beninca_arc.cnt;
byte_count = sizeof(subghz->gen_info->beninca_arc.cnt);
break;
case GenJarolift:
byte_ptr = (uint8_t*)&subghz->gen_info->jarolift.cnt;
byte_count = sizeof(subghz->gen_info->jarolift.cnt);
break;
case GenNiceFlorS:
byte_ptr = (uint8_t*)&subghz->gen_info->nice_flor_s.cnt;
byte_count = sizeof(subghz->gen_info->nice_flor_s.cnt);
@@ -128,6 +132,9 @@ bool subghz_scene_set_counter_on_event(void* context, SceneManagerEvent event) {
case GenBenincaARC:
subghz->gen_info->beninca_arc.cnt = __bswap32(subghz->gen_info->beninca_arc.cnt);
break;
case GenJarolift:
subghz->gen_info->jarolift.cnt = __bswap16(subghz->gen_info->jarolift.cnt);
break;
case GenNiceFlorS:
subghz->gen_info->nice_flor_s.cnt = __bswap16(subghz->gen_info->nice_flor_s.cnt);
break;
@@ -204,6 +211,15 @@ bool subghz_scene_set_counter_on_event(void* context, SceneManagerEvent event) {
subghz->gen_info->beninca_arc.btn,
subghz->gen_info->beninca_arc.cnt);
break;
case GenJarolift:
generated_protocol = subghz_txrx_gen_jarolift_protocol(
subghz->txrx,
subghz->gen_info->mod,
subghz->gen_info->freq,
subghz->gen_info->jarolift.serial,
subghz->gen_info->jarolift.btn,
subghz->gen_info->jarolift.cnt);
break;
case GenNiceFlorS:
generated_protocol = subghz_txrx_gen_nice_flor_s_protocol(
subghz->txrx,

View File

@@ -32,6 +32,7 @@ void subghz_scene_set_seed_on_enter(void* context) {
case GenSomfyTelis:
case GenKingGatesStylo4k:
case GenBenincaARC:
case GenJarolift:
case GenNiceFlorS:
case GenSecPlus2:
case GenPhoenixV2:
@@ -93,6 +94,7 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) {
case GenSomfyTelis:
case GenKingGatesStylo4k:
case GenBenincaARC:
case GenJarolift:
case GenNiceFlorS:
case GenSecPlus2:
case GenPhoenixV2:

View File

@@ -50,6 +50,10 @@ void subghz_scene_set_serial_on_enter(void* context) {
byte_ptr = (uint8_t*)&subghz->gen_info->beninca_arc.serial;
byte_count = sizeof(subghz->gen_info->beninca_arc.serial);
break;
case GenJarolift:
byte_ptr = (uint8_t*)&subghz->gen_info->jarolift.serial;
byte_count = sizeof(subghz->gen_info->jarolift.serial);
break;
case GenNiceFlorS:
byte_ptr = (uint8_t*)&subghz->gen_info->nice_flor_s.serial;
byte_count = sizeof(subghz->gen_info->nice_flor_s.serial);
@@ -122,6 +126,9 @@ bool subghz_scene_set_serial_on_event(void* context, SceneManagerEvent event) {
subghz->gen_info->kinggates_stylo_4k.serial =
__bswap32(subghz->gen_info->kinggates_stylo_4k.serial);
break;
case GenJarolift:
subghz->gen_info->jarolift.serial = __bswap32(subghz->gen_info->jarolift.serial);
break;
case GenBenincaARC:
subghz->gen_info->beninca_arc.serial =
__bswap32(subghz->gen_info->beninca_arc.serial);
@@ -154,6 +161,7 @@ bool subghz_scene_set_serial_on_event(void* context, SceneManagerEvent event) {
case GenSomfyTelis:
case GenKingGatesStylo4k:
case GenBenincaARC:
case GenJarolift:
case GenNiceFlorS:
case GenSecPlus2:
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetButton);

View File

@@ -22,6 +22,7 @@ static const char* submenu_names[SetTypeMAX] = {
[SetTypePhoenix_V2_433] = "V2 Phoenix 433MHz",
[SetTypeKingGatesStylo4k] = "KingGates Stylo4k 433M.",
[SetTypeBenincaARC] = "Beninca ARC 433MHz",
[SetTypeJarolift] = "Jarolift 433MHz",
[SetTypeHCS101_433_92] = "KL: HCS101 433MHz",
[SetTypeDoorHan_315_00] = "KL: DoorHan 315MHz",
[SetTypeDoorHan_433_92] = "KL: DoorHan 433MHz",
@@ -207,6 +208,15 @@ bool subghz_scene_set_type_generate_protocol_from_infos(SubGhz* subghz) {
gen_info.beninca_arc.btn,
gen_info.beninca_arc.cnt);
break;
case GenJarolift:
generated_protocol = subghz_txrx_gen_jarolift_protocol(
subghz->txrx,
gen_info.mod,
gen_info.freq,
gen_info.jarolift.serial,
gen_info.jarolift.btn,
gen_info.jarolift.cnt);
break;
case GenNiceFlorS:
generated_protocol = subghz_txrx_gen_nice_flor_s_protocol(
subghz->txrx,
@@ -288,6 +298,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
case GenSomfyTelis: // Serial (u32), Button (u8), Counter (u16)
case GenKingGatesStylo4k: // Serial (u32), Button (u8), Counter (u16)
case GenBenincaARC: // Serial (u32), Button (u8), Counter (u32)
case GenJarolift: // Serial (u32), Button (u4), Counter (u16)
case GenNiceFlorS: // Serial (u32), Button (u8), Counter (u16)
case GenSecPlus2: // Serial (u32), Button (u8), Counter (u32)
case GenPhoenixV2: // Serial (u32), Counter (u16)