This commit is contained in:
Willy-JL
2024-03-20 01:48:10 +00:00
588 changed files with 3875 additions and 2957 deletions

View File

@@ -25,7 +25,7 @@ FlipperApplicationList_t flipper_application_loaded_app_list = {0};
static bool flipper_application_loaded_app_list_initialized = false;
static void flipper_application_list_add_app(const FlipperApplication* app) {
furi_assert(app);
furi_check(app);
if(!flipper_application_loaded_app_list_initialized) {
FlipperApplicationList_init(flipper_application_loaded_app_list);
@@ -35,8 +35,8 @@ static void flipper_application_list_add_app(const FlipperApplication* app) {
}
static void flipper_application_list_remove_app(const FlipperApplication* app) {
furi_assert(flipper_application_loaded_app_list_initialized);
furi_assert(app);
furi_check(flipper_application_loaded_app_list_initialized);
furi_check(app);
FlipperApplicationList_it_t it;
for(FlipperApplicationList_it(it, flipper_application_loaded_app_list);
@@ -53,19 +53,24 @@ static void flipper_application_list_remove_app(const FlipperApplication* app) {
FlipperApplication*
flipper_application_alloc(Storage* storage, const ElfApiInterface* api_interface) {
furi_check(storage);
furi_check(api_interface);
FlipperApplication* app = malloc(sizeof(FlipperApplication));
app->elf = elf_file_alloc(storage, api_interface);
app->thread = NULL;
app->ep_thread_args = NULL;
return app;
}
bool flipper_application_is_plugin(FlipperApplication* app) {
furi_check(app);
return app->manifest.stack_size == 0;
}
void flipper_application_free(FlipperApplication* app) {
furi_assert(app);
furi_check(app);
if(app->thread) {
furi_thread_join(app->thread);
@@ -185,20 +190,29 @@ static FlipperApplicationPreloadStatus
/* Parse headers, load manifest */
FlipperApplicationPreloadStatus
flipper_application_preload_manifest(FlipperApplication* app, const char* path) {
furi_check(app);
furi_check(path);
return flipper_application_load(app, path, false);
}
/* Parse headers, load full file */
FlipperApplicationPreloadStatus
flipper_application_preload(FlipperApplication* app, const char* path) {
furi_check(app);
furi_check(path);
return flipper_application_load(app, path, true);
}
const FlipperApplicationManifest* flipper_application_get_manifest(FlipperApplication* app) {
furi_check(app);
return &app->manifest;
}
FlipperApplicationLoadStatus flipper_application_map_to_memory(FlipperApplication* app) {
furi_check(app);
ELFFileLoadStatus status = elf_file_load_sections(app->elf);
switch(status) {
@@ -216,7 +230,7 @@ FlipperApplicationLoadStatus flipper_application_map_to_memory(FlipperApplicatio
}
static int32_t flipper_application_thread(void* context) {
furi_assert(context);
furi_check(context);
FlipperApplication* app = (FlipperApplication*)context;
elf_file_call_init(app->elf);
@@ -238,6 +252,7 @@ static int32_t flipper_application_thread(void* context) {
}
FuriThread* flipper_application_alloc_thread(FlipperApplication* app, const char* args) {
furi_check(app);
furi_check(app->thread == NULL);
furi_check(!flipper_application_is_plugin(app));
@@ -294,6 +309,8 @@ const char* flipper_application_load_status_to_string(FlipperApplicationLoadStat
const FlipperAppPluginDescriptor*
flipper_application_plugin_get_descriptor(FlipperApplication* app) {
furi_check(app);
if(!flipper_application_is_plugin(app)) {
return NULL;
}
@@ -322,6 +339,11 @@ bool flipper_application_load_name_and_icon(
Storage* storage,
uint8_t** icon_ptr,
FuriString* item_name) {
furi_check(path);
furi_check(storage);
furi_check(icon_ptr);
furi_check(item_name);
bool load_success = true;
StorageData* storage_data;