From 7df38a8e2af5f579e317247811f1cf0e42f1e0ef Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Wed, 15 May 2024 22:20:03 +0800 Subject: [PATCH] Fixed:Mcu manager test code bug. --- build/sdk_config.cmake | 4 +- middleware/McuManager/include/IMcuManager.h | 19 ++++- middleware/McuManager/src/IMcuManager.cpp | 8 +- middleware/McuManager/src/McuManagerImpl.cpp | 81 +++++++++++++++++-- middleware/McuManager/src/McuManagerImpl.h | 6 +- .../McuManager/src/McuManager_Test.cpp | 36 ++++----- .../src_mock/McuManager_Mock_Test.cpp | 11 ++- utils/McuProtocol/include/McuProtocol.h | 9 +++ utils/McuProtocol/src/McuProtocol.cpp | 42 +++++++++- utils/McuProtocol/src/ProtocolHandle.cpp | 20 ++++- utils/McuProtocol/src/ProtocolHandle.h | 5 +- 11 files changed, 202 insertions(+), 39 deletions(-) diff --git a/build/sdk_config.cmake b/build/sdk_config.cmake index 16db45b8..232b8524 100755 --- a/build/sdk_config.cmake +++ b/build/sdk_config.cmake @@ -6,7 +6,9 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) message("---------------------------Debug mode.-----------------------") SET(CMAKE_BUILD_TYPE "Debug") - SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -Wall -g -ggdb") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -Wall -g -ggdb") + SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") # asan set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined") diff --git a/middleware/McuManager/include/IMcuManager.h b/middleware/McuManager/include/IMcuManager.h index 2cb992eb..391c3b54 100644 --- a/middleware/McuManager/include/IMcuManager.h +++ b/middleware/McuManager/include/IMcuManager.h @@ -51,11 +51,28 @@ typedef struct mcu_ask_date_time const unsigned char mMin; const unsigned char mSecond; } McuAskDateTime; +typedef struct mcu_reply_date_time +{ + mcu_reply_date_time(); + unsigned short mYear; + unsigned char mMon; + unsigned char mDay; + unsigned char mHour; + unsigned char mMin; + unsigned char mSecond; +} McuReplyDateTime; typedef struct mcu_get_interval_start { mcu_get_interval_start(); - unsigned int mIntervalStart; + unsigned char mHour; + unsigned char mMin; + unsigned char mSecond; } McuGetIntervalStart; +typedef struct mcu_get_sensitivity +{ + mcu_get_sensitivity(); + unsigned int mSensitivity; +} McuGetPirSensitivity; /** * @brief The application sends data to the MCU. * diff --git a/middleware/McuManager/src/IMcuManager.cpp b/middleware/McuManager/src/IMcuManager.cpp index d2c56124..c7860e5c 100644 --- a/middleware/McuManager/src/IMcuManager.cpp +++ b/middleware/McuManager/src/IMcuManager.cpp @@ -19,7 +19,13 @@ mcu_ask_date_time::mcu_ask_date_time(const unsigned short year, const unsigned c : mYear(year), mMon(mon), mDay(day), mHour(hour), mMin(min), mSecond(second) { } -mcu_get_interval_start::mcu_get_interval_start() : mIntervalStart(0) +mcu_reply_date_time::mcu_reply_date_time() : mYear(0), mMon(0), mDay(0), mHour(0), mMin(0), mSecond(0) +{ +} +mcu_get_interval_start::mcu_get_interval_start() : mHour(0), mMin(0), mSecond(0) +{ +} +mcu_get_sensitivity::mcu_get_sensitivity() : mSensitivity(0) { } VMcuAsk::VMcuAsk() : mSerialNumber(0) diff --git a/middleware/McuManager/src/McuManagerImpl.cpp b/middleware/McuManager/src/McuManagerImpl.cpp index 613b02e9..820daf6c 100644 --- a/middleware/McuManager/src/McuManagerImpl.cpp +++ b/middleware/McuManager/src/McuManagerImpl.cpp @@ -51,6 +51,7 @@ const StatusCode McuManagerImpl::UnInit(void) McuDevice::UnInit(); McuProtocol::UnInit(); mMcuAskList.clear(); + mMonitor.reset(); return CreateStatusCode(STATUS_CODE_OK); } const StatusCode McuManagerImpl::SetMcuMonitor(std::shared_ptr &monitor) @@ -219,8 +220,7 @@ void McuManagerImpl::OtherSideSendGetIntervalStart(const unsigned int &serialNum ~McuRecvGetIntervalStart() = default; void ReplyFinished(const bool result) override { - McuRecvImpl::mMcuManager->ReplyOtherSideSendGetIntervalStart(mDataRecvReply.mIntervalStart, - McuRecvImpl::mSerialNumber); + McuRecvImpl::mMcuManager->ReplyOtherSideSendGetIntervalStart(mDataRecvReply, McuRecvImpl::mSerialNumber); } }; std::shared_ptr monitor = GetMcuMonitor(); @@ -238,9 +238,64 @@ void McuManagerImpl::OtherSideSendGetIntervalStart(const unsigned int &serialNum } void McuManagerImpl::OtherSideSendGetDateTime(const unsigned int &serialNumber) { + class McuRecvGetDateTime : public McuRecvImpl, public McuRecv + { + public: + McuRecvGetDateTime(std::shared_ptr &mcuManager, const unsigned int &serialNumber, + const OtherSideSendType &sendType) + : McuRecvImpl(serialNumber, sendType) + { + McuRecvImpl::mMcuManager = mcuManager; + } + ~McuRecvGetDateTime() = default; + void ReplyFinished(const bool result) override + { + McuRecvImpl::mMcuManager->ReplyOtherSideSendGetDateTime(mDataRecvReply, McuRecvImpl::mSerialNumber); + } + }; + std::shared_ptr monitor = GetMcuMonitor(); + std::shared_ptr manager = std::dynamic_pointer_cast(SharedFromThis()); + std::shared_ptr recv = + std::make_shared(manager, serialNumber, OtherSideSendType::GET_DATE_TIME); + if (monitor) { + LogInfo("Mcu manager report heart beat to mcu monitor.\n"); + monitor->RecvMcuHeartBeat(recv); + } + else { + LogWarning("mMonitor is nullptr, AddMcuRecv.\n"); + AddMcuRecv(recv); + } } void McuManagerImpl::OtherSideSendGetPirSensitivity(const unsigned int &serialNumber) { + class McuRecvGetDateTime : public McuRecvImpl, public McuRecv + { + public: + McuRecvGetDateTime(std::shared_ptr &mcuManager, const unsigned int &serialNumber, + const OtherSideSendType &sendType) + : McuRecvImpl(serialNumber, sendType) + { + McuRecvImpl::mMcuManager = mcuManager; + } + ~McuRecvGetDateTime() = default; + void ReplyFinished(const bool result) override + { + McuRecvImpl::mMcuManager->ReplyOtherSideSendGetPirSensitivity(mDataRecvReply.mSensitivity, + McuRecvImpl::mSerialNumber); + } + }; + std::shared_ptr monitor = GetMcuMonitor(); + std::shared_ptr manager = std::dynamic_pointer_cast(SharedFromThis()); + std::shared_ptr recv = + std::make_shared(manager, serialNumber, OtherSideSendType::GET_DATE_TIME); + if (monitor) { + LogInfo("Mcu manager report heart beat to mcu monitor.\n"); + monitor->RecvMcuHeartBeat(recv); + } + else { + LogWarning("mMonitor is nullptr, AddMcuRecv.\n"); + AddMcuRecv(recv); + } } void McuManagerImpl::ReplyOtherSideSendIpcMission(const ASK_RESULT &result, const unsigned int &serialNumber) { @@ -252,15 +307,31 @@ void McuManagerImpl::ReplyOtherSideSendHeartBeat(const unsigned int &serialNumbe LogInfo("ReplyOtherSideSendHeartBeat\n"); McuProtocol::ReplyOtherSideSendHearBeat(static_cast(ASK_RESULT::SUCCEED), serialNumber); } -void McuManagerImpl::ReplyOtherSideSendGetIntervalStart(const unsigned int &interval, const unsigned int &serialNumber) +void McuManagerImpl::ReplyOtherSideSendGetIntervalStart(const McuGetIntervalStart &interval, + const unsigned int &serialNumber) { + LogInfo("ReplyOtherSideSendGetIntervalStart\n"); + McuProtocol::ReplyOtherSideSendGetIntervalStart( + static_cast(ASK_RESULT::SUCCEED), serialNumber, interval.mHour, interval.mMin, interval.mSecond); } -void McuManagerImpl::ReplyOtherSideSendGetDateTime(const McuAskDateTime &time, const unsigned int &serialNumber) +void McuManagerImpl::ReplyOtherSideSendGetDateTime(const McuReplyDateTime &time, const unsigned int &serialNumber) { + LogInfo("ReplyOtherSideSendGetDateTime\n"); + McuProtocol::ReplyOtherSideSendGetDateTime(static_cast(ASK_RESULT::SUCCEED), + serialNumber, + time.mYear, + time.mMon, + time.mDay, + time.mHour, + time.mMin, + time.mSecond); } -void McuManagerImpl::ReplyOtherSideSendGetPirSensitivity(const unsigned int &sensitivity, +void McuManagerImpl::ReplyOtherSideSendGetPirSensitivity(const unsigned char &sensitivity, const unsigned int &serialNumber) { + LogInfo("ReplyOtherSideSendGetPirSensitivity\n"); + McuProtocol::ReplyOtherSideSendGetPirSensitivity( + static_cast(ASK_RESULT::SUCCEED), serialNumber, sensitivity); } void McuManagerImpl::AddMcuRecv(std::shared_ptr &recv) { diff --git a/middleware/McuManager/src/McuManagerImpl.h b/middleware/McuManager/src/McuManagerImpl.h index 9da328a4..e9398306 100644 --- a/middleware/McuManager/src/McuManagerImpl.h +++ b/middleware/McuManager/src/McuManagerImpl.h @@ -68,9 +68,9 @@ private: void OtherSideSendGetPirSensitivity(const unsigned int &serialNumber) override; void ReplyOtherSideSendIpcMission(const ASK_RESULT &result, const unsigned int &serialNumber); void ReplyOtherSideSendHeartBeat(const unsigned int &serialNumber); - void ReplyOtherSideSendGetIntervalStart(const unsigned int &interval, const unsigned int &serialNumber); - void ReplyOtherSideSendGetDateTime(const McuAskDateTime &time, const unsigned int &serialNumber); - void ReplyOtherSideSendGetPirSensitivity(const unsigned int &sensitivity, const unsigned int &serialNumber); + void ReplyOtherSideSendGetIntervalStart(const McuGetIntervalStart &interval, const unsigned int &serialNumber); + void ReplyOtherSideSendGetDateTime(const McuReplyDateTime &time, const unsigned int &serialNumber); + void ReplyOtherSideSendGetPirSensitivity(const unsigned char &sensitivity, const unsigned int &serialNumber); private: // About mMcuAskList void AddMcuRecv(std::shared_ptr &recv); diff --git a/test/middleware/McuManager/src/McuManager_Test.cpp b/test/middleware/McuManager/src/McuManager_Test.cpp index 90bd797c..551f333d 100644 --- a/test/middleware/McuManager/src/McuManager_Test.cpp +++ b/test/middleware/McuManager/src/McuManager_Test.cpp @@ -83,7 +83,7 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_GetIpcMission) std::this_thread::sleep_for(std::chrono::milliseconds(100)); } // ../output_files/test/bin/McuManagerTest -// --gtest_filter=McuManagerMockTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission +// --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission) { class MonitorTest : public VMcuMonitor @@ -99,14 +99,14 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission) recv->ReplyFinished(true); } }; - IMcuManager::GetInstance()->Init(); + // IMcuManager::GetInstance()->Init(); std::shared_ptr monitor = std::make_shared(); IMcuManager::GetInstance()->SetMcuMonitor(monitor); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); - IMcuManager::GetInstance()->UnInit(); + // IMcuManager::GetInstance()->UnInit(); } // ../output_files/test/bin/McuManagerTest -// --gtest_filter=McuManagerMockTest.RH_INTEGRATION_McuManager_AUTO_CutOffPowerSupply +// --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_CutOffPowerSupply TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_CutOffPowerSupply) { class McuAskTest : public McuAskBaseTestTool @@ -119,17 +119,17 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_CutOffPowerSupply) } virtual ~McuAskTest() = default; }; - IMcuManager::GetInstance()->Init(); + // IMcuManager::GetInstance()->Init(); std::shared_ptr ask = std::make_shared(); std::shared_ptr testTool = std::dynamic_pointer_cast(ask); testTool->McuAskDefaultFeatures(testTool); StatusCode code = IMcuManager::GetInstance()->CutOffPowerSupply(ask); EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); - IMcuManager::GetInstance()->UnInit(); + // IMcuManager::GetInstance()->UnInit(); } // ../output_files/test/bin/McuManagerTest -// --gtest_filter=McuManagerMockTest.RH_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog +// --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog) { class McuAskTest : public McuAsk, public McuAskBaseTestTool @@ -152,17 +152,17 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog } } }; - IMcuManager::GetInstance()->Init(); + // IMcuManager::GetInstance()->Init(); std::shared_ptr ask = std::make_shared(); std::shared_ptr testTool = std::dynamic_pointer_cast(ask); testTool->McuAskDefaultFeatures(testTool); StatusCode code = IMcuManager::GetInstance()->SetFeedingCycleForWatchDog(ask, 1, 1, 1); EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed. std::this_thread::sleep_for(std::chrono::milliseconds(100)); - IMcuManager::GetInstance()->UnInit(); + // IMcuManager::GetInstance()->UnInit(); } // ../output_files/test/bin/McuManagerTest -// --gtest_filter=McuManagerMockTest.RH_INTEGRATION_McuManager_AUTO_FeedWatchDog +// --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_FeedWatchDog TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_FeedWatchDog) { class McuAskTest : public McuAskBaseTestTool @@ -175,17 +175,17 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_FeedWatchDog) } virtual ~McuAskTest() = default; }; - IMcuManager::GetInstance()->Init(); + // IMcuManager::GetInstance()->Init(); std::shared_ptr ask = std::make_shared(); std::shared_ptr testTool = std::dynamic_pointer_cast(ask); testTool->McuAskDefaultFeatures(testTool); StatusCode code = IMcuManager::GetInstance()->FeedWatchDog(ask); EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); - IMcuManager::GetInstance()->UnInit(); + // IMcuManager::GetInstance()->UnInit(); } // ../output_files/test/bin/McuManagerTest -// --gtest_filter=McuManagerMockTest.RH_INTEGRATION_McuManager_AUTO_SetDataTime +// --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_SetDataTime TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetDataTime) { class McuAskTest : public McuAsk, public McuAskBaseTestTool @@ -208,7 +208,7 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetDataTime) } } }; - IMcuManager::GetInstance()->Init(); + // IMcuManager::GetInstance()->Init(); std::shared_ptr ask = std::make_shared(); std::shared_ptr testTool = std::dynamic_pointer_cast(ask); testTool->McuAskDefaultFeatures(testTool); @@ -216,10 +216,10 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetDataTime) StatusCode code = IMcuManager::GetInstance()->SetDateTime(ask, value); EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed. std::this_thread::sleep_for(std::chrono::milliseconds(100)); - IMcuManager::GetInstance()->UnInit(); + // IMcuManager::GetInstance()->UnInit(); } // ../output_files/test/bin/McuManagerTest -// --gtest_filter=McuManagerMockTest.RH_INTEGRATION_McuManager_AUTO_SetPirSensitivity +// --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_SetPirSensitivity TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetPirSensitivity) { class McuAskTest : public McuAsk, public McuAskBaseTestTool @@ -242,13 +242,13 @@ TEST_F(McuManagerTest, RH_INTEGRATION_McuManager_AUTO_SetPirSensitivity) } } }; - IMcuManager::GetInstance()->Init(); + // IMcuManager::GetInstance()->Init(); std::shared_ptr ask = std::make_shared(); std::shared_ptr testTool = std::dynamic_pointer_cast(ask); testTool->McuAskDefaultFeatures(testTool); StatusCode code = IMcuManager::GetInstance()->SetPirSensitivity(ask, 1); EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed. std::this_thread::sleep_for(std::chrono::milliseconds(100)); - IMcuManager::GetInstance()->UnInit(); + // IMcuManager::GetInstance()->UnInit(); } } // namespace McuManagerTest \ No newline at end of file diff --git a/test/middleware/McuManager/src_mock/McuManager_Mock_Test.cpp b/test/middleware/McuManager/src_mock/McuManager_Mock_Test.cpp index 01628b14..644bb615 100644 --- a/test/middleware/McuManager/src_mock/McuManager_Mock_Test.cpp +++ b/test/middleware/McuManager/src_mock/McuManager_Mock_Test.cpp @@ -161,8 +161,8 @@ TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_OtherSideSendIpcMis void RecvIpcMissionEvent(std::shared_ptr &recv, const IpcMission &mission) override { LogInfo("RecvIpcMissionEvent\n"); - std::shared_ptr> ask = std::dynamic_pointer_cast>(recv); - ask->mDataReply = ASK_RESULT::SUCCEED; + // std::shared_ptr> ask = std::dynamic_pointer_cast>(recv); + // ask->mDataReply = ASK_RESULT::SUCCEED; recv->ReplyFinished(true); // EXPECT_EQ(TEST_SERIAL_NUMBER, recv->mSerialNumber); } @@ -191,8 +191,8 @@ TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_OtherSideSendHeartB void RecvMcuHeartBeat(std::shared_ptr &recv) override { LogInfo("RecvMcuHeartBeat\n"); - std::shared_ptr> ask = std::dynamic_pointer_cast>(recv); - ask->mDataReply = ASK_RESULT::SUCCEED; + // std::shared_ptr> ask = std::dynamic_pointer_cast>(recv); + // ask->mDataReply = ASK_RESULT::SUCCEED; recv->ReplyFinished(true); // EXPECT_EQ(TEST_SERIAL_NUMBER, recv->mSerialNumber); } @@ -888,8 +888,7 @@ TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMissio void RecvIpcMissionEvent(std::shared_ptr &recv, const IpcMission &mission) override { LogInfo("RecvIpcMissionEvent\n"); - std::shared_ptr> ask = std::dynamic_pointer_cast>(recv); - ask->mDataReply = ASK_RESULT::SUCCEED; + std::shared_ptr> recvData = std::dynamic_pointer_cast>(recv); recv->ReplyFinished(true); } }; diff --git a/utils/McuProtocol/include/McuProtocol.h b/utils/McuProtocol/include/McuProtocol.h index 6fe1ba42..284daf91 100644 --- a/utils/McuProtocol/include/McuProtocol.h +++ b/utils/McuProtocol/include/McuProtocol.h @@ -147,6 +147,15 @@ protected: protected: void ReplyOtherSideSendIpcMission(const ReplyResult &result, const unsigned int &serialNumber); void ReplyOtherSideSendHearBeat(const ReplyResult &result, const unsigned int &serialNumber); + void ReplyOtherSideSendGetIntervalStart(const ReplyResult &result, const unsigned int &serialNumber, + const unsigned char &hour, const unsigned char &min, + const unsigned char &second); + void ReplyOtherSideSendGetDateTime(const ReplyResult &result, const unsigned int &serialNumber, + const unsigned short &year, const unsigned char &mon, const unsigned char &day, + const unsigned char &hour, const unsigned char &min, + const unsigned char &second); + void ReplyOtherSideSendGetPirSensitivity(const ReplyResult &result, const unsigned int &serialNumber, + const unsigned char &sensitivity); protected: size_t GetKeyHeadLength(void) override; diff --git a/utils/McuProtocol/src/McuProtocol.cpp b/utils/McuProtocol/src/McuProtocol.cpp index 33692d85..e12fa320 100644 --- a/utils/McuProtocol/src/McuProtocol.cpp +++ b/utils/McuProtocol/src/McuProtocol.cpp @@ -104,9 +104,9 @@ const StatusCode McuProtocol::SetFeedingCycleForWatchDog(const unsigned char &ho const unsigned char &second, std::shared_ptr &context) { - WatchDogParam watchDogParam(hour, min, second); + SetTime watchDogParam(hour, min, second); std::shared_ptr param = - std::make_shared>(PROTOCOL_COMMAND::ASK_SET_FEEDING_CYCLE, watchDogParam); + std::make_shared>(PROTOCOL_COMMAND::ASK_SET_FEEDING_CYCLE, watchDogParam); std::shared_ptr handle = ProtocolHandle::CreateProtocolData(param); return WriteProtocolData( handle->GetProtocolDataBuff(), handle->GetProtocolDataLength(), context, handle->GetSerialNumber()); @@ -186,6 +186,44 @@ void McuProtocol::ReplyOtherSideSendHearBeat(const ReplyResult &result, const un WriteProtocolData( handle->GetProtocolDataBuff(), handle->GetProtocolDataLength(), NULL_CONTEXT, handle->GetSerialNumber()); } +void McuProtocol::ReplyOtherSideSendGetIntervalStart(const ReplyResult &result, const unsigned int &serialNumber, + const unsigned char &hour, const unsigned char &min, + const unsigned char &second) +{ + std::shared_ptr NULL_CONTEXT; + SetTime interval(hour, min, second); + std::shared_ptr param = + std::make_shared>(PROTOCOL_COMMAND::REPLY_OTHER_SIDE_ASK_GET_INTERVAL_START, interval); + std::shared_ptr handle = ProtocolHandle::CreateProtocolData(param); + param->mSerialNumber = serialNumber; + WriteProtocolData( + handle->GetProtocolDataBuff(), handle->GetProtocolDataLength(), NULL_CONTEXT, handle->GetSerialNumber()); +} +void McuProtocol::ReplyOtherSideSendGetDateTime(const ReplyResult &result, const unsigned int &serialNumber, + const unsigned short &year, const unsigned char &mon, + const unsigned char &day, const unsigned char &hour, + const unsigned char &min, const unsigned char &second) +{ + std::shared_ptr NULL_CONTEXT; + SetDateTime dateTime(year, mon, day, hour, min, second); + std::shared_ptr param = + std::make_shared>(PROTOCOL_COMMAND::REPLY_OTHER_SIDE_ASK_GET_DATE_TIME, dateTime); + std::shared_ptr handle = ProtocolHandle::CreateProtocolData(param); + param->mSerialNumber = serialNumber; + WriteProtocolData( + handle->GetProtocolDataBuff(), handle->GetProtocolDataLength(), NULL_CONTEXT, handle->GetSerialNumber()); +} +void McuProtocol::ReplyOtherSideSendGetPirSensitivity(const ReplyResult &result, const unsigned int &serialNumber, + const unsigned char &sensitivity) +{ + std::shared_ptr NULL_CONTEXT; + std::shared_ptr param = std::make_shared>( + PROTOCOL_COMMAND::REPLY_OTHER_SIDE_ASK_GET_PIR_SENSITIVITY, static_cast(sensitivity)); + param->mSerialNumber = serialNumber; + std::shared_ptr handle = ProtocolHandle::CreateProtocolData(param); + WriteProtocolData( + handle->GetProtocolDataBuff(), handle->GetProtocolDataLength(), NULL_CONTEXT, handle->GetSerialNumber()); +} size_t McuProtocol::GetKeyHeadLength(void) { return ProtocolHandle::GetKeyHeadLength(); diff --git a/utils/McuProtocol/src/ProtocolHandle.cpp b/utils/McuProtocol/src/ProtocolHandle.cpp index f6ddc63b..7c7cf66a 100644 --- a/utils/McuProtocol/src/ProtocolHandle.cpp +++ b/utils/McuProtocol/src/ProtocolHandle.cpp @@ -43,6 +43,12 @@ ProtocolHandle::ProtocolHandle(const std::shared_ptr ¶m) : m std::bind(&ProtocolHandle::MakeReplyOtherSideSendIpcMissionPacket, this, _1); mMakePacketFunc[REPLY_OTHER_SIDE_ASK_SEND_HEART_BEAT] = std::bind(&ProtocolHandle::MakeReplyOtherSideSendHeartBeatPacket, this, _1); + mMakePacketFunc[REPLY_OTHER_SIDE_ASK_GET_INTERVAL_START] = + std::bind(&ProtocolHandle::MakeReplyOtherSideGetIntervalStartPacket, this, _1); + mMakePacketFunc[REPLY_OTHER_SIDE_ASK_GET_DATE_TIME] = + std::bind(&ProtocolHandle::MakeReplyOtherSideGetDateTimePacket, this, _1); + mMakePacketFunc[REPLY_OTHER_SIDE_ASK_GET_PIR_SENSITIVITY] = + std::bind(&ProtocolHandle::MakeReplyOtherSideGetPirSensitivityPacket, this, _1); } ProtocolHandle::ProtocolHandle(const void *data, const size_t &length) { @@ -154,7 +160,7 @@ void ProtocolHandle::MakeAskFeedWatchDogPacket(const std::shared_ptr ¶m) { - MakeProtocolData(param); + MakeProtocolData(param); } void ProtocolHandle::MakeAskSetDateTimePacket(const std::shared_ptr ¶m) { @@ -180,6 +186,18 @@ void ProtocolHandle::MakeAskGetPhotosensitivityPacket(const std::shared_ptr ¶m) +{ + MakeProtocolData(param); +} +void ProtocolHandle::MakeReplyOtherSideGetDateTimePacket(const std::shared_ptr ¶m) +{ + MakeProtocolData(param); +} +void ProtocolHandle::MakeReplyOtherSideGetPirSensitivityPacket(const std::shared_ptr ¶m) +{ + MakeProtocolData(param); +} void ProtocolHandle::AnalyzeProtocolPacket(void) { ProtocolPacket packet = {0}; diff --git a/utils/McuProtocol/src/ProtocolHandle.h b/utils/McuProtocol/src/ProtocolHandle.h index 8a91376f..cb64002b 100644 --- a/utils/McuProtocol/src/ProtocolHandle.h +++ b/utils/McuProtocol/src/ProtocolHandle.h @@ -80,7 +80,7 @@ typedef struct watch_dog_param const unsigned char mHour; const unsigned char mMin; const unsigned char mSecond; -} WatchDogParam; +} SetTime; typedef struct set_date_time { set_date_time(const unsigned short &year, const unsigned char &mon, const unsigned char &day, @@ -168,6 +168,9 @@ private: void MakeAskGetPhotosensitivityPacket(const std::shared_ptr ¶m); void MakeReplyOtherSideSendIpcMissionPacket(const std::shared_ptr ¶m); void MakeReplyOtherSideSendHeartBeatPacket(const std::shared_ptr ¶m); + void MakeReplyOtherSideGetIntervalStartPacket(const std::shared_ptr ¶m); + void MakeReplyOtherSideGetDateTimePacket(const std::shared_ptr ¶m); + void MakeReplyOtherSideGetPirSensitivityPacket(const std::shared_ptr ¶m); template void MakeProtocolData(const std::shared_ptr ¶m) {