Implement persistent alarm storage

This commit is contained in:
2023-05-19 16:15:17 +01:00
parent 685e0950bf
commit e4668f0c04
6 changed files with 122 additions and 10 deletions

View File

@@ -5,9 +5,9 @@
#include "alarms.h"
#include "alarm_store.h"
#include "console.h"
#include "sound.h"
#include "time_manager.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
@@ -18,17 +18,11 @@
#define TAG "Alarms"
typedef struct {
bool set;
Time time;
} Alarm;
typedef struct {
const Alarm *alarm;
Time end;
} ActiveAlarm;
static Alarm alarms[CONFIG_MAX_ALARMS];
static ActiveAlarm active[CONFIG_MAX_ALARMS];
static unsigned active_count;
static ActiveAlarm snoozed[CONFIG_MAX_ALARMS];
@@ -53,6 +47,7 @@ static bool add_alarm(Time time)
if (!alarms[i].set) {
alarms[i].set = true;
alarms[i].time = time;
alarm_store_save();
return true;
}
}
@@ -62,6 +57,7 @@ static bool add_alarm(Time time)
static void remove_alarm(unsigned index)
{
alarms[index].set = false;
alarm_store_save();
}
static void activate(const Alarm *alarm)
@@ -212,13 +208,14 @@ static int command_func(int argc, char **argv)
void alarms_init(void)
{
memset(alarms, 0, sizeof(alarms));
memset(active, 0, sizeof(active));
active_count = 0;
memset(snoozed, 0, sizeof(snoozed));
snoozed_count = 0;
last_check = get_time();
alarm_store_init();
add_time_callback(check_alarms);
console_register(