]> git.scottworley.com Git - tattlekey/blame - client/press.h
client: get_press_due_for_resend()
[tattlekey] / client / press.h
CommitLineData
2dcbb2a0
SW
1#ifndef SENDS_H
2#define SENDS_H
3
4#include "pico/cyw43_arch.h"
5#include "pico/util/pheap.h"
6
7typedef struct {
8 uint32_t timestamp;
9 u16_t seq;
10 u8_t send_count;
17461dec 11} press_t;
2dcbb2a0 12
e3ff9e0d
SW
13typedef struct {
14 press_t *presses;
15 pheap_t *sleeps_heap;
16} press_pile_t;
17
18press_pile_t *create_press_pile();
2dcbb2a0 19
f68e05b2
SW
20/* Adds this press to the pile.
21 * Copies the contents of `press`. */
22void add_press(press_pile_t *pp, press_t *press);
67001c93 23
b512ec26
SW
24/* When do we next need to send something (in seconds since boot)?
25 * Returns -1 if there's nothing pending. */
e3ff9e0d 26int32_t next_scheduled_send(press_pile_t *pp);
b512ec26 27
9ae691e9
SW
28/* Find a press ready for resend at or before `now`.
29 * Move it out of the press-pile `pp` and into into `press`.
30 * Or return false if there is no press due for re-send. */
31bool get_press_due_for_resend(press_pile_t *pp, uint32_t now, press_t *press);
32
2dcbb2a0 33#endif