diff options
| author | ckgt <ckarlsson25@gmail.com> | 2015-03-28 19:08:43 -0400 |
|---|---|---|
| committer | ckgt <ckarlsson25@gmail.com> | 2015-03-28 19:08:43 -0400 |
| commit | 09a3c9c3485a023b5ae98652c46129941ca7fd41 (patch) | |
| tree | fb3b89f819d54d3efdef291079ddd061c40a4eb5 /src/NMEACommand.cpp | |
| parent | 78627e9bc711b012d38855daeb004fe55b3d4d26 (diff) | |
Initial commit.
Diffstat (limited to 'src/NMEACommand.cpp')
| -rw-r--r-- | src/NMEACommand.cpp | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/NMEACommand.cpp b/src/NMEACommand.cpp new file mode 100644 index 0000000..a432767 --- /dev/null +++ b/src/NMEACommand.cpp @@ -0,0 +1,108 @@ +/* + * NMEACommand.cpp + * + * Created on: Sep 8, 2014 + * Author: Cameron Karlsson + */ + +#include <nmeaparse/NMEACommand.h> +#include <iomanip> +#include <sstream> + +using namespace std; +using namespace nmea; + + +NMEACommand::NMEACommand(){}; + +NMEACommand::~NMEACommand(){}; + +string NMEACommand::toString(){ + return addChecksum(message); +} + +string NMEACommand::addChecksum(std::string s){ + stringstream zz; + zz << name << "," << s; + checksum = NMEAParser::calculateChecksum(zz.str()); + + stringstream ss; + ios_base::fmtflags oldflags = ss.flags(); + ss << "$" << zz.str() << "*" << hex << uppercase << internal << setfill('0') << setw(2) << (int)checksum << "\r\n"; + ss.flags(oldflags); //reset + + return ss.str(); +}; + + + + /* + // $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 + */ +std::string NMEACommandSerialConfiguration::toString(){ + stringstream ss; + + ss << "1," << baud << "," << databits << "," << stopbits << "," << parity; + message = ss.str(); + + return NMEACommand::addChecksum(message); +} + + + + // $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 + */ +// Data Members: +// int messageID; +// int mode; +// int rate; +// int checksumEnable; +// Creates a valid NMEA $PSRF103 command sentence. +std::string NMEACommandQueryRate::toString(){ + stringstream ss; + + ss << setfill('0') << setw(2) << messageID << "," + << setfill('0') << setw(2) << mode << "," + << setfill('0') << setw(2) << rate << "," + << setfill('0') << setw(2) << checksumEnable; + message = ss.str(); + + return NMEACommand::addChecksum(message); +} + |
