summaryrefslogtreecommitdiff
path: root/altoslib
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-09-06 20:43:32 -0700
committerKeith Packard <keithp@keithp.com>2014-09-06 20:43:32 -0700
commite7515e3a88d53c50dd9b962cc8f43ce5376ccd0b (patch)
treeb98e7bcd3ce75ac33d1a444742c2f7f7b4eac42f /altoslib
parent46f08f8709c538f3fee8e166598f0bb930df6e3c (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>
Diffstat (limited to 'altoslib')
-rw-r--r--altoslib/AltosLink.java24
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;