From 19038dce6149e2869203fc262a99f34461d83390 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 12 Jun 2023 15:55:23 +0100 Subject: [PATCH] BadKB store prev config separately --- applications/main/bad_kb/bad_kb_app.c | 9 ++++----- applications/main/bad_kb/helpers/ducky_script.c | 13 +++++++------ applications/main/bad_kb/helpers/ducky_script.h | 8 +++++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/applications/main/bad_kb/bad_kb_app.c b/applications/main/bad_kb/bad_kb_app.c index 084683468..d2044afe4 100644 --- a/applications/main/bad_kb/bad_kb_app.c +++ b/applications/main/bad_kb/bad_kb_app.c @@ -153,12 +153,11 @@ BadKbApp* bad_kb_app_alloc(char* arg) { bad_kb_config_adjust(&app->config); // Save prev config - BadKbConfig* prev = &app->prev_config; - prev->usb_mode = furi_hal_usb_get_config(); + app->prev_usb_mode = furi_hal_usb_get_config(); FuriHalBtProfile kbd = FuriHalBtProfileHidKeyboard; - prev->bt_mode = furi_hal_bt_get_profile_pairing_method(kbd); - strcpy(prev->bt_name, furi_hal_bt_get_profile_adv_name(kbd)); - memcpy(prev->bt_mac, furi_hal_bt_get_profile_mac_addr(kbd), BAD_KB_MAC_LEN); + app->prev_bt_mode = furi_hal_bt_get_profile_pairing_method(kbd); + memcpy(app->prev_bt_mac, furi_hal_bt_get_profile_mac_addr(kbd), BAD_KB_MAC_LEN); + strlcpy(app->prev_bt_name, furi_hal_bt_get_profile_adv_name(kbd), BAD_KB_NAME_LEN); // Adjust BT remember MAC to be serial MAC +2 memcpy(BAD_KB_BOUND_MAC, furi_hal_version_get_ble_mac(), BAD_KB_MAC_LEN); diff --git a/applications/main/bad_kb/helpers/ducky_script.c b/applications/main/bad_kb/helpers/ducky_script.c index 04000771d..75040d98d 100644 --- a/applications/main/bad_kb/helpers/ducky_script.c +++ b/applications/main/bad_kb/helpers/ducky_script.c @@ -565,19 +565,20 @@ int32_t bad_kb_conn_apply(BadKbApp* app) { void bad_kb_conn_reset(BadKbApp* app) { if(app->conn_mode == BadKbConnModeBt) { + // TODO: maybe also restore BT profile? bt_disconnect(app->bt); furi_delay_ms(200); bt_keys_storage_set_default_path(app->bt); - furi_hal_bt_set_profile_adv_name(FuriHalBtProfileHidKeyboard, app->prev_config.bt_name); - furi_hal_bt_set_profile_mac_addr(FuriHalBtProfileHidKeyboard, app->prev_config.bt_mac); - furi_hal_bt_set_profile_pairing_method( - FuriHalBtProfileHidKeyboard, app->prev_config.bt_mode); + FuriHalBtProfile kbd = FuriHalBtProfileHidKeyboard; + furi_hal_bt_set_profile_mac_addr(kbd, app->prev_bt_mac); + furi_hal_bt_set_profile_adv_name(kbd, app->prev_bt_name); + furi_hal_bt_set_profile_pairing_method(kbd, app->prev_bt_mode); furi_check(bt_set_profile(app->bt, BtProfileSerial)); bt_enable_peer_key_update(app->bt); } else if(app->conn_mode == BadKbConnModeUsb) { - // TODO: maybe also restore USB config context? - furi_check(furi_hal_usb_set_config(app->prev_config.usb_mode, NULL)); + // TODO: maybe also restore USB context? + furi_check(furi_hal_usb_set_config(app->prev_usb_mode, NULL)); } app->conn_mode = BadKbConnModeNone; diff --git a/applications/main/bad_kb/helpers/ducky_script.h b/applications/main/bad_kb/helpers/ducky_script.h index 89b72bf99..358617903 100644 --- a/applications/main/bad_kb/helpers/ducky_script.h +++ b/applications/main/bad_kb/helpers/ducky_script.h @@ -115,10 +115,8 @@ typedef enum { } BadKbAppError; typedef struct { - GapPairing bt_mode; char bt_name[BAD_KB_NAME_LEN]; uint8_t bt_mac[BAD_KB_MAC_LEN]; - FuriHalUsbInterface* usb_mode; FuriHalUsbHidConfig usb_cfg; } BadKbConfig; @@ -154,13 +152,17 @@ struct BadKbApp { bool bt_remember; BadKbConfig config; // User options BadKbConfig id_config; // ID and BT_ID values - BadKbConfig prev_config; // State to restore at exit bool set_usb_id; bool set_bt_id; bool has_usb_id; bool has_bt_id; + GapPairing prev_bt_mode; + char prev_bt_name[BAD_KB_NAME_LEN]; + uint8_t prev_bt_mac[BAD_KB_MAC_LEN]; + FuriHalUsbInterface* prev_usb_mode; + FuriHalUsbHidConfig* hid_cfg; BadKbConnMode conn_mode; FuriThread* conn_init_thread;