X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Fcrc16.c;h=f46ba727c9a869afae3af9bfd0abff1d3b26db42;hb=f681eacbfeb2598c135ef8e8ba8d5b9298a52a38;hp=753b987b0206e8f8cac1dc78fe132c5ab4e86622;hpb=e6de55ec5bf306df3b3cc8e7a4cc17fa1e78ca6c;p=platform%2Fkernel%2Fu-boot.git diff --git a/lib/crc16.c b/lib/crc16.c index 753b987..f46ba72 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)); +}