Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev' into release-candidate
Browse files Browse the repository at this point in the history
  • Loading branch information
skotopes committed Nov 26, 2021
2 parents a5fa342 + 7c0943e commit b0b2039
Show file tree
Hide file tree
Showing 318 changed files with 3,907 additions and 1,135 deletions.
13 changes: 9 additions & 4 deletions applications/applications.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ extern int32_t vibro_test_app(void* p);

// Plugins
extern int32_t music_player_app(void* p);
extern int32_t snake_game_app(void* p);

// On system start hooks declaration
extern void bt_cli_init();
Expand Down Expand Up @@ -147,6 +148,10 @@ const FlipperApplication FLIPPER_APPS[] = {
{.app = ibutton_app, .name = "iButton", .stack_size = 2048, .icon = &A_iButton_14},
#endif

#ifdef APP_BAD_USB
{.app = bad_usb_app, .name = "Bad USB", .stack_size = 2048, .icon = &A_BadUsb_14},
#endif

};

const size_t FLIPPER_APPS_COUNT = sizeof(FLIPPER_APPS) / sizeof(FlipperApplication);
Expand Down Expand Up @@ -203,6 +208,10 @@ const FlipperApplication FLIPPER_PLUGINS[] = {
#ifdef APP_MUSIC_PLAYER
{.app = music_player_app, .name = "Music Player", .stack_size = 1024, .icon = &A_Plugins_14},
#endif

#ifdef APP_SNAKE_GAME
{.app = snake_game_app, .name = "Snake Game", .stack_size = 1024, .icon = &A_Plugins_14},
#endif
};

const size_t FLIPPER_PLUGINS_COUNT = sizeof(FLIPPER_PLUGINS) / sizeof(FlipperApplication);
Expand Down Expand Up @@ -233,10 +242,6 @@ const FlipperApplication FLIPPER_DEBUG_APPS[] = {
{.app = usb_mouse_app, .name = "USB Mouse demo", .stack_size = 1024, .icon = NULL},
#endif

#ifdef APP_BAD_USB
{.app = bad_usb_app, .name = "Bad USB test", .stack_size = 2048, .icon = NULL},
#endif

#ifdef APP_UART_ECHO
{.app = uart_echo_app, .name = "Uart Echo", .stack_size = 2048, .icon = NULL},
#endif
Expand Down
6 changes: 6 additions & 0 deletions applications/applications.mk
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ APP_ABOUT = 1

# Plugins
APP_MUSIC_PLAYER = 1
APP_SNAKE_GAME = 1

# Debug
APP_ACCESSOR = 1
Expand Down Expand Up @@ -185,6 +186,11 @@ CFLAGS += -DAPP_MUSIC_PLAYER
SRV_GUI = 1
endif

APP_SNAKE_GAME ?= 0
ifeq ($(APP_SNAKE_GAME), 1)
CFLAGS += -DAPP_SNAKE_GAME
SRV_GUI = 1
endif

APP_IBUTTON ?= 0
ifeq ($(APP_IBUTTON), 1)
Expand Down
85 changes: 85 additions & 0 deletions applications/bad_usb/bad_usb_app.c
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;
}
11 changes: 11 additions & 0 deletions applications/bad_usb/bad_usb_app.h
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
35 changes: 35 additions & 0 deletions applications/bad_usb/bad_usb_app_i.h
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;
Loading

0 comments on commit b0b2039

Please sign in to comment.