diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index 54760e970..89e4f6105 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -309,6 +309,14 @@ int32_t desktop_srv(void* p) { return 0; } + if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagResetPin)) { + Storage* storage = furi_record_open(RECORD_STORAGE); + storage_common_remove(storage, DESKTOP_SETTINGS_PATH); + storage_common_remove(storage, DESKTOP_SETTINGS_OLD_PATH); + furi_record_close(RECORD_STORAGE); + furi_hal_rtc_reset_flag(FuriHalRtcFlagResetPin); + } + Desktop* desktop = desktop_alloc(); bool loaded = DESKTOP_SETTINGS_LOAD(&desktop->settings); diff --git a/firmware/targets/f7/src/recovery.c b/firmware/targets/f7/src/recovery.c index 49d780d47..700fb03c6 100644 --- a/firmware/targets/f7/src/recovery.c +++ b/firmware/targets/f7/src/recovery.c @@ -56,6 +56,7 @@ void flipper_boot_recovery_exec() { } if(!counter) { + furi_hal_rtc_set_flag(FuriHalRtcFlagResetPin); furi_hal_rtc_set_flag(FuriHalRtcFlagFactoryReset); furi_hal_rtc_set_pin_fails(0); furi_hal_rtc_reset_flag(FuriHalRtcFlagLock); diff --git a/firmware/targets/furi_hal_include/furi_hal_rtc.h b/firmware/targets/furi_hal_include/furi_hal_rtc.h index b16b04a68..96acb5848 100644 --- a/firmware/targets/furi_hal_include/furi_hal_rtc.h +++ b/firmware/targets/furi_hal_include/furi_hal_rtc.h @@ -30,6 +30,7 @@ typedef enum { FuriHalRtcFlagLock = (1 << 2), FuriHalRtcFlagC2Update = (1 << 3), FuriHalRtcFlagHandOrient = (1 << 4), + FuriHalRtcFlagResetPin = (1 << 5), } FuriHalRtcFlag; typedef enum {