|
@@ -14,7 +14,7 @@
|
|
|
#include "desktop/views/desktop_view_pin_input.h"
|
|
#include "desktop/views/desktop_view_pin_input.h"
|
|
|
#include "desktop/views/desktop_view_pin_timeout.h"
|
|
#include "desktop/views/desktop_view_pin_timeout.h"
|
|
|
#include "desktop_i.h"
|
|
#include "desktop_i.h"
|
|
|
-#include "desktop_helpers.h"
|
|
|
|
|
|
|
+#include "helpers/pin_lock.h"
|
|
|
|
|
|
|
|
static void desktop_auto_lock_arm(Desktop*);
|
|
static void desktop_auto_lock_arm(Desktop*);
|
|
|
static void desktop_auto_lock_inhibit(Desktop*);
|
|
static void desktop_auto_lock_inhibit(Desktop*);
|
|
@@ -117,7 +117,6 @@ static void desktop_auto_lock_inhibit(Desktop* desktop) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void desktop_lock(Desktop* desktop) {
|
|
void desktop_lock(Desktop* desktop) {
|
|
|
- furi_hal_rtc_set_pin_fails(0);
|
|
|
|
|
desktop_auto_lock_inhibit(desktop);
|
|
desktop_auto_lock_inhibit(desktop);
|
|
|
scene_manager_set_scene_state(
|
|
scene_manager_set_scene_state(
|
|
|
desktop->scene_manager, DesktopSceneLocked, SCENE_LOCKED_FIRST_ENTER);
|
|
desktop->scene_manager, DesktopSceneLocked, SCENE_LOCKED_FIRST_ENTER);
|
|
@@ -126,8 +125,10 @@ void desktop_lock(Desktop* desktop) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void desktop_unlock(Desktop* desktop) {
|
|
void desktop_unlock(Desktop* desktop) {
|
|
|
- furi_hal_rtc_set_pin_fails(0);
|
|
|
|
|
- desktop_helpers_unlock_system(desktop);
|
|
|
|
|
|
|
+ view_port_enabled_set(desktop->lock_viewport, false);
|
|
|
|
|
+ Gui* gui = furi_record_open("gui");
|
|
|
|
|
+ gui_set_lockdown(gui, false);
|
|
|
|
|
+ furi_record_close("gui");
|
|
|
desktop_view_locked_unlock(desktop->locked_view);
|
|
desktop_view_locked_unlock(desktop->locked_view);
|
|
|
scene_manager_search_and_switch_to_previous_scene(desktop->scene_manager, DesktopSceneMain);
|
|
scene_manager_search_and_switch_to_previous_scene(desktop->scene_manager, DesktopSceneMain);
|
|
|
desktop_auto_lock_arm(desktop);
|
|
desktop_auto_lock_arm(desktop);
|
|
@@ -301,18 +302,15 @@ int32_t desktop_srv(void* p) {
|
|
|
|
|
|
|
|
bool loaded = LOAD_DESKTOP_SETTINGS(&desktop->settings);
|
|
bool loaded = LOAD_DESKTOP_SETTINGS(&desktop->settings);
|
|
|
if(!loaded) {
|
|
if(!loaded) {
|
|
|
- furi_hal_rtc_reset_flag(FuriHalRtcFlagLock);
|
|
|
|
|
memset(&desktop->settings, 0, sizeof(desktop->settings));
|
|
memset(&desktop->settings, 0, sizeof(desktop->settings));
|
|
|
SAVE_DESKTOP_SETTINGS(&desktop->settings);
|
|
SAVE_DESKTOP_SETTINGS(&desktop->settings);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain);
|
|
scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain);
|
|
|
|
|
|
|
|
- if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) && !desktop->settings.pin_code.length) {
|
|
|
|
|
- furi_hal_rtc_reset_flag(FuriHalRtcFlagLock);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ desktop_pin_lock_init(&desktop->settings);
|
|
|
|
|
|
|
|
- if(!furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock)) {
|
|
|
|
|
|
|
+ if(!desktop_pin_lock_is_locked()) {
|
|
|
if(!loader_is_locked(desktop->loader)) {
|
|
if(!loader_is_locked(desktop->loader)) {
|
|
|
desktop_auto_lock_arm(desktop);
|
|
desktop_auto_lock_arm(desktop);
|
|
|
}
|
|
}
|