| '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; |
| }); |