faster badkb starting: bt init using thread

This commit is contained in:
yocvito
2023-02-28 22:39:02 +01:00
parent 30c603ee2d
commit e81befe315
4 changed files with 9 additions and 3 deletions
+3 -1
View File
@@ -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
+2
View File
@@ -79,6 +79,8 @@ struct BadKbApp {
bool connection_init;
FuriHalUsbInterface* usb_prev_mode;
GapPairing bt_prev_mode;
FuriThread *bt_init_thread;
};
typedef enum {
+3 -1
View File
@@ -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) {
+1 -1
View File
@@ -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);