summaryrefslogtreecommitdiff
path: root/nmea.h
blob: b893daaad9ad0c04515b432fc1e625191b1a0fbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

#define GPVTG "GPVTG"
#define GPGGA "GPGGA"
#define GPGSA "GPGSA"
#define GPGSV "GPGSV"
#define GPRMC "GPRMC"
#define PRWIZCH "PRWIZCH"

struct OUTDATA {
    int fdin;
    int fdout;

    long cmask;
    char utc[20];		/* UTC date / time in format "mm/dd/yy hh:mm:ss" */

    double latitude;		/* Latitude and longitude in format "d.ddddd" */

    double longitude;

    char grid[7];

    double altitude;		/* Altitude in meters */

    double speed;		/* Speed over ground, knots */

    double track;		/* Track made good, degress True */

    int satellites;		/* Number of satellites used in solution */

    int status;			/* 0 = no fix, 1 = fix, 2 = dgps fix */

    int mode;			/* 1 = no fix, 2 = 2D, 3 = 3D */

    double pdop;		/* Position dilution of precision */

    double hdop;		/* Horizontal dilution of precision */

    double vdop;		/* Vertical dilution of precision */

    int in_view;		/* # of satellites in view */

    int PRN[12];		/* PRN of satellite */

    int elevation[12];		/* elevation of satellite */

    int azimuth[12];		/* azimuth */

    int ss[12];			/* signal strength */

    int used[12];		/* used in solution */

    int ZCHseen;		/* flag */

    int Zs[12];			/* for the rockwell PRWIZCH */

    int Zv[12];			/*                  value */

    int year;

    int month;

    int day;

    int hours;

    int minutes;

    int seconds;

    double separation;

    double mag_var;

    double course;

    int seen[12];

    int valid[12];		/* signal valid */
};

#define C_LATLON	1
#define C_SAT		2
#define C_ZCH		4

/* prototypes */
extern void doNMEA(short refNum);
extern void processGPVTG(char *sentence);
extern void processGPRMC(char *sentence);
extern void processGPGGA(char *sentence);
extern void processGPGSV(char *sentence);
extern void processPRWIZCH(char *sentence);
extern void processGPGSA(char *sentence);
extern void add_checksum(char *sentence);
extern short checksum(char *sentence);
extern struct OUTDATA gNMEAdata;