]> git.scottworley.com Git - tattlekey/commitdiff
client: Change wire format!: Expand `ago` field: 16 bits → 32 bits
authorScott Worley <scottworley@scottworley.com>
Tue, 10 Oct 2023 09:27:57 +0000 (02:27 -0700)
committerScott Worley <scottworley@scottworley.com>
Wed, 11 Oct 2023 01:50:05 +0000 (18:50 -0700)
16-bit values of seconds only go up to 18 hours, and sometimes a little
more than that would be nice.

32 is overkill.  24 would have been fine, but would have been slightly
annoying to encode and parse.

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

index 61d64cef9e5297ce7ddf738adf7be3846a253c54..a708df4aed9095b91f7333c69a612a73ed6af681 100644 (file)
@@ -39,12 +39,7 @@ const u32_t config_minimum_seconds_between_button_presses = 1;
  *   etc.
  * This provides some robustness against network outages, automatically
  * replaying the log periodically to be collected after connectivity
- * is restored.
- *
- * Values above 17 are currently not recommended because the current
- * wire format uses a 16-bit field for a duration in seconds, which wraps
- * at 18 hours.
- *   */
+ * is restored. */
 const uint config_resend_count = 16;
 
 /* These control the size of the per-send-count press queues.
index 8d23169c2d2701fd7a53627f0609b8aa5a29731e..3a61793a372d6895de3d9324b9673aec20587d73 100644 (file)
@@ -59,12 +59,7 @@ extern const u32_t config_minimum_seconds_between_button_presses;
  *   etc.
  * This provides some robustness against network outages, automatically
  * replaying the log periodically to be collected after connectivity
- * is restored.
- *
- * Values above 17 are currently not recommended because the current
- * wire format uses a 16-bit field for a duration in seconds, which wraps
- * at 18 hours.
- *   */
+ * is restored. */
 extern const uint config_resend_count;
 
 /* These control the size of the per-send-count press queues.
index 6253d611aac776593d50e200b7284c9a9973d5ae..1e0790e3e60a811522b5c9ecac3672bdb3fa00ad 100644 (file)
@@ -47,10 +47,10 @@ static void initialize_the_pcb() {
 struct tattle_message_wire_format {
   u16_t sender;
   u16_t seq;
-  u16_t ago;
+  u32_t ago;
 };
 
-void send_report_packet(u16_t seq, u16_t ago) {
+void send_report_packet(u16_t seq, u32_t ago) {
   cyw43_arch_lwip_begin();
 
   initialize_the_pcb();
@@ -64,7 +64,7 @@ void send_report_packet(u16_t seq, u16_t ago) {
       (struct tattle_message_wire_format *)(p->payload);
   msg->sender = htons(config_this_tattler_identity);
   msg->seq = htons(seq);
-  msg->ago = htons(ago);
+  msg->ago = htonl(ago);
 
   if (udp_send(the_pcb, p) != ERR_OK)
     signal_error_by_blinking();
index 30a6e03b03a20f61f4e2f85835a03a37b565b931..9b8fc1f7e0043d8a8fff61c35495ee7e859847cd 100644 (file)
@@ -20,6 +20,6 @@
 
 #include "lwip/arch.h"
 
-void send_report_packet(u16_t seq, u16_t ago);
+void send_report_packet(u16_t seq, u32_t ago);
 
 #endif
index 9d255856b74a41cc93dc8d2a5a927dff6571e4ba..f9b74c1c14ebb98bf8f44a0daa8d41d9354a05cb 100644 (file)
@@ -94,7 +94,7 @@ void service_sleeps(int alarm, press_pile_t *pp) {
     press_t press;
     if (!get_press_due_for_resend(pp, now, &press))
       signal_error_by_blinking();
-    uint32_t ago = now - press.timestamp;
+    u32_t ago = now - press.timestamp;
     send_report_packet(press.seq, ago);
     press.send_count++;
     if (press.send_count < config_resend_count) {