diff options
| -rw-r--r-- | altoslib/AltosIdleMonitor.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosTelemetryReader.java | 5 | ||||
| -rw-r--r-- | altosui/AltosScanUI.java | 42 | 
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 { | 
