Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Kharisov <albkharisov@gmail.com>2022-02-10 21:17:41 +0300
committerGitHub <noreply@github.com>2022-02-10 21:17:41 +0300
commit21ac37a6f696da8ec26407d2f025c24825fcfec8 (patch)
tree0c81ee17fdbe39802edbdda57428e8f96d74307f /firmware
parent2a52d2d6201e46cceaa9f610792be20bbec9bb09 (diff)
[FL-2152] New PIN lock (#989)
* [Fl-2152] New PIN Lock, part 1 * Fix errors & leaks, renaming * Add support to f6 * Fix error, remove duplicate code * Fix drawing corners of Lock Popup * FuriHal: insomnia if usb connected * Applications: cleanup timers use Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Diffstat (limited to 'firmware')
-rw-r--r--firmware/targets/f6/furi_hal/furi_hal_power.c8
-rw-r--r--firmware/targets/f6/furi_hal/furi_hal_rtc.c8
-rw-r--r--firmware/targets/f6/furi_hal/furi_hal_usb.c5
-rw-r--r--firmware/targets/f7/furi_hal/furi_hal_power.c8
-rw-r--r--firmware/targets/f7/furi_hal/furi_hal_rtc.c8
-rw-r--r--firmware/targets/f7/furi_hal/furi_hal_usb.c5
-rw-r--r--firmware/targets/furi_hal_include/furi_hal_rtc.h5
7 files changed, 39 insertions, 8 deletions
diff --git a/firmware/targets/f6/furi_hal/furi_hal_power.c b/firmware/targets/f6/furi_hal/furi_hal_power.c
index a211b8c5..e34ba46e 100644
--- a/firmware/targets/f6/furi_hal/furi_hal_power.c
+++ b/firmware/targets/f6/furi_hal/furi_hal_power.c
@@ -89,17 +89,17 @@ uint16_t furi_hal_power_insomnia_level() {
}
void furi_hal_power_insomnia_enter() {
- vTaskSuspendAll();
+ FURI_CRITICAL_ENTER();
furi_assert(furi_hal_power.insomnia < UINT8_MAX);
furi_hal_power.insomnia++;
- xTaskResumeAll();
+ FURI_CRITICAL_EXIT();
}
void furi_hal_power_insomnia_exit() {
- vTaskSuspendAll();
+ FURI_CRITICAL_ENTER();
furi_assert(furi_hal_power.insomnia > 0);
furi_hal_power.insomnia--;
- xTaskResumeAll();
+ FURI_CRITICAL_EXIT();
}
bool furi_hal_power_sleep_available() {
diff --git a/firmware/targets/f6/furi_hal/furi_hal_rtc.c b/firmware/targets/f6/furi_hal/furi_hal_rtc.c
index 4d45c748..1f262692 100644
--- a/firmware/targets/f6/furi_hal/furi_hal_rtc.c
+++ b/firmware/targets/f6/furi_hal/furi_hal_rtc.c
@@ -163,3 +163,11 @@ void furi_hal_rtc_set_fault_data(uint32_t value) {
uint32_t furi_hal_rtc_get_fault_data() {
return furi_hal_rtc_get_register(FuriHalRtcRegisterFaultData);
}
+
+void furi_hal_rtc_set_pin_fails(uint32_t value) {
+ furi_hal_rtc_set_register(FuriHalRtcRegisterPinFails, value);
+}
+
+uint32_t furi_hal_rtc_get_pin_fails() {
+ return furi_hal_rtc_get_register(FuriHalRtcRegisterPinFails);
+}
diff --git a/firmware/targets/f6/furi_hal/furi_hal_usb.c b/firmware/targets/f6/furi_hal/furi_hal_usb.c
index 881081b6..7ca8ffdf 100644
--- a/firmware/targets/f6/furi_hal/furi_hal_usb.c
+++ b/firmware/targets/f6/furi_hal/furi_hal_usb.c
@@ -1,6 +1,7 @@
#include "furi_hal_version.h"
#include "furi_hal_usb_i.h"
#include "furi_hal_usb.h"
+#include <furi_hal_power.h>
#include <furi.h>
#include "usb.h"
@@ -189,6 +190,8 @@ static void susp_evt(usbd_device* dev, uint8_t event, uint8_t ep) {
if((usb_if_cur != NULL) && (usb_config.connected == true)) {
usb_config.connected = false;
usb_if_cur->suspend(&udev);
+
+ furi_hal_power_insomnia_exit();
}
if(callback != NULL) {
callback(FuriHalUsbStateEventSuspend, cb_ctx);
@@ -199,6 +202,8 @@ static void wkup_evt(usbd_device* dev, uint8_t event, uint8_t ep) {
if((usb_if_cur != NULL) && (usb_config.connected == false)) {
usb_config.connected = true;
usb_if_cur->wakeup(&udev);
+
+ furi_hal_power_insomnia_enter();
}
if(callback != NULL) {
callback(FuriHalUsbStateEventWakeup, cb_ctx);
diff --git a/firmware/targets/f7/furi_hal/furi_hal_power.c b/firmware/targets/f7/furi_hal/furi_hal_power.c
index a211b8c5..e34ba46e 100644
--- a/firmware/targets/f7/furi_hal/furi_hal_power.c
+++ b/firmware/targets/f7/furi_hal/furi_hal_power.c
@@ -89,17 +89,17 @@ uint16_t furi_hal_power_insomnia_level() {
}
void furi_hal_power_insomnia_enter() {
- vTaskSuspendAll();
+ FURI_CRITICAL_ENTER();
furi_assert(furi_hal_power.insomnia < UINT8_MAX);
furi_hal_power.insomnia++;
- xTaskResumeAll();
+ FURI_CRITICAL_EXIT();
}
void furi_hal_power_insomnia_exit() {
- vTaskSuspendAll();
+ FURI_CRITICAL_ENTER();
furi_assert(furi_hal_power.insomnia > 0);
furi_hal_power.insomnia--;
- xTaskResumeAll();
+ FURI_CRITICAL_EXIT();
}
bool furi_hal_power_sleep_available() {
diff --git a/firmware/targets/f7/furi_hal/furi_hal_rtc.c b/firmware/targets/f7/furi_hal/furi_hal_rtc.c
index 4d45c748..1f262692 100644
--- a/firmware/targets/f7/furi_hal/furi_hal_rtc.c
+++ b/firmware/targets/f7/furi_hal/furi_hal_rtc.c
@@ -163,3 +163,11 @@ void furi_hal_rtc_set_fault_data(uint32_t value) {
uint32_t furi_hal_rtc_get_fault_data() {
return furi_hal_rtc_get_register(FuriHalRtcRegisterFaultData);
}
+
+void furi_hal_rtc_set_pin_fails(uint32_t value) {
+ furi_hal_rtc_set_register(FuriHalRtcRegisterPinFails, value);
+}
+
+uint32_t furi_hal_rtc_get_pin_fails() {
+ return furi_hal_rtc_get_register(FuriHalRtcRegisterPinFails);
+}
diff --git a/firmware/targets/f7/furi_hal/furi_hal_usb.c b/firmware/targets/f7/furi_hal/furi_hal_usb.c
index 881081b6..7ca8ffdf 100644
--- a/firmware/targets/f7/furi_hal/furi_hal_usb.c
+++ b/firmware/targets/f7/furi_hal/furi_hal_usb.c
@@ -1,6 +1,7 @@
#include "furi_hal_version.h"
#include "furi_hal_usb_i.h"
#include "furi_hal_usb.h"
+#include <furi_hal_power.h>
#include <furi.h>
#include "usb.h"
@@ -189,6 +190,8 @@ static void susp_evt(usbd_device* dev, uint8_t event, uint8_t ep) {
if((usb_if_cur != NULL) && (usb_config.connected == true)) {
usb_config.connected = false;
usb_if_cur->suspend(&udev);
+
+ furi_hal_power_insomnia_exit();
}
if(callback != NULL) {
callback(FuriHalUsbStateEventSuspend, cb_ctx);
@@ -199,6 +202,8 @@ static void wkup_evt(usbd_device* dev, uint8_t event, uint8_t ep) {
if((usb_if_cur != NULL) && (usb_config.connected == false)) {
usb_config.connected = true;
usb_if_cur->wakeup(&udev);
+
+ furi_hal_power_insomnia_enter();
}
if(callback != NULL) {
callback(FuriHalUsbStateEventWakeup, cb_ctx);
diff --git a/firmware/targets/furi_hal_include/furi_hal_rtc.h b/firmware/targets/furi_hal_include/furi_hal_rtc.h
index 8e79c95a..ee8eb1bb 100644
--- a/firmware/targets/furi_hal_include/furi_hal_rtc.h
+++ b/firmware/targets/furi_hal_include/furi_hal_rtc.h
@@ -38,6 +38,7 @@ typedef enum {
FuriHalRtcRegisterSystemVersion,
FuriHalRtcRegisterLfsFingerprint,
FuriHalRtcRegisterFaultData,
+ FuriHalRtcRegisterPinFails,
} FuriHalRtcRegister;
/** Initialize RTC subsystem */
@@ -67,6 +68,10 @@ void furi_hal_rtc_set_fault_data(uint32_t value);
uint32_t furi_hal_rtc_get_fault_data();
+void furi_hal_rtc_set_pin_fails(uint32_t value);
+
+uint32_t furi_hal_rtc_get_pin_fails();
+
#ifdef __cplusplus
}
#endif