当前位置: 首页>>代码示例>>C++>>正文


C++ calculateChecksum函数代码示例

本文整理汇总了C++中calculateChecksum函数的典型用法代码示例。如果您正苦于以下问题:C++ calculateChecksum函数的具体用法?C++ calculateChecksum怎么用?C++ calculateChecksum使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了calculateChecksum函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: flashDownloadStart

SerialCommand flashDownloadStart(unsigned int totalSize,
                                 unsigned int numberOfBlocks,
                                 unsigned int blockSize,
                                 unsigned int offset)
{
    QByteArray data;
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(totalSize));
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(numberOfBlocks));
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(blockSize));
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(offset));

    QByteArray command = buildCommand(Opcode_FlashDownloadStart, data, calculateChecksum(data));

    QByteArray expectedResponse;
    expectedResponse.append(0x01);
    expectedResponse.append(Opcode_FlashDownloadStart);
    expectedResponse.append(ByteArrayHelpers::uint16ToByteArrayLittle(2));
    expectedResponse.append((char)0x07);
    expectedResponse.append((char)0x07);
    expectedResponse.append((char)0x12);
    expectedResponse.append((char)0x20);
    expectedResponse.append((char)0x00);
    expectedResponse.append((char)0x00);

    return SerialCommand("flashDownloadStart",
                         slipEncode(command),
                         slipEncode(expectedResponse));
}
开发者ID:Blinkinlabs,项目名称:PatternPaint,代码行数:28,代码来源:esp8266bootloadercommands.cpp

示例2: checkChecksum

bool HanResponse::checkChecksum() {
	uint16_t *checksum = (uint16_t *) &frame[CHECKSUM];
	if (*checksum == calculateChecksum()) {
		return true;
	}
	return false;
}
开发者ID:KeyTech,项目名称:KeyTech,代码行数:7,代码来源:HanResponse.cpp

示例3: writeEEPROM

// FIXME: HAL for now this will only work for F4/F7 as flash layout is different
void writeEEPROM(void)
{
    // Generate compile time error if the config does not fit in the reserved area of flash.
    BUILD_BUG_ON(sizeof(master_t) > FLASH_TO_RESERVE_FOR_CONFIG);

    HAL_StatusTypeDef status;
    uint32_t wordOffset;
    int8_t attemptsRemaining = 3;

    suspendRxSignal();

    // prepare checksum/version constants
    masterConfig.version = EEPROM_CONF_VERSION;
    masterConfig.size = sizeof(master_t);
    masterConfig.magic_be = 0xBE;
    masterConfig.magic_ef = 0xEF;
    masterConfig.chk = 0; // erase checksum before recalculating
    masterConfig.chk = calculateChecksum((const uint8_t *) &masterConfig, sizeof(master_t));

    // write it
    /* Unlock the Flash to enable the flash control register access *************/
    HAL_FLASH_Unlock();
    while (attemptsRemaining--)
    {
        /* Fill EraseInit structure*/
        FLASH_EraseInitTypeDef EraseInitStruct = {0};
        EraseInitStruct.TypeErase     = FLASH_TYPEERASE_SECTORS;
        EraseInitStruct.VoltageRange  = FLASH_VOLTAGE_RANGE_3; // 2.7-3.6V
        EraseInitStruct.Sector        = (FLASH_SECTOR_TOTAL-1);
        EraseInitStruct.NbSectors     = 1;
        uint32_t SECTORError;
        status = HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError);
        if (status != HAL_OK)
        {
            continue;
        }
        else
        {
            for (wordOffset = 0; wordOffset < sizeof(master_t); wordOffset += 4)
            {
                status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, CONFIG_START_FLASH_ADDRESS + wordOffset, *(uint32_t *) ((char *) &masterConfig + wordOffset));
                if(status != HAL_OK)
                {
                    break;
                }
            }
        }
        if (status == HAL_OK) {
            break;
        }
    }
    HAL_FLASH_Lock();

    // Flash write failed - just die now
    if (status != HAL_OK || !isEEPROMContentValid()) {
        failureMode(FAILURE_FLASH_WRITE_FAILED);
    }

    resumeRxSignal();
}
开发者ID:tianbin4279,项目名称:betaflight,代码行数:61,代码来源:config_eeprom.c

示例4: rsi_validateFrame

/** 
 * @brief Checks CRC of frame
 * 
 * @param buffer Buffer containing message to check
 * @param msgLength Length of message in bytes
 * 
 * @return success/failure
 */
