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:
Diffstat (limited to 'firmware/targets/furi_hal_include/furi_hal_rtc.h')
-rw-r--r--firmware/targets/furi_hal_include/furi_hal_rtc.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/firmware/targets/furi_hal_include/furi_hal_rtc.h b/firmware/targets/furi_hal_include/furi_hal_rtc.h
new file mode 100644
index 00000000..8e79c95a
--- /dev/null
+++ b/firmware/targets/furi_hal_include/furi_hal_rtc.h
@@ -0,0 +1,72 @@
+/**
+ * @file furi_hal_rtc.h
+ * Furi Hal RTC API
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <main.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ // Time
+ uint8_t hour; /**< Hour in 24H format: 0-23 */
+ uint8_t minute; /**< Minute: 0-59 */
+ uint8_t second; /**< Second: 0-59 */
+ // Date
+ uint8_t day; /**< Current day: 1-31 */
+ uint8_t month; /**< Current month: 1-12 */
+ uint16_t year; /**< Current year: 2000-2099 */
+ uint8_t weekday; /**< Current weekday: 1-7 */
+} FuriHalRtcDateTime;
+
+typedef enum {
+ FuriHalRtcFlagDebug = (1 << 0),
+ FuriHalRtcFlagFactoryReset = (1 << 1),
+ FuriHalRtcFlagLock = (1 << 2),
+} FuriHalRtcFlag;
+
+typedef enum {
+ FuriHalRtcRegisterBoot,
+ FuriHalRtcRegisterBootVersion,
+ FuriHalRtcRegisterSystem,
+ FuriHalRtcRegisterSystemVersion,
+ FuriHalRtcRegisterLfsFingerprint,
+ FuriHalRtcRegisterFaultData,
+} FuriHalRtcRegister;
+
+/** Initialize RTC subsystem */
+void furi_hal_rtc_init();
+
+uint32_t furi_hal_rtc_get_register(FuriHalRtcRegister reg);
+
+void furi_hal_rtc_set_register(FuriHalRtcRegister reg, uint32_t value);
+
+void furi_hal_rtc_set_log_level(uint8_t level);
+
+uint8_t furi_hal_rtc_get_log_level();
+
+void furi_hal_rtc_set_flag(FuriHalRtcFlag flag);
+
+void furi_hal_rtc_reset_flag(FuriHalRtcFlag flag);
+
+bool furi_hal_rtc_is_flag_set(FuriHalRtcFlag flag);
+
+void furi_hal_rtc_set_datetime(FuriHalRtcDateTime* datetime);
+
+void furi_hal_rtc_get_datetime(FuriHalRtcDateTime* datetime);
+
+bool furi_hal_rtc_validate_datetime(FuriHalRtcDateTime* datetime);
+
+void furi_hal_rtc_set_fault_data(uint32_t value);
+
+uint32_t furi_hal_rtc_get_fault_data();
+
+#ifdef __cplusplus
+}
+#endif