diff options
author | Keith Packard <keithp@keithp.com> | 2009-04-18 23:17:45 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2009-04-18 23:17:45 -0700 |
commit | c4e983daa4579896b227fdcb2be43fad75e94307 (patch) | |
tree | 7300291e5bb7cdbfe4d7eac2d2c429ee4b2cb144 /ao.h | |
parent | ed6f67dc47d750d5ff8bea63ae7cbb560689b9b6 (diff) |
Parse GPS data locally. Add 'g' command to display recent GPS results.
This parses the GPS GGA message and stores it in a global variable,
protected by a mutex.
Diffstat (limited to 'ao.h')
-rw-r--r-- | ao.h | 49 |
1 files changed, 40 insertions, 9 deletions
@@ -477,15 +477,15 @@ enum ao_flight_state { ao_flight_invalid }; -extern __xdata struct ao_adc ao_flight_data; -extern __data enum flight_state ao_flight_state; -extern __data uint16_t ao_flight_tick; -extern __data int16_t ao_flight_accel; -extern __data int16_t ao_flight_pres; -extern __data int16_t ao_ground_pres; -extern __data int16_t ao_ground_accel; -extern __data int16_t ao_min_pres; -extern __data uint16_t ao_launch_time; +extern __xdata struct ao_adc ao_flight_data; +extern __pdata enum flight_state ao_flight_state; +extern __pdata uint16_t ao_flight_tick; +extern __pdata int16_t ao_flight_accel; +extern __pdata int16_t ao_flight_pres; +extern __pdata int16_t ao_ground_pres; +extern __pdata int16_t ao_ground_accel; +extern __pdata int16_t ao_min_pres; +extern __pdata uint16_t ao_launch_time; /* Flight thread */ void @@ -585,6 +585,37 @@ ao_serial_init(void); * ao_gps.c */ +struct ao_gps_pos { + uint8_t degrees; + uint8_t minutes; + uint16_t minutes_fraction; /* in units of 1/10000 minutes */ +}; + +#define AO_GPS_NUM_SAT_MASK (0xf << 0) +#define AO_GPS_NUM_SAT_SHIFT (0) + +#define AO_GPS_VALID (1 << 4) +#define AO_GPS_LONGITUDE_MASK (1 << 5) +#define AO_GPS_LONGITUDE_EAST (0 << 5) +#define AO_GPS_LONGITUDE_WEST (1 << 5) + +#define AO_GPS_LATITUDE_MASK (1 << 6) +#define AO_GPS_LATITUDE_NORTH (0 << 6) +#define AO_GPS_LATITUDE_SOUTH (1 << 6) + +struct ao_gps_data { + uint8_t hour; + uint8_t minute; + uint8_t second; + uint8_t flags; + struct ao_gps_pos latitude; + struct ao_gps_pos longitude; + int16_t altitude; +}; + +extern __xdata uint8_t ao_gps_mutex; +extern __xdata struct ao_gps_data ao_gps_data; + void ao_gps(void); |