sInt32_t rsi_validateFrame( uInt8_t *buffer, uInt16_t msgLength )
{

	uInt8_t crcVal[CRC_SIZE];              // CRC value
	sInt32_t retVal = STATUS_FAILURE;      // Variable for Return value

	//assume frame has CRC...
	calculateCrc( buffer, msgLength-2, crcVal);
	//uInt32_t crc = (crcVal[1] << 8) | crcVal[0];
	//printf("expected crc = 0x%04x\n", crc);

	if ((crcVal[CRC_LSB_INDEX] == buffer[msgLength - 2]) &&
	    (crcVal[CRC_MSB_INDEX] == buffer[msgLength - 1])) {

		//printf("validate CRC: OK!\n");
		retVal = STATUS_SUCCESS;
	}
	else {	//frame must have 1-byte checksum...
		uInt8_t checkSum = calculateChecksum( buffer, msgLength-1 );
		if (checkSum == buffer[msgLength - 1]) {
			//printf("validate checksum: OK!\n");
			retVal = STATUS_SUCCESS;
		}
		else
			printf("invalid RSI frame check sequence!\n");
	}

	//FIXME: validate RSD/ACP frame address here?

	return retVal;
}
开发者ID:ksthar,项目名称:RSI,代码行数:39,代码来源:mod_rsi.c

示例5: sendACK

int sendACK(int seq_num, int sockfd,struct sockaddr *dest_addr,socklen_t addrlen){
	char *ACK[sizeof(uint32_t)+sizeof(uint16_t)+3];
	void *offset = ACK;
	uint32_t seqOut = htonl((uint32_t)seq_num);
	memcpy(offset,&seqOut,sizeof(uint32_t));
	char *msg = "ACK";
	uint16_t checkSum = calculateChecksum(&seqOut,sizeof(uint32_t));
	checkSum += calculateChecksum(msg,3);
	checkSum = 0xffff - checkSum;
	offset+=sizeof(uint32_t);
	memcpy(offset,&checkSum,sizeof(uint16_t));
	offset+=sizeof(uint16_t);
	memcpy(offset,msg,3);
  int n = sendto(sockfd,ACK,sizeof(ACK),0,dest_addr,addrlen);
	return n;
}
开发者ID:spiamartino,项目名称:cnt4713,代码行数:16,代码来源:receiver.c

示例6: flashDownloadData

SerialCommand flashDownloadData(unsigned int sequence, QByteArray flashData)
{
    QByteArray data;
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(flashData.length()));
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(sequence));
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(0));  // Mystery value
    data.append(ByteArrayHelpers::uint32ToByteArrayLittle(0));  // Mystery value
    data.append(flashData);

    QByteArray command = buildCommand(Opcode_FlashDownloadData, data, calculateChecksum(flashData));

    QByteArray expectedResponse;
    expectedResponse.append(0x01);
    expectedResponse.append(Opcode_FlashDownloadData);
    expectedResponse.append(ByteArrayHelpers::uint16ToByteArrayLittle(2));
    expectedResponse.append((char)0x07);
    expectedResponse.append((char)0x07);
    expectedResponse.append((char)0x12);
    expectedResponse.append((char)0x20);
    expectedResponse.append((char)0x00);
    expectedResponse.append((char)0x00);

    return SerialCommand("flashDownloadData",
                         slipEncode(command),
                         slipEncode(expectedResponse));
}
开发者ID:Blinkinlabs,项目名称:PatternPaint,代码行数:26,代码来源:esp8266bootloadercommands.cpp

示例7: Chunk

	//---------------------------------------------------------------------
	StreamSerialiser::Chunk* StreamSerialiser::readChunkImpl()
	{
		Chunk *chunk = OGRE_NEW Chunk();
		chunk->offset = static_cast<uint32>(mStream->tell());
		read(&chunk->id);
		read(&chunk->version);
		read(&chunk->length);
		
		uint32 checksum;
		read(&checksum);
		
		if (checksum != calculateChecksum(chunk))
		{
			// no good, this is an invalid chunk
			uint32 off = chunk->offset;
			OGRE_DELETE chunk;
			OGRE_EXCEPT(Exception::ERR_INVALID_STATE, 
				"Corrupt chunk detected in stream " + mStream->getName() + " at byte "
				+ StringConverter::toString(off), 
				"StreamSerialiser::readChunkImpl");
		}
		else
		{
			return chunk;
		}


	}
开发者ID:spetz911,项目名称:ogre3d,代码行数:29,代码来源:OgreStreamSerialiser.cpp

示例8: createPingMessage

// ping message
void createPingMessage(Message* m, int length)
{
  printf("%sMessage: PingRequest\n", KGRN);
  configMessage(m, PingConfigurationObject, length);

  uint16_t rv = calculateChecksum(m);
  printf("Calculated checksum: %04x\n", rv);
}
开发者ID:hzcodec,项目名称:serial,代码行数:9,代码来源:messages.c

示例9: createCustomRequestMessage31dB

