x

Dependents:   20180621_FT813

NMEA0183.cpp

Committer:
JackB
Date:
2018-07-23
Revision:
0:a6e68073c162

File content as of revision 0:a6e68073c162:

#include "NMEA0183.h"

NMEA0183::NMEA0183()
{
}

// CheckParity
// Returns 1 if valid
int NMEA0183::CheckParity(char *nmea0183_string)
{
    // Calculate parity
    char parity_calculated = 0x00;
    for (int i = 1; i < strlen(nmea0183_string)-3; i++) {
        parity_calculated ^= nmea0183_string[i];
    }

    // Print parity_calculated to string
//    char parity_calculated_str[3];
//    snprintf(parity_calculated_str, 3, "%02x", parity_calculated);

    uint8_t len = strlen(nmea0183_string);
    char parity_given = hex2dec(nmea0183_string[len-2]) * 16 +  hex2dec(nmea0183_string[len-1]);

    // Compare values
    if (parity_calculated == parity_given) {
        return 1;
    }     
    return 0;
}

void NMEA0183::SubString(char *s, char *d, int pos, int len) //usage: substring(Src, Dst, Pos, Len);
{
//usage: substring(Source, Destination, pos, len);
    char *t;
 
    s=s+pos;
    t=s+len;
    while (s!=t) {
        *d=*s;
        s++;
        d++;
    }
    *d='\0';
}