diff --git a/applications/main/bad_kb/bad_kb_app.c b/applications/main/bad_kb/bad_kb_app.c index f7c9fcd41..816578f00 100644 --- a/applications/main/bad_kb/bad_kb_app.c +++ b/applications/main/bad_kb/bad_kb_app.c @@ -151,7 +151,8 @@ BadKbApp* bad_kb_app_alloc(char* arg) { app->error = BadKbAppErrorCloseRpc; scene_manager_next_scene(app->scene_manager, BadKbSceneError); } else { - bad_kb_connection_init(app); + app->bt_init_thread = furi_thread_alloc_ex("BadKbBtInit", 512, (FuriThreadCallback)bad_kb_connection_init, app); + furi_thread_start(app->bt_init_thread); if(!furi_string_empty(app->file_path)) { app->bad_kb_script = bad_kb_script_open(app->file_path, app->is_bt ? app->bt : NULL); bad_kb_script_set_keyboard_layout(app->bad_kb_script, app->keyboard_layout); @@ -173,6 +174,7 @@ void bad_kb_app_free(BadKbApp* app) { app->bad_kb_script = NULL; } + furi_thread_join(app->bt_init_thread); bad_kb_connection_deinit(app); // Views diff --git a/applications/main/bad_kb/bad_kb_app_i.h b/applications/main/bad_kb/bad_kb_app_i.h index 996fda4da..7c81144f6 100644 --- a/applications/main/bad_kb/bad_kb_app_i.h +++ b/applications/main/bad_kb/bad_kb_app_i.h @@ -79,6 +79,8 @@ struct BadKbApp { bool connection_init; FuriHalUsbInterface* usb_prev_mode; GapPairing bt_prev_mode; + + FuriThread *bt_init_thread; }; typedef enum { diff --git a/applications/main/bad_kb/bad_kb_script.c b/applications/main/bad_kb/bad_kb_script.c index 469d4169a..661745cd6 100644 --- a/applications/main/bad_kb/bad_kb_script.c +++ b/applications/main/bad_kb/bad_kb_script.c @@ -646,7 +646,7 @@ void bad_kb_config_switch_bonding_mode(BadKbApp *app) { } } -void bad_kb_connection_init(BadKbApp* app) { +int32_t bad_kb_connection_init(BadKbApp* app) { app->usb_prev_mode = furi_hal_usb_get_config(); furi_hal_usb_set_config(NULL, NULL); @@ -674,6 +674,8 @@ void bad_kb_connection_init(BadKbApp* app) { } app->connection_init = true; + + return 0; } void bad_kb_connection_deinit(BadKbApp* app) { diff --git a/applications/main/bad_kb/bad_kb_script.h b/applications/main/bad_kb/bad_kb_script.h index 2f9097cb7..ad8618658 100644 --- a/applications/main/bad_kb/bad_kb_script.h +++ b/applications/main/bad_kb/bad_kb_script.h @@ -38,7 +38,7 @@ void bad_kb_config_switch_mode(BadKbApp* app); void bad_kb_config_switch_bonding_mode(BadKbApp *app); -void bad_kb_connection_init(BadKbApp* app); +int32_t bad_kb_connection_init(BadKbApp* app); void bad_kb_connection_deinit(BadKbApp* app);