/* * system.h * * Public system services: * • Battery charge-state machine * • Inactivity / deep-sleep handling * • RTC time & alarm * * All implementation lives in system.c */ #ifndef MAIN_RTC_H_ #define MAIN_RTC_H_ #include "driver/gpio.h" #include "esp_sleep.h" #include "esp_timer.h" #include "esp_err.h" #include #define POWER_INACTIVITY_TIMEOUT_MS 180000 /* -------------------------------------------------------------------------- */ /* Public API */ /* -------------------------------------------------------------------------- */ esp_err_t rtc_xtal_init(); bool rtc_is_set(); void rtc_check_shutdown_timer(); void rtc_reset_shutdown_timer(); // reset shutoff timer void soft_idle_enter(void); void soft_idle_exit(void); bool soft_idle_is_active(void); esp_sleep_wakeup_cause_t rtc_wakeup_cause(); /*void adjust_rtc_hour(char *key, int8_t dir); void adjust_rtc_min(char *key, int8_t dir);*/ int64_t rtc_get_s (void); int64_t rtc_get_ms(void); void rtc_set_s(int64_t); void rtc_save_time(void); // No-op: time is always live via rtc_get_s() void rtc_restore_time(void); // Re-syncs stdlib clock on boot; emits TIME log marker void rtc_schedule_next_alarm(void); int64_t rtc_get_next_alarm_s(); bool rtc_alarm_tripped(); void rtc_print_debug(void); // Dump full RTC state to stdout (UART) /* -------------------------------------------------------------------------- */ #endif /* MAIN_RTC_H_ */