* Validates NMEA checksum. * Checksum is XOR of all characters between $ and *.
(sentence)
| 134 | * Checksum is XOR of all characters between $ and *. |
| 135 | */ |
| 136 | function validateChecksum(sentence) { |
| 137 | var starPos = sentence.indexOf('*'); |
| 138 | if (starPos === -1) |
| 139 | return false; |
| 140 | |
| 141 | var data = sentence.substring(1, starPos); |
| 142 | var checksumStr = sentence.substring(starPos + 1); |
| 143 | var expectedChecksum = parseInt(checksumStr, 16); |
| 144 | |
| 145 | var calculatedChecksum = 0; |
| 146 | for (var i = 0; i < data.length; i++) |
| 147 | calculatedChecksum ^= data.charCodeAt(i); |
| 148 | |
| 149 | return calculatedChecksum === expectedChecksum; |
| 150 | } |
| 151 | |
| 152 | //------------------------------------------------------------------------------ |
| 153 | // Frame Parser Function |