Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions applications/main/application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@ App(
name="Basic applications for main menu",
apptype=FlipperAppType.METAPACKAGE,
provides=[
"clock_loader",
"gpio",
# "ibutton",
"ibutton_loader",
"infrared",
"lfrfid",
"nfc",
"subghz",
"bad_usb",
# "u2f",
"u2f_loader",
"fap_loader",
"archive",
# "Clock",
Expand Down
11 changes: 11 additions & 0 deletions applications/main/clock_loader/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
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",
)
9 changes: 9 additions & 0 deletions applications/main/clock_loader/clock_loader_app.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include <applications/services/loader/loader_i.h>

#define TAG "clock_loader_app"

int32_t clock_loader_app(void* p) {
UNUSED(p);

return 0;
}
14 changes: 14 additions & 0 deletions applications/main/ibutton_loader/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
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",
)
9 changes: 9 additions & 0 deletions applications/main/ibutton_loader/ibutton_loader_app.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include <applications/services/loader/loader_i.h>

#define TAG "ibutton_loader_app"

int32_t ibutton_loader_app(void* p) {
UNUSED(p);

return 0;
}
14 changes: 14 additions & 0 deletions applications/main/u2f_loader/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
App(
appid="u2f_loader",
name="U2F",
apptype=FlipperAppType.APP,
entry_point="u2f_loader_app",
requires=[
"gui",
"dialogs",
],
stack_size=int(2 * 1024),
icon="A_U2F_14",
order=80,
link="/ext/apps/Main/u2f.fap",
)
9 changes: 9 additions & 0 deletions applications/main/u2f_loader/u2f_loader_app.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include <applications/services/loader/loader_i.h>

#define TAG "u2f_loader_app"

int32_t u2f_loader_app(void* p) {
UNUSED(p);

return 0;
}
1 change: 1 addition & 0 deletions applications/services/applications.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ typedef struct {
const size_t stack_size;
const Icon* icon;
const FlipperApplicationFlag flags;
const char* link;
} FlipperApplication;

typedef void (*FlipperOnStartHook)(void);
Expand Down
69 changes: 20 additions & 49 deletions applications/services/loader/loader.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,18 @@ static void loader_menu_callback(void* _ctx, uint32_t index) {

furi_assert(application->app);
furi_assert(application->name);
furi_assert(application->link);

if(!loader_lock(loader_instance)) {
FURI_LOG_E(TAG, "Loader is locked");
return;
}
if(strcmp(application->link, "NULL") != 0) {
LoaderStatus status = loader_start(NULL, "Applications", application->link);
} else {
if(!loader_lock(loader_instance)) {
FURI_LOG_E(TAG, "Loader is locked");
return;
}

loader_start_application(application, NULL);
loader_start_application(application, NULL);
}
}

static void loader_submenu_callback(void* context, uint32_t index) {
Expand All @@ -56,24 +61,6 @@ static void loader_submenu_callback(void* context, uint32_t index) {
view_dispatcher_switch_to_view(loader_instance->view_dispatcher, view_id);
}

static void loader_clock_callback(void* context, uint32_t index) {
UNUSED(context);
UNUSED(index);
LoaderStatus status = loader_start(NULL, "Applications", EXT_PATH("/apps/Main/Clock.fap"));
}

static void loader_ibutton_callback(void* context, uint32_t index) {
UNUSED(context);
UNUSED(index);
LoaderStatus status = loader_start(NULL, "Applications", EXT_PATH("/apps/Main/ibutton.fap"));
}

static void loader_u2f_callback(void* context, uint32_t index) {
UNUSED(context);
UNUSED(index);
LoaderStatus status = loader_start(NULL, "Applications", EXT_PATH("/apps/Main/u2f.fap"));
}

static void loader_cli_print_usage() {
printf("Usage:\r\n");
printf("loader <cmd> <args>\r\n");
Expand Down Expand Up @@ -161,19 +148,24 @@ void loader_cli_list(Cli* cli, string_t args, Loader* instance) {
UNUSED(args);
UNUSED(instance);
printf("Applications:\r\n");
printf("\t%s\r\n", "Clock");
//printf("\t%s\r\n", "Clock");
for(size_t i = 0; i < FLIPPER_APPS_COUNT; i++) {
printf("\t%s\r\n", FLIPPER_APPS[i].name);
if(strcmp(FLIPPER_APPS[i].link, "NULL") != 0) {
printf(
"\tFor %s, Use: Applications %s\r\n", FLIPPER_APPS[i].name, FLIPPER_APPS[i].link);
} else {
printf("\t%s\r\n", FLIPPER_APPS[i].name);
}
}

printf("Plugins:\r\n");
for(size_t i = 0; i < FLIPPER_PLUGINS_COUNT; i++) {
printf("\t%s\r\n", FLIPPER_PLUGINS[i].name);
}
printf("\t%s\r\n", "iButton");
printf("\t%s\r\n", "U2F");
//printf("\t%s\r\n", "iButton");
//printf("\t%s\r\n", "U2F");

if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug) && FLIPPER_DEBUG_APPS_COUNT!=0) {
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug) && FLIPPER_DEBUG_APPS_COUNT != 0) {
printf("Debug:\r\n");
for(size_t i = 0; i < FLIPPER_DEBUG_APPS_COUNT; i++) {
printf("\t%s\r\n", FLIPPER_DEBUG_APPS[i].name);
Expand Down Expand Up @@ -392,13 +384,6 @@ static void loader_free(Loader* instance) {
static void loader_build_menu() {
FURI_LOG_I(TAG, "Building main menu");
size_t i;
menu_add_item(
loader_instance->primary_menu,
"Clock",
&A_Clock_14,
0,
loader_clock_callback,
(void*)NULL);
for(i = 0; i < FLIPPER_APPS_COUNT; i++) {
menu_add_item(
loader_instance->primary_menu,
Expand All @@ -417,20 +402,6 @@ static void loader_build_menu() {
loader_submenu_callback,
(void*)LoaderMenuViewPlugins);
}
menu_add_item(
loader_instance->primary_menu,
"iButton",
&A_iButton_14,
i++,
loader_ibutton_callback,
(void*)NULL);
menu_add_item(
loader_instance->primary_menu,
"U2F",
&A_U2F_14,
i++,
loader_u2f_callback,
(void*)NULL);
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug) && FLIPPER_DEBUG_APPS_COUNT != 0) {
menu_add_item(
loader_instance->primary_menu,
Expand Down
2 changes: 2 additions & 0 deletions site_scons/fbt/appmanifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class FlipperApplication:
stack_size: int = 2048
icon: Optional[str] = None
order: int = 0
link: Optional[str] = ""
sdk_headers: List[str] = field(default_factory=list)
# .fap-specific
sources: List[str] = field(default_factory=lambda: ["*.c*"])
Expand Down Expand Up @@ -255,6 +256,7 @@ def get_app_descr(self, app: FlipperApplication):
.name = "{app.name}",
.stack_size = {app.stack_size},
.icon = {f"&{app.icon}" if app.icon else "NULL"},
.link = "{f"{app.link}" if app.link else "NULL"}",
.flags = {'|'.join(f"FlipperApplicationFlag{flag}" for flag in app.flags)} }}"""

def generate(self):
Expand Down