LibJuno 1.0.1
LibJuno is a lightweight C11 library designed specifically for embedded systems.
Loading...
Searching...
No Matches
CRC utilities
Collaboration diagram for CRC utilities:

Streaming update functions for several common CRC variants implemented in src/juno_*.c. Each function updates a running CRC with a data buffer and returns the new CRC value. Initial (seed) values are provided as macros (JUNO_*_CRC_INIT) for first use.

Behavior and usage

Example (streaming across two chunks)

// ARC (16-bit, no final XOR):
uint16_t crc = JUNO_ARC_CRC_INIT;
crc = Juno_CrcArcUpdate(crc, chunk1, len1);
crc = Juno_CrcArcUpdate(crc, chunk2, len2);
// ZIP (CRC-32) with final XOR at each call boundary:
uint32_t zip = JUNO_ZIP_CRC_INIT;
zip = Juno_CrcZipUpdate(zip, chunk1, len1); // returns XOR'ed
zip = Juno_CrcZipUpdate(zip ^ 0xFFFFFFFF, chunk2, len2); // undo XOR first
uint32_t Juno_CrcZipUpdate(uint32_t iCrc, const void *pcData, size_t zDataSize)
Update ZIP CRC (CRC-32) with new data.
Definition juno_zip.c:20
#define JUNO_ARC_CRC_INIT
Initial seed for CRC-16/ARC (IBM-16) computations.
Definition crc.h:76
#define JUNO_ZIP_CRC_INIT
Initial seed for ZIP/PKZIP CRC-32 computations (0xFFFFFFFF).
Definition crc.h:156
uint16_t Juno_CrcArcUpdate(uint16_t iCrc, const void *pcData, size_t zDataSize)
Update ARC CRC with new data.
Definition juno_arc.c:21