Dont allow rpc unlock by default if pin locked

This commit is contained in:
Willy-JL
2023-06-09 16:04:15 +01:00
parent 605f9190b0
commit e407c83829
5 changed files with 32 additions and 3 deletions
@@ -3,6 +3,7 @@
enum VarItemListIndex {
VarItemListIndexLockOnBoot,
VarItemListIndexFormatOn10BadPins,
VarItemListIndexPinUnlockFromApp,
VarItemListIndexShowTime,
VarItemListIndexShowSeconds,
VarItemListIndexShowDate,
@@ -31,6 +32,14 @@ static void xtreme_app_scene_interface_lockscreen_bad_pins_format_changed(Variab
app->save_settings = true;
}
static void xtreme_app_scene_interface_lockscreen_pin_unlock_from_app_changed(VariableItem* item) {
XtremeApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
XTREME_SETTINGS()->pin_unlock_from_app = value;
app->save_settings = true;
}
static void xtreme_app_scene_interface_lockscreen_lockscreen_time_changed(VariableItem* item) {
XtremeApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
@@ -89,13 +98,23 @@ void xtreme_app_scene_interface_lockscreen_on_enter(void* context) {
item = variable_item_list_add(
var_item_list,
"Format on 10 bad PINs",
"Format on 10 Bad PINs",
2,
xtreme_app_scene_interface_lockscreen_bad_pins_format_changed,
app);
variable_item_set_current_value_index(item, xtreme_settings->bad_pins_format);
variable_item_set_current_value_text(item, xtreme_settings->bad_pins_format ? "ON" : "OFF");
item = variable_item_list_add(
var_item_list,
"PIN Unlock From App",
2,
xtreme_app_scene_interface_lockscreen_pin_unlock_from_app_changed,
app);
variable_item_set_current_value_index(item, xtreme_settings->pin_unlock_from_app);
variable_item_set_current_value_text(
item, xtreme_settings->pin_unlock_from_app ? "ON" : "OFF");
item = variable_item_list_add(
var_item_list,
"Show Time",
+4 -1
View File
@@ -439,7 +439,9 @@ bool desktop_api_is_locked(Desktop* instance) {
void desktop_api_unlock(Desktop* instance) {
furi_assert(instance);
view_dispatcher_send_custom_event(instance->view_dispatcher, DesktopLockedEventUnlocked);
if(!furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) || XTREME_SETTINGS()->pin_unlock_from_app) {
view_dispatcher_send_custom_event(instance->view_dispatcher, DesktopLockedEventUnlocked);
}
}
FuriPubSub* desktop_api_get_status_pubsub(Desktop* instance) {
@@ -464,6 +466,7 @@ int32_t desktop_srv(void* p) {
if(!ok) {
memset(&desktop->settings, 0, sizeof(desktop->settings));
furi_hal_rtc_reset_flag(FuriHalRtcFlagLock);
furi_hal_rtc_set_pin_fails(0);
}
desktop_clock_toggle_view(desktop, desktop->settings.display_clock);
@@ -27,7 +27,7 @@ typedef struct {
typedef enum {
FuriHalRtcFlagDebug = (1 << 0),
FuriHalRtcFlagFactoryReset = (1 << 1),
FuriHalRtcFlagLock = (1 << 2),
FuriHalRtcFlagLock = (1 << 2), // WITH PIN, on OFW also for keypad (removes option to do both)
FuriHalRtcFlagC2Update = (1 << 3),
FuriHalRtcFlagHandOrient = (1 << 4),
FuriHalRtcFlagLegacySleep = (1 << 5),
+6
View File
@@ -14,6 +14,7 @@ XtremeSettings xtreme_settings = {
.wii_menu = true, // ON
.lock_on_boot = false, // OFF
.bad_pins_format = false, // OFF
.pin_unlock_from_app = false, // OFF
.lockscreen_time = true, // ON
.lockscreen_seconds = false, // OFF
.lockscreen_date = true, // ON
@@ -75,6 +76,10 @@ void XTREME_SETTINGS_LOAD() {
x->bad_pins_format = b;
}
flipper_format_rewind(file);
if(flipper_format_read_bool(file, "pin_unlock_from_app", &b, 1)) {
x->pin_unlock_from_app = b;
}
flipper_format_rewind(file);
if(flipper_format_read_bool(file, "lock_on_boot", &b, 1)) {
x->lock_on_boot = b;
}
@@ -173,6 +178,7 @@ void XTREME_SETTINGS_SAVE() {
flipper_format_write_bool(file, "fallback_anim", &x->fallback_anim, 1);
flipper_format_write_bool(file, "wii_menu", &x->wii_menu, 1);
flipper_format_write_bool(file, "bad_pins_format", &x->bad_pins_format, 1);
flipper_format_write_bool(file, "pin_unlock_from_app", &x->pin_unlock_from_app, 1);
flipper_format_write_bool(file, "lock_on_boot", &x->lock_on_boot, 1);
flipper_format_write_bool(file, "lockscreen_time", &x->lockscreen_time, 1);
flipper_format_write_bool(file, "lockscreen_seconds", &x->lockscreen_seconds, 1);
+1
View File
@@ -23,6 +23,7 @@ typedef struct {
bool wii_menu;
bool lock_on_boot;
bool bad_pins_format;
bool pin_unlock_from_app;
bool lockscreen_time;
bool lockscreen_seconds;
bool lockscreen_date;