From: Scott Worley Date: Tue, 10 Oct 2023 00:10:27 +0000 (-0700) Subject: client: create_send() X-Git-Tag: v0.1.0~42 X-Git-Url: http://git.scottworley.com/tattlekey/commitdiff_plain/67001c93828f1e4beb2386d415f0ed5b15afc960 client: create_send() --- diff --git a/client/sends.c b/client/sends.c index c060792..b265634 100644 --- a/client/sends.c +++ b/client/sends.c @@ -9,3 +9,17 @@ bool next_send_less_than(void *user_data, pheap_node_id_t a, send_t *sends = (send_t *)user_data; return next_send(&sends[a]) < next_send(&sends[b]); } + +void create_send(send_t *sleeping_sends, pheap_t *sleeps_heap, + uint32_t timestamp, u16_t seq) { + pheap_node_id_t i = ph_new_node(sleeps_heap); + if (i == 0) { + /* TODO: Don't drop new presses just because sleeps_heap is full of old + * presses. */ + return; + } + sleeping_sends[i].timestamp = timestamp; + sleeping_sends[i].seq = seq; + sleeping_sends[i].send_count = 0; + ph_insert_node(sleeps_heap, i); +} diff --git a/client/sends.h b/client/sends.h index 02d49db..651d0e4 100644 --- a/client/sends.h +++ b/client/sends.h @@ -14,4 +14,7 @@ uint32_t next_send(send_t *s); bool next_send_less_than(void *user_data, pheap_node_id_t a, pheap_node_id_t b); +void create_send(send_t *sleeping_sends, pheap_t *sleeps_heap, + uint32_t timestamp, u16_t seq); + #endif diff --git a/client/tattlekey.c b/client/tattlekey.c index 48db1b7..b433b44 100644 --- a/client/tattlekey.c +++ b/client/tattlekey.c @@ -100,16 +100,7 @@ void service_queue() { queue_remove_blocking(&queue, &e); switch (e.type) { case BUTTONPRESS: { - pheap_node_id_t i = ph_new_node(sleeps_heap); - if (i == 0) { - /* TODO: Don't drop new presses just because sleeps_heap is full of old - * presses. */ - break; - } - sleeping_sends[i].timestamp = e.buttonpress.timestamp; - sleeping_sends[i].seq = seq++; - sleeping_sends[i].send_count = 0; - ph_insert_node(sleeps_heap, i); + create_send(sleeping_sends, sleeps_heap, e.buttonpress.timestamp, seq++); } break; case SEND: { /* OK, we're awake. Cool. Thanks! (We actually do the sends in the