Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSkorpionm <85568270+Skorpionm@users.noreply.github.com>2022-05-27 15:19:20 +0300
committerGitHub <noreply@github.com>2022-05-27 15:19:20 +0300
commit67fbefbe63a606a7eae44ce847f0495c85dec9ab (patch)
tree5e83fc3695b8a968d219b14f38d3429a0de04d8e /applications/subghz/scenes
parent5c45250dd2c60f2f3a38849a6253f58a71059598 (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.c83
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;
}