diff options
Diffstat (limited to 'altosdroid/src')
7 files changed, 68 insertions, 31 deletions
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index b1d080db..cf4227ca 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -233,9 +233,12 @@ public class AltosDroid extends FragmentActivity {  		AltosGreatCircle from_receiver = null;  		if (saved_location != null && state.gps != null && state.gps.locked) { +			double altitude = 0; +			if (saved_location.hasAltitude()) +				altitude = saved_location.getAltitude();  			from_receiver = new AltosGreatCircle(saved_location.getLatitude(),  							     saved_location.getLongitude(), -							     saved_location.getAltitude(), +							     altitude,  							     state.gps.lat,  							     state.gps.lon,  							     state.gps.alt); @@ -248,7 +251,7 @@ public class AltosDroid extends FragmentActivity {  		mRSSIView.setText(String.format("%d", state.data.rssi));  		for (AltosDroidTab mTab : mTabs) -			mTab.update_ui(state, from_receiver); +			mTab.update_ui(state, from_receiver, saved_location);  		mAltosVoice.tell(state);  	} diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index 2b5cdae7..6ebb47f7 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -18,7 +18,8 @@  package org.altusmetrum.AltosDroid;  import org.altusmetrum.altoslib_1.*; +import android.location.Location;  public interface AltosDroidTab { -	public void update_ui(AltosState state, AltosGreatCircle from_receiver); +	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver);  } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java index ce677c57..de3bc3d2 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java @@ -27,6 +27,7 @@ import android.view.View;  import android.view.ViewGroup;  import android.widget.ImageView;  import android.widget.TextView; +import android.location.Location;  public class TabAscent extends Fragment implements AltosDroidTab {  	AltosDroid mAltosDroid; @@ -84,7 +85,7 @@ public class TabAscent extends Fragment implements AltosDroidTab {  		mAltosDroid = null;  	} -	public void update_ui(AltosState state, AltosGreatCircle from_receiver) { +	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		mHeightView.setText(String.format("%6.0f m", state.height));  		mMaxHeightView.setText(String.format("%6.0f m", state.max_height));  		mSpeedView.setText(String.format("%6.0f m/s", state.speed())); @@ -92,8 +93,10 @@ public class TabAscent extends Fragment implements AltosDroidTab {  		mAccelView.setText(String.format("%6.0f m/s²", state.acceleration));  		mMaxAccelView.setText(String.format("%6.0f m/s²", state.max_acceleration)); -		mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); -		mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		if (state.gps != null) { +			mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); +			mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		}  		mApogeeVoltageView.setText(String.format("%4.2f V", state.drogue_sense));  		mApogeeLights.set(state.drogue_sense > 3.2); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java index b0c6539c..698e89fc 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java @@ -27,6 +27,7 @@ import android.view.View;  import android.view.ViewGroup;  import android.widget.ImageView;  import android.widget.TextView; +import android.location.Location;  public class TabDescent extends Fragment implements AltosDroidTab {  	AltosDroid mAltosDroid; @@ -88,7 +89,7 @@ public class TabDescent extends Fragment implements AltosDroidTab {  		mAltosDroid = null;  	} -	public void update_ui(AltosState state, AltosGreatCircle from_receiver) { +	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		mSpeedView.setText(String.format("%6.0f m/s", state.speed()));  		mHeightView.setText(String.format("%6.0f m", state.height));  		if (from_receiver != null) { @@ -104,8 +105,10 @@ public class TabDescent extends Fragment implements AltosDroidTab {  			mCompassView.setText("<unknown>");  			mDistanceView.setText("<unknown>");  		} -		mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); -		mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		if (state.gps != null) { +			mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); +			mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		}  		mApogeeVoltageView.setText(String.format("%4.2f V", state.drogue_sense));  		mApogeeLights.set(state.drogue_sense > 3.2); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java index 93a42334..c346dc99 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java @@ -26,6 +26,7 @@ import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.TextView; +import android.location.Location;  public class TabLanded extends Fragment implements AltosDroidTab {  	AltosDroid mAltosDroid; @@ -68,13 +69,15 @@ public class TabLanded extends Fragment implements AltosDroidTab {  		mAltosDroid = null;  	} -	public void update_ui(AltosState state, AltosGreatCircle from_receiver) { +	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		if (from_receiver != null) {  			mBearingView.setText(String.format("%3.0f°", from_receiver.bearing));  			mDistanceView.setText(String.format("%6.0f m", from_receiver.distance));  		} -		mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); -		mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		if (state.gps != null) { +			mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); +			mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		}  		mMaxHeightView.setText(String.format("%6.0f m", state.max_height));  		mMaxAccelView.setText(String.format("%6.0f m/s²", state.max_acceleration));  		mMaxSpeedView.setText(String.format("%6.0f m/s", state.max_speed())); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index 607ded46..371fd9c1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -40,6 +40,7 @@ import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.TextView; +import android.location.Location;  public class TabMap extends Fragment implements AltosDroidTab {  	AltosDroid mAltosDroid; @@ -50,6 +51,7 @@ public class TabMap extends Fragment implements AltosDroidTab {  	private Marker mRocketMarker;  	private Marker mPadMarker; +	private Marker mReceiverMarker;  	private Polyline mPolyline;  	private TextView mDistanceView; @@ -128,6 +130,12 @@ public class TabMap extends Fragment implements AltosDroidTab {  					                   .visible(false)  					); +			mReceiverMarker = mMap.addMarker( +					new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.pad)) +					                   .position(new LatLng(0,0)) +					                   .visible(false) +					); +  			mPolyline = mMap.addPolyline(  					new PolylineOptions().add(new LatLng(0,0), new LatLng(0,0))  					                     .width(3) @@ -139,25 +147,34 @@ public class TabMap extends Fragment implements AltosDroidTab {  		}  	} -	public void update_ui(AltosState state, AltosGreatCircle from_receiver) { +	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		if (state.from_pad != null) {  			mDistanceView.setText(String.format("%6.0f m", state.from_pad.distance));  			mBearingView.setText(String.format("%3.0f°", state.from_pad.bearing));  		} -		mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); -		mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		if (state.gps != null) { +			mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); +			mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); +		}  		if (mapLoaded) { -			mRocketMarker.setPosition(new LatLng(state.gps.lat, state.gps.lon)); -			mRocketMarker.setVisible(true); +			if (state.gps != null) { +				mRocketMarker.setPosition(new LatLng(state.gps.lat, state.gps.lon)); +				mRocketMarker.setVisible(true); -			mPolyline.setPoints(Arrays.asList(new LatLng(state.pad_lat, state.pad_lon), new LatLng(state.gps.lat, state.gps.lon))); -			mPolyline.setVisible(true); +				mPolyline.setPoints(Arrays.asList(new LatLng(state.pad_lat, state.pad_lon), new LatLng(state.gps.lat, state.gps.lon))); +				mPolyline.setVisible(true); +			}  			if (state.state == AltosLib.ao_flight_pad) {  				mPadMarker.setPosition(new LatLng(state.pad_lat, state.pad_lon));  				mPadMarker.setVisible(true);  			} + +			if (receiver != null) { +				mReceiverMarker.setPosition(new LatLng(receiver.getLatitude(), receiver.getLongitude())); +				mReceiverMarker.setVisible(true); +			}  		}  	} diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index 6906324d..5070ec0b 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -27,6 +27,7 @@ import android.view.View;  import android.view.ViewGroup;  import android.widget.ImageView;  import android.widget.TextView; +import android.location.Location;  public class TabPad extends Fragment implements AltosDroidTab {  	AltosDroid mAltosDroid; @@ -100,7 +101,7 @@ public class TabPad extends Fragment implements AltosDroidTab {  		mAltosDroid = null;  	} -	public void update_ui(AltosState state, AltosGreatCircle from_receiver) { +	public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {  		mBatteryVoltageView.setText(String.format("%4.2f V", state.battery));  		mBatteryLights.set(state.battery > 3.7); @@ -122,18 +123,24 @@ public class TabPad extends Fragment implements AltosDroidTab {  		}  		mDataLoggingLights.set(state.data.flight != 0); -		mGPSLockedView.setText(String.format("%4d sats", state.gps.nsat)); -		mGPSLockedLights.set(state.gps.locked && state.gps.nsat >= 4); - -		if (state.gps_ready) -			mGPSReadyView.setText("Ready"); -		else -			mGPSReadyView.setText(String.format("Waiting %d", state.gps_waiting)); -		mGPSReadyLights.set(state.gps_ready); +		if (state.gps != null) { +			mGPSLockedView.setText(String.format("%4d sats", state.gps.nsat)); +			mGPSLockedLights.set(state.gps.locked && state.gps.nsat >= 4); +			if (state.gps_ready) +				mGPSReadyView.setText("Ready"); +			else +				mGPSReadyView.setText(String.format("Waiting %d", state.gps_waiting)); +			mGPSReadyLights.set(state.gps_ready); +		} -		mPadLatitudeView.setText(AltosDroid.pos(state.pad_lat, "N", "S")); -		mPadLongitudeView.setText(AltosDroid.pos(state.pad_lon, "W", "E")); -		mPadAltitudeView.setText(String.format("%4.0f m", state.pad_alt)); +		if (receiver != null) { +			double altitude = 0; +			if (receiver.hasAltitude()) +				altitude = receiver.getAltitude(); +			mPadLatitudeView.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); +			mPadLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "W", "E")); +			mPadAltitudeView.setText(String.format("%4.0f m", altitude)); +		}  	}  }  | 
