diff --git a/doc/design.md b/doc/design.md index 82821426..cda152ea 100644 --- a/doc/design.md +++ b/doc/design.md @@ -605,7 +605,7 @@ unsigned char chCRCLo[] ={ * @param length 数据长度 * @return unsigned short */ -unsigned short Calculate_Check_Sum(const unsigned char* pData, unsigned short length) +unsigned short calculate_check_sum(const unsigned char* pData, unsigned short length) { unsigned char CRCHi = 0xFF; unsigned char CRCLo = 0xFF; diff --git a/middleware/McuAskBase/include/McuAskBase.h b/middleware/McuAskBase/include/McuAskBase.h index 1b83a9bb..14a7b410 100644 --- a/middleware/McuAskBase/include/McuAskBase.h +++ b/middleware/McuAskBase/include/McuAskBase.h @@ -37,7 +37,7 @@ public: const unsigned int timeoutMs = DEFAULT_ASK_TIMEOUT); virtual ~McuAskBase() = default; ASK_RESULT Blocking(void) override; - void StopBlocking(void) override; + // void StopBlocking(void) override; bool NeedReply(void) override; void ReplyFinished(const bool result) override; bool IfTimeout(const unsigned int &integrationTimeMs) override; diff --git a/middleware/McuAskBase/src/McuAskBase.cpp b/middleware/McuAskBase/src/McuAskBase.cpp index 04b8416c..93ec8878 100644 --- a/middleware/McuAskBase/src/McuAskBase.cpp +++ b/middleware/McuAskBase/src/McuAskBase.cpp @@ -33,11 +33,11 @@ ASK_RESULT McuAskBase::Blocking(void) } return ASK_RESULT::FAILED; } -void McuAskBase::StopBlocking(void) -{ - // - sem_post(&mSem); -} +// void McuAskBase::StopBlocking(void) +// { +// // +// sem_post(&mSem); +// } bool McuAskBase::NeedReply(void) { // diff --git a/middleware/McuManager/include/IMcuManager.h b/middleware/McuManager/include/IMcuManager.h index 2a168098..453dc26e 100644 --- a/middleware/McuManager/include/IMcuManager.h +++ b/middleware/McuManager/include/IMcuManager.h @@ -35,7 +35,7 @@ public: VMcuAsk() { mSerialNumber = 0; } virtual ~VMcuAsk() = default; virtual ASK_RESULT Blocking(void) { return ASK_RESULT::END; } - virtual void StopBlocking(void) {} + // virtual void StopBlocking(void) {} virtual bool NeedReply(void) { return false; } virtual void ReplyFinished(const bool result) {} virtual bool IfTimeout(const unsigned int &integrationTimeMs) { return false; } diff --git a/middleware/McuManager/src/McuDevice.cpp b/middleware/McuManager/src/McuDevice.cpp index 3d2b38ba..36bb4de0 100644 --- a/middleware/McuManager/src/McuDevice.cpp +++ b/middleware/McuManager/src/McuDevice.cpp @@ -16,6 +16,8 @@ #include "ILog.h" #include constexpr int SLEEP_TIME_MS = 1000; +constexpr bool REMOVE_THE_ASK = true; +constexpr bool KEEP_THE_ASK = false; /** * @brief Do not use static decoration on this constant pointer, as external test code needs to reference it. * @@ -203,15 +205,19 @@ void McuDevice::SearchMcuAsk(const unsigned int &serialNumber, std::shared_ptr &ask) { - // std::lock_guard locker(mMutex); + auto searchMcuAsk = [&ask](std::shared_ptr &askList) -> bool { + if (ask->mSerialNumber == askList->mSerialNumber) { + return REMOVE_THE_ASK; + } + return KEEP_THE_ASK; + }; + mAllAsk.remove_if(searchMcuAsk); } void McuDevice::TraverseCheckAllAsk(void) { std::lock_guard locker(mMutex); auto ifTimeout = [](std::shared_ptr &ask) -> bool { - constexpr bool REMOVE_THE_ASK = true; - constexpr bool KEEP_THE_ASK = false; if (!ask) { return REMOVE_THE_ASK; } diff --git a/test/utils/McuProtocol/tool/CMakeLists.txt b/test/utils/McuProtocol/tool/CMakeLists.txt index 92c93cd2..56f1fcff 100644 --- a/test/utils/McuProtocol/tool/CMakeLists.txt +++ b/test/utils/McuProtocol/tool/CMakeLists.txt @@ -8,6 +8,7 @@ include_directories( ${UTILS_SOURCE_PATH}/StatusCode/include ${UTILS_SOURCE_PATH}/Log/include ${UTILS_SOURCE_PATH}/UartDevice/include + ${UTILS_SOURCE_PATH}/ModBusCRC16/include ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include ${TEST_SOURCE_PATH}/utils/UartDevice/tool/include ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include diff --git a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp index 7f10fdec..efc8b3ab 100644 --- a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp +++ b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp @@ -14,6 +14,8 @@ */ #include "McuProtocolTestTool.h" #include "ILog.h" +#include "ModBusCRC16.h" +#include #include #include constexpr size_t PROTOCOL_DATA_KEY_HEAD_LENGTH = 10; @@ -30,7 +32,7 @@ void McuProtocolTestTool::IpcMissionProtocolInit(std::shared_ptr &moc { const unsigned char ASK_IPC_MISSION[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x0C, 0x3D, 0x68}; const unsigned char REPLY_IPC_MISSION[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0D, 0x01, 0x3D, 0x68}; + 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0D, 0x01, 0xAA, 0x89}; static size_t WRITE_COUNT = -1; auto api_write = [=, &mock](int fd, const void *buf, size_t count) { McuProtocolTestTool::PrintHexadecimalData(buf, count, WRITE_PRINT); diff --git a/utils/McuProtocol/src/LittleEndianHandle.cpp b/utils/McuProtocol/src/LittleEndianHandle.cpp index c48ada37..1a87b580 100644 --- a/utils/McuProtocol/src/LittleEndianHandle.cpp +++ b/utils/McuProtocol/src/LittleEndianHandle.cpp @@ -43,7 +43,8 @@ void LittleEndianHandle::HostByteOrderConversion(ProtocolPacket &packet) } bool LittleEndianHandle::CheckoutTheCheckCode(const ProtocolPacket &packet) { - short code = Calculate_Check_Sum(mProtocolData, mProtocolDataLength - sizeof(short)); + short code = calculate_check_sum(mProtocolData, mProtocolDataLength - sizeof(short)); + code = htons(code); if (code == packet.mCheckCode) { return true; } diff --git a/utils/McuProtocol/src/ProtocolHandle.cpp b/utils/McuProtocol/src/ProtocolHandle.cpp index 967b3cd2..ed271f0d 100644 --- a/utils/McuProtocol/src/ProtocolHandle.cpp +++ b/utils/McuProtocol/src/ProtocolHandle.cpp @@ -73,7 +73,7 @@ void ProtocolHandle::MakeAskIpcMissionPacket(const std::shared_ptrmCommand; packet.mLength = dataLength; - packet.mCheckCode = Calculate_Check_Sum(mProtocolData, dataLength - sizeof(short)); + packet.mCheckCode = calculate_check_sum(mProtocolData, dataLength - sizeof(short)); packet.mSerialNumber = mSerialNumber; mProtocolSerialNumber = packet.mSerialNumber; mSerialNumber++; @@ -122,7 +122,7 @@ void ProtocolHandle::AnalyzeReplyIpcMissionPacket(const ProtocolPacket &packet) } bool ProtocolHandle::CheckoutTheCheckCode(const ProtocolPacket &packet) { - short code = Calculate_Check_Sum(mProtocolData, mProtocolDataLength - sizeof(short)); + short code = calculate_check_sum(mProtocolData, mProtocolDataLength - sizeof(short)); if (code == packet.mCheckCode) { return true; } diff --git a/utils/ModBusCRC16/include/ModBusCRC16.h b/utils/ModBusCRC16/include/ModBusCRC16.h index acb3335c..38903a08 100644 --- a/utils/ModBusCRC16/include/ModBusCRC16.h +++ b/utils/ModBusCRC16/include/ModBusCRC16.h @@ -17,7 +17,7 @@ #ifdef __cplusplus extern "C" { #endif -unsigned short Calculate_Check_Sum(const unsigned char *pData, unsigned short length); +unsigned short calculate_check_sum(const unsigned char *pData, unsigned short length); #ifdef __cplusplus } #endif diff --git a/utils/ModBusCRC16/src/ModBusCRC16.cpp b/utils/ModBusCRC16/src/ModBusCRC16.cpp index 36928cb5..ba8069aa 100644 --- a/utils/ModBusCRC16/src/ModBusCRC16.cpp +++ b/utils/ModBusCRC16/src/ModBusCRC16.cpp @@ -53,7 +53,7 @@ unsigned char chCRCLo[] = { * @param length length of data * @return unsigned short */ -unsigned short Calculate_Check_Sum(const unsigned char *pData, unsigned short length) +unsigned short calculate_check_sum(const unsigned char *pData, unsigned short length) { unsigned char CRCHi = 0xFF; unsigned char CRCLo = 0xFF;