diff options
Diffstat (limited to 'altoslib/AltosEepromIterable.java')
| -rw-r--r-- | altoslib/AltosEepromIterable.java | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index 986b7a2c..b84574ef 100644 --- a/altoslib/AltosEepromIterable.java +++ b/altoslib/AltosEepromIterable.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.AltosLib; +package org.altusmetrum.altoslib_1;  import java.io.*;  import java.util.*; @@ -125,30 +125,40 @@ public class AltosEepromIterable extends AltosRecordIterable {  			state.gps.locked = (flags & AltosLib.AO_GPS_VALID) != 0;  			state.gps.nsat = (flags & AltosLib.AO_GPS_NUM_SAT_MASK) >>  				AltosLib.AO_GPS_NUM_SAT_SHIFT; -			state.new_gps = true; +			state.gps_sequence++;  			has_gps = true;  			break;  		case AltosLib.AO_LOG_GPS_LAT:  			eeprom.seen |= AltosRecord.seen_gps_lat;  			int lat32 = record.a | (record.b << 16); +			if (state.gps == null) +				state.gps = new AltosGPS();  			state.gps.lat = (double) lat32 / 1e7;  			break;  		case AltosLib.AO_LOG_GPS_LON:  			eeprom.seen |= AltosRecord.seen_gps_lon;  			int lon32 = record.a | (record.b << 16); +			if (state.gps == null) +				state.gps = new AltosGPS();  			state.gps.lon = (double) lon32 / 1e7;  			break;  		case AltosLib.AO_LOG_GPS_ALT: +			if (state.gps == null) +				state.gps = new AltosGPS();  			state.gps.alt = record.a;  			break;  		case AltosLib.AO_LOG_GPS_SAT:  			if (state.tick == eeprom.gps_tick) {  				int svid = record.a;  				int c_n0 = record.b >> 8; +				if (state.gps == null) +					state.gps = new AltosGPS();  				state.gps.add_sat(svid, c_n0);  			}  			break;  		case AltosLib.AO_LOG_GPS_DATE: +			if (state.gps == null) +				state.gps = new AltosGPS();  			state.gps.year = (record.a & 0xff) + 2000;  			state.gps.month = record.a >> 8;  			state.gps.day = record.b & 0xff; | 
