MCUXpresso_LPC845/components/crc/fsl_adapter_lpc_crc.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;
}