diff options
author | Keith Packard <keithp@keithp.com> | 2014-09-06 20:43:32 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-09-06 20:43:32 -0700 |
commit | e7515e3a88d53c50dd9b962cc8f43ce5376ccd0b (patch) | |
tree | b98e7bcd3ce75ac33d1a444742c2f7f7b4eac42f | |
parent | 46f08f8709c538f3fee8e166598f0bb930df6e3c (diff) |
altoslib: Increase timeouts when using low baud rate remote protocol
When using 2400 or 9600 baud remote link rates, we need to increase
the packet timeout from 500ms to much longer values to avoid annoying
the user with timeout warnings.
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | altoslib/AltosLink.java | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index eadab5df..62bd82b9 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -163,8 +163,21 @@ public abstract class AltosLink implements Runnable { if (!can_cancel && remote) System.out.printf("Uh-oh, reading remote serial device from swing thread\n"); - if (remote && can_cancel) + if (remote && can_cancel) { timeout = 500; + switch (telemetry_rate) { + case AltosLib.ao_telemetry_rate_38400: + default: + timeout = 500; + break; + case AltosLib.ao_telemetry_rate_9600: + timeout = 2000; + break; + case AltosLib.ao_telemetry_rate_2400: + timeout = 8000; + break; + } + } try { ++in_reply; @@ -307,7 +320,7 @@ public abstract class AltosLink implements Runnable { */ public boolean monitor_mode = false; public int telemetry = AltosLib.ao_telemetry_standard; - public int telemetry_rate = AltosLib.ao_telemetry_rate_38400; + public int telemetry_rate = -1; public double frequency; public String callsign; AltosConfigData config_data; @@ -446,7 +459,12 @@ public abstract class AltosLink implements Runnable { if (debug) System.out.printf("start remote %7.3f\n", frequency); set_radio_frequency(frequency); - set_callsign(AltosPreferences.callsign()); + if (telemetry_rate < 0) + telemetry_rate = AltosPreferences.telemetry_rate(serial); + set_telemetry_rate(telemetry_rate); + if (callsign.equals("")) + callsign = AltosPreferences.callsign(); + set_callsign(callsign); printf("p\nE 0\n"); flush_input(); remote = true; |