From 19247f06469916dd8db0a7deec468d882f76b4b5 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Tue, 21 May 2024 16:09:56 +0800 Subject: [PATCH] Fixed:protocol checkcode bug. --- .../tool/src/McuProtocolTestTool.cpp | 30 +++++++++++++++---- utils/McuProtocol/src/ProtocolHandle.cpp | 4 +-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp index 9460632..a69aa9c 100644 --- a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp +++ b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp @@ -203,8 +203,12 @@ void McuProtocolTestTool::CheckSerialNumber(const void *buf, const size_t &count } void McuProtocolTestTool::ChecCRC16Code(const void *buf, const size_t &count) { - short code = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(memcmp((unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &code, PROTOCOL_CHECK_CODE_LENGTH), 0); + short checkCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); + if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { + checkCode = ntohs(checkCode); + } + EXPECT_EQ(memcmp((unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &checkCode, PROTOCOL_CHECK_CODE_LENGTH), + 0); } void McuProtocolTestTool::ResetCheckCode(const void *buf, const size_t &count) { @@ -375,7 +379,9 @@ bool McuProtocolTestTool::IpcMissionProtocolHandle(std::shared_ptr &m PROTOCOL_COMMAND_LENGTH) == 0) { LogInfo("Set REPLY_IPC_MISSION_X\n"); short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - // askCheckCode = htons(askCheckCode); + if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { + askCheckCode = ntohs(askCheckCode); + } int result = memcmp( (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; @@ -431,6 +437,9 @@ bool McuProtocolTestTool::CutOffPowerSupplyProtocolHandle(std::shared_ptr PROTOCOL_COMMAND_LENGTH) == 0) { LogInfo("Set ASK_FEED_WATCH_DOG_X\n"); short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - // askCheckCode = htons(askCheckCode); + if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { + askCheckCode = ntohs(askCheckCode); + } int result = memcmp( (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; @@ -465,6 +476,9 @@ bool McuProtocolTestTool::FeedingCycleProtocolHandle(std::shared_ptr replyCheckCode = htons(replyCheckCode); LogInfo("Set ASK_SET_FEEDING_CYCLE_X, reply data check code = 0x%x\n", replyCheckCode); short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); + if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { + askCheckCode = ntohs(askCheckCode); + } int result = memcmp( (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; @@ -523,7 +537,9 @@ bool McuProtocolTestTool::SetDataTimeProtocolHandle(std::shared_ptr & replyCheckCode = htons(replyCheckCode); LogInfo("Set ASK_SET_DATE_TIME_X, reply data check code = 0x%x\n", replyCheckCode); short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - // askCheckCode = htons(askCheckCode); + if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { + askCheckCode = ntohs(askCheckCode); + } int result = memcmp( (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; @@ -580,7 +596,9 @@ bool McuProtocolTestTool::SetPirSensitivityProtocolHandle(std::shared_ptr BigEndianConversion(packet); memcpy(mProtocolData, &packet, KEY_HEAD_LENGTH); packet.mCheckCode = calculate_check_sum(mProtocolData, packetLength - CHECK_CODE_LENGTH); - // packet.mCheckCode = BigEndianConversion(packet.mCheckCode); + packet.mCheckCode = BigEndianConversion(packet.mCheckCode); memcpy(mProtocolData + KEY_HEAD_LENGTH, &packet.mCheckCode, CHECK_CODE_LENGTH); mProtocolDataLength = packetLength; ProtocolHandle::PrintHexadecimalData(