mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-07-09 23:18:10 -07:00
BadKB store prev config separately
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user