diff options
| author | Keith Packard <keithp@keithp.com> | 2009-07-17 21:30:53 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-07-17 21:32:17 -0700 | 
| commit | d6749bf24792bb41ca700cf4b8e5e1ac1a63cbf0 (patch) | |
| tree | d74bc78f33786a3cb1d3aa902af51a93e32d9418 /src | |
| parent | a1da7e871aee75308bc05ce1b7a0dc402e4c9509 (diff) | |
Add AO_GPS_RUNNING state.
This tracks whether the GPS receiver has ever sent a valid report to the
flight computer, allowing the user to tell whether the GPS receiver is
working at all.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/ao.h | 1 | ||||
| -rw-r--r-- | src/ao_gps.c | 2 | ||||
| -rw-r--r-- | src/ao_gps_print.c | 9 | ||||
| -rw-r--r-- | src/ao_gps_test.c | 1 | 
4 files changed, 9 insertions, 4 deletions
| @@ -678,6 +678,7 @@ ao_serial_init(void);  #define AO_GPS_NUM_SAT_SHIFT	(0)  #define AO_GPS_VALID		(1 << 4) +#define AO_GPS_RUNNING		(1 << 5)  struct ao_gps_data {  	uint8_t			hour; diff --git a/src/ao_gps.c b/src/ao_gps.c index 811ac2a8..32a44fb1 100644 --- a/src/ao_gps.c +++ b/src/ao_gps.c @@ -332,7 +332,7 @@ ao_gps(void) __reentrant  			ao_gps_data.hour = ao_sirf_data.utc_hour;  			ao_gps_data.minute = ao_sirf_data.utc_minute;  			ao_gps_data.second = ao_sirf_data.utc_second / 1000; -			ao_gps_data.flags = (ao_sirf_data.num_sv << AO_GPS_NUM_SAT_SHIFT) & AO_GPS_NUM_SAT_MASK; +			ao_gps_data.flags = ((ao_sirf_data.num_sv << AO_GPS_NUM_SAT_SHIFT) & AO_GPS_NUM_SAT_MASK) | AO_GPS_RUNNING;  			if ((ao_sirf_data.nav_type & NAV_TYPE_GPS_FIX_TYPE_MASK) >= NAV_TYPE_4_SV_KF)  				ao_gps_data.flags |= AO_GPS_VALID;  			ao_gps_data.latitude = ao_sirf_data.lat; diff --git a/src/ao_gps_print.c b/src/ao_gps_print.c index 5ad8d022..49041af6 100644 --- a/src/ao_gps_print.c +++ b/src/ao_gps_print.c @@ -82,11 +82,14 @@ ao_gps_print(__xdata struct ao_gps_data *gps_data) __reentrant  		       climb_sign,  		       climb / 100,  		       climb % 100); -		printf(" %d.%d(hdop) %5d(herr) %5d(verr)\n", -		       gps_data->hdop, +		printf(" %d.%d(hdop) %5u(herr) %5u(verr)\n", +		       gps_data->hdop / 5, +		       (gps_data->hdop * 2) % 10,  		       gps_data->h_error,  		       gps_data->v_error); -	} else { +	} else if (gps_data->flags & AO_GPS_RUNNING) {  		printf(" unlocked\n"); +	} else { +		printf (" not-connected\n");  	}  } diff --git a/src/ao_gps_test.c b/src/ao_gps_test.c index 0ed51d16..fb9b0d10 100644 --- a/src/ao_gps_test.c +++ b/src/ao_gps_test.c @@ -26,6 +26,7 @@  #define AO_GPS_NUM_SAT_SHIFT	(0)  #define AO_GPS_VALID		(1 << 4) +#define AO_GPS_RUNNING		(1 << 5)  struct ao_gps_data {  	uint8_t			hour; | 
