From 5bd168c24bbfd41de79927511cd4a75f25e5777e Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 14 Feb 2024 17:34:05 +0000 Subject: [PATCH] Keep power settings internal (fix wrong mA) +5kb DFU :( --- applications/services/applications.h | 8 +++++++- applications/services/loader/loader.c | 7 ++++--- applications/services/loader/loader_cli.c | 3 +++ applications/services/loader/loader_menu.c | 8 ++++++++ applications/settings/about/application.fam | 2 +- applications/settings/bt_settings_app/application.fam | 2 +- applications/settings/desktop_settings/application.fam | 2 +- applications/settings/dolphin_passport/application.fam | 2 +- .../settings/expansion_settings_app/application.fam | 2 +- .../settings/notification_settings/application.fam | 2 +- applications/settings/storage_settings/application.fam | 2 +- applications/settings/system/application.fam | 2 +- scripts/fbt/appmanifest.py | 4 +++- scripts/fbt_tools/fbt_apps.py | 8 ++++++-- scripts/fbt_tools/fbt_extapps.py | 2 +- scripts/ufbt/SConstruct | 2 +- targets/f7/api_symbols.csv | 4 +++- 17 files changed, 44 insertions(+), 18 deletions(-) diff --git a/applications/services/applications.h b/applications/services/applications.h index b155745f5..ab846b78c 100644 --- a/applications/services/applications.h +++ b/applications/services/applications.h @@ -62,7 +62,7 @@ extern const FlipperInternalApplication FLIPPER_ARCHIVE; /* Settings list * Spawned by loader */ -extern const FlipperExternalApplication FLIPPER_SETTINGS_APPS[]; +extern const FlipperInternalApplication FLIPPER_SETTINGS_APPS[]; extern const size_t FLIPPER_SETTINGS_APPS_COUNT; /* External Menu Apps list @@ -70,3 +70,9 @@ extern const size_t FLIPPER_SETTINGS_APPS_COUNT; */ extern const FlipperExternalApplication FLIPPER_EXTERNAL_APPS[]; extern const size_t FLIPPER_EXTERNAL_APPS_COUNT; + +/* External Settings list + * Spawned by loader + */ +extern const FlipperExternalApplication FLIPPER_EXTSETTINGS_APPS[]; +extern const size_t FLIPPER_EXTSETTINGS_APPS_COUNT; diff --git a/applications/services/loader/loader.c b/applications/services/loader/loader.c index ba3e2402d..96ba822fb 100644 --- a/applications/services/loader/loader.c +++ b/applications/services/loader/loader.c @@ -26,9 +26,9 @@ static const char* loader_find_external_application_by_name(const char* app_name } } - for(size_t i = 0; i < FLIPPER_SETTINGS_APPS_COUNT; i++) { - if(strcmp(FLIPPER_SETTINGS_APPS[i].name, app_name) == 0) { - return FLIPPER_SETTINGS_APPS[i].path; + for(size_t i = 0; i < FLIPPER_EXTSETTINGS_APPS_COUNT; i++) { + if(strcmp(FLIPPER_EXTSETTINGS_APPS[i].name, app_name) == 0) { + return FLIPPER_EXTSETTINGS_APPS[i].path; } } @@ -327,6 +327,7 @@ static const FlipperInternalApplication* loader_find_application_by_name(const c const uint32_t count; } lists[] = { {FLIPPER_APPS, FLIPPER_APPS_COUNT}, + {FLIPPER_SETTINGS_APPS, FLIPPER_SETTINGS_APPS_COUNT}, {FLIPPER_SYSTEM_APPS, FLIPPER_SYSTEM_APPS_COUNT}, {FLIPPER_DEBUG_APPS, FLIPPER_DEBUG_APPS_COUNT}, }; diff --git a/applications/services/loader/loader_cli.c b/applications/services/loader/loader_cli.c index 17f0319e2..acd8a3ed5 100644 --- a/applications/services/loader/loader_cli.c +++ b/applications/services/loader/loader_cli.c @@ -26,6 +26,9 @@ static void loader_cli_list() { for(size_t i = 0; i < FLIPPER_SETTINGS_APPS_COUNT; i++) { printf("\t%s\r\n", FLIPPER_SETTINGS_APPS[i].name); } + for(size_t i = 0; i < FLIPPER_EXTSETTINGS_APPS_COUNT; i++) { + printf("\t%s\r\n", FLIPPER_EXTSETTINGS_APPS[i].name); + } } static void loader_cli_info(Loader* loader) { diff --git a/applications/services/loader/loader_menu.c b/applications/services/loader/loader_menu.c index ac88f7916..2c0f28f71 100644 --- a/applications/services/loader/loader_menu.c +++ b/applications/services/loader/loader_menu.c @@ -117,6 +117,14 @@ static void loader_menu_build_submenu(LoaderMenuApp* app, LoaderMenu* loader_men loader_menu_callback, loader_menu); } + for(size_t i = 0; i < FLIPPER_EXTSETTINGS_APPS_COUNT; i++) { + submenu_add_item( + app->settings_menu, + FLIPPER_EXTSETTINGS_APPS[i].name, + (uint32_t)FLIPPER_EXTSETTINGS_APPS[i].name, + loader_menu_callback, + loader_menu); + } } static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) { diff --git a/applications/settings/about/application.fam b/applications/settings/about/application.fam index 7d22ce98a..b9f929c63 100644 --- a/applications/settings/about/application.fam +++ b/applications/settings/about/application.fam @@ -1,7 +1,7 @@ App( appid="about", name="About", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="about_settings_app", cdefines=["APP_ABOUT"], requires=[ diff --git a/applications/settings/bt_settings_app/application.fam b/applications/settings/bt_settings_app/application.fam index d3330eaf5..cf15a4c47 100644 --- a/applications/settings/bt_settings_app/application.fam +++ b/applications/settings/bt_settings_app/application.fam @@ -1,7 +1,7 @@ App( appid="bt_settings", name="Bluetooth", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="bt_settings_app", stack_size=1 * 1024, requires=[ diff --git a/applications/settings/desktop_settings/application.fam b/applications/settings/desktop_settings/application.fam index 0506bfeca..c27d8c38b 100644 --- a/applications/settings/desktop_settings/application.fam +++ b/applications/settings/desktop_settings/application.fam @@ -1,7 +1,7 @@ App( appid="desktop_settings", name="Desktop", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="desktop_settings_app", requires=[ "desktop", diff --git a/applications/settings/dolphin_passport/application.fam b/applications/settings/dolphin_passport/application.fam index 9196b48b2..905d25754 100644 --- a/applications/settings/dolphin_passport/application.fam +++ b/applications/settings/dolphin_passport/application.fam @@ -1,7 +1,7 @@ App( appid="passport", name="Passport", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="passport_app", cdefines=["APP_PASSPORT"], requires=[ diff --git a/applications/settings/expansion_settings_app/application.fam b/applications/settings/expansion_settings_app/application.fam index 6483a33ab..bba1b44aa 100644 --- a/applications/settings/expansion_settings_app/application.fam +++ b/applications/settings/expansion_settings_app/application.fam @@ -1,7 +1,7 @@ App( appid="expansion_settings", name="Expansion Modules", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="expansion_settings_app", requires=["gui"], stack_size=1 * 1024, diff --git a/applications/settings/notification_settings/application.fam b/applications/settings/notification_settings/application.fam index f868fb178..c482cf86b 100644 --- a/applications/settings/notification_settings/application.fam +++ b/applications/settings/notification_settings/application.fam @@ -1,7 +1,7 @@ App( appid="notification_settings", name="LCD and Notifications", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="notification_settings_app", requires=["notification"], stack_size=1 * 1024, diff --git a/applications/settings/storage_settings/application.fam b/applications/settings/storage_settings/application.fam index 7b15bed65..e36eee720 100644 --- a/applications/settings/storage_settings/application.fam +++ b/applications/settings/storage_settings/application.fam @@ -1,7 +1,7 @@ App( appid="storage_settings", name="Storage", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="storage_settings_app", requires=["storage"], stack_size=2 * 1024, diff --git a/applications/settings/system/application.fam b/applications/settings/system/application.fam index f717892e5..7c50a23c0 100644 --- a/applications/settings/system/application.fam +++ b/applications/settings/system/application.fam @@ -1,7 +1,7 @@ App( appid="system_settings", name="System", - apptype=FlipperAppType.SETTINGS, + apptype=FlipperAppType.EXTSETTINGS, entry_point="system_settings_app", requires=["gui", "locale"], stack_size=1 * 1024, diff --git a/scripts/fbt/appmanifest.py b/scripts/fbt/appmanifest.py index 69d5fab7a..c3bdeafe3 100644 --- a/scripts/fbt/appmanifest.py +++ b/scripts/fbt/appmanifest.py @@ -26,6 +26,7 @@ class FlipperAppType(Enum): STARTUP = "StartupHook" EXTERNAL = "External" MENUEXTERNAL = "MenuExternal" + EXTSETTINGS = "ExtSettings" METAPACKAGE = "Package" PLUGIN = "Plugin" @@ -248,6 +249,7 @@ class AppBuildset: FlipperAppType.APP, FlipperAppType.DEBUG, FlipperAppType.ARCHIVE, + FlipperAppType.SETTINGS, FlipperAppType.STARTUP, ) EXTERNAL_APP_TYPES_MAP = { @@ -256,7 +258,7 @@ class AppBuildset: FlipperAppType.PLUGIN: True, FlipperAppType.DEBUG: True, FlipperAppType.MENUEXTERNAL: False, - FlipperAppType.SETTINGS: False, + FlipperAppType.EXTSETTINGS: False, } @classmethod diff --git a/scripts/fbt_tools/fbt_apps.py b/scripts/fbt_tools/fbt_apps.py index 6c7f212bc..4f8d0259e 100644 --- a/scripts/fbt_tools/fbt_apps.py +++ b/scripts/fbt_tools/fbt_apps.py @@ -23,6 +23,10 @@ class ApplicationsCGenerator: FlipperAppType.SYSTEM: ("FlipperInternalApplication", "FLIPPER_SYSTEM_APPS"), FlipperAppType.APP: ("FlipperInternalApplication", "FLIPPER_APPS"), FlipperAppType.DEBUG: ("FlipperInternalApplication", "FLIPPER_DEBUG_APPS"), + FlipperAppType.SETTINGS: ( + "FlipperInternalApplication", + "FLIPPER_SETTINGS_APPS", + ), FlipperAppType.STARTUP: ( "FlipperInternalOnStartHook", "FLIPPER_ON_SYSTEM_START", @@ -34,9 +38,9 @@ class ApplicationsCGenerator: "FlipperExternalApplication", "FLIPPER_EXTERNAL_APPS", ), - FlipperAppType.SETTINGS: ( + FlipperAppType.EXTSETTINGS: ( "FlipperExternalApplication", - "FLIPPER_SETTINGS_APPS", + "FLIPPER_EXTSETTINGS_APPS", ), } diff --git a/scripts/fbt_tools/fbt_extapps.py b/scripts/fbt_tools/fbt_extapps.py index f1dbaf9e7..a1a99c9e3 100644 --- a/scripts/fbt_tools/fbt_extapps.py +++ b/scripts/fbt_tools/fbt_extapps.py @@ -488,7 +488,7 @@ def _gather_app_components(env, appname) -> AppDeploymentComponents: if host_app.apptype in [ FlipperAppType.EXTERNAL, FlipperAppType.MENUEXTERNAL, - FlipperAppType.SETTINGS, + FlipperAppType.EXTSETTINGS, ]: components.add_app(host_app) else: diff --git a/scripts/ufbt/SConstruct b/scripts/ufbt/SConstruct index 45432a397..b61923b44 100644 --- a/scripts/ufbt/SConstruct +++ b/scripts/ufbt/SConstruct @@ -232,7 +232,7 @@ apps_to_build_as_faps = [ FlipperAppType.PLUGIN, FlipperAppType.EXTERNAL, FlipperAppType.MENUEXTERNAL, - FlipperAppType.SETTINGS, + FlipperAppType.EXTSETTINGS, ] known_extapps = [ diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index a2f60f754..dfd09a57f 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -3663,11 +3663,13 @@ Variable,-,FLIPPER_DEBUG_APPS,const FlipperInternalApplication[], Variable,-,FLIPPER_DEBUG_APPS_COUNT,const size_t, Variable,+,FLIPPER_EXTERNAL_APPS,const FlipperExternalApplication[], Variable,+,FLIPPER_EXTERNAL_APPS_COUNT,const size_t, +Variable,+,FLIPPER_EXTSETTINGS_APPS,const FlipperExternalApplication[], +Variable,+,FLIPPER_EXTSETTINGS_APPS_COUNT,const size_t, Variable,-,FLIPPER_ON_SYSTEM_START,const FlipperInternalOnStartHook[], Variable,-,FLIPPER_ON_SYSTEM_START_COUNT,const size_t, Variable,-,FLIPPER_SERVICES,const FlipperInternalApplication[], Variable,-,FLIPPER_SERVICES_COUNT,const size_t, -Variable,+,FLIPPER_SETTINGS_APPS,const FlipperExternalApplication[], +Variable,+,FLIPPER_SETTINGS_APPS,const FlipperInternalApplication[], Variable,+,FLIPPER_SETTINGS_APPS_COUNT,const size_t, Variable,-,FLIPPER_SYSTEM_APPS,const FlipperInternalApplication[], Variable,-,FLIPPER_SYSTEM_APPS_COUNT,const size_t,