blob: 03bf56087d03450dce3055a70e18505f288125d3 [file] [log] [blame]
'use strict';
var _buffer = require('buffer');
var _create_buffer = require('./create_buffer');
var _create_buffer2 = _interopRequireDefault(_create_buffer);
var _define_crc = require('./define_crc');
var _define_crc2 = _interopRequireDefault(_define_crc);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = (0, _define_crc2.default)('xmodem', function (buf, previous) {
if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);
var crc = typeof previous !== 'undefined' ? ~~previous : 0x0;
for (var index = 0; index < buf.length; index++) {
var byte = buf[index];
var code = crc >>> 8 & 0xFF;
code ^= byte & 0xFF;
code ^= code >>> 4;
crc = crc << 8 & 0xFFFF;
crc ^= code;
code = code << 5 & 0xFFFF;
crc ^= code;
code = code << 7 & 0xFFFF;
crc ^= code;
}
return crc;
});