+ return press_queue_next_send(pp->sleeps[i]);
+}
+
+bool get_press_due_for_resend(press_pile_t *pp, uint32_t now, press_t *press) {
+ pheap_node_id_t i = ph_peek_head(pp->sleeps_heap);
+ if (i == 0 || press_queue_next_send(pp->sleeps[i]) > now)
+ return false;
+ if (!queue_try_remove(pp->sleeps[i], press))
+ signal_error_by_blinking();
+ bool became_empty = queue_is_empty(pp->sleeps[i]);
+ if (ph_remove_head(pp->sleeps_heap, became_empty) != i)
+ signal_error_by_blinking();
+ if (became_empty) {
+ pp->sleeps[i] = NULL;
+ } else {
+ ph_insert_node(pp->sleeps_heap, i);
+ }
+ return true;