Agra-GPS / FreePilot_V2-3

Dependencies:   FreePilot PinDetect mbed-src

Fork of FreePilot_V2-2 by Agra-GPS

Committer:
maximbolduc
Date:
Fri Feb 13 17:22:53 2015 +0000
Revision:
34:c2bc9f9be7ff
working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maximbolduc 34:c2bc9f9be7ff 1 char* checksum2;
maximbolduc 34:c2bc9f9be7ff 2 int getCheckSum(char *string)
maximbolduc 34:c2bc9f9be7ff 3 {
maximbolduc 34:c2bc9f9be7ff 4 int i;
maximbolduc 34:c2bc9f9be7ff 5 int XOR;
maximbolduc 34:c2bc9f9be7ff 6 int c;
maximbolduc 34:c2bc9f9be7ff 7 bool started = false;
maximbolduc 34:c2bc9f9be7ff 8 for (XOR = 0, i = 0; i < strlen(string); i++)
maximbolduc 34:c2bc9f9be7ff 9 {
maximbolduc 34:c2bc9f9be7ff 10 c = (unsigned char)string[i];
maximbolduc 34:c2bc9f9be7ff 11 if ( c == '$' )started = true;
maximbolduc 34:c2bc9f9be7ff 12
maximbolduc 34:c2bc9f9be7ff 13 if ( started == true )
maximbolduc 34:c2bc9f9be7ff 14 {
maximbolduc 34:c2bc9f9be7ff 15 if (c == '*')
maximbolduc 34:c2bc9f9be7ff 16 {
maximbolduc 34:c2bc9f9be7ff 17 break;
maximbolduc 34:c2bc9f9be7ff 18 }
maximbolduc 34:c2bc9f9be7ff 19 if (c != '$') XOR ^= c;
maximbolduc 34:c2bc9f9be7ff 20 }
maximbolduc 34:c2bc9f9be7ff 21 }
maximbolduc 34:c2bc9f9be7ff 22 return XOR;
maximbolduc 34:c2bc9f9be7ff 23 }
maximbolduc 34:c2bc9f9be7ff 24
maximbolduc 34:c2bc9f9be7ff 25 bool validate_checksum(char* validating)
maximbolduc 34:c2bc9f9be7ff 26 {
maximbolduc 34:c2bc9f9be7ff 27 bool valid = false;
maximbolduc 34:c2bc9f9be7ff 28 int tempo = getCheckSum(validating);
maximbolduc 34:c2bc9f9be7ff 29 string token, mystring(validating);
maximbolduc 34:c2bc9f9be7ff 30 while(token != mystring)
maximbolduc 34:c2bc9f9be7ff 31 {
maximbolduc 34:c2bc9f9be7ff 32 token = mystring.substr(0,mystring.find_first_of("*"));
maximbolduc 34:c2bc9f9be7ff 33 mystring = mystring.substr(mystring.find_first_of("*") + 1,2);
maximbolduc 34:c2bc9f9be7ff 34 }
maximbolduc 34:c2bc9f9be7ff 35 int checksumm = atoh <uint16_t>(token.c_str());
maximbolduc 34:c2bc9f9be7ff 36 if (tempo == checksumm)
maximbolduc 34:c2bc9f9be7ff 37 {
maximbolduc 34:c2bc9f9be7ff 38 valid = true;
maximbolduc 34:c2bc9f9be7ff 39 }
maximbolduc 34:c2bc9f9be7ff 40 return valid;
maximbolduc 34:c2bc9f9be7ff 41 }