diff options
author | Skorpionm <85568270+Skorpionm@users.noreply.github.com> | 2022-05-27 15:19:20 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-27 15:19:20 +0300 |
commit | 67fbefbe63a606a7eae44ce847f0495c85dec9ab (patch) | |
tree | 5e83fc3695b8a968d219b14f38d3429a0de04d8e /applications/subghz/scenes | |
parent | 5c45250dd2c60f2f3a38849a6253f58a71059598 (diff) |
SubGhz: Сreating and delivering Security+ 2.0 (#1273)
* SubGhz: Security+ 2.0 "Add manually" option
* SubGhz: fix message error
* Unit_test: add Security+ 2.0 encoder
* Applications: remove obsolete code
* SubGhz: save menu position in "Add Manually" menu
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Diffstat (limited to 'applications/subghz/scenes')
-rw-r--r-- | applications/subghz/scenes/subghz_scene_set_type.c | 83 |
1 files changed, 78 insertions, 5 deletions
diff --git a/applications/subghz/scenes/subghz_scene_set_type.c b/applications/subghz/scenes/subghz_scene_set_type.c index b050107d..b64d0023 100644 --- a/applications/subghz/scenes/subghz_scene_set_type.c +++ b/applications/subghz/scenes/subghz_scene_set_type.c @@ -1,6 +1,7 @@ #include "../subghz_i.h" #include <lib/subghz/protocols/keeloq.h> #include <lib/subghz/protocols/secplus_v1.h> +#include <lib/subghz/protocols/secplus_v2.h> #include <lib/subghz/blocks/math.h> #include <dolphin/dolphin.h> #include <flipper_format/flipper_format_i.h> @@ -24,6 +25,9 @@ enum SubmenuIndex { SubmenuIndexFirefly_300_00, SubmenuIndexLiftMaster_315_00, SubmenuIndexLiftMaster_390_00, + SubmenuIndexSecPlus_v2_310_00, + SubmenuIndexSecPlus_v2_315_00, + SubmenuIndexSecPlus_v2_390_00, }; bool subghz_scene_set_type_submenu_gen_data_protocol( @@ -157,6 +161,24 @@ void subghz_scene_set_type_on_enter(void* context) { SubmenuIndexLiftMaster_390_00, subghz_scene_set_type_submenu_callback, subghz); + submenu_add_item( + subghz->submenu, + "Security+2.0_310", + SubmenuIndexSecPlus_v2_310_00, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "Security+2.0_315", + SubmenuIndexSecPlus_v2_315_00, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "Security+2.0_390", + SubmenuIndexSecPlus_v2_390_00, + subghz_scene_set_type_submenu_callback, + subghz); submenu_set_selected_item( subghz->submenu, scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneSetType)); @@ -330,7 +352,6 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { while(!subghz_protocol_secplus_v1_check_fixed(key)) { key = subghz_random_serial(); } - if(subghz_scene_set_type_submenu_gen_data_protocol( subghz, SUBGHZ_PROTOCOL_SECPLUS_V1_NAME, @@ -345,7 +366,6 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { while(!subghz_protocol_secplus_v1_check_fixed(key)) { key = subghz_random_serial(); } - if(subghz_scene_set_type_submenu_gen_data_protocol( subghz, SUBGHZ_PROTOCOL_SECPLUS_V1_NAME, @@ -356,17 +376,70 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { generated_protocol = true; } break; - + case SubmenuIndexSecPlus_v2_310_00: + subghz->txrx->transmitter = subghz_transmitter_alloc_init( + subghz->txrx->environment, SUBGHZ_PROTOCOL_SECPLUS_V2_NAME); + if(subghz->txrx->transmitter) { + subghz_protocol_secplus_v2_create_data( + subghz_transmitter_get_protocol_instance(subghz->txrx->transmitter), + subghz->txrx->fff_data, + key, + 0x68, + 0xE500000, + 310000000, + FuriHalSubGhzPresetOok650Async); + generated_protocol = true; + } else { + generated_protocol = false; + } + subghz_transmitter_free(subghz->txrx->transmitter); + break; + case SubmenuIndexSecPlus_v2_315_00: + subghz->txrx->transmitter = subghz_transmitter_alloc_init( + subghz->txrx->environment, SUBGHZ_PROTOCOL_SECPLUS_V2_NAME); + if(subghz->txrx->transmitter) { + subghz_protocol_secplus_v2_create_data( + subghz_transmitter_get_protocol_instance(subghz->txrx->transmitter), + subghz->txrx->fff_data, + key, + 0x68, + 0xE500000, + 315000000, + FuriHalSubGhzPresetOok650Async); + generated_protocol = true; + } else { + generated_protocol = false; + } + subghz_transmitter_free(subghz->txrx->transmitter); + break; + case SubmenuIndexSecPlus_v2_390_00: + subghz->txrx->transmitter = subghz_transmitter_alloc_init( + subghz->txrx->environment, SUBGHZ_PROTOCOL_SECPLUS_V2_NAME); + if(subghz->txrx->transmitter) { + subghz_protocol_secplus_v2_create_data( + subghz_transmitter_get_protocol_instance(subghz->txrx->transmitter), + subghz->txrx->fff_data, + key, + 0x68, + 0xE500000, + 390000000, + FuriHalSubGhzPresetOok650Async); + generated_protocol = true; + } else { + generated_protocol = false; + } + subghz_transmitter_free(subghz->txrx->transmitter); + break; default: return false; break; } + scene_manager_set_scene_state(subghz->scene_manager, SubGhzSceneSetType, event.event); + if(generated_protocol) { subghz_file_name_clear(subghz); DOLPHIN_DEED(DolphinDeedSubGhzAddManually); - scene_manager_set_scene_state( - subghz->scene_manager, SubGhzSceneSetType, SubGhzCustomEventManagerSet); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName); return true; } |