summaryrefslogtreecommitdiff
path: root/src/ao.h
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2009-08-18 22:35:15 -0700
committerKeith Packard <keithp@keithp.com>2009-08-18 22:35:15 -0700
commit29687cbd462a332d9a36ed87500c5b737dcae3f4 (patch)
treeb762cc4fc6f44487656f4a95ac92df013b0f7f19 /src/ao.h
parent7d4ceb75a454e6c9b3fe0bd934fadcb5104dea36 (diff)
Handle GPS satellite tracking data
SiRF message #4 includes signal strength and GPS engine state for each of the satellites being tracked. This data is now parsed and sent to eeprom and the radio. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/ao.h')
-rw-r--r--src/ao.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/ao.h b/src/ao.h
index 85b7825f..27ec010f 100644
--- a/src/ao.h
+++ b/src/ao.h
@@ -458,6 +458,7 @@ ao_ee_init(void);
#define AO_LOG_GPS_LAT 'N'
#define AO_LOG_GPS_LON 'W'
#define AO_LOG_GPS_ALT 'H'
+#define AO_LOG_GPS_SAT 'V'
#define AO_LOG_POS_NONE (~0UL)
@@ -499,6 +500,12 @@ struct ao_log_record {
uint16_t unused;
} gps_altitude;
struct {
+ uint16_t svid;
+ uint8_t state;
+ uint8_t c_n;
+ uint8_t unused;
+ } gps_sat;
+ struct {
uint16_t d0;
uint16_t d1;
} anon;
@@ -696,8 +703,29 @@ 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;
+};
+
+struct ao_gps_tracking_data {
+ uint8_t channels;
+ struct ao_gps_sat_data sats[12];
+};
+
extern __xdata uint8_t ao_gps_mutex;
extern __xdata struct ao_gps_data ao_gps_data;
+extern __xdata struct ao_gps_tracking_data ao_gps_tracking_data;
void
ao_gps(void);
@@ -706,6 +734,9 @@ void
ao_gps_print(__xdata struct ao_gps_data *gps_data);
void
+ao_gps_tracking_print(__xdata struct ao_gps_tracking_data *gps_tracking_data);
+
+void
ao_gps_init(void);
/*
@@ -735,6 +766,7 @@ struct ao_telemetry {
struct ao_adc adc;
struct ao_gps_data gps;
char callsign[AO_MAX_CALLSIGN];
+ struct ao_gps_tracking_data gps_tracking;
};
/* Set delay between telemetry reports (0 to disable) */