Subversion Repositories FlightCtrl

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef _UBX_H
#define _UBX_H

#include <inttypes.h>

typedef enum {
  INVALID, NEWDATA, PROCESSED
} Status_t;

// Satfix types for GPSData.satfix
#define SATFIX_NONE                      0x00
#define SATFIX_DEADRECKOING      0x01
#define SATFIX_2D                                0x02
#define SATFIX_3D                                0x03
#define SATFIX_GPS_DEADRECKOING  0x04
#define SATFIX_TIMEONLY                  0x05
// Flags for interpretation of the GPSData.flags
#define FLAG_GPSFIXOK                   0x01 // (i.e. within DOP & ACC Masks)
#define FLAG_DIFFSOLN                   0x02 // (is DGPS used)
#define FLAG_WKNSET                             0x04 // (is Week Number valid)
#define FLAG_TOWSET                             0x08 // (is Time of Week valid)
/* enable the UBX protocol at the gps receiver with the following messages enabled
 01-02 NAV - POSLLH
 01-06 Nav - SOL
 01-12 NAV - VELNED */


typedef struct {
  uint8_t flags; // flags
  uint8_t satnum; // number of satelites
  uint8_t satfix; // type of satfix
  int32_t longitude; // in 1e-07 deg
  int32_t latitude; // in 1e-07 deg
  int32_t altitude; // in mm
  uint32_t PAcc; // in cm 3d position accuracy
  int32_t velnorth; // in cm/s
  int32_t veleast; // in cm/s
  int32_t veltop; // in cm/s
  uint32_t velground; // 2D ground speed in cm/s
  uint32_t VAcc; // in cm/s 3d velocity accuracy
  Status_t status; // status of data: invalid | valid
} GPS_INFO_t;

//here you will find the current gps info
extern GPS_INFO_t GPSInfo; // measured position (last gps record)

// this variable should be decremted by the application
extern volatile uint8_t GPSTimeout; // is reset to 255 if a new UBX msg was received

#define USART1_BAUD 57600
// this function should be called within the UART RX ISR
extern void ubx_parser(uint8_t c);

#endif //_UBX_H