* Validates the UBX Fletcher's checksum. * Covers class, ID, length, and payload bytes.
(msgClass, msgId, length, payload, ckA, ckB)
| 140 | * Covers class, ID, length, and payload bytes. |
| 141 | */ |
| 142 | function validateChecksum(msgClass, msgId, length, payload, ckA, ckB) { |
| 143 | var calcCkA = 0, calcCkB = 0; |
| 144 | |
| 145 | calcCkA = (calcCkA + msgClass) & 0xFF; calcCkB = (calcCkB + calcCkA) & 0xFF; |
| 146 | calcCkA = (calcCkA + msgId) & 0xFF; calcCkB = (calcCkB + calcCkA) & 0xFF; |
| 147 | calcCkA = (calcCkA + (length & 0xFF)) & 0xFF; calcCkB = (calcCkB + calcCkA) & 0xFF; |
| 148 | calcCkA = (calcCkA + ((length >> 8) & 0xFF)) & 0xFF; calcCkB = (calcCkB + calcCkA) & 0xFF; |
| 149 | |
| 150 | for (var i = 0; i < payload.length; i++) { |
| 151 | calcCkA = (calcCkA + payload[i]) & 0xFF; |
| 152 | calcCkB = (calcCkB + calcCkA) & 0xFF; |
| 153 | } |
| 154 | |
| 155 | return (calcCkA === ckA) && (calcCkB === ckB); |
| 156 | } |
| 157 | |
| 158 | //------------------------------------------------------------------------------ |
| 159 | // Frame Parser Function |