x
NMEA0183.cpp@0:a6e68073c162, 2018-07-23 (annotated)
- Committer:
- JackB
- Date:
- Mon Jul 23 12:23:55 2018 +0000
- Revision:
- 0:a6e68073c162
NMEA
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JackB | 0:a6e68073c162 | 1 | #include "NMEA0183.h" |
JackB | 0:a6e68073c162 | 2 | |
JackB | 0:a6e68073c162 | 3 | NMEA0183::NMEA0183() |
JackB | 0:a6e68073c162 | 4 | { |
JackB | 0:a6e68073c162 | 5 | } |
JackB | 0:a6e68073c162 | 6 | |
JackB | 0:a6e68073c162 | 7 | // CheckParity |
JackB | 0:a6e68073c162 | 8 | // Returns 1 if valid |
JackB | 0:a6e68073c162 | 9 | int NMEA0183::CheckParity(char *nmea0183_string) |
JackB | 0:a6e68073c162 | 10 | { |
JackB | 0:a6e68073c162 | 11 | // Calculate parity |
JackB | 0:a6e68073c162 | 12 | char parity_calculated = 0x00; |
JackB | 0:a6e68073c162 | 13 | for (int i = 1; i < strlen(nmea0183_string)-3; i++) { |
JackB | 0:a6e68073c162 | 14 | parity_calculated ^= nmea0183_string[i]; |
JackB | 0:a6e68073c162 | 15 | } |
JackB | 0:a6e68073c162 | 16 | |
JackB | 0:a6e68073c162 | 17 | // Print parity_calculated to string |
JackB | 0:a6e68073c162 | 18 | // char parity_calculated_str[3]; |
JackB | 0:a6e68073c162 | 19 | // snprintf(parity_calculated_str, 3, "%02x", parity_calculated); |
JackB | 0:a6e68073c162 | 20 | |
JackB | 0:a6e68073c162 | 21 | uint8_t len = strlen(nmea0183_string); |
JackB | 0:a6e68073c162 | 22 | char parity_given = hex2dec(nmea0183_string[len-2]) * 16 + hex2dec(nmea0183_string[len-1]); |
JackB | 0:a6e68073c162 | 23 | |
JackB | 0:a6e68073c162 | 24 | // Compare values |
JackB | 0:a6e68073c162 | 25 | if (parity_calculated == parity_given) { |
JackB | 0:a6e68073c162 | 26 | return 1; |
JackB | 0:a6e68073c162 | 27 | } |
JackB | 0:a6e68073c162 | 28 | return 0; |
JackB | 0:a6e68073c162 | 29 | } |
JackB | 0:a6e68073c162 | 30 | |
JackB | 0:a6e68073c162 | 31 | void NMEA0183::SubString(char *s, char *d, int pos, int len) //usage: substring(Src, Dst, Pos, Len); |
JackB | 0:a6e68073c162 | 32 | { |
JackB | 0:a6e68073c162 | 33 | //usage: substring(Source, Destination, pos, len); |
JackB | 0:a6e68073c162 | 34 | char *t; |
JackB | 0:a6e68073c162 | 35 | |
JackB | 0:a6e68073c162 | 36 | s=s+pos; |
JackB | 0:a6e68073c162 | 37 | t=s+len; |
JackB | 0:a6e68073c162 | 38 | while (s!=t) { |
JackB | 0:a6e68073c162 | 39 | *d=*s; |
JackB | 0:a6e68073c162 | 40 | s++; |
JackB | 0:a6e68073c162 | 41 | d++; |
JackB | 0:a6e68073c162 | 42 | } |
JackB | 0:a6e68073c162 | 43 | *d='\0'; |
JackB | 0:a6e68073c162 | 44 | } |
JackB | 0:a6e68073c162 | 45 |