Convert from timestamp to date_time once per second at most
This commit is contained in:
+12
-1
@@ -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) {
|
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();
|
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) {
|
uint32_t movement_get_utc_timestamp(void) {
|
||||||
|
|||||||
@@ -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) {
|
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) {
|
void watch_rtc_set_unix_time(unix_timestamp_t unix_time) {
|
||||||
|
|||||||
Reference in New Issue
Block a user