Skip to content

embetech-official/crc

Repository files navigation

CRC

CI Tests GitHub License GitHub Release Codacy Badge

Overview

CRC is a C library to calculate 8/16/32- bit checksums using predefined polynomials

Supported Polynomials

  • CRC8-ITU (Poly 0x07, Init 0x00, no input/output bit reflection, XorOut 0x55)
  • CRC16-CCITT BLUETOOTH CCITT-TRUE V-41-LSB KERMIT (Poly 0x1021, Init 0x0000, input/output bit reflection, XorOut 0x0000)
  • CRC16-MODBUS (Poly 0x8005, Init 0xFFFF, input/output bit reflection, XorOut 0x0000)
  • CRC32-POSIX/cksum (Poly 0x04C11DB7, Init 0x00000000, no input/output bit reflection, XorOut 0xFFFFFFFF)

Quick Start

The easiest way to fetch this component is to use CPM.cmake. In your CMakeLists.txt add:

  CPMAddPackage("gh:embetech-official/crc@2")

In your source files:

#include <embetech/crc.h>

uint8_t your_data[100] = {};

// checksum of buffer
uint16_t crc = CRC16_CCITT_Init();
crc = CRC16_CCITT_UpdateBuf(your_data, sizeof(your_data), crc);
crc = CRC16_CCITT_Finalize(crc);

// Manually append a byte to the checksum calculation
uint8_t additional_data = 0xaa;
uint16_t crc2 = CRC16_CCITT_Init();
crc2 = CRC16_CCITT_UpdateBuf(your_data, sizeof(your_data), crc2);
crc2 = CRC16_CCITT_UpdateBuf(&additional_data, sizeof(additional_data), crc2);
crc2 = CRC16_CCITT_Finalize(crc2);

About

Lightweight CRC library

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •