53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
/*
|
|
* Copyright 2018 NXP
|
|
* All rights reserved.
|
|
*
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include "fsl_common.h"
|
|
#include "fsl_adapter_crc.h"
|
|
#include "fsl_crc.h"
|
|
|
|
/*******************************************************************************
|
|
* Code
|
|
******************************************************************************/
|
|
uint32_t HAL_CrcCompute(hal_crc_config_t *crcConfig, uint8_t *dataIn, uint32_t length)
|
|
{
|
|
CRC_Type *const s_CrcList[] = CRC_BASE_PTRS;
|
|
crc_config_t config;
|
|
uint32_t result;
|
|
|
|
config.seed = crcConfig->crcSeed;
|
|
config.reverseIn = (bool)crcConfig->crcRefIn;
|
|
config.complementIn = false;
|
|
config.complementOut = (bool)crcConfig->complementChecksum;
|
|
config.reverseOut = (bool)crcConfig->crcRefOut;
|
|
|
|
assert((crcConfig->crcSize == 2U) || (crcConfig->crcSize == 4U));
|
|
|
|
if (crcConfig->crcSize == 2U)
|
|
{
|
|
config.polynomial = kCRC_Polynomial_CRC_CCITT;
|
|
}
|
|
else
|
|
{
|
|
config.polynomial = kCRC_Polynomial_CRC_32;
|
|
}
|
|
|
|
CRC_Init(s_CrcList[0], &config);
|
|
CRC_WriteData(s_CrcList[0], dataIn, length);
|
|
|
|
if (crcConfig->crcSize == 2U)
|
|
{
|
|
result = (uint32_t)CRC_Get16bitResult(s_CrcList[0]);
|
|
}
|
|
else
|
|
{
|
|
result = CRC_Get32bitResult(s_CrcList[0]);
|
|
}
|
|
|
|
return result;
|
|
}
|