All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
loader.h
1#pragma once
2#include <furi.h>
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#define RECORD_LOADER "loader"
9#define LOADER_APPLICATIONS_NAME "Apps"
10
11typedef struct Loader Loader;
12
13typedef enum {
14 LoaderStatusOk,
15 LoaderStatusErrorAppStarted,
16 LoaderStatusErrorUnknownApp,
17 LoaderStatusErrorInternal,
18} LoaderStatus;
19
20typedef enum {
21 LoaderEventTypeApplicationBeforeLoad,
22 LoaderEventTypeApplicationLoadFailed,
23 LoaderEventTypeApplicationStopped,
24 LoaderEventTypeNoMoreAppsInQueue, //<! The normal `Stopped` event still fires before this one
25} LoaderEventType;
26
27typedef struct {
28 LoaderEventType type;
30
31typedef enum {
32 LoaderDeferredLaunchFlagNone = 0,
33 LoaderDeferredLaunchFlagGui = (1 << 1), //<! Report launch to the user via a dialog
34} LoaderDeferredLaunchFlag;
35
44LoaderStatus
45 loader_start(Loader* instance, const char* name, const char* args, FuriString* error_message);
46
54LoaderStatus loader_start_with_gui_error(Loader* loader, const char* name, const char* args);
55
62void loader_start_detached_with_gui_error(Loader* loader, const char* name, const char* args);
63
69bool loader_lock(Loader* instance);
70
75void loader_unlock(Loader* instance);
76
82bool loader_is_locked(Loader* instance);
83
88void loader_show_menu(Loader* instance);
89
95FuriPubSub* loader_get_pubsub(Loader* instance);
96
106bool loader_signal(Loader* instance, uint32_t signal, void* arg);
107
115bool loader_get_application_name(Loader* instance, FuriString* name);
116
130bool loader_get_application_launch_path(Loader* instance, FuriString* name);
131
141void loader_enqueue_launch(
142 Loader* instance,
143 const char* name,
144 const char* args,
145 LoaderDeferredLaunchFlag flags);
146
153void loader_clear_launch_queue(Loader* instance);
154
155#ifdef __cplusplus
156}
157#endif
Definition pubsub.c:14
Definition string.c:4
Definition loader.h:27
Definition loader_i.h:25