summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosIdleMonitor.java2
-rw-r--r--altoslib/AltosTelemetryReader.java5
-rw-r--r--altosui/AltosScanUI.java42
3 files changed, 37 insertions, 12 deletions
diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java
index cd518c28..57c4da71 100644
--- a/altoslib/AltosIdleMonitor.java
+++ b/altoslib/AltosIdleMonitor.java
@@ -162,8 +162,6 @@ class AltosSensorMM {
}
i++;
}
- for (int i = 0; i < sense.length; i++)
- System.out.printf("sense[%d]: %d\n", i, sense[i]);
break;
}
}
diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java
index 911a099a..bdb44eef 100644
--- a/altoslib/AltosTelemetryReader.java
+++ b/altoslib/AltosTelemetryReader.java
@@ -44,6 +44,11 @@ public class AltosTelemetryReader extends AltosFlightReader {
telem.clear();
}
+ public void reset() {
+ previous = null;
+ flush();
+ }
+
public void close(boolean interrupted) {
link.remove_monitor(telem);
log.close();
diff --git a/altosui/AltosScanUI.java b/altosui/AltosScanUI.java
index 44eeda6d..ef6389b6 100644
--- a/altosui/AltosScanUI.java
+++ b/altosui/AltosScanUI.java
@@ -59,29 +59,50 @@ class AltosScanResult {
}
public boolean equals(AltosScanResult other) {
- return (callsign.equals(other.callsign) &&
- serial == other.serial &&
- flight == other.flight &&
+ return (serial == other.serial &&
frequency.frequency == other.frequency.frequency &&
telemetry == other.telemetry);
}
+
+ public boolean up_to_date(AltosScanResult other) {
+ if (flight == 0 && other.flight != 0) {
+ flight = other.flight;
+ return false;
+ }
+ if (callsign.equals("N0CALL") && !other.callsign.equals("N0CALL")) {
+ callsign = other.callsign;
+ return false;
+ }
+ return true;
+ }
}
class AltosScanResults extends LinkedList<AltosScanResult> implements ListModel {
LinkedList<ListDataListener> listeners = new LinkedList<ListDataListener>();
+ void changed(ListDataEvent de) {
+ for (ListDataListener l : listeners)
+ l.contentsChanged(de);
+ }
+
public boolean add(AltosScanResult r) {
- for (AltosScanResult old : this)
- if (old.equals(r))
+ int i = 0;
+ for (AltosScanResult old : this) {
+ if (old.equals(r)) {
+ if (!old.up_to_date(r))
+ changed (new ListDataEvent(this,
+ ListDataEvent.CONTENTS_CHANGED,
+ i, i));
return true;
+ }
+ i++;
+ }
super.add(r);
- ListDataEvent de = new ListDataEvent(this,
- ListDataEvent.INTERVAL_ADDED,
- this.size() - 2, this.size() - 1);
- for (ListDataListener l : listeners)
- l.contentsChanged(de);
+ changed(new ListDataEvent(this,
+ ListDataEvent.INTERVAL_ADDED,
+ this.size() - 2, this.size() - 1));
return true;
}
@@ -205,6 +226,7 @@ public class AltosScanUI
void set_frequency() throws InterruptedException, TimeoutException {
reader.set_frequency(frequencies[frequency_index].frequency);
+ reader.reset();
}
void next() throws InterruptedException, TimeoutException {