Convert from timestamp to date_time once per second at most

This commit is contained in:
Alessandro Genova
2025-08-26 21:44:00 -04:00
parent f534e7c202
commit 996d5d6679
2 changed files with 25 additions and 2 deletions

View File

@ -614,8 +614,19 @@ watch_date_time_t movement_get_date_time_in_zone(uint8_t zone_index) {
}
watch_date_time_t movement_get_local_date_time(void) {
static struct {
unix_timestamp_t timestamp;
rtc_date_time_t datetime;
} cached_date_time = {.datetime.reg=0, .timestamp=0};
unix_timestamp_t timestamp = watch_rtc_get_unix_time();
return watch_utility_date_time_from_unix_time(timestamp, movement_get_current_timezone_offset());
if (timestamp != cached_date_time.timestamp) {
cached_date_time.timestamp = timestamp;
cached_date_time.datetime = watch_utility_date_time_from_unix_time(timestamp, movement_get_current_timezone_offset());
}
return cached_date_time.datetime;
}
uint32_t movement_get_utc_timestamp(void) {

View File

@ -91,7 +91,19 @@ void watch_rtc_set_date_time(rtc_date_time_t date_time) {
}
rtc_date_time_t watch_rtc_get_date_time(void) {
return watch_utility_date_time_from_unix_time(watch_rtc_get_unix_time(), 0);
static struct {
unix_timestamp_t timestamp;
rtc_date_time_t datetime;
} cached_date_time = {.datetime.reg=0, .timestamp=0};
unix_timestamp_t timestamp = watch_rtc_get_unix_time();
if (timestamp != cached_date_time.timestamp) {
cached_date_time.timestamp = timestamp;
cached_date_time.datetime = watch_utility_date_time_from_unix_time(timestamp, 0);
}
return cached_date_time.datetime;
}
void watch_rtc_set_unix_time(unix_timestamp_t unix_time) {