queue_try_add_ignoring_errors(&queue, &e);
}
+void set_send_alarm(int alarm, uint32_t now, uint32_t next_act_time) {
+ uint32_t sleep_duration = next_act_time - now;
+ if (hardware_alarm_set_target(alarm,
+ make_timeout_time_ms(sleep_duration * 1000)))
+ signal_error_by_blinking();
+ return;
+}
+
void service_sleeps(int alarm, send_t *sleeping_sends, pheap_t *sleeps_heap) {
hardware_alarm_cancel(alarm);
if (act_time == -1)
return;
if (act_time > now) {
- uint32_t sleep_duration = act_time - now;
- if (hardware_alarm_set_target(
- alarm, make_timeout_time_ms(sleep_duration * 1000)))
- signal_error_by_blinking();
+ set_send_alarm(alarm, now, act_time);
return;
}
pheap_node_id_t i = ph_remove_head(sleeps_heap, false);