// custom message with TX_GAIN=31 dB
void createCustomRequestMessage31dB(Message* m, int length)
{
  printf("%sMessage: MIB_WriteRequest - TX_GAIN=31 dB\n", KGRN);
  configMessage(m, CustomConfigurationObject31dB, length);

  uint16_t rv = calculateChecksum(m);
  printf("Calculated checksum: %04x\n", rv);
}
开发者ID:hzcodec,项目名称:serial,代码行数:9,代码来源:messages.c

示例10: checkResFrame

bool Frames::checkResFrame() {
	uint16_t *location = (uint16_t *) &response[CHECKSUM];
	if(*location != calculateChecksum(response)){
		return false;
	} else {
		return true;
	}
}
开发者ID:KeyTech,项目名称:KeyTech,代码行数:8,代码来源:Frames.cpp

示例11: closeMessage

void closeMessage(char *message) {
    size_t messageLength = strlen(message);
    int checksum = calculateChecksum(&(message[1]), messageLength - 1);
    message[messageLength++] = '*';
    sprintf(&(message[messageLength]), "%02X", checksum);
    messageLength += 2;
    sprintf(&(message[messageLength]), "\r\n");
}
开发者ID:johnboiles,项目名称:Helm-ios,代码行数:8,代码来源:NMEAMessage.cpp

示例12: createPhysicalRequestMessage

// physical message
void createPhysicalRequestMessage(Message* m, int length)
{
  printf("%sMessage: MIB_WriteRequest\n", KGRN);
  configMessage(m, PhysicalConfigurationObject, length);

  uint16_t rv = calculateChecksum(m);
  printf("Calculated checksum: %04x\n", rv);
}
开发者ID:hzcodec,项目名称:serial,代码行数:9,代码来源:messages.c

示例13: writeEEPROM

bool writeEEPROM(void)
{
    // Generate compile time error if the config does not fit in the reserved area of flash.
    BUILD_BUG_ON(sizeof(master_t) > FLASH_TO_RESERVE_FOR_CONFIG);

    FLASH_Status status = 0;
    uint32_t wordOffset;
    int8_t attemptsRemaining = 3;
    bool changed;

    // prepare checksum/version constants
    masterConfig.version = EEPROM_CONF_VERSION;
    masterConfig.size = sizeof(master_t);
    masterConfig.magic_be = 0xBE;
    masterConfig.magic_ef = 0xEF;
    masterConfig.chk = 0; // erase checksum before recalculating
    masterConfig.chk = calculateChecksum((const uint8_t *) &masterConfig, sizeof(master_t));

    changed = (memcmp((const master_t *)CONFIG_START_FLASH_ADDRESS, &masterConfig, sizeof(master_t)) != 0);

    // write it
    if(changed) {
      FLASH_Unlock();
      while (attemptsRemaining--) {
#ifdef STM32F303
        FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);
#endif
#ifdef STM32F10X
          FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
#endif
          for (wordOffset = 0; wordOffset < sizeof(master_t); wordOffset += 4) {
              if (wordOffset % FLASH_PAGE_SIZE == 0) {
                  status = FLASH_ErasePage(CONFIG_START_FLASH_ADDRESS + wordOffset);
                  if (status != FLASH_COMPLETE) {
                      break;
                  }
              }

              status = FLASH_ProgramWord(CONFIG_START_FLASH_ADDRESS + wordOffset,
                      *(uint32_t *) ((char *) &masterConfig + wordOffset));
              if (status != FLASH_COMPLETE) {
                  break;
              }
          }
          if (status == FLASH_COMPLETE) {
              break;
          }
      }
      FLASH_Lock();

      // Flash write failed - just die now
      if (status != FLASH_COMPLETE || !isEEPROMContentValid()) {
          failureMode(10);
      }
    }

    return changed;
}
开发者ID:wiresharks,项目名称:cleanflight,代码行数:58,代码来源:config.c

示例14: emptyFrame

void Frames::createRequest(const uint16_t *lockID, const uint32_t *userID, const uint16_t *pincode, const uint8_t *flags, const uint8_t *data) {
	emptyFrame(request, sizeof(request));
	setReqLockID(lockID);
	setReqUserID(userID);
	setReqPin(pincode);
	setReqFlags(flags);
	setReqData(data);
	uint16_t *location = (uint16_t *) &request[CHECKSUM];
	*location = calculateChecksum(request);
}
开发者ID:KeyTech,项目名称:KeyTech,代码行数:10,代码来源:Frames.cpp

示例15: createPingRequestMessage

void createPingRequestMessage(Message* m, int length)
{
  printf("Message: PingRequest\n");
  m->stx      = 0x02;
  m->length   = (uint8_t)PingRequest_Length;
  m->command  = PingRequest;
  memcpy(m->data, dataPingRequest, sizeof(dataPingRequest));

  calculateChecksum(m->length, m->command, m->data);
}
开发者ID:hzcodec,项目名称:serial,代码行数:10,代码来源:messages.c


注:本文中的calculateChecksum函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。