From 15845602bf19a3fd500f06a9db2bdda0238513d4 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sun, 11 Jun 2023 20:55:29 +0100 Subject: [PATCH] BadKB edit name and mac in temp buffers + cleanup --- .../main/bad_kb/helpers/ducky_script.h | 2 ++ .../bad_kb/scenes/bad_kb_scene_config_mac.c | 20 +++++++++++-------- .../bad_kb/scenes/bad_kb_scene_config_name.c | 5 ++++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/applications/main/bad_kb/helpers/ducky_script.h b/applications/main/bad_kb/helpers/ducky_script.h index cbfc6c8c8..5f3e372ed 100644 --- a/applications/main/bad_kb/helpers/ducky_script.h +++ b/applications/main/bad_kb/helpers/ducky_script.h @@ -143,6 +143,8 @@ struct BadKbApp { VariableItemList* var_item_list; TextInput* text_input; ByteInput* byte_input; + char bt_name_buf[BAD_KB_NAME_LEN]; + uint8_t bt_mac_buf[BAD_KB_MAC_LEN]; BadKbAppError error; FuriString* file_path; diff --git a/applications/main/bad_kb/scenes/bad_kb_scene_config_mac.c b/applications/main/bad_kb/scenes/bad_kb_scene_config_mac.c index e49fdbb56..bb0935285 100644 --- a/applications/main/bad_kb/scenes/bad_kb_scene_config_mac.c +++ b/applications/main/bad_kb/scenes/bad_kb_scene_config_mac.c @@ -10,17 +10,20 @@ void bad_kb_scene_config_mac_byte_input_callback(void* context) { void bad_kb_scene_config_mac_on_enter(void* context) { BadKbApp* bad_kb = context; - - // Setup view ByteInput* byte_input = bad_kb->byte_input; + + memmove(bad_kb->bt_mac_buf, bad_kb->config.bt_mac, GAP_MAC_ADDR_SIZE); + byte_input_set_header_text(byte_input, "Set BT MAC address"); + byte_input_set_result_callback( byte_input, bad_kb_scene_config_mac_byte_input_callback, NULL, bad_kb, - bad_kb->config.bt_mac, + bad_kb->bt_mac_buf, GAP_MAC_ADDR_SIZE); + view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewByteInput); } @@ -29,19 +32,20 @@ bool bad_kb_scene_config_mac_on_event(void* context, SceneManagerEvent event) { bool consumed = false; if(event.type == SceneManagerEventTypeCustom) { + consumed = true; if(event.event == BadKbAppCustomEventByteInputDone) { + memmove(bad_kb->config.bt_mac, bad_kb->bt_mac_buf, GAP_MAC_ADDR_SIZE); bt_set_profile_mac_address(bad_kb->bt, bad_kb->config.bt_mac); - scene_manager_previous_scene(bad_kb->scene_manager); - consumed = true; } + scene_manager_previous_scene(bad_kb->scene_manager); } return consumed; } void bad_kb_scene_config_mac_on_exit(void* context) { BadKbApp* bad_kb = context; + ByteInput* byte_input = bad_kb->byte_input; - // Clear view - byte_input_set_result_callback(bad_kb->byte_input, NULL, NULL, NULL, NULL, 0); - byte_input_set_header_text(bad_kb->byte_input, ""); + byte_input_set_result_callback(byte_input, NULL, NULL, NULL, NULL, 0); + byte_input_set_header_text(byte_input, ""); } diff --git a/applications/main/bad_kb/scenes/bad_kb_scene_config_name.c b/applications/main/bad_kb/scenes/bad_kb_scene_config_name.c index fc8a8e22a..ea92e74cc 100644 --- a/applications/main/bad_kb/scenes/bad_kb_scene_config_name.c +++ b/applications/main/bad_kb/scenes/bad_kb_scene_config_name.c @@ -10,13 +10,15 @@ void bad_kb_scene_config_name_on_enter(void* context) { BadKbApp* bad_kb = context; TextInput* text_input = bad_kb->text_input; + strlcpy(bad_kb->bt_name_buf, bad_kb->config.bt_name, BAD_KB_ADV_NAME_MAX_LEN); + text_input_set_header_text(text_input, "Set BT device name"); text_input_set_result_callback( text_input, bad_kb_scene_config_name_text_input_callback, bad_kb, - bad_kb->config.bt_name, + bad_kb->bt_name_buf, BAD_KB_ADV_NAME_MAX_LEN, true); @@ -30,6 +32,7 @@ bool bad_kb_scene_config_name_on_event(void* context, SceneManagerEvent event) { if(event.type == SceneManagerEventTypeCustom) { consumed = true; if(event.event == BadKbAppCustomEventTextInputDone) { + strlcpy(bad_kb->config.bt_name, bad_kb->bt_name_buf, BAD_KB_ADV_NAME_MAX_LEN); bt_set_profile_adv_name(bad_kb->bt, bad_kb->config.bt_name); } scene_manager_previous_scene(bad_kb->scene_manager);