|
@@ -115,8 +115,12 @@ BadUsbApp* bad_usb_app_alloc(char* arg) {
|
|
|
|
|
|
|
|
if(furi_hal_usb_is_locked()) {
|
|
if(furi_hal_usb_is_locked()) {
|
|
|
app->error = BadUsbAppErrorCloseRpc;
|
|
app->error = BadUsbAppErrorCloseRpc;
|
|
|
|
|
+ app->usb_if_prev = NULL;
|
|
|
scene_manager_next_scene(app->scene_manager, BadUsbSceneError);
|
|
scene_manager_next_scene(app->scene_manager, BadUsbSceneError);
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ app->usb_if_prev = furi_hal_usb_get_config();
|
|
|
|
|
+ furi_check(furi_hal_usb_set_config(NULL, NULL));
|
|
|
|
|
+
|
|
|
if(!furi_string_empty(app->file_path)) {
|
|
if(!furi_string_empty(app->file_path)) {
|
|
|
app->bad_usb_script = bad_usb_script_open(app->file_path);
|
|
app->bad_usb_script = bad_usb_script_open(app->file_path);
|
|
|
bad_usb_script_set_keyboard_layout(app->bad_usb_script, app->keyboard_layout);
|
|
bad_usb_script_set_keyboard_layout(app->bad_usb_script, app->keyboard_layout);
|
|
@@ -138,6 +142,10 @@ void bad_usb_app_free(BadUsbApp* app) {
|
|
|
app->bad_usb_script = NULL;
|
|
app->bad_usb_script = NULL;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if(app->usb_if_prev) {
|
|
|
|
|
+ furi_check(furi_hal_usb_set_config(app->usb_if_prev, NULL));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// Views
|
|
// Views
|
|
|
view_dispatcher_remove_view(app->view_dispatcher, BadUsbAppViewWork);
|
|
view_dispatcher_remove_view(app->view_dispatcher, BadUsbAppViewWork);
|
|
|
bad_usb_free(app->bad_usb_view);
|
|
bad_usb_free(app->bad_usb_view);
|