summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ao-tools/ao-postflight/ao-postflight.c4
-rw-r--r--ao-tools/lib/cc-logfile.c1
-rw-r--r--ao-tools/lib/cc-telem.c17
-rw-r--r--ao-tools/lib/cc.h1
-rw-r--r--src/ao.h12
-rw-r--r--src/ao_gps_print.c7
-rw-r--r--src/ao_gps_sirf.c5
-rw-r--r--src/ao_gps_skytraq.c6
-rw-r--r--src/ao_gps_test.c5
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;
};
diff --git a/src/ao.h b/src/ao.h
index c1a0f6e3..b72cac5c 100644
--- a/src/ao.h
+++ b/src/ao.h
@@ -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");
}