diff options
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java | 47 | ||||
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 15 | 
2 files changed, 16 insertions, 46 deletions
| diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java index 971c3e80..03abeec6 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java @@ -40,8 +40,6 @@ public class TelemetryReader extends Thread {  	AltosLink   link;  	AltosState  state = null; -	AltosFlightReader	stacked; -  	LinkedBlockingQueue<AltosLine> telemQueue;  	public AltosState read() throws ParseException, AltosCRCException, InterruptedException, IOException { @@ -59,10 +57,6 @@ public class TelemetryReader extends Thread {  	public void close() {  		state = null; -		if (stacked != null) { -			stacked.close(false); -			stacked = null; -		}  		link.remove_monitor(telemQueue);  		link = null;  		telemQueue.clear(); @@ -73,25 +67,6 @@ public class TelemetryReader extends Thread {  		AltosState  state = null;  		try { -			if (D) Log.d(TAG, "starting reader"); -			while (stacked != null) { -				AltosState	stacked_state = null; -				try { -					stacked_state = stacked.read(); -				} catch (ParseException pe) { -					continue; -				} catch (AltosCRCException ce) { -					continue; -				} -				if (stacked_state != null) -					state = stacked_state; -				else -					stacked = null; -			} -			if (state != null) { -				if (D) Log.d(TAG, "Send initial state"); -				handler.obtainMessage(TelemetryService.MSG_TELEMETRY, state).sendToTarget(); -			}  			if (D) Log.d(TAG, "starting loop");  			while (telemQueue != null) {  				try { @@ -111,34 +86,16 @@ public class TelemetryReader extends Thread {  		}  	} -	public TelemetryReader (AltosLink in_link, Handler in_handler, AltosFlightReader in_stacked) { +	public TelemetryReader (AltosLink in_link, Handler in_handler, AltosState in_state) {  		if (D) Log.d(TAG, "connected TelemetryReader create started");  		link    = in_link;  		handler = in_handler; -		stacked = in_stacked; -		state = null; +		state = in_state;  		telemQueue = new LinkedBlockingQueue<AltosLine>();  		link.add_monitor(telemQueue);  		link.set_telemetry(AltosLib.ao_telemetry_standard);  		if (D) Log.d(TAG, "connected TelemetryReader created");  	} - -	private static AltosFlightReader existing_data(AltosLink link) { -		if (link == null) -			return null; - -		File	file = AltosPreferences.logfile(link.serial); -		if (file != null) { -			AltosStateIterable	iterable = AltosStateIterable.iterable(file); -			if (iterable != null) -				return new AltosReplayReader(iterable.iterator(), file, false); -		} -		return null; -	} - -	public TelemetryReader(AltosLink link, Handler handler) { -		this(link, handler, existing_data(link)); -	}  } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 30d94409..e029c75c 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -139,6 +139,10 @@ public class TelemetryService extends Service implements LocationListener {  			case MSG_TELEMETRY:  				// forward telemetry messages  				s.telemetry_state.state = (AltosState) msg.obj; +				if (s.telemetry_state.state != null) { +					if (D) Log.d(TAG, "Save state"); +					AltosPreferences.set_state(0, s.telemetry_state.state, null); +				}  				if (D) Log.d(TAG, "MSG_TELEMETRY");  				s.sendMessageToClients();  				break; @@ -179,6 +183,8 @@ public class TelemetryService extends Service implements LocationListener {  	private Message message() {  		if (telemetry_state == null)  			Log.d(TAG, "telemetry_state null!"); +		if (telemetry_state.state == null) +			Log.d(TAG, "telemetry_state.state null!");  		return Message.obtain(null, AltosDroid.MSG_STATE, telemetry_state);  	} @@ -262,7 +268,7 @@ public class TelemetryService extends Service implements LocationListener {  		if (D) Log.d(TAG, "connected bluetooth configured");  		telemetry_state.connect = TelemetryState.CONNECT_CONNECTED; -		mTelemetryReader = new TelemetryReader(mAltosBluetooth, mHandler); +		mTelemetryReader = new TelemetryReader(mAltosBluetooth, mHandler, telemetry_state.state);  		mTelemetryReader.start();  		if (D) Log.d(TAG, "connected TelemetryReader started"); @@ -306,6 +312,13 @@ public class TelemetryService extends Service implements LocationListener {  		telemetry_state.connect = TelemetryState.CONNECT_READY; +		AltosSavedState saved_state = AltosPreferences.state(0); + +		if (saved_state != null) { +			if (D) Log.d(TAG, String.format("recovered old state flight %d\n", saved_state.state.flight)); +			telemetry_state.state = saved_state.state; +		} +  		// Start our timer - first event in 10 seconds, then every 10 seconds after that.  		timer.scheduleAtFixedRate(new TimerTask(){ public void run() {onTimerTick();}}, 10000L, 10000L); | 
