diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/ao.h | 4 | ||||
| -rw-r--r-- | src/core/ao_flight.c | 4 | ||||
| -rw-r--r-- | src/core/ao_gps_report.c | 102 | ||||
| -rw-r--r-- | src/core/ao_gps_report_mega.c | 88 | ||||
| -rw-r--r-- | src/core/ao_gps_report_metrum.c | 108 | ||||
| -rw-r--r-- | src/drivers/ao_gps_sirf.c | 7 | ||||
| -rw-r--r-- | src/drivers/ao_gps_skytraq.c | 7 | ||||
| -rw-r--r-- | src/drivers/ao_gps_ublox.c | 5 | ||||
| -rw-r--r-- | src/product/ao_terraui.c | 2 | ||||
| -rw-r--r-- | src/teleballoon-v1.1/ao_balloon.c | 4 | ||||
| -rw-r--r-- | src/test/ao_gps_test.c | 13 | ||||
| -rw-r--r-- | src/test/ao_gps_test_skytraq.c | 2 | ||||
| -rw-r--r-- | src/test/ao_gps_test_ublox.c | 2 | 
13 files changed, 164 insertions, 184 deletions
| diff --git a/src/core/ao.h b/src/core/ao.h index e7320327..ea37885e 100644 --- a/src/core/ao.h +++ b/src/core/ao.h @@ -342,6 +342,10 @@ ao_spi_slave(void);  #define AO_GPS_DATE_VALID	(1 << 6)  #define AO_GPS_COURSE_VALID	(1 << 7) +#define AO_GPS_NEW_DATA		1 +#define AO_GPS_NEW_TRACKING	2 + +extern __xdata uint8_t ao_gps_new;  extern __pdata uint16_t ao_gps_tick;  extern __xdata uint8_t ao_gps_mutex;  extern __xdata struct ao_telemetry_location ao_gps_data; diff --git a/src/core/ao_flight.c b/src/core/ao_flight.c index 88dc816d..2495a44b 100644 --- a/src/core/ao_flight.c +++ b/src/core/ao_flight.c @@ -194,8 +194,8 @@ ao_flight(void)  #if HAS_GPS  				/* Record current GPS position by waking up GPS log tasks */ -				ao_wakeup(&ao_gps_data); -				ao_wakeup(&ao_gps_tracking_data); +				ao_gps_new = AO_GPS_NEW_DATA | AO_GPS_NEW_TRACKING; +				ao_wakeup(&ao_gps_new);  #endif  				ao_wakeup(DATA_TO_XDATA(&ao_flight_state)); diff --git a/src/core/ao_gps_report.c b/src/core/ao_gps_report.c index c52ef621..8d15c083 100644 --- a/src/core/ao_gps_report.c +++ b/src/core/ao_gps_report.c @@ -22,78 +22,68 @@ ao_gps_report(void)  {  	static __xdata struct ao_log_record		gps_log;  	static __xdata struct ao_telemetry_location	gps_data; +	static __xdata struct ao_telemetry_satellite	gps_tracking_data;  	uint8_t	date_reported = 0; +	uint8_t new;  	for (;;) { -		ao_sleep(&ao_gps_data);  		ao_mutex_get(&ao_gps_mutex); -		ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data)); +		while ((new = ao_gps_new) == 0) +			ao_sleep(&ao_gps_new); +		if (new & AO_GPS_NEW_DATA) +			ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data)); +		if (new & AO_GPS_NEW_TRACKING) +			ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data)); +		ao_gps_new = 0;  		ao_mutex_put(&ao_gps_mutex); -		if (!(gps_data.flags & AO_GPS_VALID)) -			continue; - -		gps_log.tick = ao_gps_tick; -		gps_log.type = AO_LOG_GPS_TIME; -		gps_log.u.gps_time.hour = gps_data.hour; -		gps_log.u.gps_time.minute = gps_data.minute; -		gps_log.u.gps_time.second = gps_data.second; -		gps_log.u.gps_time.flags = gps_data.flags; -		ao_log_data(&gps_log); -		gps_log.type = AO_LOG_GPS_LAT; -		gps_log.u.gps_latitude = gps_data.latitude; -		ao_log_data(&gps_log); -		gps_log.type = AO_LOG_GPS_LON; -		gps_log.u.gps_longitude = gps_data.longitude; -		ao_log_data(&gps_log); -		gps_log.type = AO_LOG_GPS_ALT; -		gps_log.u.gps_altitude.altitude = gps_data.altitude; -		gps_log.u.gps_altitude.unused = 0xffff; -		ao_log_data(&gps_log); -		if (!date_reported && (gps_data.flags & AO_GPS_DATE_VALID)) { -			gps_log.type = AO_LOG_GPS_DATE; -			gps_log.u.gps_date.year = gps_data.year; -			gps_log.u.gps_date.month = gps_data.month; -			gps_log.u.gps_date.day = gps_data.day; -			gps_log.u.gps_date.extra = 0; -			date_reported = ao_log_data(&gps_log); +		if ((new & AO_GPS_NEW_DATA) && (gps_data.flags & AO_GPS_VALID)) { +			gps_log.tick = ao_gps_tick; +			gps_log.type = AO_LOG_GPS_TIME; +			gps_log.u.gps_time.hour = gps_data.hour; +			gps_log.u.gps_time.minute = gps_data.minute; +			gps_log.u.gps_time.second = gps_data.second; +			gps_log.u.gps_time.flags = gps_data.flags; +			ao_log_data(&gps_log); +			gps_log.type = AO_LOG_GPS_LAT; +			gps_log.u.gps_latitude = gps_data.latitude; +			ao_log_data(&gps_log); +			gps_log.type = AO_LOG_GPS_LON; +			gps_log.u.gps_longitude = gps_data.longitude; +			ao_log_data(&gps_log); +			gps_log.type = AO_LOG_GPS_ALT; +			gps_log.u.gps_altitude.altitude = gps_data.altitude; +			gps_log.u.gps_altitude.unused = 0xffff; +			ao_log_data(&gps_log); +			if (!date_reported && (gps_data.flags & AO_GPS_DATE_VALID)) { +				gps_log.type = AO_LOG_GPS_DATE; +				gps_log.u.gps_date.year = gps_data.year; +				gps_log.u.gps_date.month = gps_data.month; +				gps_log.u.gps_date.day = gps_data.day; +				gps_log.u.gps_date.extra = 0; +				date_reported = ao_log_data(&gps_log); +			}  		} -	} -} - -void -ao_gps_tracking_report(void) -{ -	static __xdata struct ao_log_record		gps_log; -	static __xdata struct ao_telemetry_satellite	gps_tracking_data; -	uint8_t	c, n; - -	for (;;) { -		ao_sleep(&ao_gps_tracking_data); -		ao_mutex_get(&ao_gps_mutex); -		gps_log.tick = ao_gps_tick; -		ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data)); -		ao_mutex_put(&ao_gps_mutex); +		if (new & AO_GPS_NEW_TRACKING) { +			uint8_t c, n; -		if (!(n = gps_tracking_data.channels)) -			continue; - -		gps_log.type = AO_LOG_GPS_SAT; -		for (c = 0; c < n; c++) -			if ((gps_log.u.gps_sat.svid = gps_tracking_data.sats[c].svid)) -			{ -				gps_log.u.gps_sat.c_n = gps_tracking_data.sats[c].c_n_1; -				ao_log_data(&gps_log); +			if ((n = gps_tracking_data.channels) != 0) { +				gps_log.type = AO_LOG_GPS_SAT; +				for (c = 0; c < n; c++) +					if ((gps_log.u.gps_sat.svid = gps_tracking_data.sats[c].svid)) +					{ +						gps_log.u.gps_sat.c_n = gps_tracking_data.sats[c].c_n_1; +						ao_log_data(&gps_log); +					}  			} +		}  	}  }  __xdata struct ao_task ao_gps_report_task; -__xdata struct ao_task ao_gps_tracking_report_task;  void  ao_gps_report_init(void)  {  	ao_add_task(&ao_gps_report_task, ao_gps_report, "gps_report"); -	ao_add_task(&ao_gps_tracking_report_task, ao_gps_tracking_report, "gps_tracking_report");  } diff --git a/src/core/ao_gps_report_mega.c b/src/core/ao_gps_report_mega.c index e3af4307..e2adbfbc 100644 --- a/src/core/ao_gps_report_mega.c +++ b/src/core/ao_gps_report_mega.c @@ -23,66 +23,55 @@ ao_gps_report_mega(void)  {  	static __xdata struct ao_log_mega		gps_log;  	static __xdata struct ao_telemetry_location	gps_data; -	uint8_t	date_reported = 0; - -	for (;;) { -		ao_sleep(&ao_gps_data); -		ao_mutex_get(&ao_gps_mutex); -		ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data)); -		ao_mutex_put(&ao_gps_mutex); - -		if (!(gps_data.flags & AO_GPS_VALID)) -			continue; - -		gps_log.tick = ao_gps_tick; -		gps_log.type = AO_LOG_GPS_TIME; -		gps_log.u.gps.latitude = gps_data.latitude; -		gps_log.u.gps.longitude = gps_data.longitude; -		gps_log.u.gps.altitude = gps_data.altitude; - -		gps_log.u.gps.hour = gps_data.hour; -		gps_log.u.gps.minute = gps_data.minute; -		gps_log.u.gps.second = gps_data.second; -		gps_log.u.gps.flags = gps_data.flags; -		gps_log.u.gps.year = gps_data.year; -		gps_log.u.gps.month = gps_data.month; -		gps_log.u.gps.day = gps_data.day; -		ao_log_mega(&gps_log); -	} -} - -void -ao_gps_tracking_report_mega(void) -{ -	static __xdata struct ao_log_mega		gps_log;  	static __xdata struct ao_telemetry_satellite	gps_tracking_data; +	uint8_t	date_reported = 0; +	uint8_t	new;  	uint8_t	c, n, i;  	for (;;) { -		ao_sleep(&ao_gps_tracking_data);  		ao_mutex_get(&ao_gps_mutex); -		ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data)); +		while (!(new = ao_gps_new)) +			ao_sleep(&ao_gps_new); +		if (new & AO_GPS_NEW_DATA) +			ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data)); +		if (new & AO_GPS_NEW_TRACKING) +			ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data)); +		ao_gps_new = 0;  		ao_mutex_put(&ao_gps_mutex); -		if (!(n = gps_tracking_data.channels)) -			continue; +		if ((new & AO_GPS_NEW_DATA) && (gps_data.flags & AO_GPS_VALID)) { +			gps_log.tick = ao_gps_tick; +			gps_log.type = AO_LOG_GPS_TIME; +			gps_log.u.gps.latitude = gps_data.latitude; +			gps_log.u.gps.longitude = gps_data.longitude; +			gps_log.u.gps.altitude = gps_data.altitude; -		gps_log.type = AO_LOG_GPS_SAT; -		gps_log.tick = ao_gps_tick; -		i = 0; -		for (c = 0; c < n; c++) -			if ((gps_log.u.gps_sat.sats[i].svid = gps_tracking_data.sats[c].svid)) -			{ -				gps_log.u.gps_sat.sats[i].c_n = gps_tracking_data.sats[c].c_n_1; -				i++; -			} -		gps_log.u.gps_sat.channels = i; -		ao_log_mega(&gps_log); +			gps_log.u.gps.hour = gps_data.hour; +			gps_log.u.gps.minute = gps_data.minute; +			gps_log.u.gps.second = gps_data.second; +			gps_log.u.gps.flags = gps_data.flags; +			gps_log.u.gps.year = gps_data.year; +			gps_log.u.gps.month = gps_data.month; +			gps_log.u.gps.day = gps_data.day; +			ao_log_mega(&gps_log); +		} +		if ((new & AO_GPS_NEW_TRACKING) && (n = gps_tracking_data.channels) != 0) { +			gps_log.tick = ao_gps_tick; +			gps_log.type = AO_LOG_GPS_SAT; +			i = 0; +			for (c = 0; c < n; c++) +				if ((gps_log.u.gps_sat.sats[i].svid = gps_tracking_data.sats[c].svid)) +				{ +					gps_log.u.gps_sat.sats[i].c_n = gps_tracking_data.sats[c].c_n_1; +					i++; +				} +			gps_log.u.gps_sat.channels = i; +			ao_log_mega(&gps_log); +		}  	}  }  __xdata struct ao_task ao_gps_report_mega_task; -__xdata struct ao_task ao_gps_tracking_report_mega_task;  void  ao_gps_report_mega_init(void) @@ -90,7 +79,4 @@ ao_gps_report_mega_init(void)  	ao_add_task(&ao_gps_report_mega_task,  		    ao_gps_report_mega,  		    "gps_report"); -	ao_add_task(&ao_gps_tracking_report_mega_task, -		    ao_gps_tracking_report_mega, -		    "gps_tracking_report");  } diff --git a/src/core/ao_gps_report_metrum.c b/src/core/ao_gps_report_metrum.c index 4fefe223..b82936dd 100644 --- a/src/core/ao_gps_report_metrum.c +++ b/src/core/ao_gps_report_metrum.c @@ -23,80 +23,69 @@ ao_gps_report_metrum(void)  {  	static __xdata struct ao_log_metrum		gps_log;  	static __xdata struct ao_telemetry_location	gps_data; -	uint8_t	date_reported = 0; - -	for (;;) { -		ao_sleep(&ao_gps_data); -		ao_mutex_get(&ao_gps_mutex); -		ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data)); -		ao_mutex_put(&ao_gps_mutex); - -		if (!(gps_data.flags & AO_GPS_VALID)) -			continue; - -		gps_log.tick = ao_gps_tick; -		gps_log.type = AO_LOG_GPS_POS; -		gps_log.u.gps.latitude = gps_data.latitude; -		gps_log.u.gps.longitude = gps_data.longitude; -		gps_log.u.gps.altitude = gps_data.altitude; -		ao_log_metrum(&gps_log); - -		gps_log.type = AO_LOG_GPS_TIME; -		gps_log.u.gps_time.hour = gps_data.hour; -		gps_log.u.gps_time.minute = gps_data.minute; -		gps_log.u.gps_time.second = gps_data.second; -		gps_log.u.gps_time.flags = gps_data.flags; -		gps_log.u.gps_time.year = gps_data.year; -		gps_log.u.gps_time.month = gps_data.month; -		gps_log.u.gps_time.day = gps_data.day; -		ao_log_metrum(&gps_log); -	} -} - -void -ao_gps_tracking_report_metrum(void) -{ -	static __xdata struct ao_log_metrum		gps_log;  	static __xdata struct ao_telemetry_satellite	gps_tracking_data;  	uint8_t	c, n, i, p, valid, packets;  	uint8_t svid; +	uint8_t	date_reported = 0;  	for (;;) { -		ao_sleep(&ao_gps_tracking_data);  		ao_mutex_get(&ao_gps_mutex); -		ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data)); +		while (!(new = ao_gps_new)) +			ao_sleep(&ao_gps_new); +		if (new & AO_GPS_NEW_DATA) +			ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data)); +		if (new & AO_GPS_NEW_TRACKING) +			ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data)); +		ao_gps_new = 0;  		ao_mutex_put(&ao_gps_mutex); -		if (!(n = gps_tracking_data.channels)) -			continue; +		if ((new & AO_GPS_NEW_DATA) && (gps_data.flags & AO_GPS_VALID)) { +			gps_log.tick = ao_gps_tick; +			gps_log.type = AO_LOG_GPS_POS; +			gps_log.u.gps.latitude = gps_data.latitude; +			gps_log.u.gps.longitude = gps_data.longitude; +			gps_log.u.gps.altitude = gps_data.altitude; +			ao_log_metrum(&gps_log); -		gps_log.type = AO_LOG_GPS_SAT; -		gps_log.tick = ao_gps_tick; -		i = 0; -		for (c = 0; c < n; c++) { -			svid = gps_tracking_data.sats[c].svid; -			if (svid != 0) { -				if (i == 4) { -					gps_log.u.gps_sat.channels = i; -					gps_log.u.gps_sat.more = 1; -					ao_log_metrum(&gps_log); -					i = 0; +			gps_log.type = AO_LOG_GPS_TIME; +			gps_log.u.gps_time.hour = gps_data.hour; +			gps_log.u.gps_time.minute = gps_data.minute; +			gps_log.u.gps_time.second = gps_data.second; +			gps_log.u.gps_time.flags = gps_data.flags; +			gps_log.u.gps_time.year = gps_data.year; +			gps_log.u.gps_time.month = gps_data.month; +			gps_log.u.gps_time.day = gps_data.day; +			ao_log_metrum(&gps_log); +		} + +		if ((new & AO_GPS_NEW_TRACKING) && (n = gps_tracking_data.channels)) { +			gps_log.type = AO_LOG_GPS_SAT; +			gps_log.tick = ao_gps_tick; +			i = 0; +			for (c = 0; c < n; c++) { +				svid = gps_tracking_data.sats[c].svid; +				if (svid != 0) { +					if (i == 4) { +						gps_log.u.gps_sat.channels = i; +						gps_log.u.gps_sat.more = 1; +						ao_log_metrum(&gps_log); +						i = 0; +					} +					gps_log.u.gps_sat.sats[i].svid = svid; +					gps_log.u.gps_sat.sats[i].c_n = gps_tracking_data.sats[c].c_n_1; +					i++;  				} -				gps_log.u.gps_sat.sats[i].svid = svid; -				gps_log.u.gps_sat.sats[i].c_n = gps_tracking_data.sats[c].c_n_1; -				i++;  			} -		} -		if (i) { -			gps_log.u.gps_sat.channels = i; -			gps_log.u.gps_sat.more = 0; -			ao_log_metrum(&gps_log); +			if (i) { +				gps_log.u.gps_sat.channels = i; +				gps_log.u.gps_sat.more = 0; +				ao_log_metrum(&gps_log); +			}  		}  	}  }  __xdata struct ao_task ao_gps_report_metrum_task; -__xdata struct ao_task ao_gps_tracking_report_metrum_task;  void  ao_gps_report_metrum_init(void) @@ -104,7 +93,4 @@ ao_gps_report_metrum_init(void)  	ao_add_task(&ao_gps_report_metrum_task,  		    ao_gps_report_metrum,  		    "gps_report"); -	ao_add_task(&ao_gps_tracking_report_metrum_task, -		    ao_gps_tracking_report_metrum, -		    "gps_tracking_report");  } diff --git a/src/drivers/ao_gps_sirf.c b/src/drivers/ao_gps_sirf.c index 91fc948b..d89435b9 100644 --- a/src/drivers/ao_gps_sirf.c +++ b/src/drivers/ao_gps_sirf.c @@ -19,6 +19,7 @@  #include "ao.h"  #endif +__xdata uint8_t ao_gps_new;  __xdata uint8_t ao_gps_mutex;  __pdata uint16_t ao_gps_tick;  __xdata struct ao_telemetry_location	ao_gps_data; @@ -422,8 +423,9 @@ ao_gps(void) __reentrant  			else  				ao_gps_data.v_error = ao_sirf_data.v_error / 100;  #endif +			ao_gps_new |= AO_GPS_NEW_DATA;  			ao_mutex_put(&ao_gps_mutex); -			ao_wakeup(&ao_gps_data); +			ao_wakeup(&ao_gps_new);  			break;  		case 4:  			ao_mutex_get(&ao_gps_mutex); @@ -432,8 +434,9 @@ ao_gps(void) __reentrant  				ao_gps_tracking_data.sats[i].svid = ao_sirf_tracker_data.sats[i].svid;  				ao_gps_tracking_data.sats[i].c_n_1 = ao_sirf_tracker_data.sats[i].c_n_1;  			} +			ao_gps_new |= AO_GPS_NEW_TRACKING;  			ao_mutex_put(&ao_gps_mutex); -			ao_wakeup(&ao_gps_tracking_data); +			ao_wakeup(&ao_gps_new);  			break;  		}  	} diff --git a/src/drivers/ao_gps_skytraq.c b/src/drivers/ao_gps_skytraq.c index 9a9dff75..944a37f9 100644 --- a/src/drivers/ao_gps_skytraq.c +++ b/src/drivers/ao_gps_skytraq.c @@ -32,6 +32,7 @@  #define ao_gps_set_speed	ao_serial1_set_speed  #endif +__xdata uint8_t ao_gps_new;  __xdata uint8_t ao_gps_mutex;  static __data char ao_gps_char;  static __data uint8_t ao_gps_cksum; @@ -293,10 +294,11 @@ ao_nmea_gga(void)  	if (!ao_gps_error) {  		ao_mutex_get(&ao_gps_mutex); +		ao_gps_new |= AO_GPS_NEW_DATA;  		ao_gps_tick = ao_gps_next_tick;  		ao_xmemcpy(&ao_gps_data, PDATA_TO_XDATA(&ao_gps_next), sizeof (ao_gps_data));  		ao_mutex_put(&ao_gps_mutex); -		ao_wakeup(&ao_gps_data); +		ao_wakeup(&ao_gps_new);  	}  } @@ -352,9 +354,10 @@ ao_nmea_gsv(void)  		ao_gps_tracking_next.channels = 0;  	else if (done) {  		ao_mutex_get(&ao_gps_mutex); +		ao_gps_new |= AO_GPS_NEW_TRACKING;  		ao_xmemcpy(&ao_gps_tracking_data, PDATA_TO_XDATA(&ao_gps_tracking_next), sizeof(ao_gps_tracking_data));  		ao_mutex_put(&ao_gps_mutex); -		ao_wakeup(&ao_gps_tracking_data); +		ao_wakeup(&ao_gps_new);  	}  } diff --git a/src/drivers/ao_gps_ublox.c b/src/drivers/ao_gps_ublox.c index e9168348..3582d6e0 100644 --- a/src/drivers/ao_gps_ublox.c +++ b/src/drivers/ao_gps_ublox.c @@ -25,6 +25,7 @@  #include <stdarg.h> +__xdata uint8_t ao_gps_new;  __xdata uint8_t ao_gps_mutex;  __pdata uint16_t ao_gps_tick;  __xdata struct ao_telemetry_location	ao_gps_data; @@ -760,8 +761,8 @@ ao_gps(void) __reentrant  				}  				ao_mutex_put(&ao_gps_mutex); -				ao_wakeup(&ao_gps_data); -				ao_wakeup(&ao_gps_tracking_data); +				ao_gps_new = AO_GPS_NEW_DATA | AO_GPS_NEW_TRACKING; +				ao_wakeup(&ao_gps_new);  				break;  			}  			break; diff --git a/src/product/ao_terraui.c b/src/product/ao_terraui.c index 1866eb0c..8fd97033 100644 --- a/src/product/ao_terraui.c +++ b/src/product/ao_terraui.c @@ -629,7 +629,7 @@ ao_terragps(void)  	for (;;) {  		while (ao_gps_tick == gps_tick) -			ao_sleep(&ao_gps_data); +			ao_sleep(&ao_gps_new);  		gps_tick = ao_gps_tick;  		ao_gps_progress = (ao_gps_progress + 1) & 3;  	} diff --git a/src/teleballoon-v1.1/ao_balloon.c b/src/teleballoon-v1.1/ao_balloon.c index e8972655..12752d1f 100644 --- a/src/teleballoon-v1.1/ao_balloon.c +++ b/src/teleballoon-v1.1/ao_balloon.c @@ -105,8 +105,8 @@ ao_flight(void)  #if HAS_GPS  				/* Record current GPS position by waking up GPS log tasks */ -				ao_wakeup(&ao_gps_data); -				ao_wakeup(&ao_gps_tracking_data); +				ao_gps_new = AO_GPS_NEW_DATA | AO_GPS_NEW_TRACKING; +				ao_wakeup(&ao_gps_new);  #endif  				ao_wakeup(DATA_TO_XDATA(&ao_flight_state)); diff --git a/src/test/ao_gps_test.c b/src/test/ao_gps_test.c index 3844a326..b6cc9ba7 100644 --- a/src/test/ao_gps_test.c +++ b/src/test/ao_gps_test.c @@ -427,11 +427,18 @@ void  ao_dump_state(void *wchan)  {  	int	i; -	if (wchan == &ao_gps_data) + +	if (wchan != &ao_gps_new) +		return; +	 +	if (ao_gps_new & AO_GPS_NEW_DATA) {  		ao_gps_print(&ao_gps_data); -	else +		putchar('\n'); +	} +	if (ao_gps_new & AO_GPS_NEW_TRACKING) {  		ao_gps_tracking_print(&ao_gps_tracking_data); -	putchar('\n'); +		putchar('\n'); +	}  	return;  	printf ("%02d:%02d:%02d",  		ao_gps_data.hour, ao_gps_data.minute, diff --git a/src/test/ao_gps_test_skytraq.c b/src/test/ao_gps_test_skytraq.c index 89cbd767..bf2ab5b8 100644 --- a/src/test/ao_gps_test_skytraq.c +++ b/src/test/ao_gps_test_skytraq.c @@ -443,7 +443,7 @@ uint8_t	ao_task_minimize_latency;  void  ao_dump_state(void *wchan)  { -	if (wchan == &ao_gps_data) +	if (wchan == &ao_gps_new)  		ao_gps_show();  } diff --git a/src/test/ao_gps_test_ublox.c b/src/test/ao_gps_test_ublox.c index a0e04cb6..31c7af60 100644 --- a/src/test/ao_gps_test_ublox.c +++ b/src/test/ao_gps_test_ublox.c @@ -347,7 +347,7 @@ check_ublox_message(char *which, uint8_t *msg)  void  ao_dump_state(void *wchan)  { -	if (wchan == &ao_gps_data) +	if (wchan == &ao_gps_new)  		ao_gps_show();  	return;  } | 
