Paparazzi UAS  v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
gps.h File Reference

Device independent GPS code (interface) More...

#include "std.h"
#include "math/pprz_geodetic_int.h"
#include "mcu_periph/sys_time.h"
+ Include dependency graph for gps.h:

Go to the source code of this file.

Data Structures

struct  SVinfo
 data structure for Space Vehicle Information of a single satellite More...
 
struct  GpsState
 data structure for GPS information More...
 
struct  GpsTimeSync
 data structure for GPS time sync More...
 

Macros

#define GPS_FIX_NONE   0x00
 No GPS fix. More...
 
#define GPS_FIX_2D   0x02
 2D GPS fix More...
 
#define GPS_FIX_3D   0x03
 3D GPS fix More...
 
#define GPS_FIX_DGPS   0x04
 DGPS fix. More...
 
#define GPS_FIX_RTK   0x05
 RTK GPS fix. More...
 
#define GpsFixValid()   (gps.fix >= GPS_FIX_3D)
 
#define GpsIsLost()   !GpsFixValid()
 
#define GPS_NB_CHANNELS   1
 
#define GPS_TIMEOUT   2
 GPS timeout in seconds. More...
 
#define gps_Reset(_val)
 GPS Reset. More...
 

Functions

void gps_init (void)
 initialize the global GPS state More...
 
void gps_impl_init (void)
 GPS model specific init implementation. More...
 
void gps_inject_data (uint8_t packet_id, uint8_t length, uint8_t *data)
 GPS packet injection (default empty) More...
 
static bool_t gps_has_been_good (void)
 
void gps_periodic_check (void)
 Periodic GPS check. More...
 
uint32_t gps_tow_from_sys_ticks (uint32_t sys_ticks)
 Convert time in sys_time ticks to GPS time of week. More...
 

Variables

struct GpsState gps
 global GPS state More...
 
struct GpsTimeSync gps_time_sync
 

Detailed Description

Device independent GPS code (interface)

Definition in file gps.h.


Data Structure Documentation

struct SVinfo

data structure for Space Vehicle Information of a single satellite

Definition at line 57 of file gps.h.

Data Fields
int16_t azim azimuth in deg
uint8_t cno Carrier to Noise Ratio (Signal Strength) in dbHz.
int8_t elev elevation in deg
uint8_t flags bitfield with GPS receiver specific flags
uint8_t qi quality bitfield (GPS receiver specific)
uint8_t svid Satellite ID.
struct GpsState

data structure for GPS information

Definition at line 67 of file gps.h.

+ Collaboration diagram for GpsState:
Data Fields
uint32_t cacc course accuracy in rad*1e7
int32_t course GPS course over ground in rad*1e7, [0, 2*Pi]*1e7 (CW/north)
struct EcefCoor_i ecef_pos position in ECEF in cm
struct EcefCoor_i ecef_vel speed ECEF in cm/s
uint8_t fix status of fix
uint16_t gspeed norm of 2d ground speed in cm/s
int32_t hmsl height above mean sea level in mm
uint32_t last_3dfix_ticks cpu time ticks at last valid 3D fix
uint32_t last_3dfix_time cpu time in sec at last valid 3D fix
uint32_t last_msg_ticks cpu time ticks at last received GPS message
uint32_t last_msg_time cpu time in sec at last received GPS message
struct LlaCoor_i lla_pos position in LLA (lat,lon: deg*1e7; alt: mm over ellipsoid)
uint8_t nb_channels Number of scanned satellites.
struct NedCoor_i ned_vel speed NED in cm/s
uint8_t num_sv number of sat in fix
uint32_t pacc position accuracy in cm
uint16_t pdop position dilution of precision scaled by 100
uint16_t reset hotstart, warmstart, coldstart
uint32_t sacc speed accuracy in cm/s
uint16_t speed_3d norm of 3d speed in cm/s
struct SVinfo svinfos[GPS_NB_CHANNELS] holds information from the Space Vehicles (Satellites)
uint32_t tow GPS time of week in ms.
struct UtmCoor_i utm_pos position in UTM (north,east: cm; alt: mm over ellipsoid)
uint16_t week GPS week.
struct GpsTimeSync

