request time once per tick

This commit is contained in:
joeycastillo 2022-12-23 18:52:40 -06:00
parent a6333f7b8b
commit 5fec31f654

View File

@ -78,6 +78,8 @@ const int32_t movement_le_inactivity_deadlines[8] = {INT_MAX, 3600, 7200, 21600,
const int16_t movement_timeout_inactivity_deadlines[4] = {60, 120, 300, 1800}; const int16_t movement_timeout_inactivity_deadlines[4] = {60, 120, 300, 1800};
movement_event_t event; movement_event_t event;
watch_date_time _cached_date_time;
const int16_t movement_timezone_offsets[] = { const int16_t movement_timezone_offsets[] = {
0, // 0 : 0:00:00 (UTC) 0, // 0 : 0:00:00 (UTC)
60, // 1 : 1:00:00 (Central European Time) 60, // 1 : 1:00:00 (Central European Time)
@ -194,7 +196,7 @@ static void _movement_handle_scheduled_tasks(void) {
} }
watch_date_time movement_get_date_time(void) { watch_date_time movement_get_date_time(void) {
return watch_rtc_get_date_time(); return _cached_date_time;
} }
void movement_request_tick_frequency(uint8_t freq) { void movement_request_tick_frequency(uint8_t freq) {
@ -616,13 +618,13 @@ void cb_fast_tick(void) {
void cb_tick(void) { void cb_tick(void) {
event.event_type = EVENT_TICK; event.event_type = EVENT_TICK;
watch_date_time date_time = movement_get_date_time(); _cached_date_time = watch_rtc_get_date_time();
if (date_time.unit.second != movement_state.last_second) { if (_cached_date_time.unit.second != movement_state.last_second) {
// TODO: can we consolidate these two ticks? // TODO: can we consolidate these two ticks?
if (movement_state.settings.bit.le_interval && movement_state.le_mode_ticks > 0) movement_state.le_mode_ticks--; if (movement_state.settings.bit.le_interval && movement_state.le_mode_ticks > 0) movement_state.le_mode_ticks--;
if (movement_state.timeout_ticks > 0) movement_state.timeout_ticks--; if (movement_state.timeout_ticks > 0) movement_state.timeout_ticks--;
movement_state.last_second = date_time.unit.second; movement_state.last_second = _cached_date_time.unit.second;
movement_state.subsecond = 0; movement_state.subsecond = 0;
} else { } else {
movement_state.subsecond++; movement_state.subsecond++;