From 4b175323ec230de1373fc1293a671765c1b28527 Mon Sep 17 00:00:00 2001 From: r3df0xx Date: Fri, 15 Apr 2022 20:35:13 +0300 Subject: [PATCH] Seed input. Trying to create. --- .../subghz/helpers/subghz_custom_event.h | 1 + .../subghz/scenes/subghz_scene_config.h | 3 +- .../scenes/subghz_scene_receiver_info.c | 8 ---- .../subghz/scenes/subghz_scene_saved_menu.c | 15 +++++++ .../subghz/scenes/subghz_scene_seed.c | 43 +++++++++++++++++++ 5 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 applications/subghz/scenes/subghz_scene_seed.c diff --git a/applications/subghz/helpers/subghz_custom_event.h b/applications/subghz/helpers/subghz_custom_event.h index 97920015a..1d6542ea2 100644 --- a/applications/subghz/helpers/subghz_custom_event.h +++ b/applications/subghz/helpers/subghz_custom_event.h @@ -13,6 +13,7 @@ typedef enum { SubGhzCustomEventSceneReceiverInfoTxStart, SubGhzCustomEventSceneReceiverInfoTxStop, SubGhzCustomEventSceneReceiverInfoSave, + SubGhzCustomEventByteInputDone, SubGhzCustomEventSceneSaveName, SubGhzCustomEventSceneSaveSuccess, SubGhzCustomEventSceneShowErrorBack, diff --git a/applications/subghz/scenes/subghz_scene_config.h b/applications/subghz/scenes/subghz_scene_config.h index 71cd26689..f6d43cf09 100644 --- a/applications/subghz/scenes/subghz_scene_config.h +++ b/applications/subghz/scenes/subghz_scene_config.h @@ -21,4 +21,5 @@ ADD_SCENE(subghz, frequency_analyzer, FrequencyAnalyzer) ADD_SCENE(subghz, read_raw, ReadRAW) ADD_SCENE(subghz, more_raw, MoreRAW) ADD_SCENE(subghz, delete_raw, DeleteRAW) -ADD_SCENE(subghz, need_saving, NeedSaving) \ No newline at end of file +ADD_SCENE(subghz, need_saving, NeedSaving) +ADD_SCENE(subghz, seed, Seed) \ No newline at end of file diff --git a/applications/subghz/scenes/subghz_scene_receiver_info.c b/applications/subghz/scenes/subghz_scene_receiver_info.c index 6b27cdb1d..92fe7ca5e 100644 --- a/applications/subghz/scenes/subghz_scene_receiver_info.c +++ b/applications/subghz/scenes/subghz_scene_receiver_info.c @@ -94,14 +94,6 @@ void subghz_scene_receiver_info_on_enter(void* context) { subghz_scene_receiver_info_callback, subghz); } - if(strcmp(subghz->txrx->decoder_result->protocol->name, "Faac SLH") == 0) { - widget_add_button_element( - subghz->widget, - GuiButtonTypeLeft, - "Seed", - subghz_scene_receiver_info_callback, - subghz); - } } else { widget_add_icon_element(subghz->widget, 32, 12, &I_DolphinFirstStart7_61x51); widget_add_string_element( diff --git a/applications/subghz/scenes/subghz_scene_saved_menu.c b/applications/subghz/scenes/subghz_scene_saved_menu.c index a65830f4b..74531c452 100644 --- a/applications/subghz/scenes/subghz_scene_saved_menu.c +++ b/applications/subghz/scenes/subghz_scene_saved_menu.c @@ -4,6 +4,7 @@ enum SubmenuIndex { SubmenuIndexEmulate, SubmenuIndexEdit, SubmenuIndexDelete, + SubmenuIndexSeed }; void subghz_scene_saved_menu_submenu_callback(void* context, uint32_t index) { @@ -34,6 +35,15 @@ void subghz_scene_saved_menu_on_enter(void* context) { subghz_scene_saved_menu_submenu_callback, subghz); + if(strcmp(subghz->txrx->decoder_result->protocol->name, "Faac SLH") == 0) { + submenu_add_item( + subghz->submenu, + "Input Seed", + SubmenuIndexSeed, + subghz_scene_saved_menu_submenu_callback, + subghz); + } + submenu_set_selected_item( subghz->submenu, scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneSavedMenu)); @@ -60,6 +70,11 @@ bool subghz_scene_saved_menu_on_event(void* context, SceneManagerEvent event) { subghz->scene_manager, SubGhzSceneSavedMenu, SubmenuIndexEdit); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName); return true; + } else if(event.event == SubmenuIndexSeed) { + scene_manager_set_scene_state( + subghz->scene_manager, SubGhzSceneSavedMenu, SubmenuIndexSeed); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSeed); + return true; } } return false; diff --git a/applications/subghz/scenes/subghz_scene_seed.c b/applications/subghz/scenes/subghz_scene_seed.c new file mode 100644 index 000000000..9aa3232b6 --- /dev/null +++ b/applications/subghz/scenes/subghz_scene_seed.c @@ -0,0 +1,43 @@ +#include "../subghz_i.h" + +void subghz_scene_seed_byte_input_callback(void* context) { + SubGhz* subghz = (SubGhz*)context; + + view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); +} + +void subghz_scene_seed_on_enter(void* context) { + SubGhz* subghz = (SubGhz*) context; + + // Setup view + ByteInput* byte_input = subghz->byte_input; + byte_input_set_header_text(byte_input, "Enter seed in hex"); + byte_input_set_result_callback( + byte_input, + subghz_scene_seed_byte_input_callback, + NULL, + subghz, + subghz->txrx->seed_data->seed, + subghz->txrx->seed_data->seed_len); + view_dispatcher_swtich_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); +} + +bool subghz_scene_seed_on_event(void* context, SceneManagerEvent event) { + SubGhz* subghz = (SubGhz*)context; + + if(event.type == SceneManagerEventTypeCustom) { + if(event.event == SubGhzCustomEventByteInputDone) { + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTransmitter); + return true; + } + } + return false; +} + +void subghz_scene_seed_on_exit(void* context) { + SubGhz* subghz = (SubGhz*)context; + + // Clear view + byte_input_set_result_callback(subghz->byte_input, NULL, NULL, NULL, NULL, 0); + byte_input_set_header_text(subghz->byte_input, ""); +} \ No newline at end of file