From 7514bc8b49c3dd90fae35d0f20b2d21ebb89b113 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 21 Apr 2023 15:55:06 +0300 Subject: [PATCH] Final updates --- CHANGELOG.md | 1 + .../services/power/power_service/power.c | 16 ++++++++++++---- .../services/power/power_service/power.h | 6 ++++++ .../scenes/desktop_settings_scene_start.c | 6 ++++++ firmware/targets/f7/api_symbols.csv | 1 + 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81dd2a402..dbc2bdc13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * SubGhz: Nero Radio 57bit **experimental** support + encoder improvements and decoder changes * SubGhz: Fix RAW recording and reading, (bug where raw file plays endlessly) (Fixes issue #431) * SubGHz Remote: Add Alutech AT4N Support, fix some issues +* Power GUI: Changing battery style doesnt require reboot (Added API to trigger UI change from different place) (Inspired by @ESurge work) * Plugins: BLE Remote -> Keynote with vertical layout (by @Kami-no | PR #428) * Plugins: Improve wifi marauder keyboard (added extra symbols!) (Port uart terminal keyboard into wifi marauder) * Infrared: Update universal remote assets (by @amec0e | PR #421) diff --git a/applications/services/power/power_service/power.c b/applications/services/power/power_service/power.c index 2d890d2ee..e61776060 100644 --- a/applications/services/power/power_service/power.c +++ b/applications/services/power/power_service/power.c @@ -399,6 +399,18 @@ static void power_check_battery_level_change(Power* power) { } } +void power_trigger_ui_update(Power* power) { + DesktopSettings* settings = malloc(sizeof(DesktopSettings)); + bool is_loaded = DESKTOP_SETTINGS_LOAD(settings); + if(is_loaded) { + power->displayBatteryPercentage = settings->displayBatteryPercentage; + } else { + power->displayBatteryPercentage = DISPLAY_BATTERY_BAR; + } + free(settings); + view_port_update(power->battery_view_port); +} + int32_t power_srv(void* p) { UNUSED(p); @@ -431,10 +443,6 @@ int32_t power_srv(void* p) { // Update battery view port if(need_refresh) { - DesktopSettings* settings = malloc(sizeof(DesktopSettings)); - DESKTOP_SETTINGS_LOAD(settings); - power->displayBatteryPercentage = settings->displayBatteryPercentage; - free(settings); view_port_update(power->battery_view_port); } diff --git a/applications/services/power/power_service/power.h b/applications/services/power/power_service/power.h index c7f5d7e35..d83127c0b 100644 --- a/applications/services/power/power_service/power.h +++ b/applications/services/power/power_service/power.h @@ -94,6 +94,12 @@ bool power_is_battery_healthy(Power* power); */ void power_enable_low_battery_level_notification(Power* power, bool enable); +/** Trigger UI update for changing battery layout + * + * @param power Power instance + */ +void power_trigger_ui_update(Power* power); + #ifdef __cplusplus } #endif diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c index 49c2e7422..b28d95d16 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c @@ -3,6 +3,7 @@ #include "../desktop_settings_app.h" #include "desktop_settings_scene.h" +#include #define SCENE_EVENT_SELECT_FAVORITE_PRIMARY 0 #define SCENE_EVENT_SELECT_FAVORITE_SECONDARY 1 @@ -169,4 +170,9 @@ void desktop_settings_scene_start_on_exit(void* context) { DesktopSettingsApp* app = context; variable_item_list_reset(app->variable_item_list); DESKTOP_SETTINGS_SAVE(&app->settings); + + // Trigger UI update in case we changed battery layout + Power* power = furi_record_open(RECORD_POWER); + power_trigger_ui_update(power); + furi_record_close(RECORD_POWER); } diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index 6bbb94a6a..5bc0106b6 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -2173,6 +2173,7 @@ Function,+,power_get_pubsub,FuriPubSub*,Power* Function,+,power_is_battery_healthy,_Bool,Power* Function,+,power_off,void,Power* Function,+,power_reboot,void,PowerBootMode +Function,+,power_trigger_ui_update,void,Power* Function,+,powf,float,"float, float" Function,-,powl,long double,"long double, long double" Function,+,pretty_format_bytes_hex_canonical,void,"FuriString*, size_t, const char*, const uint8_t*, size_t"