diff --git a/application/MissionManager/CMakeLists.txt b/application/MissionManager/CMakeLists.txt index 1ab206c..28b2a04 100644 --- a/application/MissionManager/CMakeLists.txt +++ b/application/MissionManager/CMakeLists.txt @@ -17,6 +17,7 @@ include_directories( ${MIDDLEWARE_SOURCE_PATH}/McuManager/include ${MIDDLEWARE_SOURCE_PATH}/McuAskBase/include ${MIDDLEWARE_SOURCE_PATH}/HuntingUpgrade/include + ${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include ) #do not rely on any other library #link_directories( @@ -27,7 +28,7 @@ aux_source_directory(./src SRC_FILES) set(TARGET_NAME MissionManager) add_library(${TARGET_NAME} STATIC ${SRC_FILES}) -target_link_libraries(${TARGET_NAME} McuAskBase StateMachine MediaManager StorageManager HuntingUpgrade StatusCode Log) +target_link_libraries(${TARGET_NAME} McuAskBase StateMachine MediaManager StorageManager DeviceManager HuntingUpgrade StatusCode Log) if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") add_custom_target( diff --git a/application/MissionManager/src/TopState.cpp b/application/MissionManager/src/TopState.cpp index 1ab1063..f0fb11e 100644 --- a/application/MissionManager/src/TopState.cpp +++ b/application/MissionManager/src/TopState.cpp @@ -29,6 +29,8 @@ void TopState::GoInState() std::shared_ptr mediaMonitor = std::dynamic_pointer_cast(shared_from_this()); IMediaManager::GetInstance()->SetMediaMonitor(mediaMonitor); MissionStateMachine::GetInstance()->SwitchState(SystemState::MISSION_STATE); + std::shared_ptr keysMonitor = std::dynamic_pointer_cast(shared_from_this()); + IDeviceManager::GetInstance()->SetAllKeysMonitor(keysMonitor); } void TopState::GoOutState() { @@ -46,6 +48,10 @@ StatusCode TopState::ReportEvent(const MediaReportEvent &event) MissionStateMachine::GetInstance()->SendStateMessage(message); return CreateStatusCode(STATUS_CODE_OK); } +void TopState::KeyEventReport(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs) +{ + LogInfo(" KeyEventReport:key name = %s, time = %d\n", keyName.c_str(), timeMs); +} bool TopState::StorageStartInitHandle(VStateMachineData *msg) { MissionStateMachine::GetInstance()->DelayMessage(msg); diff --git a/application/MissionManager/src/TopState.h b/application/MissionManager/src/TopState.h index e09b9b3..e55e6e7 100644 --- a/application/MissionManager/src/TopState.h +++ b/application/MissionManager/src/TopState.h @@ -15,6 +15,7 @@ #ifndef TOP_STATE_H #define TOP_STATE_H #include "DataProcessing.h" +#include "IDeviceManager.h" #include "IMediaManager.h" #include "IStateMachine.h" #include "McuMonitor.h" @@ -22,6 +23,7 @@ class TopState : public State, public DataProcessing, public VMediaMonitor, public McuMonitor, + public VKeyMonitor, public std::enable_shared_from_this { public: @@ -34,6 +36,9 @@ public: private: // About VMediaMonitor StatusCode ReportEvent(const MediaReportEvent &event) override; +private: // About KeyMonitor + void KeyEventReport(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs) override; + private: bool StorageStartInitHandle(VStateMachineData *msg); }; diff --git a/hal/abstract/IHalCpp.cpp b/hal/abstract/IHalCpp.cpp index 2e01584..057dc64 100644 --- a/hal/abstract/IHalCpp.cpp +++ b/hal/abstract/IHalCpp.cpp @@ -19,7 +19,8 @@ camera_report_event::camera_report_event(const std::string &fileName, const Came : mFileName(fileName), mCameraType(cameraType) { } -void VKeyHalMonitor::KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event) +void VKeyHalMonitor::KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, + const unsigned int &timeMs) { LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n"); } diff --git a/hal/include/IHalCpp.h b/hal/include/IHalCpp.h index 84eb054..f1095d4 100644 --- a/hal/include/IHalCpp.h +++ b/hal/include/IHalCpp.h @@ -53,7 +53,7 @@ class VKeyHalMonitor public: VKeyHalMonitor() = default; virtual ~VKeyHalMonitor() = default; - virtual void KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event); + virtual void KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs); }; class VKeyHal { diff --git a/middleware/DeviceManager/include/IDeviceManager.h b/middleware/DeviceManager/include/IDeviceManager.h index e946930..a479a4a 100644 --- a/middleware/DeviceManager/include/IDeviceManager.h +++ b/middleware/DeviceManager/include/IDeviceManager.h @@ -36,9 +36,7 @@ class VKeyMonitor public: VKeyMonitor() = default; virtual ~VKeyMonitor() = default; - virtual void KeyEventReport(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs) - { - } + virtual void KeyEventReport(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs); }; class VirtualLedControl { diff --git a/middleware/DeviceManager/src/IDeviceManager.cpp b/middleware/DeviceManager/src/IDeviceManager.cpp index 9bc5535..3c3ff15 100644 --- a/middleware/DeviceManager/src/IDeviceManager.cpp +++ b/middleware/DeviceManager/src/IDeviceManager.cpp @@ -14,6 +14,9 @@ */ #include "IDeviceManager.h" #include "ILog.h" +void VKeyMonitor::KeyEventReport(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs) +{ +} std::shared_ptr &IDeviceManager::GetInstance(std::shared_ptr *impl) { static auto instance = std::make_shared(); diff --git a/middleware/DeviceManager/src/KeyManager.cpp b/middleware/DeviceManager/src/KeyManager.cpp index bb29d79..3ce1ff6 100644 --- a/middleware/DeviceManager/src/KeyManager.cpp +++ b/middleware/DeviceManager/src/KeyManager.cpp @@ -87,7 +87,7 @@ void KeyManager::GetAllKeysState(std::map &status) } const StatusCode KeyManager::SetKeyMonitor(std::shared_ptr &monitor) { - mKeyMonitor = monitor; + mKeysMonitor = monitor; return CreateStatusCode(STATUS_CODE_OK); } void KeyManager::SetKeyHalMonitor(void) @@ -99,13 +99,13 @@ void KeyManager::SetKeyHalMonitor(void) keyHal->SetKeyMonitor(monitor); } } -void KeyManager::KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event) +void KeyManager::KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs) { - auto monitor = mKeyMonitor.lock(); - if (mKeyMonitor.expired()) { + auto monitor = mKeysMonitor.lock(); + if (mKeysMonitor.expired()) { LogError("monitor is nullptr.\n"); return; } LogInfo("KeyManager::KeyEventHappened: key = %s, event = %d, time = %u\n", keyName.c_str(), event); - monitor->KeyEventReport(keyName, static_cast(event), 99999); + monitor->KeyEventReport(keyName, static_cast(event), timeMs); } \ No newline at end of file diff --git a/middleware/DeviceManager/src/KeyManager.h b/middleware/DeviceManager/src/KeyManager.h index 976ebea..26a8117 100644 --- a/middleware/DeviceManager/src/KeyManager.h +++ b/middleware/DeviceManager/src/KeyManager.h @@ -38,13 +38,14 @@ private: void SetKeyHalMonitor(void); private: - void KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event) override; + void KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, + const unsigned int &timeMs) override; private: std::mutex mMutex; std::map> mAllKeyHal; bool mTimerRuning; std::thread mTimer; - std::weak_ptr mKeyMonitor; + std::weak_ptr mKeysMonitor; }; #endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/CMakeLists.txt b/test/application/MissionManager/tool/CMakeLists.txt index c881325..22ad385 100644 --- a/test/application/MissionManager/tool/CMakeLists.txt +++ b/test/application/MissionManager/tool/CMakeLists.txt @@ -16,6 +16,7 @@ include_directories( ${MIDDLEWARE_SOURCE_PATH}/StorageManager/include ${MIDDLEWARE_SOURCE_PATH}/StorageManager/src ${MIDDLEWARE_SOURCE_PATH}/FilesManager/include + ${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include ${UTILS_SOURCE_PATH}/StatusCode/include ${UTILS_SOURCE_PATH}/Log/include ${UTILS_SOURCE_PATH}/LinuxApi/include diff --git a/test/hal/tool/src/KeyControlMock.cpp b/test/hal/tool/src/KeyControlMock.cpp index 2a85280..fa7c18b 100644 --- a/test/hal/tool/src/KeyControlMock.cpp +++ b/test/hal/tool/src/KeyControlMock.cpp @@ -38,7 +38,7 @@ void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent LogError("monitor is nullptr.\n"); return; } - monitor->KeyEventHappened(keyName, static_cast(event)); + monitor->KeyEventHappened(keyName, static_cast(event), timeMs); } const std::string KeyControlTest::GetKeyName(void) {