#include "settings.h" #define TAG "XtremeSettings" XtremeSettings* xtreme_settings = NULL; XtremeSettings* XTREME_SETTINGS() { if(xtreme_settings == NULL) { XTREME_SETTINGS_LOAD(); } return xtreme_settings; } void XTREME_SETTINGS_LOAD() { if(xtreme_settings == NULL) { xtreme_settings = malloc(sizeof(XtremeSettings)); bool loaded = false; if(!furi_hal_is_normal_boot()) { FURI_LOG_W(TAG, "Load skipped. Device is in special startup mode."); loaded = false; } else { loaded = saved_struct_load( XTREME_SETTINGS_PATH, xtreme_settings, sizeof(XtremeSettings), XTREME_SETTINGS_MAGIC, XTREME_SETTINGS_VERSION); if(!loaded) { Storage* storage = furi_record_open(RECORD_STORAGE); storage_common_copy(storage, XTREME_SETTINGS_OLD_PATH, XTREME_SETTINGS_PATH); storage_common_copy(storage, XTREME_SETTINGS_OLD_INT_PATH, XTREME_SETTINGS_PATH); storage_common_remove(storage, XTREME_SETTINGS_OLD_PATH); storage_common_remove(storage, XTREME_SETTINGS_OLD_INT_PATH); furi_record_close(RECORD_STORAGE); loaded = saved_struct_load( XTREME_SETTINGS_PATH, xtreme_settings, sizeof(XtremeSettings), XTREME_SETTINGS_MAGIC, XTREME_SETTINGS_VERSION); } } if(!loaded) { memset(xtreme_settings, 0, sizeof(XtremeSettings)); strlcpy(xtreme_settings->asset_pack, "", MAX_PACK_NAME_LEN); // SFW xtreme_settings->anim_speed = 100; // 100% xtreme_settings->cycle_anims = 0; // Meta.txt xtreme_settings->unlock_anims = false; // OFF xtreme_settings->fallback_anim = true; // ON xtreme_settings->wii_menu = true; // ON xtreme_settings->lockscreen_time = true; // ON xtreme_settings->lockscreen_seconds = false; // ON xtreme_settings->lockscreen_date = true; // ON xtreme_settings->lockscreen_statusbar = true; // ON xtreme_settings->lockscreen_prompt = true; // ON xtreme_settings->battery_icon = BatteryIconBarPercent; // Bar % xtreme_settings->status_icons = true; // ON xtreme_settings->bar_borders = true; // ON xtreme_settings->bar_background = false; // OFF xtreme_settings->sort_dirs_first = true; // ON xtreme_settings->dark_mode = false; // OFF xtreme_settings->bad_bt = false; // USB xtreme_settings->bad_bt_remember = false; // OFF xtreme_settings->butthurt_timer = 43200; // 12 H xtreme_settings->rgb_backlight = false; // OFF } } } bool XTREME_SETTINGS_SAVE() { if(xtreme_settings == NULL) { XTREME_SETTINGS_LOAD(); } if(!furi_hal_is_normal_boot()) { return true; } return saved_struct_save( XTREME_SETTINGS_PATH, xtreme_settings, sizeof(XtremeSettings), XTREME_SETTINGS_MAGIC, XTREME_SETTINGS_VERSION); }