X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=ao.h;h=bbf358e971dc1328fc8cb30db69d2fb77458c8d9;hb=c4e983daa4579896b227fdcb2be43fad75e94307;hp=20c2458cd87fc72766117784c25967120d3f409f;hpb=ed6f67dc47d750d5ff8bea63ae7cbb560689b9b6;p=fw%2Faltos diff --git a/ao.h b/ao.h index 20c2458c..bbf358e9 100644 --- a/ao.h +++ b/ao.h @@ -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);