x

Dependents:   20180621_FT813

Committer:
JackB
Date:
Mon Jul 23 12:23:55 2018 +0000
Revision:
0:a6e68073c162
NMEA

Who changed what in which revision?

UserRevisionLine numberNew 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