From: Keith Packard Date: Sat, 7 Feb 2015 23:09:57 +0000 (-0800) Subject: altosuilib: Wait for product data while scanning X-Git-Tag: 1.6~10 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=8a2be4d36a3b116d82529805430c5fb665688267;hp=e70f3dca01b15b75b0b8795eb71bd12817af4800;ds=sidebyside altosuilib: Wait for product data while scanning Now that Altos only sends config information once every 5 seconds, we want to keep waiting for that if we're receiving packets successfully. Signed-off-by: Keith Packard --- diff --git a/altosuilib/AltosScanUI.java b/altosuilib/AltosScanUI.java index 7e51a55a..1b30f99d 100644 --- a/altosuilib/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -159,6 +159,8 @@ public class AltosScanUI Thread thread; AltosFrequency[] frequencies; int frequency_index; + int packet_count; + int tick_count; void scan_exception(Exception e) { if (e instanceof FileNotFoundException) { @@ -200,6 +202,7 @@ public class AltosScanUI AltosState state = reader.read(); if (state == null) continue; + packet_count++; if (state.flight != AltosLib.MISSING) { final AltosScanResult result = new AltosScanResult(state.callsign, state.serial, @@ -284,6 +287,8 @@ public class AltosScanUI return; } } + packet_count = 0; + tick_count = 0; ++frequency_index; if (frequency_index >= frequencies.length) frequency_index = 0; @@ -308,7 +313,9 @@ public class AltosScanUI } void tick_timer() throws InterruptedException, TimeoutException { - next(); + ++tick_count; + if (packet_count == 0 || tick_count > 5) + next(); } public void actionPerformed(ActionEvent e) { @@ -356,7 +363,6 @@ public class AltosScanUI if (r != null) { if (device != null) { if (reader != null) { - System.out.printf("frequency %g rate %d\n", r.frequency.frequency, r.rate); reader.set_telemetry(r.telemetry); reader.set_telemetry_rate(r.rate); reader.set_frequency(r.frequency.frequency);