data structure for GPS time sync

Definition at line 97 of file gps.h.

Data Fields
uint32_t t0_ticks hw clock ticks when GPS message is received
uint32_t t0_tow GPS time of week in ms from last message.
int32_t t0_tow_frac fractional ns remainder of tow [ms], range -500000 .. 500000

Macro Definition Documentation

#define GPS_FIX_2D   0x02

2D GPS fix

Definition at line 42 of file gps.h.

Referenced by gps_mtk_read_message(), gps_skytraq_read_message(), parse_ins_msg(), and sirf_parse_41().

#define GPS_FIX_DGPS   0x04

DGPS fix.

Definition at line 44 of file gps.h.

Referenced by get_fix_mode().

#define GPS_FIX_RTK   0x05

RTK GPS fix.

Definition at line 45 of file gps.h.

Referenced by get_fix_mode().

#define GPS_NB_CHANNELS   1

Definition at line 53 of file gps.h.

#define gps_Reset (   _val)
Value:
{ \
}

GPS Reset.

Todo:
this still needs to call gps specific stuff

Definition at line 139 of file gps.h.

#define GPS_TIMEOUT   2

GPS timeout in seconds.

Definition at line 117 of file gps.h.

Referenced by gps_periodic_check().

#define GpsFixValid ( )    (gps.fix >= GPS_FIX_3D)
#define GpsIsLost ( )    !GpsFixValid()

Definition at line 49 of file gps.h.

Referenced by autopilot_on_rc_frame(), and failsafe_check().

Function Documentation

static bool_t gps_has_been_good ( void  )
inlinestatic

Definition at line 120 of file gps.h.

References FALSE, GpsFixValid, and TRUE.

void gps_init ( void  )

initialize the global GPS state

Definition at line 135 of file gps.c.

References GpsState::cacc, DefaultPeriodic, GpsState::fix, gpio_setup_output(), gps, GPS_FIX_NONE, gps_impl_init(), GPS_POWER_GPIO, GpsState::last_3dfix_ticks, GpsState::last_3dfix_time, GpsState::last_msg_ticks, GpsState::last_msg_time, LED_OFF, register_periodic_telemetry(), GpsState::tow, and GpsState::week.

Referenced by init_ap(), and main_init().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gps_inject_data ( uint8_t  packet_id,
uint8_t  length,
uint8_t data 
)

GPS packet injection (default empty)

GPS packet injection (default empty)

Definition at line 384 of file gps_piksi.c.

References gps_piksi_write(), and sbp_state.

Referenced by dl_parse_msg().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gps_periodic_check ( void  )

Periodic GPS check.

Marks GPS as lost when no GPS message was received for GPS_TIMEOUT seconds

Definition at line 166 of file gps.c.

References GpsState::fix, gps, GPS_FIX_NONE, GPS_TIMEOUT, GpsState::last_msg_time, and sys_time::nb_sec.

Referenced by failsafe_check(), and sensors_task().

+ Here is the caller graph for this function:

uint32_t gps_tow_from_sys_ticks ( uint32_t  sys_ticks)

Convert time in sys_time ticks to GPS time of week.

The resolution is sys_time.resolution

Returns
GPS tow in ms

Definition at line 173 of file gps.c.

References gps_time_sync, msec_of_sys_time_ticks(), MSEC_PER_WEEK, GpsTimeSync::t0_ticks, and GpsTimeSync::t0_tow.

Referenced by trigger_ext_periodic(), and windturbine_periodic().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

struct GpsTimeSync gps_time_sync

Definition at line 43 of file gps.c.

Referenced by gps_mtk_read_message(), gps_tow_from_sys_ticks(), and gps_ubx_read_message().