Implement persistent alarm storage
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user