Key manager code ok.

This commit is contained in:
Fancy code 2024-05-28 15:40:45 +08:00
parent be566f10db
commit 079f480076
11 changed files with 30 additions and 14 deletions

View File

@ -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(

View File

@ -29,6 +29,8 @@ void TopState::GoInState()
std::shared_ptr<VMediaMonitor> mediaMonitor = std::dynamic_pointer_cast<VMediaMonitor>(shared_from_this());
IMediaManager::GetInstance()->SetMediaMonitor(mediaMonitor);
MissionStateMachine::GetInstance()->SwitchState(SystemState::MISSION_STATE);
std::shared_ptr<VKeyMonitor> keysMonitor = std::dynamic_pointer_cast<VKeyMonitor>(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);

View File

@ -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<TopState>
{
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);
};

View File

@ -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");
}

View File

@ -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
{

View File

@ -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
{

View File

@ -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> &IDeviceManager::GetInstance(std::shared_ptr<IDeviceManager> *impl)
{
static auto instance = std::make_shared<IDeviceManager>();

View File

@ -87,7 +87,7 @@ void KeyManager::GetAllKeysState(std::map<std::string, KeyStatus> &status)
}
const StatusCode KeyManager::SetKeyMonitor(std::shared_ptr<VKeyMonitor> &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<VirtualKeyEvent>(event), 99999);
monitor->KeyEventReport(keyName, static_cast<VirtualKeyEvent>(event), timeMs);
}

View File

@ -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<std::string, std::shared_ptr<VKeyHal>> mAllKeyHal;
bool mTimerRuning;
std::thread mTimer;
std::weak_ptr<VKeyMonitor> mKeyMonitor;
std::weak_ptr<VKeyMonitor> mKeysMonitor;
};
#endif

View File

@ -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

View File

@ -38,7 +38,7 @@ void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent
LogError("monitor is nullptr.\n");
return;
}
monitor->KeyEventHappened(keyName, static_cast<VirtualKeyEvent>(event));
monitor->KeyEventHappened(keyName, static_cast<VirtualKeyEvent>(event), timeMs);
}
const std::string KeyControlTest::GetKeyName(void)
{