]> git.scottworley.com Git - tattlekey/commitdiff
client: Send each report multiple times
authorScott Worley <scottworley@scottworley.com>
Mon, 9 Oct 2023 03:49:43 +0000 (20:49 -0700)
committerScott Worley <scottworley@scottworley.com>
Wed, 11 Oct 2023 01:48:30 +0000 (18:48 -0700)
UDP is unreliable.

It would be better to re-send over a much longer interval, interleaving
re-sends from different presses.  Do this simple re-sending for now.

client/config.c
client/config.h
client/tattlekey.c

index c5a38b44ad6afbf1b96531ec7d3eee7109da9826..de300ea29a468288d0dfe4f0d5e48381ac23ba56 100644 (file)
@@ -21,3 +21,7 @@ uint button_pin = 18;
 /* Don't bother reporting each separate button press when it is pressed many
  * times in short succession.  (We also use this to de-bounce. :) */
 u32_t minimum_microseconds_between_button_presses = 1000000;
 /* Don't bother reporting each separate button press when it is pressed many
  * times in short succession.  (We also use this to de-bounce. :) */
 u32_t minimum_microseconds_between_button_presses = 1000000;
+
+/* Send each report multiple times. */
+uint resend_count = 5;
+u32_t resend_interval_ms = 1000;
index 5ce0baf9708f009a7069f3aca2ae738f614dd973..fefe7e96703665428d15f21f8163e6727a256651 100644 (file)
@@ -25,4 +25,8 @@ extern uint button_pin;
  * times in short succession.  (We also use this to de-bounce. :) */
 extern u32_t minimum_microseconds_between_button_presses;
 
  * times in short succession.  (We also use this to de-bounce. :) */
 extern u32_t minimum_microseconds_between_button_presses;
 
+/* Send each report multiple times. */
+extern uint resend_count;
+extern u32_t resend_interval_ms;
+
 #endif
 #endif
index 3a1f7b7b67212de7437b593f1b4f8c1512ad305a..9e7b4b598d9c5d0f5c6c9e4a6e77c9d3845eaa65 100644 (file)
@@ -42,7 +42,11 @@ int main() {
   while (1) {
     char _;
     queue_remove_blocking(&queue, &_);
   while (1) {
     char _;
     queue_remove_blocking(&queue, &_);
-    send_report(seq++, 0);
-    signal(2, 100);
+    seq++;
+    for (int i = 0; i < resend_count; i++) {
+      send_report(seq, i);
+      signal(i == 0 ? 2 : 1, 100);
+      sleep_ms(resend_interval_ms);
+    }
   }
 }
   }
 }