1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

sys/ztimer: properly initialize intermediate extension callback

This commit is contained in:
Kaspar Schleiser 2020-05-04 15:47:37 +02:00
parent d03884d7b7
commit fc68d9c3a3
5 changed files with 21 additions and 0 deletions

View File

@ -485,6 +485,23 @@ void ztimer_update_head_offset(ztimer_clock_t *clock);
*/
void ztimer_init(void);
/**
* @brief Initialize possible ztimer extension intermediate timer
*
* This will basically just set a timer to (clock->max_value >> 1), *if*
* max_value is not UINT32_MAX.
*
* This is called automatically by all ztimer backends and extension modules.
*
* @internal
*/
static inline void ztimer_init_extend(ztimer_clock_t *clock)
{
if (clock->max_value < UINT32_MAX) {
clock->ops->set(clock, clock->max_value >> 1);
}
}
/* default ztimer virtual devices */
/**
* @brief Default ztimer microsecond clock

View File

@ -91,6 +91,7 @@ void ztimer_convert_frac_init(ztimer_convert_frac_t *self, ztimer_clock_t *lower
ztimer_convert_frac_compute_scale(self, freq_self, freq_lower);
if (freq_self < freq_lower) {
self->super.super.max_value = frac_scale(&self->scale_set, UINT32_MAX);
ztimer_init_extend(&self->super.super);
}
else {
DEBUG("ztimer_convert_frac_init: rounding up val:%" PRIu32"\n",

View File

@ -120,4 +120,5 @@ void ztimer_convert_muldiv64_init(
ztimer_convert_muldiv64->super.super.ops = &_ztimer_convert_muldiv64_ops;
ztimer_convert_muldiv64->div = div;
ztimer_convert_muldiv64->mul = mul;
ztimer_init_extend(&ztimer_convert_muldiv64->super.super);
}

View File

@ -88,4 +88,5 @@ void ztimer_periph_rtt_init(ztimer_periph_rtt_t *clock)
clock->max_value = RTT_MAX_VALUE;
rtt_init();
rtt_poweron();
ztimer_init_extend(clock);
}

View File

@ -79,4 +79,5 @@ void ztimer_periph_timer_init(ztimer_periph_timer_t *clock, tim_t dev, unsigned
clock->super.ops = &_ztimer_periph_timer_ops;
clock->super.max_value = max_val;
timer_init(dev, freq, _ztimer_periph_timer_callback, clock);
ztimer_init_extend(&clock->super);
}