summaryrefslogtreecommitdiff
path: root/include/nmeaparse/NMEACommand.h
blob: d71b9b72fdec256778fc27e83787078b7994a493 (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*
 * NMEACommand.h
 *
 *  Created on: Sep 8, 2014
 *      Author: Cameron Karlsson
 */

#ifndef NMEACOMMAND_H_
#define NMEACOMMAND_H_

#include <string>
#include <nmeaparse/NMEAParser.h>

namespace nmea {

		class NMEACommand {
		public:
			std::string message;
			std::string name;
			char checksum;
			NMEACommand();
			virtual ~NMEACommand();
			virtual std::string toString();
			std::string addChecksum(std::string s);
		};



		class NMEACommandSerialConfiguration : public NMEACommand {
		public:
			/*
			// $PSRF100,0,9600,8,1,0*0C

			Table 2-4 Set Serial Port Data Format
			Name		Example		Unit Description
			Message ID	$PSRF100	PSRF100 protocol header
			Protocol	0 			0=SiRF binary, 1=NMEA
			Baud 		9600 		1200, 2400, 4800, 9600, 19200, 38400, 57600, and 115200
			DataBits	8 			8,71

			StopBits	1 			0,1		1. SiRF protocol is only valid for 8 data bits, 1stop bit, and no parity.
			Parity		0 			0=None, 1=Odd, 2=Even
			Checksum	*0C
			<CR> <LF> End of message termination
			*/
			int32_t baud;       //4800, 9600, 19200, 38400
			int32_t databits;	//7, 8 Databits
			int32_t stopbits;	//0, 1 Stopbits
			int32_t parity;		//0=none, 1=odd, 2=even Parity

			NMEACommandSerialConfiguration(){
				name = "PSRF100";
				baud = 4800;
				databits = 8;
				stopbits = 1;
				parity = 0;
			};
			virtual std::string toString();
		};

		class NMEACommandQueryRate : public NMEACommand {
		public:
			// data fields that will be stringed.


			//  $PSRF103,00,01,00,01*25
			/*
			* Table 2-9 Query/Rate Control Data Format
			Name		Example		Unit Description
			Message ID	$PSRF103	PSRF103 protocol header
			Msg			00 			See Table 2-10
			Mode		01 			0=SetRate, 1=Query
			Rate		00 			sec Output—off=0, max=255
			CksumEnable 01 			0=Disable Checksum, 1=Enable Checksum
			Checksum	*25
			<CR> <LF> End of message termination
			*/
			/*
			* Table 2-10 Messages
			Value Description
			0 GGA
			1 GLL
			2 GSA
			3 GSV
			4 RMC
			5 VTG
			6 MSS (If internal beacon is supported)
			7 Not defined
			8 ZDA (if 1PPS output is supported)
			9 Not defined
			*/

			enum QueryRateMode {
				SETRATE = 0,
				QUERY = 1
			};

			NMEASentence::MessageID messageID;
			QueryRateMode mode;
			int rate;
			int checksumEnable;
			NMEACommandQueryRate(){
				name = "PSRF103";
				messageID = NMEASentence::Unknown;
				mode = QueryRateMode::SETRATE;
				rate = 0;
				checksumEnable = 1;
			};
			virtual std::string toString();
		};


}

#endif /* NMEACOMMAND_H_ */