diff options
| -rw-r--r-- | altoslib/AltosReplayReader.java | 50 | ||||
| -rw-r--r-- | altoslib/AltosState.java | 5 | ||||
| -rw-r--r-- | altosui/AltosFlightUI.java | 2 | 
3 files changed, 27 insertions, 30 deletions
| diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index fb8432e7..2117bc87 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -83,20 +83,8 @@ class AltosReplay extends AltosDataListener implements Runnable {  	public void set_companion(AltosCompanion companion) { state.set_companion(companion); }  	public void run () { -		System.out.printf("ReplayReader running\n"); -		state = new AltosState(record_set.cal_data()); - -		/* Tell the display that we're in pad mode */ -		state.set_state(AltosLib.ao_flight_pad); -		semaphore.release(); -		try { -			Thread.sleep(100); -		} catch (InterruptedException ie) { -		} -  		/* Run the flight */  		record_set.capture_series(this); -  		/* All done, signal that it's over */  		done = true;  		semaphore.release(); @@ -104,31 +92,45 @@ class AltosReplay extends AltosDataListener implements Runnable {  	public AltosReplay(AltosRecordSet record_set) {  		super(record_set.cal_data()); +		state = new AltosState(record_set.cal_data()); +		this.record_set = record_set;  		try {  			semaphore.acquire(); -		} catch (InterruptedException ie) { } -		this.record_set = record_set; -		Thread t = new Thread(this); -		t.start(); +		} catch (InterruptedException ie) { +		}  	}  }  public class AltosReplayReader extends AltosFlightReader {  	File		file;  	AltosReplay	replay; +	Thread		t; +	int		reads;  	public AltosState read() { +		switch (reads) { +		case 0: +			/* Tell the display that we're in pad mode */ +			replay.state.set_state(AltosLib.ao_flight_pad); +			break; +		case 1: +			t = new Thread(replay); +			t.start(); +			/* fall through */ +		default: +			/* Wait for something to change */ +			try { +				replay.semaphore.acquire(); +			} catch (InterruptedException ie) { +			} +			break; +		} +		reads++;  		/* When done, let the display know */  		if (replay.done)  			return null; -		/* Wait for something to change */ -		try { -			replay.semaphore.acquire(); -		} catch (InterruptedException ie) { -		} -  		/* Fake out the received time */  		replay.state.set_received_time(System.currentTimeMillis());  		return replay.state; @@ -137,12 +139,10 @@ public class AltosReplayReader extends AltosFlightReader {  	public void close (boolean interrupted) {  	} -	public void update(AltosState state) throws InterruptedException { -	} -  	public File backing_file() { return file; }  	public AltosReplayReader(AltosRecordSet record_set, File in_file) { +		reads = 0;  		file = in_file;  		name = file.getName();  		replay = new AltosReplay(record_set); diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 889aa9a3..0716b892 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -705,8 +705,6 @@ public class AltosState extends AltosDataListener {  	public double	igniter_voltage[];  	public AltosGPS	gps; -	public AltosGPS	temp_gps; -	public int temp_gps_sat_tick;  	public boolean	gps_pending;  	public AltosIMU	imu; @@ -757,6 +755,7 @@ public class AltosState extends AltosDataListener {  	public void init() {  		set = 0; +		System.out.printf("state init\n");  		received_time = System.currentTimeMillis();  		time = AltosLib.MISSING;  		time_change = AltosLib.MISSING; @@ -793,8 +792,6 @@ public class AltosState extends AltosDataListener {  		kalman_acceleration = new AltosValue();  		gps = null; -		temp_gps = null; -		temp_gps_sat_tick = 0;  		gps_pending = false;  		imu = null; diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index 23a62e95..12277f89 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -147,7 +147,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay {  			}  		} -		if (state.gps != null && state.gps.connected) { +		if (state.gps != null) {  			if (!has_map) {  				pane.add("Site Map", sitemap);  				has_map = true; | 
