本文整理汇总了C++中crc16_ccitt函数的典型用法代码示例。如果您正苦于以下问题:C++ crc16_ccitt函数的具体用法?C++ crc16_ccitt怎么用?C++ crc16_ccitt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了crc16_ccitt函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: initRunMode
void initRunMode() {
#if ENABLE_SLOTS
setupSlots();
#endif
mcu_clearTimer();
//TODO: Figure out that dest = destorig shit
dest = destorig;
#if !(ENABLE_SLOTS)
queryReplyCRC = crc16_ccitt(&queryReply[0],2);
queryReply[3] = (unsigned char) queryReplyCRC;
queryReply[2] = (unsigned char) mcu_swapBytes(queryReplyCRC);
#endif
#if SENSOR_DATA_IN_ID
// this branch is for sensor data in the id
ackReply[2] = SENSOR_DATA_TYPE_ID;
state = STATE_READ_SENSOR;
timeToSample++;
#else
ackReplyCRC = crc16_ccitt(&ackReply[0], 14);
ackReply[15] = (unsigned char) ackReplyCRC;
ackReply[14] = (unsigned char) mcu_swapBytes(ackReplyCRC);
#endif
#if ENABLE_SESSIONS
initialize_sessions();
#endif
state = STATE_READY;
}
开发者ID:spqr,项目名称:EFMoo,代码行数:33,代码来源:moo_main.c
示例2: XN297_UnscramblePayload
uint16_t XN297_UnscramblePayload(uint8_t *data, int len, const uint8_t *rxAddr)
{
uint16_t crc = 0xb5d2;
if (rxAddr) {
for (int ii = 0; ii < RX_TX_ADDR_LEN; ++ii) {
crc = crc16_ccitt(crc, rxAddr[RX_TX_ADDR_LEN - 1 - ii]);
}
}
for (int ii = 0; ii < len; ++ii) {
crc = crc16_ccitt(crc, data[ii]);
data[ii] = bitReverse(data[ii] ^ xn297_data_scramble[ii]);
}
crc ^= xn297_crc_xorout[len];
return crc;
}
开发者ID:raul-ortega,项目名称:iNav,代码行数:15,代码来源:rx_xn297.c
示例3: sumdDataReceive
// Receive ISR callback
static void sumdDataReceive(uint16_t c, void *data)
{
UNUSED(data);
uint32_t sumdTime;
static uint32_t sumdTimeLast;
static uint8_t sumdIndex;
sumdTime = micros();
if ((sumdTime - sumdTimeLast) > 4000)
sumdIndex = 0;
sumdTimeLast = sumdTime;
if (sumdIndex == 0) {
if (c != SUMD_SYNCBYTE)
return;
else
{
sumdFrameDone = false; // lazy main loop didnt fetch the stuff
crc = 0;
}
}
if (sumdIndex == 2)
sumdChannelCount = (uint8_t)c;
if (sumdIndex < SUMD_BUFFSIZE)
sumd[sumdIndex] = (uint8_t)c;
sumdIndex++;
if (sumdIndex < sumdChannelCount * 2 + 4)
crc = crc16_ccitt(crc, (uint8_t)c);
else
if (sumdIndex == sumdChannelCount * 2 + 5) {
sumdIndex = 0;
sumdFrameDone = true;
}
}
开发者ID:AndersHoglund,项目名称:betaflight,代码行数:36,代码来源:sumd.c
示例4: nffs_crc_flash
int
nffs_crc_flash(uint16_t initial_crc, uint8_t area_idx, uint32_t area_offset,
uint32_t len, uint16_t *out_crc)
{
uint32_t chunk_len;
uint16_t crc;
int rc;
crc = initial_crc;
/* Copy data in chunks small enough to fit in the flash buffer. */
while (len > 0) {
if (len > sizeof nffs_flash_buf) {
chunk_len = sizeof nffs_flash_buf;
} else {
chunk_len = len;
}
rc = nffs_flash_read(area_idx, area_offset, nffs_flash_buf, chunk_len);
if (rc != 0) {
return rc;
}
crc = crc16_ccitt(crc, nffs_flash_buf, chunk_len);
area_offset += chunk_len;
len -= chunk_len;
}
*out_crc = crc;
return 0;
}
开发者ID:leckie711,项目名称:incubator-mynewt-larva,代码行数:32,代码来源:nffs_crc.c
示例5: AC_BuildMessage
/*************************************************
* Function: AC_BuildMessage
* Description:
* Author: cxy
* Returns:
* Parameter:
* History:
*************************************************/
void ICACHE_FLASH_ATTR
AC_BuildMessage(u8 u8MsgCode, u8 u8MsgId,
u8 *pu8Payload, u16 u16PayloadLen,
AC_OptList *pstruOptList,
u8 *pu8Msg, u16 *pu16Len)
{
//协议组包函数
ZC_MessageHead *pstruMsg = NULL;
u16 u16OptLen = 0;
u16 crc = 0;
pstruMsg = (ZC_MessageHead *)pu8Msg;
pstruMsg->MsgCode = u8MsgCode;
pstruMsg->MsgId = u8MsgId;
pstruMsg->Version = 0;
AC_BuildOption(pstruOptList, &pstruMsg->OptNum, (pu8Msg + sizeof(ZC_MessageHead)), &u16OptLen);
memcpy((pu8Msg + sizeof(ZC_MessageHead) + u16OptLen), pu8Payload, u16PayloadLen);
/*updata len*/
pstruMsg->Payloadlen = ZC_HTONS(u16PayloadLen + u16OptLen);
/*calc crc*/
crc = crc16_ccitt((pu8Msg + sizeof(ZC_MessageHead)), (u16PayloadLen + u16OptLen));
pstruMsg->TotalMsgCrc[0]=(crc&0xff00)>>8;
pstruMsg->TotalMsgCrc[1]=(crc&0xff);
*pu16Len = (u16)sizeof(ZC_MessageHead) + u16PayloadLen + u16OptLen;
}
开发者ID:greatlevi,项目名称:ESP8266-SDK1.3,代码行数:39,代码来源:ac_api.c
示例6: ZC_StoreTokenKey
/*************************************************
* Function: ZC_StoreTokenKey
* Description:
* Author: cxy
* Returns:
* Parameter:
* History:
*************************************************/
void ZC_StoreTokenKey(u8 *pu8Data)
{
g_struZcConfigDb.struDeviceInfo.u32UnBcFlag = ZC_MAGIC_FLAG;
memcpy(g_struZcConfigDb.struCloudInfo.u8TokenKey, pu8Data, ZC_HS_SESSION_KEY_LEN);
g_struZcConfigDb.u32Crc = crc16_ccitt(((u8 *)&g_struZcConfigDb) + 4, sizeof(g_struZcConfigDb) - 4);
g_struProtocolController.pstruMoudleFun->pfunWriteFlash((u8*)&g_struZcConfigDb, sizeof(ZC_ConfigDB));
}
开发者ID:yinhongxing,项目名称:mico,代码行数:15,代码来源:zc_configuration.c
示例7: sizeof
/*
* Write the configuration parameters to EEPROM
*/
void ConfigParms::commit(bool forced)
{
if (_stationName[0] == '\0') {
// It was probably not initialized.
return;
}
if (!forced && !needCommit) {
return;
}
//DIAGPRINTLN(F("ConfigParms::commit"));
// Fill in the magic and CRC, and write to EEPROM
const size_t crc_size = sizeof(uint16_t);
const size_t magic_len = sizeof(magic);
size_t size = magic_len + sizeof(*this) + crc_size;
uint8_t buffer[size];
strncpy_P((char *)buffer, magic, magic_len);
memcpy(buffer + magic_len, (uint8_t *)this, sizeof(*this));
uint16_t crc = crc16_ccitt(buffer, size - crc_size);
*(uint16_t *)(buffer + size - crc_size) = crc;
//dumpBuffer(buffer, size);
eeprom_write_block((const void *)buffer, eepromAddr(), size);
needCommit = false;
}
开发者ID:SodaqMoja,项目名称:GPRSbee,代码行数:29,代码来源:Config.cpp
示例8: ZC_ConfigReset
/*************************************************
* Function: ZC_ConfigReset
* Description:
* Author: cxy
* Returns:
* Parameter:
* History:
*************************************************/
void ZC_ConfigReset()
{
g_struZcConfigDb.struSwitchInfo.u32ServerAddrConfig = 0;
g_struZcConfigDb.struDeviceInfo.u32UnBcFlag = 0xFFFFFFFF;
g_struZcConfigDb.u32Crc = crc16_ccitt(((u8 *)&g_struZcConfigDb) + 4, sizeof(g_struZcConfigDb) - 4);
g_struProtocolController.pstruMoudleFun->pfunWriteFlash((u8 *)&g_struZcConfigDb, sizeof(ZC_ConfigDB));
g_struProtocolController.pstruMoudleFun->pfunRest();
}
开发者ID:yinhongxing,项目名称:mico,代码行数:16,代码来源:zc_configuration.c
示例9: ZC_StoreConnectionInfo
/*************************************************
* Function: ZC_StoreConnectionInfo
* Description:
* Author: cxy
* Returns:
* Parameter:
* History:
*************************************************/
void ZC_StoreConnectionInfo(u8 *pu8Ssid, u8 *pu8Password)
{
g_struZcConfigDb.struConnection.u32MagicFlag = ZC_MAGIC_FLAG;
memcpy(g_struZcConfigDb.struConnection.u8Ssid, pu8Ssid, ZC_SSID_MAX_LEN);
memcpy(g_struZcConfigDb.struConnection.u8Password, pu8Password, ZC_PASSWORD_MAX_LEN);
g_struZcConfigDb.u32Crc = crc16_ccitt(((u8 *)&g_struZcConfigDb) + 4, sizeof(g_struZcConfigDb) - 4);
g_struProtocolController.pstruMoudleFun->pfunWriteFlash((u8*)&g_struZcConfigDb, sizeof(ZC_ConfigDB));
}
开发者ID:yinhongxing,项目名称:mico,代码行数:16,代码来源:zc_configuration.c
示例10: crc16_ccitt
/*
get CRC for a block
*/
uint16_t AP_Terrain::get_block_crc(struct grid_block &block)
{
uint16_t saved_crc = block.crc;
block.crc = 0;
uint16_t ret = crc16_ccitt((const uint8_t *)&block, sizeof(block), 0);
block.crc = saved_crc;
return ret;
}
开发者ID:ArmaJo,项目名称:ardupilot,代码行数:11,代码来源:TerrainUtil.cpp
示例11: crc16_ccitt_wd_buf
void crc16_ccitt_wd_buf(const uint8_t *in, uint len,
uint8_t *out, uint chunk_sz)
{
uint16_t crc;
crc = crc16_ccitt(0, in, len);
crc = htons(crc);
memcpy(out, &crc, sizeof(crc));
}
开发者ID:Noltari,项目名称:u-boot,代码行数:9,代码来源:crc16.c
示例12: l_crc16
static int l_crc16(lua_State *L)
{
size_t size;
const char *p_str = luaL_checklstring(L, 1, &size);
uint16_t retval = crc16_ccitt( (uint8_t*) p_str, size);
lua_pushinteger(L, (int) retval);
return 1;
}
开发者ID:GNSPS,项目名称:proxmark3,代码行数:9,代码来源:scripting.c
示例13: nffs_crc_disk_inode_hdr
static uint16_t
nffs_crc_disk_inode_hdr(const struct nffs_disk_inode *disk_inode)
{
uint16_t crc;
crc = crc16_ccitt(0, disk_inode, NFFS_DISK_INODE_OFFSET_CRC);
return crc;
}
开发者ID:leckie711,项目名称:incubator-mynewt-larva,代码行数:9,代码来源:nffs_crc.c
示例14: nffs_crc_disk_block_hdr
uint16_t
nffs_crc_disk_block_hdr(const struct nffs_disk_block *disk_block)
{
uint16_t crc;
crc = crc16_ccitt(0, disk_block, NFFS_DISK_BLOCK_OFFSET_CRC);
return crc;
}
开发者ID:leckie711,项目名称:incubator-mynewt-larva,代码行数:9,代码来源:nffs_crc.c
示例15: ZC_StoreAccessInfo
/*************************************************
* Function: ZC_StoreConnectionInfo
* Description:
* Author: cxy
* Returns:
* Parameter:
* History:
*************************************************/
void ZC_StoreAccessInfo(u8 *pu8ServerIp, u8 *pu8ServerPort)
{
g_struZcConfigDb.struConnection.u32MagicFlag = ZC_MAGIC_FLAG;
g_struZcConfigDb.struSwitchInfo.u32ServerAddrConfig = 1;
memcpy(&g_struZcConfigDb.struSwitchInfo.u32ServerIp, pu8ServerIp, ZC_SERVER_ADDR_MAX_LEN);
memcpy(&g_struZcConfigDb.struSwitchInfo.u16ServerPort, pu8ServerPort, ZC_SERVER_PORT_MAX_LEN);
g_struZcConfigDb.u32Crc = crc16_ccitt(((u8 *)&g_struZcConfigDb) + 4, sizeof(g_struZcConfigDb) - 4);
g_struProtocolController.pstruMoudleFun->pfunWriteFlash((u8*)&g_struZcConfigDb, sizeof(ZC_ConfigDB));
}
开发者ID:yinhongxing,项目名称:mico,代码行数:17,代码来源:zc_configuration.c
示例16: XN297_WritePayload
uint8_t XN297_WritePayload(uint8_t *data, int len, const uint8_t *rxAddr)
{
uint8_t packet[NRF24L01_MAX_PAYLOAD_SIZE];
uint16_t crc = 0xb5d2;
for (int ii = 0; ii < RX_TX_ADDR_LEN; ++ii) {
packet[ii] = rxAddr[RX_TX_ADDR_LEN - 1 - ii];
crc = crc16_ccitt(crc, packet[ii]);
}
for (int ii = 0; ii < len; ++ii) {
const uint8_t bOut = bitReverse(data[ii]);
packet[ii + RX_TX_ADDR_LEN] = bOut ^ xn297_data_scramble[ii];
crc = crc16_ccitt(crc, packet[ii + RX_TX_ADDR_LEN]);
}
crc ^= xn297_crc_xorout[len];
packet[RX_TX_ADDR_LEN + len] = crc >> 8;
packet[RX_TX_ADDR_LEN + len + 1] = crc & 0xff;
return NRF24L01_WritePayload(packet, RX_TX_ADDR_LEN + len + 2);
}
开发者ID:raul-ortega,项目名称:iNav,代码行数:18,代码来源:rx_xn297.c
示例17: crc16_ccitt_sbuf_append
void crc16_ccitt_sbuf_append(sbuf_t *dst, uint8_t *start)
{
uint16_t crc = 0;
const uint8_t * const end = sbufPtr(dst);
for (const uint8_t *ptr = start; ptr < end; ++ptr) {
crc = crc16_ccitt(crc, *ptr);
}
sbufWriteU16(dst, crc);
}
开发者ID:raul-ortega,项目名称:iNav,代码行数:9,代码来源:crc.c
示例18: crc16_ccitt_tvb_offset
guint16 crc16_ccitt_tvb_offset(tvbuff_t *tvb, guint offset, guint len)
{
const guint8 *buf;
tvb_ensure_bytes_exist(tvb, offset, len); /* len == -1 not allowed */
buf = tvb_get_ptr(tvb, offset, len);
return crc16_ccitt(buf, len);
}
开发者ID:CharaD7,项目名称:wireshark,代码行数:9,代码来源:crc16-tvb.c
示例19: crc16_ccitt_readReply
inline void crc16_ccitt_readReply(unsigned int numDataBytes)
{
// shift everything over by 1 to accomodate leading "0" bit.
// first, grab address of beginning of array
readReply[numDataBytes + 2] = 0; // clear out this spot for the loner bit of
// handle
readReply[numDataBytes + 4] = 0; // clear out this spot for the loner bit of
// crc
bits = (unsigned short) &readReply[0];
// shift all bytes and later use only data + handle
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
asm("RRC.b @R5+");
// store loner bit in array[numDataBytes+2] position
asm("RRC.b @R5+");
// make first bit 0
readReply[0] &= 0x7f;
// compute crc on data + handle bytes
readReplyCRC = crc16_ccitt(&readReply[0], numDataBytes + 2);
readReply[numDataBytes + 4] = readReply[numDataBytes + 2];
// XOR the MSB of CRC with loner bit.
readReply[numDataBytes + 4] ^= __swap_bytes(readReplyCRC); // XOR happens with
// MSB of lower
// nibble
// Just take the resulting bit, not the whole byte
readReply[numDataBytes + 4] &= 0x80;
unsigned short mask = __swap_bytes(readReply[numDataBytes + 4]);
mask >>= 3;
mask |= (mask >> 7);
mask ^= 0x1020;
mask >>= 1; // this is because the loner bit pushes the CRC to the left by 1
// but we don't shift the crc because it should get pushed out by 1 anyway
readReplyCRC ^= mask;
readReply[numDataBytes + 3] = (unsigned char) readReplyCRC;
readReply[numDataBytes + 2] |= (unsigned char) (__swap_bytes(readReplyCRC) &
0x7F);
}
开发者ID:Hayder-Hadi,项目名称:umichmoo,代码行数:56,代码来源:moo.c
示例20: nffs_crc_disk_block_fill
void
nffs_crc_disk_block_fill(struct nffs_disk_block *disk_block, const void *data)
{
uint16_t crc16;
crc16 = nffs_crc_disk_block_hdr(disk_block);
crc16 = crc16_ccitt(crc16, data, disk_block->ndb_data_len);
disk_block->ndb_crc16 = crc16;
}
开发者ID:leckie711,项目名称:incubator-mynewt-larva,代码行数:10,代码来源:nffs_crc.c
注:本文中的crc16_ccitt函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论