diff --git a/test/utils/McuProtocol/tool/include/McuProtocolTestTool.h b/test/utils/McuProtocol/tool/include/McuProtocolTestTool.h index 3e03e542..f063f681 100644 --- a/test/utils/McuProtocol/tool/include/McuProtocolTestTool.h +++ b/test/utils/McuProtocol/tool/include/McuProtocolTestTool.h @@ -30,6 +30,7 @@ public: private: void CheckSerialNumber(const void *buf, const size_t &count); + void ChecCRC16Code(const void *buf, const size_t &count); void ResetCheckCode(const void *buf, const size_t &count); void ReplySelectSucceed(std::shared_ptr &mock, const int &uartFd); void IpcMissionProtocolHandle(std::shared_ptr &mock, const int &uartFd, const void *buf, size_t count); diff --git a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp index 44073100..47e7eb9e 100644 --- a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp +++ b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp @@ -29,7 +29,7 @@ unsigned char ASK_FEED_WATCH_DOG[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, unsigned char ASK_SET_FEEDING_CYCLE[] = { 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x0F, 0x01, 0x01, 0x01, 0xA7, 0x9A}; unsigned char REPLY_SET_FEEDING_CYCLE[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x0F, 0x01, 0x01, 0x01, 0x52, 0x26}; + 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x0D, 0x01, 0x52, 0x26}; McuProtocolTestTool::McuProtocolTestTool() { mSerialNumberCheck = 0; @@ -42,6 +42,7 @@ void McuProtocolTestTool::Init(std::shared_ptr &mock, const UartInfo auto api_write = [=, &mock](int fd, const void *buf, size_t count) { McuProtocolTestTool::PrintHexadecimalData(buf, count, WRITE_PRINT); CheckSerialNumber(buf, count); + ChecCRC16Code(buf, count); IpcMissionProtocolHandle(mock, uartFd, buf, count); CutOffPowerSupplyProtocolHandle(mock, uartFd, buf, count); FeedWatchDogProtocolHandle(mock, uartFd, buf, count); @@ -70,10 +71,15 @@ void McuProtocolTestTool::CheckSerialNumber(const void *buf, const size_t &count mSerialNumberCheck++; } } +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, 2), 0); +} void McuProtocolTestTool::ResetCheckCode(const void *buf, const size_t &count) { short checkCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - checkCode = htons(checkCode); + // checkCode = htons(checkCode); memcpy((unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &checkCode, PROTOCOL_CHECK_CODE_LENGTH); } void McuProtocolTestTool::ReplySelectSucceed(std::shared_ptr &mock, const int &uartFd) @@ -193,6 +199,7 @@ void McuProtocolTestTool::FeedingCycleProtocolInit(std::shared_ptr &m { LockProtocolHandle(); memcpy(REPLY_SET_FEEDING_CYCLE + 2, (unsigned char *)buf + 2, PROTOCOL_SERIAL_NUMBER_LENGTH); + ResetCheckCode(REPLY_SET_FEEDING_CYCLE, sizeof(REPLY_SET_FEEDING_CYCLE)); ReplySelectSucceed(mock, uartFd); constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_SET_FEEDING_CYCLE) - PROTOCOL_DATA_KEY_HEAD_LENGTH; auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { diff --git a/utils/McuProtocol/src/LittleEndianHandle.cpp b/utils/McuProtocol/src/LittleEndianHandle.cpp index 1484af34..b7ba7a4a 100644 --- a/utils/McuProtocol/src/LittleEndianHandle.cpp +++ b/utils/McuProtocol/src/LittleEndianHandle.cpp @@ -39,17 +39,13 @@ void LittleEndianHandle::HostByteOrderConversion(ProtocolPacket &packet) packet.mHead = ntohs(packet.mHead); packet.mCommand = ntohs(packet.mCommand); packet.mLength = ntohs(packet.mLength); - LogInfo("========2====== packet.mCheckCode = 0x%x\n", packet.mCheckCode); packet.mCheckCode = ntohs(packet.mCheckCode); - LogInfo("=========2===== packet.mCheckCode = 0x%x\n", packet.mCheckCode); packet.mSerialNumber = ntohl(packet.mSerialNumber); } bool LittleEndianHandle::CheckoutTheCheckCode(const ProtocolPacket &packet) { short code = calculate_check_sum(mProtocolData, mProtocolDataLength - sizeof(short)); - LogInfo("============== packet.mCheckCode = 0x%x\n", packet.mCheckCode); - code = ntohs(code); - LogInfo("============== code = 0x%x\n", code); + code = ntohs(code); // TODO: if (code == packet.mCheckCode) { return true; } diff --git a/utils/McuProtocol/src/McuProtocol.cpp b/utils/McuProtocol/src/McuProtocol.cpp index f95a0b55..5877b3fa 100644 --- a/utils/McuProtocol/src/McuProtocol.cpp +++ b/utils/McuProtocol/src/McuProtocol.cpp @@ -117,7 +117,7 @@ void McuProtocol::PushMcuData(const void *buf, const size_t &length) } LogInfo("PushMcuData\n"); memcpy(data, buf, length); - ProtocolHandle::PrintHexadecimalData(data, length); + ProtocolHandle::PrintHexadecimalData(data, length, "PushMcuData="); std::lock_guard locker(mMutex); SingleMcuPacket packet(data, length); mMcuDataList.push_back(packet); diff --git a/utils/McuProtocol/src/ProtocolHandle.cpp b/utils/McuProtocol/src/ProtocolHandle.cpp index 931a2fb7..69966f8d 100644 --- a/utils/McuProtocol/src/ProtocolHandle.cpp +++ b/utils/McuProtocol/src/ProtocolHandle.cpp @@ -94,7 +94,7 @@ void ProtocolHandle::MakeNoUserDataPacket(const std::shared_ptr BigEndianConversion(packet); memcpy(mProtocolData, &packet, KEY_HEAD_LENGTH); packet.mCheckCode = calculate_check_sum(mProtocolData, dataLength - sizeof(short)); - packet.mCheckCode = BigEndianConversion(packet.mCheckCode); + // packet.mCheckCode = BigEndianConversion(packet.mCheckCode); memcpy(mProtocolData + KEY_HEAD_LENGTH, &packet.mCheckCode, sizeof(short)); mProtocolDataLength = dataLength; } @@ -137,7 +137,7 @@ void ProtocolHandle::MakeAskSetFeedingCyclePacket(const std::shared_ptr