12345678910111213141516171819202122232425262728 |
- import { Buffer } from 'buffer';
- import createBuffer from './create_buffer';
- import defineCrc from './define_crc';
-
- const crc16xmodem = defineCrc('xmodem', function(buf, previous) {
- if (!Buffer.isBuffer(buf)) buf = createBuffer(buf);
-
- let crc = typeof previous !== 'undefined' ? ~~previous : 0x0;
-
- for (let index = 0; index < buf.length; index++) {
- const byte = buf[index];
- let 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;
- });
-
- export default crc16xmodem;
|