set_resend_alarm(alarm, now, act_time);
return;
}
- pheap_node_id_t i = ph_remove_head(pp->sleeps_heap, false);
- press_t *press = &pp->presses[i];
- uint32_t ago = now - press->timestamp;
- send_report_packet(press->seq, ago);
- press->send_count++;
- if (press->send_count < config_resend_count)
- ph_insert_node(pp->sleeps_heap, i);
- else
- ph_free_node(pp->sleeps_heap, i);
+ press_t press;
+ if (!get_press_due_for_resend(pp, now, &press))
+ signal_error_by_blinking();
+ uint32_t ago = now - press.timestamp;
+ send_report_packet(press.seq, ago);
+ press.send_count++;
+ if (press.send_count < config_resend_count) {
+ add_press(pp, &press);
+ }
}
}