From 5facf6dc89c5e043290e3b407b61601b8e9b123f Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sat, 25 Mar 2023 20:12:48 +0000 Subject: [PATCH] Move setting files to sd card --- .../airmouse/tracking/calibration_data.h | 2 +- applications/services/bt/bt_service/bt.c | 4 ++++ applications/services/bt/bt_service/bt_i.h | 3 ++- applications/services/bt/bt_settings.c | 16 +++++++++++-- .../services/desktop/desktop_settings.c | 22 ++++++++++++++++++ .../services/desktop/desktop_settings.h | 23 +++++-------------- .../services/dolphin/helpers/dolphin_state.c | 16 ++++++++++++- applications/services/power/power_settings.c | 22 ++++++++++++++++++ applications/services/power/power_settings.h | 11 ++++----- 9 files changed, 90 insertions(+), 29 deletions(-) create mode 100644 applications/services/desktop/desktop_settings.c create mode 100644 applications/services/power/power_settings.c diff --git a/applications/external/airmouse/tracking/calibration_data.h b/applications/external/airmouse/tracking/calibration_data.h index d47dab08d..7d240775a 100644 --- a/applications/external/airmouse/tracking/calibration_data.h +++ b/applications/external/airmouse/tracking/calibration_data.h @@ -8,7 +8,7 @@ #define CALIBRATION_DATA_VER (1) #define CALIBRATION_DATA_FILE_NAME ".calibration.data" -#define CALIBRATION_DATA_PATH INT_PATH(CALIBRATION_DATA_FILE_NAME) +#define CALIBRATION_DATA_PATH EXT_PATH(CALIBRATION_DATA_FILE_NAME) #define CALIBRATION_DATA_MAGIC (0x23) #define CALIBRATION_DATA_SAVE(x) \ diff --git a/applications/services/bt/bt_service/bt.c b/applications/services/bt/bt_service/bt.c index 31a43f637..e5f561ec6 100644 --- a/applications/services/bt/bt_service/bt.c +++ b/applications/services/bt/bt_service/bt.c @@ -126,6 +126,10 @@ Bt* bt_alloc() { bt_settings_save(&bt->bt_settings); } // Keys storage + Storage* storage = furi_record_open(RECORD_STORAGE); + storage_common_copy(storage, BT_KEYS_STORAGE_OLD_PATH, BT_KEYS_STORAGE_PATH); + storage_common_remove(storage, BT_KEYS_STORAGE_OLD_PATH); + furi_record_close(RECORD_STORAGE); bt->keys_storage = bt_keys_storage_alloc(BT_KEYS_STORAGE_PATH); // Alloc queue bt->message_queue = furi_message_queue_alloc(8, sizeof(BtMessage)); diff --git a/applications/services/bt/bt_service/bt_i.h b/applications/services/bt/bt_service/bt_i.h index 41e5bcd8c..92656e791 100644 --- a/applications/services/bt/bt_service/bt_i.h +++ b/applications/services/bt/bt_service/bt_i.h @@ -20,7 +20,8 @@ #include "bt_keys_filename.h" -#define BT_KEYS_STORAGE_PATH INT_PATH(BT_KEYS_STORAGE_FILE_NAME) +#define BT_KEYS_STORAGE_OLD_PATH INT_PATH(BT_KEYS_STORAGE_FILE_NAME) +#define BT_KEYS_STORAGE_PATH EXT_PATH(BT_KEYS_STORAGE_FILE_NAME) #define BT_API_UNLOCK_EVENT (1UL << 0) diff --git a/applications/services/bt/bt_settings.c b/applications/services/bt/bt_settings.c index 1eaf6c7d7..e7fc65ad7 100644 --- a/applications/services/bt/bt_settings.c +++ b/applications/services/bt/bt_settings.c @@ -4,15 +4,27 @@ #include #include -#define BT_SETTINGS_PATH INT_PATH(BT_SETTINGS_FILE_NAME) +#define BT_SETTINGS_OLD_PATH INT_PATH(BT_SETTINGS_FILE_NAME) +#define BT_SETTINGS_PATH EXT_PATH(BT_SETTINGS_FILE_NAME) #define BT_SETTINGS_VERSION (0) #define BT_SETTINGS_MAGIC (0x19) bool bt_settings_load(BtSettings* bt_settings) { furi_assert(bt_settings); - return saved_struct_load( + bool ret = saved_struct_load( BT_SETTINGS_PATH, bt_settings, sizeof(BtSettings), BT_SETTINGS_MAGIC, BT_SETTINGS_VERSION); + + if(!ret) { + Storage* storage = furi_record_open(RECORD_STORAGE); + storage_common_copy(storage, BT_SETTINGS_OLD_PATH, BT_SETTINGS_PATH); + storage_common_remove(storage, BT_SETTINGS_OLD_PATH); + furi_record_close(RECORD_STORAGE); + ret = saved_struct_load( + BT_SETTINGS_PATH, bt_settings, sizeof(BtSettings), BT_SETTINGS_MAGIC, BT_SETTINGS_VERSION); + } + + return ret; } bool bt_settings_save(BtSettings* bt_settings) { diff --git a/applications/services/desktop/desktop_settings.c b/applications/services/desktop/desktop_settings.c new file mode 100644 index 000000000..99e2371ab --- /dev/null +++ b/applications/services/desktop/desktop_settings.c @@ -0,0 +1,22 @@ +#include "desktop_settings.h" + +bool DESKTOP_SETTINGS_SAVE(DesktopSettings* x) { + return saved_struct_save( + DESKTOP_SETTINGS_PATH, x, sizeof(DesktopSettings), DESKTOP_SETTINGS_MAGIC, DESKTOP_SETTINGS_VER); +} + +bool DESKTOP_SETTINGS_LOAD(DesktopSettings* x) { + bool ret = saved_struct_load( + DESKTOP_SETTINGS_PATH, x, sizeof(DesktopSettings), DESKTOP_SETTINGS_MAGIC, DESKTOP_SETTINGS_VER); + + if(!ret) { + Storage* storage = furi_record_open(RECORD_STORAGE); + storage_common_copy(storage, DESKTOP_SETTINGS_OLD_PATH, DESKTOP_SETTINGS_PATH); + storage_common_remove(storage, DESKTOP_SETTINGS_OLD_PATH); + furi_record_close(RECORD_STORAGE); + ret = saved_struct_load( + DESKTOP_SETTINGS_PATH, x, sizeof(DesktopSettings), DESKTOP_SETTINGS_MAGIC, DESKTOP_SETTINGS_VER); + } + + return ret; +} diff --git a/applications/services/desktop/desktop_settings.h b/applications/services/desktop/desktop_settings.h index 0019f1ef8..c915e466c 100644 --- a/applications/services/desktop/desktop_settings.h +++ b/applications/services/desktop/desktop_settings.h @@ -11,28 +11,13 @@ #define DESKTOP_SETTINGS_VER (7) -#define DESKTOP_SETTINGS_PATH INT_PATH(DESKTOP_SETTINGS_FILE_NAME) +#define DESKTOP_SETTINGS_OLD_PATH INT_PATH(DESKTOP_SETTINGS_FILE_NAME) +#define DESKTOP_SETTINGS_PATH EXT_PATH(DESKTOP_SETTINGS_FILE_NAME) #define DESKTOP_SETTINGS_MAGIC (0x17) #define PIN_MAX_LENGTH 12 #define DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG "run_pin_setup" -#define DESKTOP_SETTINGS_SAVE(x) \ - saved_struct_save( \ - DESKTOP_SETTINGS_PATH, \ - (x), \ - sizeof(DesktopSettings), \ - DESKTOP_SETTINGS_MAGIC, \ - DESKTOP_SETTINGS_VER) - -#define DESKTOP_SETTINGS_LOAD(x) \ - saved_struct_load( \ - DESKTOP_SETTINGS_PATH, \ - (x), \ - sizeof(DesktopSettings), \ - DESKTOP_SETTINGS_MAGIC, \ - DESKTOP_SETTINGS_VER) - #define MAX_PIN_SIZE 10 #define MIN_PIN_SIZE 4 #define MAX_APP_LENGTH 128 @@ -55,3 +40,7 @@ typedef struct { uint32_t auto_lock_delay_ms; bool auto_lock_with_pin; } DesktopSettings; + +bool DESKTOP_SETTINGS_SAVE(DesktopSettings* x); + +bool DESKTOP_SETTINGS_LOAD(DesktopSettings* x); diff --git a/applications/services/dolphin/helpers/dolphin_state.c b/applications/services/dolphin/helpers/dolphin_state.c index 31f9d4030..4ffaaa8ba 100644 --- a/applications/services/dolphin/helpers/dolphin_state.c +++ b/applications/services/dolphin/helpers/dolphin_state.c @@ -11,7 +11,8 @@ #define TAG "DolphinState" -#define DOLPHIN_STATE_PATH INT_PATH(DOLPHIN_STATE_FILE_NAME) +#define DOLPHIN_STATE_OLD_PATH INT_PATH(DOLPHIN_STATE_FILE_NAME) +#define DOLPHIN_STATE_PATH EXT_PATH(DOLPHIN_STATE_FILE_NAME) #define DOLPHIN_STATE_HEADER_MAGIC 0xD0 #define DOLPHIN_STATE_HEADER_VERSION 0x01 @@ -61,6 +62,19 @@ bool dolphin_state_load(DolphinState* dolphin_state) { DOLPHIN_STATE_HEADER_MAGIC, DOLPHIN_STATE_HEADER_VERSION); + if(!success) { + Storage* storage = furi_record_open(RECORD_STORAGE); + storage_common_copy(storage, DOLPHIN_STATE_OLD_PATH, DOLPHIN_STATE_PATH); + storage_common_remove(storage, DOLPHIN_STATE_OLD_PATH); + furi_record_close(RECORD_STORAGE); + success = saved_struct_load( + DOLPHIN_STATE_PATH, + &dolphin_state->data, + sizeof(DolphinStoreData), + DOLPHIN_STATE_HEADER_MAGIC, + DOLPHIN_STATE_HEADER_VERSION); + } + if(success) { if((dolphin_state->data.butthurt > BUTTHURT_MAX) || (dolphin_state->data.butthurt < BUTTHURT_MIN)) { diff --git a/applications/services/power/power_settings.c b/applications/services/power/power_settings.c new file mode 100644 index 000000000..cd456a5a8 --- /dev/null +++ b/applications/services/power/power_settings.c @@ -0,0 +1,22 @@ +#include "power_settings.h" + +bool SAVE_POWER_SETTINGS(uint32_t* x) { + return saved_struct_save( + POWER_SETTINGS_PATH, x, sizeof(uint32_t), POWER_SETTINGS_MAGIC, POWER_SETTINGS_VER); +} + +bool LOAD_POWER_SETTINGS(uint32_t* x) { + bool ret = saved_struct_load( + POWER_SETTINGS_PATH, x, sizeof(uint32_t), POWER_SETTINGS_MAGIC, POWER_SETTINGS_VER); + + if(!ret) { + Storage* storage = furi_record_open(RECORD_STORAGE); + storage_common_copy(storage, POWER_SETTINGS_OLD_PATH, POWER_SETTINGS_PATH); + storage_common_remove(storage, POWER_SETTINGS_OLD_PATH); + furi_record_close(RECORD_STORAGE); + ret = saved_struct_load( + POWER_SETTINGS_PATH, x, sizeof(uint32_t), POWER_SETTINGS_MAGIC, POWER_SETTINGS_VER); + } + + return ret; +} diff --git a/applications/services/power/power_settings.h b/applications/services/power/power_settings.h index 0f2afa295..7067521a3 100644 --- a/applications/services/power/power_settings.h +++ b/applications/services/power/power_settings.h @@ -4,13 +4,10 @@ #define POWER_SETTINGS_VER (1) -#define POWER_SETTINGS_PATH INT_PATH(POWER_SETTINGS_FILE_NAME) +#define POWER_SETTINGS_OLD_PATH INT_PATH(POWER_SETTINGS_FILE_NAME) +#define POWER_SETTINGS_PATH EXT_PATH(POWER_SETTINGS_FILE_NAME) #define POWER_SETTINGS_MAGIC (0x21) -#define SAVE_POWER_SETTINGS(x) \ - saved_struct_save( \ - POWER_SETTINGS_PATH, (x), sizeof(uint32_t), POWER_SETTINGS_MAGIC, POWER_SETTINGS_VER) +bool SAVE_POWER_SETTINGS(uint32_t* x); -#define LOAD_POWER_SETTINGS(x) \ - saved_struct_load( \ - POWER_SETTINGS_PATH, (x), sizeof(uint32_t), POWER_SETTINGS_MAGIC, POWER_SETTINGS_VER) +bool LOAD_POWER_SETTINGS(uint32_t* x);