diff options
| author | Keith Packard <keithp@keithp.com> | 2009-11-15 16:20:18 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-11-15 16:20:18 -0800 | 
| commit | b0d7e3f9c9322542e9b649bb6ad7f7e5bb99dffa (patch) | |
| tree | 0f0fcefd67f4bef178ebd282f3151ba93564f55b | |
| parent | 524665fc221b0d483453c67b7211e282cebc8980 (diff) | |
Stop using SiRF state info.
With the switch to the skytraq GPS unit, we don't have the same level
of detail in the GPS stream, so stop reporting that in the telemetry
stream, in the UI and writing it to eeprom.
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | ao-tools/ao-postflight/ao-postflight.c | 4 | ||||
| -rw-r--r-- | ao-tools/lib/cc-logfile.c | 1 | ||||
| -rw-r--r-- | ao-tools/lib/cc-telem.c | 17 | ||||
| -rw-r--r-- | ao-tools/lib/cc.h | 1 | ||||
| -rw-r--r-- | src/ao.h | 12 | ||||
| -rw-r--r-- | src/ao_gps_print.c | 7 | ||||
| -rw-r--r-- | src/ao_gps_sirf.c | 5 | ||||
| -rw-r--r-- | src/ao_gps_skytraq.c | 6 | ||||
| -rw-r--r-- | src/ao_gps_test.c | 5 | 
9 files changed, 23 insertions, 35 deletions
diff --git a/ao-tools/ao-postflight/ao-postflight.c b/ao-tools/ao-postflight/ao-postflight.c index 733eb38c..c12939aa 100644 --- a/ao-tools/ao-postflight/ao-postflight.c +++ b/ao-tools/ao-postflight/ao-postflight.c @@ -360,7 +360,7 @@ analyse_flight(struct cc_flightraw *f, FILE *summary_file, FILE *detail_file,  			nsat = 0;  			for (k = 0; k < f->gps.sats[j].nsat; k++) {  				fprintf (gps_file, " %12.7f", (double) f->gps.sats[j].sat[k].c_n); -				if (f->gps.sats[j].sat[k].state == 0xbf) +				if (f->gps.sats[j].sat[k].svid != 0)  					nsat++;  			}  			fprintf(gps_file, " %d\n", nsat); @@ -381,7 +381,7 @@ analyse_flight(struct cc_flightraw *f, FILE *summary_file, FILE *detail_file,  			}  			nsat = 0;  			for (k = 0; k < f->gps.sats[j].nsat; k++) -				if (f->gps.sats[j].sat[k].state == 0xbf) +				if (f->gps.sats[j].sat[k].svid != 0)  					nsat++;  			fprintf(kml_file, "%12.7f, %12.7f, %12.7f <!-- time %12.7f sats %d -->", diff --git a/ao-tools/lib/cc-logfile.c b/ao-tools/lib/cc-logfile.c index 3d346bcc..9d086c82 100644 --- a/ao-tools/lib/cc-logfile.c +++ b/ao-tools/lib/cc-logfile.c @@ -212,7 +212,6 @@ read_eeprom(const char *line, struct cc_flightraw *f, double *ground_pres, int *  	case AO_LOG_GPS_SAT:  		sat.time = tick;  		sat.svid = a; -		sat.state = (b & 0xff);  		sat.c_n = (b >> 8) & 0xff;  		gpssat_add(&f->gps, &sat);  		break; diff --git a/ao-tools/lib/cc-telem.c b/ao-tools/lib/cc-telem.c index 9a2f6155..ccd40ac2 100644 --- a/ao-tools/lib/cc-telem.c +++ b/ao-tools/lib/cc-telem.c @@ -178,18 +178,25 @@ cc_telem_parse(const char *input_line, struct cc_telem *telem)  	}  	if (tracking_pos >= 0 && nword >= tracking_pos + 2 && strcmp(words[tracking_pos], "SAT") == 0) {  		int	c, n, pos; +		int	per_sat; +		int	state; + +		if (version >= 2) +			per_sat = 2; +		else +			per_sat = 3;  		cc_parse_int(&n, words[tracking_pos + 1]);  		pos = tracking_pos + 2; -		if (nword >= pos + n * 3) { +		if (nword >= pos + n * per_sat) {  			telem->gps_tracking.channels = n;  			for (c = 0; c < n; c++) {  				cc_parse_int(&telem->gps_tracking.sats[c].svid,  						 words[pos + 0]); -				cc_parse_hex(&telem->gps_tracking.sats[c].state, -						 words[pos + 1]); +				if (version < 2) +					cc_parse_hex(&state, words[pos + 1]);  				cc_parse_int(&telem->gps_tracking.sats[c].c_n0, -						 words[pos + 2]); -				pos += 3; +						 words[pos + per_sat - 1]); +				pos += per_sat;  			}  		} else {  			telem->gps_tracking.channels = 0; diff --git a/ao-tools/lib/cc.h b/ao-tools/lib/cc.h index ebc0db7d..0e8ced8a 100644 --- a/ao-tools/lib/cc.h +++ b/ao-tools/lib/cc.h @@ -103,7 +103,6 @@ struct cc_gpselt {  struct cc_gpssat {  	double		time;  	uint16_t	svid; -	uint8_t		state;  	uint8_t		c_n;  }; @@ -536,7 +536,7 @@ struct ao_log_record {  		} gps_altitude;  		struct {  			uint16_t	svid; -			uint8_t		state; +			uint8_t		unused;  			uint8_t		c_n;  		} gps_sat;  		struct { @@ -747,18 +747,8 @@ struct ao_gps_data {  	uint16_t		v_error;	/* m */  }; -#define SIRF_SAT_STATE_ACQUIRED			(1 << 0) -#define SIRF_SAT_STATE_CARRIER_PHASE_VALID	(1 << 1) -#define SIRF_SAT_BIT_SYNC_COMPLETE		(1 << 2) -#define SIRF_SAT_SUBFRAME_SYNC_COMPLETE		(1 << 3) -#define SIRF_SAT_CARRIER_PULLIN_COMPLETE	(1 << 4) -#define SIRF_SAT_CODE_LOCKED			(1 << 5) -#define SIRF_SAT_ACQUISITION_FAILED		(1 << 6) -#define SIRF_SAT_EPHEMERIS_AVAILABLE		(1 << 7) -  struct ao_gps_sat_data {  	uint8_t		svid; -	uint8_t		state;  	uint8_t		c_n_1;  }; diff --git a/src/ao_gps_print.c b/src/ao_gps_print.c index 95439ec7..b8b73cd2 100644 --- a/src/ao_gps_print.c +++ b/src/ao_gps_print.c @@ -112,17 +112,16 @@ ao_gps_tracking_print(__xdata struct ao_gps_tracking_data *gps_tracking_data) __  	sat = gps_tracking_data->sats;  	v = 0;  	for (c = 0; c < n; c++) { -		if (sat->svid && sat->state) +		if (sat->svid)  			v++;  		sat++;  	}  	printf("%d ", v);  	sat = gps_tracking_data->sats;  	for (c = 0; c < n; c++) { -		if (sat->svid && sat->state) -			printf (" %3d %02x %3d", +		if (sat->svid) +			printf (" %3d %3d",  				sat->svid, -				sat->state,  				sat->c_n_1);  		sat++;  	} diff --git a/src/ao_gps_sirf.c b/src/ao_gps_sirf.c index 58438760..eb00224c 100644 --- a/src/ao_gps_sirf.c +++ b/src/ao_gps_sirf.c @@ -108,7 +108,6 @@ static __xdata struct sirf_geodetic_nav_data	ao_sirf_data;  struct sirf_measured_sat_data {  	uint8_t		svid; -	uint16_t	state;  	uint8_t		c_n_1;  }; @@ -264,8 +263,7 @@ static const struct sirf_packet_parse measured_tracker_data_packet[] = {  static const struct sirf_packet_parse measured_sat_data_packet[] = {  	{ SIRF_U8, offsetof (struct sirf_measured_sat_data, svid) },		/* 0 SV id */ -	{ SIRF_DISCARD, 2 },							/* 1 azimuth, 2 elevation */ -	{ SIRF_U16, offsetof (struct sirf_measured_sat_data, state) },		/* 2 state */ +	{ SIRF_DISCARD, 4 },							/* 1 azimuth, 2 elevation, 3 state */  	{ SIRF_U8, offsetof (struct sirf_measured_sat_data, c_n_1) },		/* C/N0 1 */  	{ SIRF_DISCARD, 9 },							/* C/N0 2-10 */  	{ SIRF_END, 0 }, @@ -421,7 +419,6 @@ ao_gps(void) __reentrant  			ao_gps_tracking_data.channels = ao_sirf_tracker_data.channels;  			for (i = 0; i < 12; i++) {  				ao_gps_tracking_data.sats[i].svid = ao_sirf_tracker_data.sats[i].svid; -				ao_gps_tracking_data.sats[i].state = (uint8_t) ao_sirf_tracker_data.sats[i].state;  				ao_gps_tracking_data.sats[i].c_n_1 = ao_sirf_tracker_data.sats[i].c_n_1;  			}  			ao_mutex_put(&ao_gps_mutex); diff --git a/src/ao_gps_skytraq.c b/src/ao_gps_skytraq.c index b2eef04b..bf192f28 100644 --- a/src/ao_gps_skytraq.c +++ b/src/ao_gps_skytraq.c @@ -326,10 +326,8 @@ ao_gps(void) __reentrant  				ao_gps_skip_field();	/* elevation */  				ao_gps_lexchar();  				ao_gps_skip_field();	/* azimuth */ -				if (ao_gps_tracking_next.sats[i].c_n_1 = ao_gps_decimal(2))	/* C/N0 */ -					ao_gps_tracking_next.sats[i].state = 0xbf; -				else -					ao_gps_tracking_next.sats[i].state = 0; +				if (!(ao_gps_tracking_next.sats[i].c_n_1 = ao_gps_decimal(2)))	/* C/N0 */ +					ao_gps_tracking_next.sats[i].svid = 0;  				ao_gps_tracking_next.channels = i + 1;  			}  			if (ao_gps_char == '*') { diff --git a/src/ao_gps_test.c b/src/ao_gps_test.c index 3692f0e5..fddfedfd 100644 --- a/src/ao_gps_test.c +++ b/src/ao_gps_test.c @@ -59,7 +59,6 @@ struct ao_gps_data {  struct ao_gps_sat_data {  	uint8_t		svid; -	uint8_t		state;  	uint8_t		c_n_1;  }; @@ -435,9 +434,9 @@ ao_dump_state(void *wchan)  	printf("\n");  	printf ("\t");  	for (i = 0; i < 12; i++) -		printf (" %2d(%02x)", +		printf (" %2d(%02d)",  			ao_gps_tracking_data.sats[i].svid, -			ao_gps_tracking_data.sats[i].state); +			ao_gps_tracking_data.sats[i].c_n_1);  	printf ("\n");  }  | 
