#include "Header_Files/sbgcrc.h" uint16_t sbgtc::sbgCrc16Compute(const void *pData, size_t dataSize) { SbgCrc16 crcInst; // // Initialize the CRC system // sbgCrc16Initialize(&crcInst); // // Compute the CRC // sbgCrc16Update(&crcInst, pData, dataSize); // // Return it // return sbgCrc16Get(&crcInst); } void sbgtc::sbgCrc16Initialize(SbgCrc16 *pInstance) { // // Test input argument // //assert(pInstance); *pInstance = 0; } void sbgtc::sbgCrc16Update(SbgCrc16 *pInstance, const void *pData, size_t dataSize) { const uint8_t *pBuffer = (const uint8_t*)pData; uint8_t index; size_t i; // // Test input arguments // //assert(pInstance); //assert(pData); // // For each byte in our buffer // for (i = 0; i < dataSize; i++) { // // Update the current CRC // index = (pBuffer[i] ^ *pInstance) & 0xFF; *pInstance = crc16LookupTable[index] ^ (*pInstance >> 8); } } uint16_t sbgtc::sbgCrc16Get(const SbgCrc16 *pInstance) { return *pInstance; } uint32_t sbgtc::sbgCrc32Get(const SbgCrc32 *pInstance) { return *pInstance; }