bedside-clock/components/time/time_manager.c

34 lines
670 B
C

/*
* SPDX-License-Identifier: AGPL-3.0-only
* Copyright (c) Camden Dixie O'Brien
*/
#include "time_manager.h"
#include "settings.h"
#include <time.h>
static void handle_timezone_update(const char *timezone)
{
setenv("TZ", timezone, 1);
tzset();
}
void time_manager_init(void)
{
char timezone[SETTINGS_MAX_VALUE_SIZE];
(void)settings_get_timezone(timezone, sizeof(timezone));
handle_timezone_update(timezone);
settings_add_timezone_callback(&handle_timezone_update);
}
Time get_time(void)
{
const time_t now = time(NULL);
struct tm timeinfo;
(void)localtime_r(&now, &timeinfo);
return (Time) { .hour = timeinfo.tm_hour, .minute = timeinfo.tm_min };
}