XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
CRC8 的协作图:

函数

xwer_t xwlib_crc8_cal (xwu8_t *crc8, xwu8_t xorout, bool refin, bool refout, xwu8_t plynml, const xwu8_t stream[], xwsz_t *size)
 计算数据的CRC8校验值
 
xwu8_t xwlib_crc8_calms (const xwu8_t stream[], xwsz_t *size)
 用主流CRC8参数模型计算数据的CRC8校验值
 

变量

const xwu8_t xwlib_crc8tbl_0x07 [256]
 CRC8多项式0x7的查询表
 
const xwu8_t xwlib_crc8tbl_0x31 [256]
 CRC8多项式0x31的查询表
 
const xwu8_t xwlib_crc8tbl_0x9B [256]
 CRC8多项式0x9B的查询表
 

详细描述

函数说明

◆ xwlib_crc8_cal()

xwer_t xwlib_crc8_cal ( xwu8_t crc8,
xwu8_t  xorout,
bool  refin,
bool  refout,
xwu8_t  plynml,
const xwu8_t  stream[],
xwsz_t size 
)

计算数据的CRC8校验值

参数
[in,out]crc8指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示初始值
  • (O) 作为输出时,返回计算结果,当计算失败时,值不会发生改变
[in]xorout与结果异或的值
[in]refin是否按位镜像翻转输入的每个字节(xwbop_rbit8)
[in]refout是否按位镜像翻转输出(xwbop_rbit32)
[in]plynml多项式:
  • 0x07
  • 0x31
  • 0X9B
[in]stream指向数据的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回剩余未计算的数据长度,当返回不为0时, 表示计算未完成,计算结果不会镜像翻转,也不会与xorout异或。
返回
错误码
返回值
XWOK没有错误,计算结果有效
-EFAULT空指针
-EOPNOTSUPP不支持的多项式

<No error

在文件 crc8.c220 行定义.

223{
224 xwer_t rc;
225 xwsz_t total;
226 xwsz_t pos;
227 xwu8_t res;
228
229 XWOS_VALIDATE((crc8), "nullptr", -EFAULT);
230 XWOS_VALIDATE((size), "nullptr", -EFAULT);
231
232 total = *size;
233 res = *crc8;
234 pos = 0;
235 /* 使用硬件计算部分CRC8校验值 */
236 rc = soc_crc8_cal(&res, refin, plynml, &stream[0], size);
237 if (*size > 0) {
238 /* 使用软件计算剩余部分的CRC8校验值 */
239 pos = total - *size;
240 rc = xwlib_crc8_swcal(&res, refin, plynml, &stream[pos], size);
241 pos = total - *size;
242 }
243 if (XWOK == rc) {
244 if (0 == *size) {
245 if (refout) {
246 res = xwbop_rbit8(res);
247 }
248 res = res ^ xorout;
249 }
250 *crc8 = res;
251 }
252 return rc;
253}
static xwer_t xwlib_crc8_swcal(xwu8_t *crc8, bool refin, xwu8_t plynml, const xwu8_t stream[], xwsz_t *size)
软件方式计算数据的CRC8校验值
Definition crc8.c:167
xwer_t soc_crc8_cal(xwu8_t *crc8, bool refin, xwu8_t polynomial, const xwu8_t stream[], xwsz_t *size)
#define EFAULT
Bad address
Definition errno.h:44
#define XWOK
No error
Definition errno.h:182
signed long xwer_t
Definition type.h:554
unsigned long xwsz_t
Definition type.h:339
uint8_t xwu8_t
Definition type.h:194
xwu8_t xwbop_rbit8(xwu8_t x)
#define XWOS_VALIDATE(exp, errstr,...)
检查函数参数是否有效
Definition standard.h:76
函数调用图:
这是这个函数的调用关系图:

◆ xwlib_crc8_calms()

xwu8_t xwlib_crc8_calms ( const xwu8_t  stream[],
xwsz_t size 
)

用主流CRC8参数模型计算数据的CRC8校验值

参数
[in]stream指向数据的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回剩余未计算的数据长度
返回
CRC8
注解
  • 主流CRC8参数模型:
    • 多项式:0x7
    • 初始值:0x0
    • 是否按位镜像翻转输入:否
    • 是否按位镜像翻转输出:否
    • 与结果进行异或计算:0x0

在文件 crc8.c256 行定义.

257{
258 xwu8_t result;
259
260 result = (xwu8_t)0x0;
261 // cppcheck-suppress [misra-c2012-17.7]
262 xwlib_crc8_cal(&result,
263 (xwu8_t)0x0, false, false, (xwu8_t)0x07,
264 stream, size);
265 return result;
266}
xwer_t xwlib_crc8_cal(xwu8_t *crc8, xwu8_t xorout, bool refin, bool refout, xwu8_t plynml, const xwu8_t stream[], xwsz_t *size)
计算数据的CRC8校验值
Definition crc8.c:220
函数调用图:

变量说明

◆ xwlib_crc8tbl_0x07

const xwu8_t xwlib_crc8tbl_0x07[256]
extern

CRC8多项式0x7的查询表

在文件 crc8.c21 行定义.

◆ xwlib_crc8tbl_0x31

const xwu8_t xwlib_crc8tbl_0x31[256]
extern

CRC8多项式0x31的查询表

在文件 crc8.c61 行定义.

◆ xwlib_crc8tbl_0x9B

const xwu8_t xwlib_crc8tbl_0x9B[256]
extern

CRC8多项式0x9B的查询表

在文件 crc8.c101 行定义.