diff --git a/stm-firmware/include/reflow-controller/systick.h b/stm-firmware/include/reflow-controller/systick.h index 505400e..c2adcd0 100644 --- a/stm-firmware/include/reflow-controller/systick.h +++ b/stm-firmware/include/reflow-controller/systick.h @@ -71,6 +71,8 @@ void systick_wait_ms(uint32_t ms); uint64_t systick_get_global_tick(); +void systick_get_uptime_from_tick(uint32_t *days, uint32_t *hours, uint32_t *minutes, uint32_t *seconds); + bool systick_ticks_have_passed(uint64_t start_timestamp, uint64_t ticks); #endif /* __SYSTICK_H__ */ diff --git a/stm-firmware/systick.c b/stm-firmware/systick.c index 96e77ed..6b5047c 100644 --- a/stm-firmware/systick.c +++ b/stm-firmware/systick.c @@ -53,6 +53,35 @@ uint64_t systick_get_global_tick() return temp; } +void systick_get_uptime_from_tick(uint32_t *days, uint32_t *hours, uint32_t *minutes, uint32_t *seconds) +{ + uint64_t tick_secs; + uint32_t secs; + uint32_t mins; + uint32_t hs; + uint32_t ds; + + + tick_secs = systick_get_global_tick() / 1000; + secs = tick_secs % 60; + tick_secs /= 60; + mins = tick_secs % 60; + tick_secs /= 60; + hs = tick_secs % 60; + tick_secs /= 24; + ds = tick_secs; + + if (days) + *days = ds; + if (hours) + *hours = hs; + if (minutes) + *minutes = mins; + if (seconds) + *seconds = secs; + +} + bool __attribute__((optimize("O3"))) systick_ticks_have_passed(uint64_t start_timestamp, uint64_t ticks) { uint64_t end_timestamp = start_timestamp + ticks;