• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ crc16_ccitt函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ crc32函数代码示例发布时间:2022-05-30
下一篇:
C++ crash_save_cpu函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap