• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #include "hpm_crc32.h"
9 
10 
crc32(const uint8_t * buf,uint32_t len)11 uint32_t crc32(const uint8_t *buf, uint32_t len)
12 {
13     uint8_t i;
14     uint32_t crc = 0xFFFFFFFF;
15     while (len--) {
16         crc ^= *buf++;
17         for (i = 0; i < 8; ++i) {
18             if (crc & 1)
19                 crc = (crc >> 1) ^ 0xEDB88320;
20             else
21                 crc = (crc >> 1);
22         }
23     }
24 
25     return ~crc;
26 }
27