26 lines
506 B
JavaScript
26 lines
506 B
JavaScript
"use strict";
|
|
/**
|
|
* Calculates the buffers CRC16.
|
|
*
|
|
* @param {Buffer} buffer the data buffer.
|
|
* @return {number} the calculated CRC16.
|
|
*/
|
|
module.exports = function crc16(buffer) {
|
|
var crc = 0xFFFF;
|
|
var odd;
|
|
|
|
for (var i = 0; i < buffer.length; i++) {
|
|
crc = crc ^ buffer[i];
|
|
|
|
for (var j = 0; j < 8; j++) {
|
|
odd = crc & 0x0001;
|
|
crc = crc >> 1;
|
|
if (odd) {
|
|
crc = crc ^ 0xA001;
|
|
}
|
|
}
|
|
}
|
|
|
|
return crc;
|
|
};
|