tok: improve the nmea_calc_crc function a bit
authorFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 2 Dec 2013 11:13:15 +0000 (12:13 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 2 Dec 2013 11:13:28 +0000 (12:13 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/pud/nmealib/src/tok.c

index bfc6867..ade2ace 100644 (file)
 #define NMEA_CONVSTR_BUF    64
 
 /**
- * Calculate crc control sum of a string
+ * Calculate crc control sum of a string.
+ * If the string starts with a '$' then that character is skipped as per
+ * the NMEA spec.
  *
  * @param s the string
  * @param len the length of the string
  * @return the crc
  */
 int nmea_calc_crc(const char *s, const int len) {
-       int chksum = 0;
-       int it;
+  int chksum = 0;
+  int it = 0;
 
-       for (it = 0; it < len; it++)
-               chksum ^= (int) s[it];
+  if (s[it] == '$')
+    it++;
 
-       return chksum;
+  for (; it < len; it++)
+    chksum ^= (int) s[it];
+
+  return chksum;
 }
 
 /**