X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao.h;h=4116be65ae13f22aef242957363d4b2ffa42147b;hp=85b7825f759fdd73fd3473250933aaee92fa5200;hb=fee46389b70a624ab5b1128a8b4c3083c7747bcb;hpb=d6749bf24792bb41ca700cf4b8e5e1ac1a63cbf0 diff --git a/src/ao.h b/src/ao.h index 85b7825f..4116be65 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) @@ -498,6 +499,11 @@ struct ao_log_record { int16_t altitude; uint16_t unused; } gps_altitude; + struct { + uint16_t svid; + uint8_t state; + uint8_t c_n; + } gps_sat; struct { uint16_t d0; uint16_t d1; @@ -696,8 +702,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); @@ -705,6 +732,9 @@ ao_gps(void); 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 +765,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) */ @@ -746,6 +777,9 @@ struct ao_telemetry { void ao_telemetry_set_interval(uint16_t interval); +void +ao_rdf_set(uint8_t rdf); + void ao_telemetry_init(void); @@ -765,6 +799,12 @@ struct ao_radio_recv { void ao_radio_recv(__xdata struct ao_radio_recv *recv) __reentrant; +void +ao_radio_rdf(int ms); + +void +ao_radio_rdf_abort(void); + void ao_radio_init(void);