X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=lib%2Fcrc16.c;h=f46ba727c9a869afae3af9bfd0abff1d3b26db42;hb=0528ba0e1c4f879278d597b1aeaf1bf31a943f75;hp=753b987b0206e8f8cac1dc78fe132c5ab4e86622;hpb=9f0f432c0aea1e70959a0c06938459d3175a36b0;p=oweals%2Fu-boot.git diff --git a/lib/crc16.c b/lib/crc16.c index 753b987b02..f46ba727c9 100644 --- a/lib/crc16.c +++ b/lib/crc16.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: eCos-2.0 /* *========================================================================== * @@ -6,8 +7,6 @@ * 16 bit CRC with polynomial x^16+x^12+x^5+1 * *========================================================================== - * SPDX-License-Identifier: eCos-2.0 - *========================================================================== *#####DESCRIPTIONBEGIN#### * * Author(s): gthomas @@ -23,7 +22,12 @@ *========================================================================== */ -#include "crc.h" +#ifdef USE_HOSTCC +#include +#else +#include +#endif +#include /* Table of CRC constants - implements x^16+x^12+x^5+1 */ static const uint16_t crc16_tab[] = { @@ -61,14 +65,20 @@ static const uint16_t crc16_tab[] = { 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, }; -uint16_t crc16_ccitt(uint16_t crc_start, unsigned char *buf, int len) +uint16_t crc16_ccitt(uint16_t cksum, const unsigned char *buf, int len) { - int i; - uint16_t cksum; - - cksum = crc_start; - for (i = 0; i < len; i++) + for (int i = 0; i < len; i++) cksum = crc16_tab[((cksum>>8) ^ *buf++) & 0xff] ^ (cksum << 8); return cksum; } + +void crc16_ccitt_wd_buf(const uint8_t *in, uint len, + uint8_t *out, uint chunk_sz) +{ + uint16_t crc; + + crc = crc16_ccitt(0, in, len); + crc = htons(crc); + memcpy(out, &crc, sizeof(crc)); +}