Who tf wrote this, and why? | Biggest stability update ever
Bro, what the fuck is this bullshit? I swear imma go cry if I see more shit like that...
@@ -3,28 +3,19 @@ App(
|
||||
name="Basic applications for main menu",
|
||||
apptype=FlipperAppType.METAPACKAGE,
|
||||
provides=[
|
||||
"clock_loader",
|
||||
# "gpio",
|
||||
"gpio_loader",
|
||||
# "ibutton",
|
||||
"ibutton_loader",
|
||||
# "infrared",
|
||||
"infrared_loader",
|
||||
"gpio",
|
||||
"ibutton",
|
||||
"infrared",
|
||||
"lfrfid",
|
||||
# "lfrfid_loader",
|
||||
"nfc",
|
||||
"subghz",
|
||||
"sub_playlist_loader",
|
||||
#"bad_usb",
|
||||
"bad_usb_loader",
|
||||
# "u2f",
|
||||
"u2f_loader",
|
||||
"bad_usb",
|
||||
"u2f",
|
||||
"fap_loader",
|
||||
"sub_playlist",
|
||||
"archive",
|
||||
# "Clock",
|
||||
#"SubGHz_Remote",
|
||||
"SubGHz_Remote_loader",
|
||||
# "Spectrum_Analyzer",
|
||||
"clock",
|
||||
"unirfremix",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -45,55 +45,10 @@ static void archive_run_in_app(ArchiveBrowserView* browser, ArchiveFile_t* selec
|
||||
if(param != NULL) {
|
||||
param++;
|
||||
}
|
||||
|
||||
if(strcmp(flipper_app_name[selected->type], "U2F") == 0) {
|
||||
char* tmpType = "/ext/apps/Main/U2F.fap¯";
|
||||
char* result =
|
||||
malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1);
|
||||
|
||||
strcpy(result, tmpType);
|
||||
strcat(result, furi_string_get_cstr(selected->path));
|
||||
status = loader_start(loader, "Applications", result);
|
||||
} else {
|
||||
status = loader_start(loader, flipper_app_name[selected->type], param);
|
||||
}
|
||||
status = loader_start(loader, flipper_app_name[selected->type], param);
|
||||
} else {
|
||||
if(strcmp(flipper_app_name[selected->type], "iButton") == 0) {
|
||||
char* tmpType = "/ext/apps/Main/ibutton.fap¯";
|
||||
char* result =
|
||||
malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1);
|
||||
|
||||
strcpy(result, tmpType);
|
||||
strcat(result, furi_string_get_cstr(selected->path));
|
||||
status = loader_start(loader, "Applications", result);
|
||||
} else if(strcmp(flipper_app_name[selected->type], "Bad USB") == 0) {
|
||||
char* tmpType = "/ext/apps/Main/bad_usb.fap¯";
|
||||
char* result =
|
||||
malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1);
|
||||
|
||||
strcpy(result, tmpType);
|
||||
strcat(result, furi_string_get_cstr(selected->path));
|
||||
status = loader_start(loader, "Applications", result);
|
||||
// } else if(strcmp(flipper_app_name[selected->type], "125 kHz RFID") == 0) {
|
||||
// char* tmpType = "/ext/apps/Main/lfrfid.fap¯";
|
||||
// char* result =
|
||||
// malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1);
|
||||
|
||||
// strcpy(result, tmpType);
|
||||
// strcat(result, furi_string_get_cstr(selected->path));
|
||||
// status = loader_start(loader, "Applications", result);
|
||||
} else if(strcmp(flipper_app_name[selected->type], "Infrared") == 0) {
|
||||
char* tmpType = "/ext/apps/Main/infrared.fap¯";
|
||||
char* result =
|
||||
malloc(strlen(tmpType) + strlen(furi_string_get_cstr(selected->path)) + 1);
|
||||
|
||||
strcpy(result, tmpType);
|
||||
strcat(result, furi_string_get_cstr(selected->path));
|
||||
status = loader_start(loader, "Applications", result);
|
||||
} else {
|
||||
status = loader_start(
|
||||
loader, flipper_app_name[selected->type], furi_string_get_cstr(selected->path));
|
||||
}
|
||||
status = loader_start(
|
||||
loader, flipper_app_name[selected->type], furi_string_get_cstr(selected->path));
|
||||
}
|
||||
|
||||
if(status != LoaderStatusOk) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
App(
|
||||
appid="bad_usb",
|
||||
name="Bad USB",
|
||||
apptype=FlipperAppType.EXTERNAL,
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="bad_usb_app",
|
||||
cdefines=["APP_BAD_USB"],
|
||||
requires=[
|
||||
@@ -9,10 +9,7 @@ App(
|
||||
"dialogs",
|
||||
],
|
||||
stack_size=2 * 1024,
|
||||
# icon="A_BadUsb_14",
|
||||
icon="A_BadUsb_14",
|
||||
order=70,
|
||||
fap_category="Main",
|
||||
fap_icon="badusb_10px.png",
|
||||
fap_icon_assets="images",
|
||||
fap_libs=["assets"],
|
||||
)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "bad_usb_script.h"
|
||||
|
||||
#include <gui/gui.h>
|
||||
#include <bad_usb_icons.h>
|
||||
#include <assets_icons.h>
|
||||
#include <gui/view_dispatcher.h>
|
||||
#include <gui/scene_manager.h>
|
||||
#include <gui/modules/submenu.h>
|
||||
|
||||
@@ -462,14 +462,7 @@ static int32_t ducky_script_execute_next(BadUsbScript* bad_usb, File* script_fil
|
||||
return 0;
|
||||
} else if(delay_val < 0) {
|
||||
bad_usb->st.error_line = bad_usb->st.line_cur;
|
||||
if(delay_val == SCRIPT_STATE_NEXT_LINE) {
|
||||
snprintf(
|
||||
bad_usb->st.error, sizeof(bad_usb->st.error), "Forbidden empty line");
|
||||
FURI_LOG_E(
|
||||
WORKER_TAG, "Forbidden empty line at line %u", bad_usb->st.line_cur);
|
||||
} else {
|
||||
FURI_LOG_E(WORKER_TAG, "Unknown command at line %u", bad_usb->st.line_cur);
|
||||
}
|
||||
FURI_LOG_E(WORKER_TAG, "Unknown command at line %u", bad_usb->st.line_cur);
|
||||
return SCRIPT_STATE_ERROR;
|
||||
} else {
|
||||
return (delay_val + bad_usb->defdelay);
|
||||
|
||||
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 147 B |
@@ -2,7 +2,7 @@
|
||||
#include "../bad_usb_script.h"
|
||||
#include <toolbox/path.h>
|
||||
#include <gui/elements.h>
|
||||
#include <bad_usb_icons.h>
|
||||
#include <assets_icons.h>
|
||||
#include "../../../settings/desktop_settings/desktop_settings_app.h"
|
||||
|
||||
#define MAX_NAME_LEN 64
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
App(
|
||||
appid="bad_usb_loader",
|
||||
name="Bad USB",
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="bad_usb_loader_app",
|
||||
requires=[
|
||||
"gui",
|
||||
"dialogs",
|
||||
],
|
||||
stack_size=int(2 * 1024),
|
||||
icon="A_BadUsb_14",
|
||||
order=70,
|
||||
link="/ext/apps/Main/bad_usb.fap",
|
||||
)
|
||||
@@ -1,9 +0,0 @@
|
||||
#include <applications/services/loader/loader_i.h>
|
||||
|
||||
#define TAG "bad_usb_loader_app"
|
||||
|
||||
int32_t bad_usb_loader_app(void* p) {
|
||||
UNUSED(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,14 +0,0 @@
|
||||
App(
|
||||
appid="Clock",
|
||||
name="Clock",
|
||||
apptype=FlipperAppType.EXTERNAL,
|
||||
entry_point="clock_app",
|
||||
cdefines=["APP_CLOCK"],
|
||||
requires=["gui"],
|
||||
# icon="A_Clock_14",
|
||||
stack_size=2 * 1024,
|
||||
order=9,
|
||||
fap_icon="ClockIcon.png",
|
||||
fap_category="Main",
|
||||
fap_icon_assets="icons",
|
||||
)
|
||||
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 113 B |
|
Before Width: | Height: | Size: 116 B |
|
Before Width: | Height: | Size: 116 B |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
12
applications/main/clock_app/application.fam
Normal file
@@ -0,0 +1,12 @@
|
||||
App(
|
||||
appid="clock",
|
||||
name="Clock",
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="clock_app",
|
||||
cdefines=["APP_CLOCK"],
|
||||
requires=["gui"],
|
||||
icon="A_Clock_14",
|
||||
stack_size=2 * 1024,
|
||||
order=81,
|
||||
)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
App(
|
||||
appid="clock_loader",
|
||||
name="Clock",
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="clock_loader_app",
|
||||
requires=["gui"],
|
||||
stack_size=int(1.5 * 1024),
|
||||
icon="A_Clock_14",
|
||||
order=9,
|
||||
link="/ext/apps/Main/Clock.fap",
|
||||
)
|
||||
@@ -1,9 +0,0 @@
|
||||
#include <applications/services/loader/loader_i.h>
|
||||
|
||||
#define TAG "clock_loader_app"
|
||||
|
||||
int32_t clock_loader_app(void* p) {
|
||||
UNUSED(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -17,7 +17,6 @@ struct FapLoader {
|
||||
DialogsApp* dialogs;
|
||||
Gui* gui;
|
||||
FuriString* fap_path;
|
||||
FuriString* fap_args;
|
||||
ViewDispatcher* view_dispatcher;
|
||||
Loading* loading;
|
||||
};
|
||||
@@ -105,26 +104,14 @@ static bool fap_loader_run_selected_app(FapLoader* loader) {
|
||||
FURI_LOG_I(TAG, "Loaded in %ums", (size_t)(furi_get_tick() - start));
|
||||
FURI_LOG_I(TAG, "FAP Loader is starting app");
|
||||
|
||||
if(strcmp(furi_string_get_cstr(loader->fap_args), "false") == 0) {
|
||||
FuriThread* thread = flipper_application_spawn(loader->app, NULL);
|
||||
furi_thread_start(thread);
|
||||
furi_thread_join(thread);
|
||||
FuriThread* thread = flipper_application_spawn(loader->app, NULL);
|
||||
furi_thread_start(thread);
|
||||
furi_thread_join(thread);
|
||||
|
||||
show_error = false;
|
||||
int ret = furi_thread_get_return_code(thread);
|
||||
show_error = false;
|
||||
int ret = furi_thread_get_return_code(thread);
|
||||
|
||||
FURI_LOG_I(TAG, "FAP app returned: %i", ret);
|
||||
} else {
|
||||
FuriThread* thread = flipper_application_spawn(
|
||||
loader->app, (void*)furi_string_get_cstr(loader->fap_args));
|
||||
furi_thread_start(thread);
|
||||
furi_thread_join(thread);
|
||||
|
||||
show_error = false;
|
||||
int ret = furi_thread_get_return_code(thread);
|
||||
|
||||
FURI_LOG_I(TAG, "FAP app returned: %i", ret);
|
||||
}
|
||||
FURI_LOG_I(TAG, "FAP app returned: %i", ret);
|
||||
} while(0);
|
||||
|
||||
if(show_error) {
|
||||
@@ -169,28 +156,8 @@ static bool fap_loader_select_app(FapLoader* loader) {
|
||||
}
|
||||
|
||||
static FapLoader* fap_loader_alloc(const char* path) {
|
||||
FapLoader* loader = malloc(sizeof(FapLoader)); //-V773
|
||||
|
||||
char* tmp = malloc(strlen(path) + 1);
|
||||
strcpy(tmp, path);
|
||||
char* new_path;
|
||||
|
||||
new_path = strtok(tmp, "¯");
|
||||
|
||||
if(new_path) {
|
||||
loader->fap_path = furi_string_alloc_set(new_path);
|
||||
} else {
|
||||
loader->fap_path = furi_string_alloc_set(path);
|
||||
}
|
||||
|
||||
new_path = strtok(NULL, "¯");
|
||||
|
||||
if(new_path) {
|
||||
loader->fap_args = furi_string_alloc_set(new_path);
|
||||
} else {
|
||||
loader->fap_args = furi_string_alloc_set("false");
|
||||
}
|
||||
|
||||
FapLoader* loader = malloc(sizeof(FapLoader)); //-V799
|
||||
loader->fap_path = furi_string_alloc_set(path);
|
||||
loader->storage = furi_record_open(RECORD_STORAGE);
|
||||
loader->dialogs = furi_record_open(RECORD_DIALOGS);
|
||||
loader->gui = furi_record_open(RECORD_GUI);
|
||||
@@ -207,7 +174,6 @@ static void fap_loader_free(FapLoader* loader) {
|
||||
loading_free(loader->loading);
|
||||
view_dispatcher_free(loader->view_dispatcher);
|
||||
furi_string_free(loader->fap_path);
|
||||
furi_string_free(loader->fap_args);
|
||||
furi_record_close(RECORD_GUI);
|
||||
furi_record_close(RECORD_DIALOGS);
|
||||
furi_record_close(RECORD_STORAGE);
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
App(
|
||||
appid="gpio",
|
||||
name="GPIO",
|
||||
apptype=FlipperAppType.EXTERNAL,
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="gpio_app",
|
||||
cdefines=["APP_GPIO"],
|
||||
requires=["gui"],
|
||||
stack_size=1 * 1024,
|
||||
# icon="A_GPIO_14",
|
||||
icon="A_GPIO_14",
|
||||
order=50,
|
||||
fap_icon="gpioIcon.png",
|
||||
fap_category="Main",
|
||||
fap_icon_assets="images",
|
||||
fap_libs=["assets"],
|
||||
)
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -17,7 +17,7 @@
|
||||
#include "views/gpio_usb_uart.h"
|
||||
#include "views/gpio_i2c_scanner.h"
|
||||
#include "views/gpio_i2c_sfp.h"
|
||||
#include <gpio_icons.h>
|
||||
#include <assets_icons.h>
|
||||
|
||||
struct GpioApp {
|
||||
Gui* gui;
|
||||
|
||||
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 654 B |
|
Before Width: | Height: | Size: 669 B |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
@@ -1,14 +0,0 @@
|
||||
App(
|
||||
appid="gpio_loader",
|
||||
name="GPIO",
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="gpio_loader_app",
|
||||
requires=[
|
||||
"gui",
|
||||
"storage",
|
||||
],
|
||||
stack_size=int(1.5 * 1024),
|
||||
icon="A_GPIO_14",
|
||||
order=50,
|
||||
link="/ext/apps/Main/gpio.fap",
|
||||
)
|
||||
@@ -1,9 +0,0 @@
|
||||
#include <applications/services/loader/loader_i.h>
|
||||
|
||||
#define TAG "gpio_loader_app"
|
||||
|
||||
int32_t gpio_loader_app(void* p) {
|
||||
UNUSED(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,18 +1,24 @@
|
||||
App(
|
||||
appid="ibutton",
|
||||
name="iButton",
|
||||
apptype=FlipperAppType.EXTERNAL,
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="ibutton_app",
|
||||
cdefines=["APP_IBUTTON"],
|
||||
requires=[
|
||||
"gui",
|
||||
"dialogs",
|
||||
],
|
||||
# icon="A_iButton_14",
|
||||
provides=["ibutton_start"],
|
||||
icon="A_iButton_14",
|
||||
stack_size=2 * 1024,
|
||||
order=60,
|
||||
fap_icon="iBIcon.png",
|
||||
fap_category="Main",
|
||||
fap_icon_assets="images",
|
||||
fap_libs=["assets"],
|
||||
)
|
||||
|
||||
App(
|
||||
appid="ibutton_start",
|
||||
apptype=FlipperAppType.STARTUP,
|
||||
entry_point="ibutton_on_system_start",
|
||||
requires=["ibutton"],
|
||||
order=60,
|
||||
)
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,4 +1,5 @@
|
||||
#include "ibutton.h"
|
||||
#include "assets_icons.h"
|
||||
#include "ibutton_i.h"
|
||||
#include "ibutton/scenes/ibutton_scene.h"
|
||||
#include <toolbox/path.h>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#include <gui/gui.h>
|
||||
#include <gui/view.h>
|
||||
#include "ibutton_icons.h"
|
||||
#include <assets_icons.h>
|
||||
#include <gui/view_dispatcher.h>
|
||||
#include <gui/scene_manager.h>
|
||||
#include <notification/notification_messages.h>
|
||||
|
||||
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 304 B |
@@ -1,14 +0,0 @@
|
||||
App(
|
||||
appid="ibutton_loader",
|
||||
name="iButton",
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="ibutton_loader_app",
|
||||
requires=[
|
||||
"gui",
|
||||
"storage",
|
||||
],
|
||||
stack_size=int(1.5 * 1024),
|
||||
icon="A_iButton_14",
|
||||
order=60,
|
||||
link="/ext/apps/Main/ibutton.fap",
|
||||
)
|
||||
@@ -1,9 +0,0 @@
|
||||
#include <applications/services/loader/loader_i.h>
|
||||
|
||||
#define TAG "ibutton_loader_app"
|
||||
|
||||
int32_t ibutton_loader_app(void* p) {
|
||||
UNUSED(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,19 +1,24 @@
|
||||
App(
|
||||
appid="infrared",
|
||||
name="Infrared",
|
||||
apptype=FlipperAppType.EXTERNAL,
|
||||
apptype=FlipperAppType.APP,
|
||||
entry_point="infrared_app",
|
||||
cdefines=["APP_INFRARED"],
|
||||
requires=[
|
||||
"gui",
|
||||
"dialogs",
|
||||
],
|
||||
# provides=["infrared_start"],
|
||||
# icon="A_Infrared_14",
|
||||
provides=["infrared_start"],
|
||||
icon="A_Infrared_14",
|
||||
stack_size=3 * 1024,
|
||||
order=40,
|
||||
fap_category="Main",
|
||||
fap_icon="ir_10px.png",
|
||||
fap_icon_assets="images",
|
||||
fap_libs=["assets"],
|
||||
)
|
||||
|
||||
App(
|
||||
appid="infrared_start",
|
||||
apptype=FlipperAppType.STARTUP,
|
||||
entry_point="infrared_on_system_start",
|
||||
requires=["infrared"],
|
||||
order=20,
|
||||
)
|
||||
|
||||
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 250 B |
|
Before Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |