112 lines
2.3 KiB
C++
112 lines
2.3 KiB
C++
//
|
|
// Linux GPS
|
|
//
|
|
|
|
/* prevent multiple inclusions */
|
|
#ifndef __UbloxParser__
|
|
#define __UbloxParser__
|
|
|
|
/* includes *****************************************************************/
|
|
|
|
#include <vector>
|
|
|
|
#include "netlib.h"
|
|
|
|
#include "GpsListener.h"
|
|
#include "GpsParser.h"
|
|
|
|
#include "NmeaParser.h"
|
|
#include "NmeaProtocol.h"
|
|
|
|
/* defines ******************************************************************/
|
|
|
|
/* macros *******************************************************************/
|
|
|
|
/* structs & typedefs *******************************************************/
|
|
|
|
/* c class definitions ******************************************************/
|
|
|
|
class NmeaSentencePUBX : public NmeaSentence {
|
|
public:
|
|
int id;
|
|
timespec utctime;
|
|
// 00
|
|
double latitude;
|
|
double longitude;
|
|
double altitude_ref;
|
|
char navstat[4];
|
|
double horizontal_accuracy;
|
|
double vertical_accuracy;
|
|
double speed;
|
|
double course;
|
|
double vvel;
|
|
double agec;
|
|
double horizontal_dilution;
|
|
double vertical_dilution;
|
|
double time_dilution;
|
|
int gps;
|
|
int glonass;
|
|
int dead_reckoning;
|
|
|
|
// 01
|
|
|
|
// 03
|
|
int satellites;
|
|
struct {
|
|
int prn;
|
|
char status;
|
|
double azimuth;
|
|
double elevation;
|
|
int signal2noise;
|
|
int locktime;
|
|
} satellite[NMEA_MAX_SATELLITE];
|
|
|
|
// 04
|
|
double utc_tow;
|
|
int week;
|
|
int clk_b;
|
|
double clk_d;
|
|
int granularity;
|
|
|
|
NmeaSentencePUBX();
|
|
~NmeaSentencePUBX();
|
|
|
|
int Decode( int argc, char *argv[] );
|
|
void Update( GpsPoint &PosData, ErrorInfo &ErrInfo, SatelliteInfo &SatInfo );
|
|
};
|
|
|
|
class UbloxParser : public NmeaParser {
|
|
// public data
|
|
public:
|
|
|
|
// protected data
|
|
protected:
|
|
// u-Blox
|
|
NmeaSentencePUBX PUBX;
|
|
|
|
// private data
|
|
private:
|
|
// data
|
|
u_char state; // parser state
|
|
|
|
// private methods
|
|
|
|
// public methods
|
|
public:
|
|
// constructors
|
|
UbloxParser();
|
|
|
|
// destructor
|
|
virtual ~UbloxParser();
|
|
|
|
// virtual functions
|
|
int GpsDecode( const char *buf, int max ) { return UbloxDecode( (const u_char *)buf, max); };
|
|
int GpsParse( const char *buf, int max ) { return UbloxParse( buf, max ); };
|
|
|
|
// public methods
|
|
int UbloxDecode( const u_char *buf, int max );
|
|
int UbloxParse( const char *buf, int max );
|
|
};
|
|
|
|
#endif
|