From 083c17f09daf0d7ad6bdaacc4669ab28a3a8dfdd Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 6 Aug 2024 19:34:49 +0200 Subject: [PATCH] Revert some settings handling to how they work in OFW --- applications/services/bt/application.fam | 2 +- applications/services/bt/bt_cli.c | 8 +++--- applications/services/bt/bt_service/bt_i.h | 2 +- .../services/bt/bt_service/bt_keys_filename.h | 5 ++++ applications/services/bt/bt_settings.h | 2 -- .../services/bt/bt_settings_filename.h | 5 ++++ .../desktop/animations/animation_manager.c | 24 +++++++---------- .../desktop/animations/animation_storage.c | 1 + .../desktop/helpers/slideshow_filename.h | 3 +++ .../desktop/views/desktop_view_slideshow.c | 1 + .../desktop/views/desktop_view_slideshow.h | 3 ++- applications/services/dolphin/application.fam | 5 +--- .../dolphin/helpers/dolphin_state_filename.h | 5 ++++ .../services/expansion/application.fam | 1 - applications/services/expansion/expansion.c | 16 +++--------- applications/services/expansion/expansion_i.h | 14 ---------- .../expansion/expansion_settings_filename.h | 4 ++- applications/services/gui/gui.c | 4 +-- .../services/notification/notification_app.c | 26 +++++++++---------- .../services/notification/notification_app.h | 2 +- .../notification_settings_filename.h | 5 ++++ .../bt_settings_app/bt_settings_app.h | 1 + .../scenes/bt_settings_scene_start.c | 2 +- .../expansion_settings_app.c | 7 +++-- .../expansion_settings_app.h | 3 +-- .../notification_settings_app.c | 2 +- 26 files changed, 72 insertions(+), 81 deletions(-) create mode 100644 applications/services/bt/bt_service/bt_keys_filename.h create mode 100644 applications/services/bt/bt_settings_filename.h create mode 100644 applications/services/desktop/helpers/slideshow_filename.h create mode 100644 applications/services/dolphin/helpers/dolphin_state_filename.h delete mode 100644 applications/services/expansion/expansion_i.h create mode 100644 applications/services/notification/notification_settings_filename.h diff --git a/applications/services/bt/application.fam b/applications/services/bt/application.fam index 0113beb9b..54e197259 100644 --- a/applications/services/bt/application.fam +++ b/applications/services/bt/application.fam @@ -14,7 +14,7 @@ App( ], stack_size=1 * 1024, order=1000, - sdk_headers=["bt_service/bt.h", "bt_service/bt_keys_storage.h", "bt_settings.h"], + sdk_headers=["bt_service/bt.h", "bt_service/bt_keys_storage.h"], ) App( diff --git a/applications/services/bt/bt_cli.c b/applications/services/bt/bt_cli.c index 23cb3f3c1..1abc2f0dd 100644 --- a/applications/services/bt/bt_cli.c +++ b/applications/services/bt/bt_cli.c @@ -5,7 +5,7 @@ #include #include "bt_settings.h" -#include "bt_service/bt_i.h" +#include "bt_service/bt.h" #include static void bt_cli_command_hci_info(Cli* cli, FuriString* args, void* context) { @@ -181,10 +181,12 @@ static void bt_cli_print_usage(void) { static void bt_cli(Cli* cli, FuriString* args, void* context) { UNUSED(context); - Bt* bt = furi_record_open(RECORD_BT); + furi_record_open(RECORD_BT); FuriString* cmd; cmd = furi_string_alloc(); + BtSettings bt_settings; + bt_settings_load(&bt_settings); do { if(!args_read_string_and_trim(args, cmd)) { @@ -217,7 +219,7 @@ static void bt_cli(Cli* cli, FuriString* args, void* context) { bt_cli_print_usage(); } while(false); - if(bt->bt_settings.enabled) { + if(bt_settings.enabled) { furi_hal_bt_start_advertising(); } diff --git a/applications/services/bt/bt_service/bt_i.h b/applications/services/bt/bt_service/bt_i.h index 8790b3687..cc1cd5a96 100644 --- a/applications/services/bt/bt_service/bt_i.h +++ b/applications/services/bt/bt_service/bt_i.h @@ -19,7 +19,7 @@ #include #include -#define BT_KEYS_STORAGE_PATH CFG_PATH("bt.keys") +#include "bt_keys_filename.h" typedef enum { BtMessageTypeUpdateStatus, diff --git a/applications/services/bt/bt_service/bt_keys_filename.h b/applications/services/bt/bt_service/bt_keys_filename.h new file mode 100644 index 000000000..1c1135a29 --- /dev/null +++ b/applications/services/bt/bt_service/bt_keys_filename.h @@ -0,0 +1,5 @@ +#pragma once + +#define BT_KEYS_STORAGE_FILE_NAME ".bt.keys" + +#define BT_KEYS_STORAGE_PATH INT_PATH(BT_KEYS_STORAGE_FILE_NAME) diff --git a/applications/services/bt/bt_settings.h b/applications/services/bt/bt_settings.h index 203673f89..c63220abb 100644 --- a/applications/services/bt/bt_settings.h +++ b/applications/services/bt/bt_settings.h @@ -6,8 +6,6 @@ extern "C" { #endif -#define BT_SETTINGS_PATH CFG_PATH("bt.settings") - typedef struct { bool enabled; } BtSettings; diff --git a/applications/services/bt/bt_settings_filename.h b/applications/services/bt/bt_settings_filename.h new file mode 100644 index 000000000..f26f969a4 --- /dev/null +++ b/applications/services/bt/bt_settings_filename.h @@ -0,0 +1,5 @@ +#pragma once + +#define BT_SETTINGS_FILE_NAME ".bt.settings" + +#define BT_SETTINGS_PATH INT_PATH(BT_SETTINGS_FILE_NAME) diff --git a/applications/services/desktop/animations/animation_manager.c b/applications/services/desktop/animations/animation_manager.c index cac926460..65b1eade0 100644 --- a/applications/services/desktop/animations/animation_manager.c +++ b/applications/services/desktop/animations/animation_manager.c @@ -68,8 +68,7 @@ static void animation_manager_start_new_idle(AnimationManager* animation_manager static bool animation_manager_check_blocking(AnimationManager* animation_manager); static bool animation_manager_is_valid_idle_animation( const StorageAnimationManifestInfo* info, - const DolphinStats* stats, - const bool unlock); + const DolphinStats* stats); static void animation_manager_switch_to_one_shot_view(AnimationManager* animation_manager); static void animation_manager_switch_to_animation_view(AnimationManager* animation_manager); @@ -148,8 +147,7 @@ void animation_manager_check_blocking_process(AnimationManager* animation_manage const StorageAnimationManifestInfo* manifest_info = animation_storage_get_meta(animation_manager->current_animation); - bool valid = animation_manager_is_valid_idle_animation( - manifest_info, &stats, momentum_settings.unlock_anims); + bool valid = animation_manager_is_valid_idle_animation(manifest_info, &stats); if(!valid) { animation_manager_start_new_idle(animation_manager); @@ -343,8 +341,7 @@ View* animation_manager_get_animation_view(AnimationManager* animation_manager) static bool animation_manager_is_valid_idle_animation( const StorageAnimationManifestInfo* info, - const DolphinStats* stats, - const bool unlock) { + const DolphinStats* stats) { furi_assert(info); furi_assert(info->name); @@ -364,7 +361,7 @@ static bool animation_manager_is_valid_idle_animation( result = (sd_status == FSE_NOT_READY); } - if(!unlock) { + if(!momentum_settings.unlock_anims) { if((stats->butthurt < info->min_butthurt) || (stats->butthurt > info->max_butthurt)) { result = false; } @@ -394,13 +391,12 @@ static StorageAnimation* uint32_t whole_weight = 0; // Filter valid animations - bool unlock = momentum_settings.unlock_anims; StorageAnimationList_it_t it; for(StorageAnimationList_it(it, animation_list); !StorageAnimationList_end_p(it);) { StorageAnimation* storage_animation = *StorageAnimationList_ref(it); const StorageAnimationManifestInfo* manifest_info = animation_storage_get_meta(storage_animation); - bool valid = animation_manager_is_valid_idle_animation(manifest_info, &stats, unlock); + bool valid = animation_manager_is_valid_idle_animation(manifest_info, &stats); if(strcmp(manifest_info->name, HARDCODED_ANIMATION_NAME) == 0) { // Dont pick error anim randomly @@ -546,8 +542,7 @@ void animation_manager_load_and_continue_animation(AnimationManager* animation_m furi_record_close(RECORD_DOLPHIN); const StorageAnimationManifestInfo* manifest_info = animation_storage_get_meta(restore_animation); - bool valid = animation_manager_is_valid_idle_animation( - manifest_info, &stats, momentum_settings.unlock_anims); + bool valid = animation_manager_is_valid_idle_animation(manifest_info, &stats); // Restore only if anim is valid and not the error anim if(valid && strcmp(manifest_info->name, HARDCODED_ANIMATION_NAME) != 0) { animation_manager_replace_current_animation( @@ -559,11 +554,10 @@ void animation_manager_load_and_continue_animation(AnimationManager* animation_m animation_manager->idle_animation_timer, animation_manager->freezed_animation_time_left); } else { - const BubbleAnimation* bubble_animation = - animation_storage_get_bubble_animation( - animation_manager->current_animation); + const BubbleAnimation* animation = animation_storage_get_bubble_animation( + animation_manager->current_animation); int32_t duration = (momentum_settings.cycle_anims == 0) ? - (bubble_animation->duration) : + (animation->duration) : (momentum_settings.cycle_anims); furi_timer_start( animation_manager->idle_animation_timer, diff --git a/applications/services/desktop/animations/animation_storage.c b/applications/services/desktop/animations/animation_storage.c index dbfc9374d..ec3289473 100644 --- a/applications/services/desktop/animations/animation_storage.c +++ b/applications/services/desktop/animations/animation_storage.c @@ -57,6 +57,7 @@ static bool animation_storage_load_single_manifest_info( const char* name) { furi_assert(manifest_info); animation_handler_select_manifest(); + bool result = false; Storage* storage = furi_record_open(RECORD_STORAGE); FlipperFormat* file = flipper_format_file_alloc(storage); diff --git a/applications/services/desktop/helpers/slideshow_filename.h b/applications/services/desktop/helpers/slideshow_filename.h new file mode 100644 index 000000000..2250d91dd --- /dev/null +++ b/applications/services/desktop/helpers/slideshow_filename.h @@ -0,0 +1,3 @@ +#pragma once + +#define SLIDESHOW_FILE_NAME ".slideshow" diff --git a/applications/services/desktop/views/desktop_view_slideshow.c b/applications/services/desktop/views/desktop_view_slideshow.c index 0fd32676a..201e7108a 100644 --- a/applications/services/desktop/views/desktop_view_slideshow.c +++ b/applications/services/desktop/views/desktop_view_slideshow.c @@ -13,6 +13,7 @@ struct DesktopSlideshowView { DesktopSlideshowViewCallback callback; void* context; FuriTimer* timer; + FuriTimer* auto_timer; }; diff --git a/applications/services/desktop/views/desktop_view_slideshow.h b/applications/services/desktop/views/desktop_view_slideshow.h index 9c026370f..942a0d25a 100644 --- a/applications/services/desktop/views/desktop_view_slideshow.h +++ b/applications/services/desktop/views/desktop_view_slideshow.h @@ -3,9 +3,10 @@ #include #include "desktop_events.h" +#include "../helpers/slideshow_filename.h" #include -#define SLIDESHOW_FS_PATH EXT_PATH(".slideshow") +#define SLIDESHOW_FS_PATH INT_PATH(SLIDESHOW_FILE_NAME) typedef struct DesktopSlideshowView DesktopSlideshowView; diff --git a/applications/services/dolphin/application.fam b/applications/services/dolphin/application.fam index 5d275a7b7..2860b67a8 100644 --- a/applications/services/dolphin/application.fam +++ b/applications/services/dolphin/application.fam @@ -6,8 +6,5 @@ App( cdefines=["SRV_DOLPHIN"], stack_size=1 * 1024, order=50, - sdk_headers=[ - "dolphin.h", - "helpers/dolphin_state.h", - ], + sdk_headers=["dolphin.h", "helpers/dolphin_state.h"], ) diff --git a/applications/services/dolphin/helpers/dolphin_state_filename.h b/applications/services/dolphin/helpers/dolphin_state_filename.h new file mode 100644 index 000000000..e6d822c5b --- /dev/null +++ b/applications/services/dolphin/helpers/dolphin_state_filename.h @@ -0,0 +1,5 @@ +#pragma once + +#define DOLPHIN_STATE_FILE_NAME ".dolphin.state" + +#define DOLPHIN_STATE_PATH INT_PATH(DOLPHIN_STATE_FILE_NAME) diff --git a/applications/services/expansion/application.fam b/applications/services/expansion/application.fam index b489cd235..5a7f1deee 100644 --- a/applications/services/expansion/application.fam +++ b/applications/services/expansion/application.fam @@ -5,7 +5,6 @@ App( cdefines=["SRV_EXPANSION"], sdk_headers=[ "expansion.h", - "expansion_i.h", "expansion_settings.h", ], requires=["rpc_start"], diff --git a/applications/services/expansion/expansion.c b/applications/services/expansion/expansion.c index 3adf44716..2b0c5b27a 100644 --- a/applications/services/expansion/expansion.c +++ b/applications/services/expansion/expansion.c @@ -1,5 +1,4 @@ #include "expansion.h" -#include "expansion_i.h" #include @@ -34,10 +33,8 @@ typedef enum { } ExpansionMessageType; typedef union { - union { - FuriHalSerialId serial_id; - bool* is_connected; - }; + FuriHalSerialId serial_id; + bool* is_connected; } ExpansionMessageData; typedef struct { @@ -52,8 +49,6 @@ struct Expansion { FuriHalSerialId serial_id; ExpansionWorker* worker; ExpansionState state; - - ExpansionSettings settings; }; static const char* const expansion_uart_names[] = { @@ -110,7 +105,7 @@ static void if(settings.uart_index < FuriHalSerialIdMax) { instance->state = ExpansionStateEnabled; - instance->serial_id = instance->settings.uart_index; + instance->serial_id = settings.uart_index; furi_hal_serial_control_set_expansion_callback( instance->serial_id, expansion_detect_callback, instance); @@ -307,7 +302,6 @@ void expansion_on_system_start(void* arg) { return; } - expansion_settings_load(&instance->settings); expansion_enable(instance); } @@ -366,7 +360,3 @@ void expansion_set_listen_serial(Expansion* instance, FuriHalSerialId serial_id) furi_message_queue_put(instance->queue, &message, FuriWaitForever); api_lock_wait_unlock_and_free(message.api_lock); } - -ExpansionSettings* expansion_get_settings(Expansion* instance) { - return &instance->settings; -} diff --git a/applications/services/expansion/expansion_i.h b/applications/services/expansion/expansion_i.h deleted file mode 100644 index b4be4b0d6..000000000 --- a/applications/services/expansion/expansion_i.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "expansion_settings.h" -#include "expansion.h" - -#ifdef __cplusplus -extern "C" { -#endif - -ExpansionSettings* expansion_get_settings(Expansion* instance); - -#ifdef __cplusplus -} -#endif diff --git a/applications/services/expansion/expansion_settings_filename.h b/applications/services/expansion/expansion_settings_filename.h index 586f775c6..5c52bb25d 100644 --- a/applications/services/expansion/expansion_settings_filename.h +++ b/applications/services/expansion/expansion_settings_filename.h @@ -6,4 +6,6 @@ /** * @brief File name used for expansion settings. */ -#define EXPANSION_SETTINGS_PATH CFG_PATH("expansion.settings") +#define EXPANSION_SETTINGS_FILE_NAME ".expansion.settings" + +#define EXPANSION_SETTINGS_PATH INT_PATH(EXPANSION_SETTINGS_FILE_NAME) diff --git a/applications/services/gui/gui.c b/applications/services/gui/gui.c index 812bf1c04..0f5ed61e9 100644 --- a/applications/services/gui/gui.c +++ b/applications/services/gui/gui.c @@ -1,8 +1,9 @@ -#include #include "gui_i.h" #include + #include #include +#include #define TAG "GuiSrv" @@ -628,7 +629,6 @@ Gui* gui_alloc(void) { gui->ascii_events = furi_record_open(RECORD_ASCII_EVENTS); furi_pubsub_subscribe(gui->input_events, gui_input_events_callback, gui); - furi_check(gui->ascii_events); furi_pubsub_subscribe(gui->ascii_events, gui_ascii_events_callback, gui); Storage* storage = furi_record_open(RECORD_STORAGE); diff --git a/applications/services/notification/notification_app.c b/applications/services/notification/notification_app.c index 32a274468..fee50e282 100644 --- a/applications/services/notification/notification_app.c +++ b/applications/services/notification/notification_app.c @@ -471,26 +471,24 @@ static NotificationApp* notification_app_alloc(void) { app->settings.display_off_delay_ms = 30000; app->settings.vibro_on = true; - // malloc() also does memset(0), no need to init 0 values - _Static_assert(LayerInternal == 0, "need to init layer values"); - // app->display.value[LayerInternal] = 0x00; - // app->display.value[LayerNotification] = 0x00; - // app->display.index = LayerInternal; + app->display.value[LayerInternal] = 0x00; + app->display.value[LayerNotification] = 0x00; + app->display.index = LayerInternal; app->display.light = LightBacklight; - // app->led[0].value[LayerInternal] = 0x00; - // app->led[0].value[LayerNotification] = 0x00; - // app->led[0].index = LayerInternal; + app->led[0].value[LayerInternal] = 0x00; + app->led[0].value[LayerNotification] = 0x00; + app->led[0].index = LayerInternal; app->led[0].light = LightRed; - // app->led[1].value[LayerInternal] = 0x00; - // app->led[1].value[LayerNotification] = 0x00; - // app->led[1].index = LayerInternal; + app->led[1].value[LayerInternal] = 0x00; + app->led[1].value[LayerNotification] = 0x00; + app->led[1].index = LayerInternal; app->led[1].light = LightGreen; - // app->led[2].value[LayerInternal] = 0x00; - // app->led[2].value[LayerNotification] = 0x00; - // app->led[2].index = LayerInternal; + app->led[2].value[LayerInternal] = 0x00; + app->led[2].value[LayerNotification] = 0x00; + app->led[2].index = LayerInternal; app->led[2].light = LightBlue; app->settings.version = NOTIFICATION_SETTINGS_VERSION; diff --git a/applications/services/notification/notification_app.h b/applications/services/notification/notification_app.h index bd4849614..f9666910a 100644 --- a/applications/services/notification/notification_app.h +++ b/applications/services/notification/notification_app.h @@ -2,6 +2,7 @@ #include #include "notification.h" #include "notification_messages.h" +#include "notification_settings_filename.h" #define NOTIFICATION_LED_COUNT 3 #define NOTIFICATION_EVENT_COMPLETE 0x00000001U @@ -34,7 +35,6 @@ typedef struct { #define NOTIFICATION_SETTINGS_VERSION 0x02 #define NOTIFICATION_SETTINGS_MAGIC 0x16 -#define NOTIFICATION_SETTINGS_PATH CFG_PATH("notification.settings") typedef struct { uint8_t version; diff --git a/applications/services/notification/notification_settings_filename.h b/applications/services/notification/notification_settings_filename.h new file mode 100644 index 000000000..169bb1472 --- /dev/null +++ b/applications/services/notification/notification_settings_filename.h @@ -0,0 +1,5 @@ +#pragma once + +#define NOTIFICATION_SETTINGS_FILE_NAME ".notification.settings" + +#define NOTIFICATION_SETTINGS_PATH INT_PATH(NOTIFICATION_SETTINGS_FILE_NAME) diff --git a/applications/settings/bt_settings_app/bt_settings_app.h b/applications/settings/bt_settings_app/bt_settings_app.h index 98168212e..5255945ff 100644 --- a/applications/settings/bt_settings_app/bt_settings_app.h +++ b/applications/settings/bt_settings_app/bt_settings_app.h @@ -27,6 +27,7 @@ enum BtSettingsCustomEvent { }; typedef struct { + BtSettings settings; Bt* bt; Gui* gui; SceneManager* scene_manager; diff --git a/applications/settings/bt_settings_app/scenes/bt_settings_scene_start.c b/applications/settings/bt_settings_app/scenes/bt_settings_scene_start.c index 9bd4ff9ac..a76740bd1 100644 --- a/applications/settings/bt_settings_app/scenes/bt_settings_scene_start.c +++ b/applications/settings/bt_settings_app/scenes/bt_settings_scene_start.c @@ -46,7 +46,7 @@ void bt_settings_scene_start_on_enter(void* context) { BtSettingNum, bt_settings_scene_start_var_list_change_callback, app); - if(app->bt->bt_settings.enabled) { + if(app->settings.enabled) { variable_item_set_current_value_index(item, BtSettingOn); variable_item_set_current_value_text(item, bt_settings_text[BtSettingOn]); } else { diff --git a/applications/settings/expansion_settings_app/expansion_settings_app.c b/applications/settings/expansion_settings_app/expansion_settings_app.c index 629c9a0a0..7544bea32 100644 --- a/applications/settings/expansion_settings_app/expansion_settings_app.c +++ b/applications/settings/expansion_settings_app/expansion_settings_app.c @@ -10,7 +10,7 @@ static void expansion_settings_app_uart_changed(VariableItem* item) { ExpansionSettingsApp* app = variable_item_get_context(item); const uint8_t index = variable_item_get_current_value_index(item); variable_item_set_current_value_text(item, expansion_uart_text[index]); - app->settings->uart_index = index; + app->settings.uart_index = index; if(index < FuriHalSerialIdMax) { expansion_set_listen_serial(app->expansion, index); @@ -31,7 +31,6 @@ static ExpansionSettingsApp* expansion_settings_app_alloc(void) { app->gui = furi_record_open(RECORD_GUI); app->expansion = furi_record_open(RECORD_EXPANSION); - app->settings = expansion_get_settings(app->expansion); app->view_dispatcher = view_dispatcher_alloc(); view_dispatcher_enable_queue(app->view_dispatcher); @@ -50,7 +49,7 @@ static ExpansionSettingsApp* expansion_settings_app_alloc(void) { COUNT_OF(expansion_uart_text), expansion_settings_app_uart_changed, app); - value_index = app->settings->uart_index; + value_index = app->settings.uart_index; variable_item_set_current_value_index(item, value_index); variable_item_set_current_value_text(item, expansion_uart_text[value_index]); @@ -69,7 +68,7 @@ static ExpansionSettingsApp* expansion_settings_app_alloc(void) { static void expansion_settings_app_free(ExpansionSettingsApp* app) { furi_assert(app); - expansion_settings_save(app->settings); + expansion_settings_save(&app->settings); view_dispatcher_remove_view(app->view_dispatcher, ExpansionSettingsViewVarItemList); variable_item_list_free(app->var_item_list); diff --git a/applications/settings/expansion_settings_app/expansion_settings_app.h b/applications/settings/expansion_settings_app/expansion_settings_app.h index a404f9c1a..a43bf853f 100644 --- a/applications/settings/expansion_settings_app/expansion_settings_app.h +++ b/applications/settings/expansion_settings_app/expansion_settings_app.h @@ -8,7 +8,6 @@ #include #include -#include #include typedef struct { @@ -16,7 +15,7 @@ typedef struct { ViewDispatcher* view_dispatcher; VariableItemList* var_item_list; Expansion* expansion; - ExpansionSettings* settings; + ExpansionSettings settings; } ExpansionSettingsApp; typedef enum { diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c index 56e63d876..7576dcf3c 100644 --- a/applications/settings/notification_settings/notification_settings_app.c +++ b/applications/settings/notification_settings/notification_settings_app.c @@ -193,7 +193,7 @@ static NotificationAppSettings* alloc_settings(void) { variable_item_set_current_value_text(item, contrast_text[value_index]); item = variable_item_list_add( - app->variable_item_list, "LCD Brightness", BACKLIGHT_COUNT, backlight_changed, app); + app->variable_item_list, "LCD Backlight", BACKLIGHT_COUNT, backlight_changed, app); value_index = value_index_float( app->notification->settings.display_brightness, backlight_value, BACKLIGHT_COUNT); variable_item_set_current_value_index(item, value_index);