XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
crc8.c 文件参考

XWOS通用库:CRC8 更多...

#include <xwos/standard.h>
#include <xwos/lib/xwbop.h>
#include <xwos/lib/crc8.h>
crc8.c 的引用(Include)关系图:

浏览源代码.

函数

xwer_t soc_crc8_cal (xwu8_t *crc8, bool refin, xwu8_t polynomial, const xwu8_t stream[], xwsz_t *size)
 
static xwer_t xwlib_crc8_swcal (xwu8_t *crc8, bool refin, xwu8_t plynml, const xwu8_t stream[], xwsz_t *size)
 软件方式计算数据的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的查询表
 

详细描述

XWOS通用库:CRC8

作者

在文件 crc8.c 中定义.

函数说明

◆ soc_crc8_cal()

xwer_t soc_crc8_cal ( xwu8_t crc8,
bool  refin,
xwu8_t  polynomial,
const xwu8_t  stream[],
xwsz_t size 
)
这是这个函数的调用关系图:

◆ xwlib_crc8_swcal()

static xwer_t xwlib_crc8_swcal ( xwu8_t crc8,
bool  refin,
xwu8_t  plynml,
const xwu8_t  stream[],
xwsz_t size 
)
static

软件方式计算数据的CRC8校验值

参数
[in,out]crc8指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示初始值
  • (O) 作为输出时,返回计算结果
[in]refin是否按位镜像翻转输入的每个字节(xwbop_rbit8)
[in]plynml多项式
[in]stream指向数据的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回剩余未计算的数据长度
返回
错误码
返回值
XWOK没有错误,计算结果有效
-EOPNOTSUPP不支持的多项式

<No error

在文件 crc8.c167 行定义.

170{
171 xwsz_t i;
172 xwsz_t total;
173 xwu8_t byte;
174 xwu8_t remainder;
175 const xwu8_t * table;
176 xwer_t rc;
177
178 // cppcheck-suppress [misra-c2012-16.6]
179 switch (plynml) {
180#if defined(XWLIBCFG_CRC8_0X07) && (1 == XWLIBCFG_CRC8_0X07)
181 case 0x7:
182 table = xwlib_crc8tbl_0x07;
183 break;
184#endif
185#if defined(XWLIBCFG_CRC8_0X31) && (1 == XWLIBCFG_CRC8_0X31)
186 case 0x31:
187 table = xwlib_crc8tbl_0x31;
188 break;
189#endif
190#if defined(XWLIBCFG_CRC8_0X9B) && (1 == XWLIBCFG_CRC8_0X9B)
191 case 0x9B:
192 table = xwlib_crc8tbl_0x9B;
193 break;
194#endif
195 default:
196 table = NULL;
197 break;
198 }
199 if (NULL != table) {
200 remainder = *crc8;
201 total = *size;
202 for (i = 0; i < total; i++) {
203 if (refin) {
204 byte = xwbop_rbit8(stream[i]);
205 } else {
206 byte = stream[i];
207 }
208 remainder = table[remainder ^ byte];
209 }
210 *crc8 = remainder;
211 *size = 0;
212 rc = XWOK;
213 } else {
214 rc = -EOPNOTSUPP;
215 }
216 return rc;
217}
const xwu8_t xwlib_crc8tbl_0x07[256]
CRC8多项式0x7的查询表
Definition crc8.c:21
const xwu8_t xwlib_crc8tbl_0x9B[256]
CRC8多项式0x9B的查询表
Definition crc8.c:101
const xwu8_t xwlib_crc8tbl_0x31[256]
CRC8多项式0x31的查询表
Definition crc8.c:61
#define EOPNOTSUPP
Operation not supported on socket
Definition errno.h:115
#define XWOK
No error
Definition errno.h:182
signed long xwer_t
Definition type.h:554
#define NULL
Definition type.h:28
unsigned long xwsz_t
Definition type.h:339
uint8_t xwu8_t
Definition type.h:194
xwu8_t xwbop_rbit8(xwu8_t x)
函数调用图:
这是这个函数的调用关系图: