From 07b39467ab6efc8ad5d9510bf5ebf06c9679ed4e Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Mon, 9 Oct 2023 12:34:29 -0700 Subject: [PATCH] client: queue_try_add_ignoring_errors() --- client/tattlekey.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/client/tattlekey.c b/client/tattlekey.c index aadf49d..352b84c 100644 --- a/client/tattlekey.c +++ b/client/tattlekey.c @@ -21,6 +21,17 @@ queue_t queue; uint32_t time_s() { return time_us_64() / 1000000ul; } +/* Often we don't bother checking for failure (full queue) because + * 1. The best thing to do in this unfortunate situation is to blithely + * continue, dropping some events; continuing is better than stopping. + * 2. Neither interrupt context nor queue-processing context can block + * until space is available, or even sit around & blink the LED to + * signal a problem. + * (We also get a bit of type safety by taking event_t* rather than void*.) */ +static void queue_try_add_ignoring_errors(queue_t *q, event_t *e) { + queue_try_add(q, e); +} + static void button_pressed() { /* This runs in interrupt context; don't linger. */ static uint64_t last_button_press_time = 0; @@ -31,9 +42,7 @@ static void button_pressed() { event_t e; e.type = BUTTONPRESS; e.buttonpress.timestamp = now; - /* We don't check for failure (full queue) here because there's not much to - * be done about it. */ - queue_try_add(&queue, &e); + queue_try_add_ignoring_errors(&queue, &e); } } -- 2.44.1