forked from flipperdevices/flipperzero-firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/dev' into release-candidate
- Loading branch information
Showing
318 changed files
with
3,907 additions
and
1,135 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
#include "bad_usb_app_i.h" | ||
#include <furi.h> | ||
#include <furi-hal.h> | ||
|
||
static bool bad_usb_app_custom_event_callback(void* context, uint32_t event) { | ||
furi_assert(context); | ||
BadUsbApp* app = context; | ||
return scene_manager_handle_custom_event(app->scene_manager, event); | ||
} | ||
|
||
static bool bad_usb_app_back_event_callback(void* context) { | ||
furi_assert(context); | ||
BadUsbApp* app = context; | ||
return scene_manager_handle_back_event(app->scene_manager); | ||
} | ||
|
||
static void bad_usb_app_tick_event_callback(void* context) { | ||
furi_assert(context); | ||
BadUsbApp* app = context; | ||
scene_manager_handle_tick_event(app->scene_manager); | ||
} | ||
|
||
BadUsbApp* bad_usb_app_alloc() { | ||
BadUsbApp* app = furi_alloc(sizeof(BadUsbApp)); | ||
|
||
app->gui = furi_record_open("gui"); | ||
app->notifications = furi_record_open("notification"); | ||
app->dialogs = furi_record_open("dialogs"); | ||
|
||
app->view_dispatcher = view_dispatcher_alloc(); | ||
app->scene_manager = scene_manager_alloc(&bad_usb_scene_handlers, app); | ||
view_dispatcher_enable_queue(app->view_dispatcher); | ||
view_dispatcher_set_event_callback_context(app->view_dispatcher, app); | ||
view_dispatcher_set_tick_event_callback( | ||
app->view_dispatcher, bad_usb_app_tick_event_callback, 500); | ||
|
||
view_dispatcher_set_custom_event_callback( | ||
app->view_dispatcher, bad_usb_app_custom_event_callback); | ||
view_dispatcher_set_navigation_event_callback( | ||
app->view_dispatcher, bad_usb_app_back_event_callback); | ||
|
||
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen); | ||
|
||
app->bad_usb_view = bad_usb_alloc(); | ||
view_dispatcher_add_view( | ||
app->view_dispatcher, BadUsbAppViewWork, bad_usb_get_view(app->bad_usb_view)); | ||
|
||
scene_manager_next_scene(app->scene_manager, BadUsbAppViewFileSelect); | ||
|
||
return app; | ||
} | ||
|
||
void bad_usb_app_free(BadUsbApp* app) { | ||
furi_assert(app); | ||
|
||
// Views | ||
view_dispatcher_remove_view(app->view_dispatcher, BadUsbAppViewFileSelect); | ||
view_dispatcher_remove_view(app->view_dispatcher, BadUsbAppViewWork); | ||
bad_usb_free(app->bad_usb_view); | ||
|
||
// View dispatcher | ||
view_dispatcher_free(app->view_dispatcher); | ||
scene_manager_free(app->scene_manager); | ||
|
||
// Close records | ||
furi_record_close("gui"); | ||
furi_record_close("notification"); | ||
furi_record_close("dialogs"); | ||
|
||
free(app); | ||
} | ||
|
||
int32_t bad_usb_app(void* p) { | ||
UsbInterface* usb_mode_prev = furi_hal_usb_get_config(); | ||
furi_hal_usb_set_config(&usb_hid); | ||
|
||
BadUsbApp* bad_usb_app = bad_usb_app_alloc(); | ||
|
||
view_dispatcher_run(bad_usb_app->view_dispatcher); | ||
|
||
furi_hal_usb_set_config(usb_mode_prev); | ||
bad_usb_app_free(bad_usb_app); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#pragma once | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
typedef struct BadUsbApp BadUsbApp; | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
#pragma once | ||
|
||
#include "bad_usb_app.h" | ||
#include "scenes/bad_usb_scene.h" | ||
#include "bad_usb_script.h" | ||
|
||
#include <gui/gui.h> | ||
#include <gui/view_dispatcher.h> | ||
#include <gui/scene_manager.h> | ||
#include <gui/modules/submenu.h> | ||
#include <dialogs/dialogs.h> | ||
#include <notification/notification-messages.h> | ||
#include <gui/modules/variable-item-list.h> | ||
#include "views/bad_usb_view.h" | ||
|
||
#define BAD_USB_APP_PATH_FOLDER "/any/badusb" | ||
#define BAD_USB_APP_EXTENSION ".txt" | ||
#define BAD_USB_FILE_NAME_LEN 40 | ||
|
||
struct BadUsbApp { | ||
Gui* gui; | ||
ViewDispatcher* view_dispatcher; | ||
SceneManager* scene_manager; | ||
NotificationApp* notifications; | ||
DialogsApp* dialogs; | ||
|
||
char file_name[BAD_USB_FILE_NAME_LEN + 1]; | ||
BadUsb* bad_usb_view; | ||
BadUsbScript* bad_usb_script; | ||
}; | ||
|
||
typedef enum { | ||
BadUsbAppViewFileSelect, | ||
BadUsbAppViewWork, | ||
} BadUsbAppView; |
Oops, something went wrong.