[file head]:
/*
*****************************************Copyright (c)**************************************************
**
**--------------文件信息--------------------------------------------------------------------------------
** 文件名称: CheckSum.c
** 文件标识:
** 描 述: 校验和处理,用RealView 3.0+编译,必须使用ARM方式编译
**
**
**--------------修改记录--------------------------------------------------------------------------------
**
** 当前版本: 1.0
** 作 者:
** 完成日期: 2007年6月30日
** 修改内容:
**
** 取代版本:
** 作 者:
** 完成日期:
********************************************************************************************************
*/
#include "config.h"
const BYTE gv_smCRCHighTbl[256]={
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
... ...
[file tail]:
... ...
-----------------------------------------------------------
********************************************************************************************************
*/
DWORD CRC16CheckSum(BYTE *pbData, DWORD dwLen)
{
BYTE bTmpVal = 0;
BYTE bCRCH = 0xFF;
BYTE bCRCL = 0xFF;
DWORD dwLooper = 0;
DWORD dwRetc = EMCDCM_OK;
if((0 == dwLen) || (NULL == pbData))
{
dwRetc = EMCDCM_ERR;
}
else
{
for(dwLooper=dwLen; dwLooper>0; dwLooper--)
{
bTmpVal = bCRCH ^ (*pbData++);
bCRCH = bCRCL ^ gv_smCRCHighTbl[bTmpVal];
bCRCL = gv_smCRCLowTbl[bTmpVal];
}
*pbData++ = bCRCH;
*pbData = bCRCL;
dwRetc = EMCDCM_OK;
}
return dwRetc;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
/*
*****************************************Copyright (c)**************************************************
**
**--------------文件信息--------------------------------------------------------------------------------
** 文件名称: CheckSum.c
** 文件标识:
** 描 述: 校验和处理,用RealView 3.0+编译,必须使用ARM方式编译
**
**
**--------------修改记录--------------------------------------------------------------------------------
**
** 当前版本: 1.0
** 作 者:
** 完成日期: 2007年6月30日
** 修改内容:
**
** 取代版本:
** 作 者:
** 完成日期:
********************************************************************************************************
*/
#include "config.h"
const BYTE gv_smCRCHighTbl[256]={
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
... ...
[file tail]:
... ...
-----------------------------------------------------------
********************************************************************************************************
*/
DWORD CRC16CheckSum(BYTE *pbData, DWORD dwLen)
{
BYTE bTmpVal = 0;
BYTE bCRCH = 0xFF;
BYTE bCRCL = 0xFF;
DWORD dwLooper = 0;
DWORD dwRetc = EMCDCM_OK;
if((0 == dwLen) || (NULL == pbData))
{
dwRetc = EMCDCM_ERR;
}
else
{
for(dwLooper=dwLen; dwLooper>0; dwLooper--)
{
bTmpVal = bCRCH ^ (*pbData++);
bCRCH = bCRCL ^ gv_smCRCHighTbl[bTmpVal];
bCRCL = gv_smCRCLowTbl[bTmpVal];
}
*pbData++ = bCRCH;
*pbData = bCRCL;
dwRetc = EMCDCM_OK;
}
return dwRetc;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/