Backup.
This commit is contained in:
parent
dcdf20106e
commit
1ada288d3f
|
@ -24,8 +24,17 @@ using VirtualKeyEvent = unsigned char;
|
||||||
constexpr int INVALID_PERIOD = -1;
|
constexpr int INVALID_PERIOD = -1;
|
||||||
constexpr int PERIPHERAL_CHECK_PERIOD_MS = 100;
|
constexpr int PERIPHERAL_CHECK_PERIOD_MS = 100;
|
||||||
constexpr int IMEI_LEN = 15;
|
constexpr int IMEI_LEN = 15;
|
||||||
constexpr long int KEY_DO_NOT_HOLD_PRESSING = -1;
|
// constexpr long int KEY_DO_NOT_HOLD_PRESSING = -1;
|
||||||
void CreateHalCppModule(void);
|
void CreateHalCppModule(void);
|
||||||
|
class VKeyHalMonitor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
VKeyHalMonitor() = default;
|
||||||
|
virtual ~VKeyHalMonitor() = default;
|
||||||
|
virtual void KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
class VKeyHal
|
class VKeyHal
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -34,6 +43,7 @@ public:
|
||||||
virtual void CheckKeyStatus(void) {}
|
virtual void CheckKeyStatus(void) {}
|
||||||
virtual const std::string GetKeyName(void) { return "undefine"; }
|
virtual const std::string GetKeyName(void) { return "undefine"; }
|
||||||
virtual void GetHoldPressingTimeMs(long int &holdTimeMs, VirtualKeyEvent &event) {}
|
virtual void GetHoldPressingTimeMs(long int &holdTimeMs, VirtualKeyEvent &event) {}
|
||||||
|
virtual void SetKeyMonitor(std::shared_ptr<VKeyHalMonitor> &monitor) {}
|
||||||
};
|
};
|
||||||
class VLedHal
|
class VLedHal
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,8 +24,3 @@ StatusCode HalCpp::UnInit(void)
|
||||||
LogInfo("HalCpp::UnInit\n");
|
LogInfo("HalCpp::UnInit\n");
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
StatusCode HalCpp::GetLedHals(std::vector<std::shared_ptr<VLedHal>> &ledHals)
|
|
||||||
{
|
|
||||||
ledHals = mLedHals;
|
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
|
||||||
}
|
|
||||||
|
|
|
@ -22,7 +22,6 @@ public:
|
||||||
virtual ~HalCpp() = default;
|
virtual ~HalCpp() = default;
|
||||||
StatusCode Init(void) override;
|
StatusCode Init(void) override;
|
||||||
StatusCode UnInit(void) override;
|
StatusCode UnInit(void) override;
|
||||||
StatusCode GetLedHals(std::vector<std::shared_ptr<VLedHal>> &ledHals) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<std::shared_ptr<VLedHal>> mLedHals;
|
std::vector<std::shared_ptr<VLedHal>> mLedHals;
|
||||||
|
|
|
@ -44,6 +44,7 @@ void KeyManager::StartTimer(void)
|
||||||
LogError("StartTimer failed, no key to manager.\n");
|
LogError("StartTimer failed, no key to manager.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
SetAllKeysMonitor();
|
||||||
auto timerThread = [](std::shared_ptr<KeyManager> timer) {
|
auto timerThread = [](std::shared_ptr<KeyManager> timer) {
|
||||||
LogInfo("Key timer started.\n");
|
LogInfo("Key timer started.\n");
|
||||||
timer->Timer();
|
timer->Timer();
|
||||||
|
@ -62,11 +63,6 @@ void KeyManager::Timer(void)
|
||||||
mTimerRuning = true;
|
mTimerRuning = true;
|
||||||
std::map<std::string, std::shared_ptr<VKeyHal>>::iterator iter;
|
std::map<std::string, std::shared_ptr<VKeyHal>>::iterator iter;
|
||||||
while (mTimerRuning) {
|
while (mTimerRuning) {
|
||||||
// for (int i = 0; i < static_cast<int>(SfKeyDefine::KEY_PIN_END); i++)
|
|
||||||
// {
|
|
||||||
// mKeyManagers[static_cast<SfKeyDefine>(i)]->TimerKeyEventHappened(static_cast<SfKeyDefine>(i),
|
|
||||||
// SfKeyEvent::KEY_EVENT_PRESSED, nullptr);
|
|
||||||
// }
|
|
||||||
for (iter = mAllKeyHal.begin(); iter != mAllKeyHal.end(); ++iter) {
|
for (iter = mAllKeyHal.begin(); iter != mAllKeyHal.end(); ++iter) {
|
||||||
std::shared_ptr<VKeyHal> keyHal = iter->second;
|
std::shared_ptr<VKeyHal> keyHal = iter->second;
|
||||||
keyHal->CheckKeyStatus();
|
keyHal->CheckKeyStatus();
|
||||||
|
@ -85,4 +81,17 @@ void KeyManager::GetAllKeysState(std::map<std::string, KeyStatus> &status)
|
||||||
KeyStatus result(holdPressingEvent, holdTimeMs);
|
KeyStatus result(holdPressingEvent, holdTimeMs);
|
||||||
status.insert(std::make_pair(iter->first, result));
|
status.insert(std::make_pair(iter->first, result));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
void KeyManager::SetAllKeysMonitor(void)
|
||||||
|
{
|
||||||
|
std::map<std::string, std::shared_ptr<VKeyHal>>::iterator iter;
|
||||||
|
for (iter = mAllKeyHal.begin(); iter != mAllKeyHal.end(); ++iter) {
|
||||||
|
std::shared_ptr<VKeyHal> keyHal = iter->second;
|
||||||
|
std::shared_ptr<VKeyHalMonitor> monitor = shared_from_this();
|
||||||
|
keyHal->SetKeyMonitor(monitor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void KeyManager::KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, const unsigned int &timeMs)
|
||||||
|
{
|
||||||
|
//
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
class KeyManager : public std::enable_shared_from_this<KeyManager>
|
class KeyManager : public VKeyHalMonitor, public std::enable_shared_from_this<KeyManager>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
KeyManager() = default;
|
KeyManager() = default;
|
||||||
|
@ -33,6 +33,13 @@ public:
|
||||||
void Timer(void);
|
void Timer(void);
|
||||||
void GetAllKeysState(std::map<std::string, KeyStatus> &status);
|
void GetAllKeysState(std::map<std::string, KeyStatus> &status);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void SetAllKeysMonitor(void);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event,
|
||||||
|
const unsigned int &timeMs) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex mMutex;
|
std::mutex mMutex;
|
||||||
std::map<std::string, std::shared_ptr<VKeyHal>> mAllKeyHal;
|
std::map<std::string, std::shared_ptr<VKeyHal>> mAllKeyHal;
|
||||||
|
|
|
@ -7,6 +7,7 @@ include_directories(
|
||||||
./include
|
./include
|
||||||
${UTILS_SOURCE_PATH}/StatusCode/include
|
${UTILS_SOURCE_PATH}/StatusCode/include
|
||||||
${UTILS_SOURCE_PATH}/Log/include
|
${UTILS_SOURCE_PATH}/Log/include
|
||||||
|
${UTILS_SOURCE_PATH}/KeyControl/include
|
||||||
# ${UTILS_SOURCE_PATH}/McuProtocol/include
|
# ${UTILS_SOURCE_PATH}/McuProtocol/include
|
||||||
${HAL_SOURCE_PATH}/src
|
${HAL_SOURCE_PATH}/src
|
||||||
# /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/hal/src/HalCpp.h
|
# /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/hal/src/HalCpp.h
|
||||||
|
@ -20,7 +21,7 @@ include_directories(
|
||||||
aux_source_directory(./src TEST_TOOL_SRC_FILES)
|
aux_source_directory(./src TEST_TOOL_SRC_FILES)
|
||||||
set(TEST_TOOL_TARGET HalTestTool)
|
set(TEST_TOOL_TARGET HalTestTool)
|
||||||
add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})
|
add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})
|
||||||
target_link_libraries(${TEST_TOOL_TARGET} Log)
|
target_link_libraries(${TEST_TOOL_TARGET} KeyControl Log)
|
||||||
|
|
||||||
if ("${CLANG_TIDY_SUPPORT}" MATCHES "true")
|
if ("${CLANG_TIDY_SUPPORT}" MATCHES "true")
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#ifndef HAL_TEST_TOOL_H
|
#ifndef HAL_TEST_TOOL_H
|
||||||
#define HAL_TEST_TOOL_H
|
#define HAL_TEST_TOOL_H
|
||||||
#include "HalCpp.h"
|
#include "HalCpp.h"
|
||||||
|
#include "KeyControl.h"
|
||||||
#include <gmock/gmock.h>
|
#include <gmock/gmock.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
using ::testing::_;
|
using ::testing::_;
|
||||||
|
@ -42,6 +43,7 @@ using ::testing::ReturnRefOfCopy;
|
||||||
using ::testing::ReturnRoundRobin;
|
using ::testing::ReturnRoundRobin;
|
||||||
using ::testing::SaveArg;
|
using ::testing::SaveArg;
|
||||||
using ::testing::SetArgPointee;
|
using ::testing::SetArgPointee;
|
||||||
|
using ::testing::SetArgReferee;
|
||||||
using ::testing::SetArgumentPointee;
|
using ::testing::SetArgumentPointee;
|
||||||
using ::testing::Unused;
|
using ::testing::Unused;
|
||||||
using ::testing::WithArgs;
|
using ::testing::WithArgs;
|
||||||
|
@ -52,9 +54,11 @@ public:
|
||||||
HalCppTest() = default;
|
HalCppTest() = default;
|
||||||
virtual ~HalCppTest() = default;
|
virtual ~HalCppTest() = default;
|
||||||
StatusCode GetLedHals(std::vector<std::shared_ptr<VLedHal>> &ledHals) override;
|
StatusCode GetLedHals(std::vector<std::shared_ptr<VLedHal>> &ledHals) override;
|
||||||
|
StatusCode GetAllKeys(std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual StatusCode GetLedHalsTrace(std::vector<std::shared_ptr<VLedHal>> &ledHals);
|
virtual StatusCode GetLedHalsTrace(std::vector<std::shared_ptr<VLedHal>> &ledHals);
|
||||||
|
virtual StatusCode GetAllKeysTrace(std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys);
|
||||||
};
|
};
|
||||||
class HalCppMock : public HalCppTest
|
class HalCppMock : public HalCppTest
|
||||||
{
|
{
|
||||||
|
@ -62,6 +66,27 @@ public:
|
||||||
HalCppMock() = default;
|
HalCppMock() = default;
|
||||||
virtual ~HalCppMock() = default;
|
virtual ~HalCppMock() = default;
|
||||||
MOCK_METHOD1(GetLedHalsTrace, StatusCode(std::vector<std::shared_ptr<VLedHal>> &));
|
MOCK_METHOD1(GetLedHalsTrace, StatusCode(std::vector<std::shared_ptr<VLedHal>> &));
|
||||||
|
MOCK_METHOD1(GetAllKeysTrace, StatusCode(std::map<std::string, std::shared_ptr<VKeyHal>> &));
|
||||||
|
};
|
||||||
|
class KeyControlTest : public KeyControl, public VKeyHal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
KeyControlTest() = default;
|
||||||
|
virtual ~KeyControlTest() = default;
|
||||||
|
unsigned int GetStatusCheckPeriodMs(void) override { return PERIPHERAL_CHECK_PERIOD_MS; }
|
||||||
|
void SetKeyMonitor(std::shared_ptr<VKeyHalMonitor> &monitor) override;
|
||||||
|
void CheckKeyStatus(void) override;
|
||||||
|
void KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::shared_ptr<VKeyHalMonitor> mMonitor;
|
||||||
|
};
|
||||||
|
class KeyControlMock : public KeyControlTest
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
KeyControlMock() = default;
|
||||||
|
virtual ~KeyControlMock() = default;
|
||||||
|
void SetKeyEvent(const KeyHalEvent &event);
|
||||||
};
|
};
|
||||||
class HalTestTool
|
class HalTestTool
|
||||||
{
|
{
|
||||||
|
@ -70,8 +95,16 @@ public:
|
||||||
virtual ~HalTestTool() = default;
|
virtual ~HalTestTool() = default;
|
||||||
void Init(void);
|
void Init(void);
|
||||||
void UnInit(void);
|
void UnInit(void);
|
||||||
|
void SetAllKeysResult(std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys);
|
||||||
|
void SetKeyEvent(const std::string keyName, const KeyHalEvent &event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void HalMockInit(std::shared_ptr<HalCppMock> &mock);
|
||||||
|
void SetAllKeysResult(std::shared_ptr<HalCppMock> &mock, std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys);
|
||||||
|
std::shared_ptr<KeyControlMock> SearchKey(const std::string &keyName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<HalCppMock> mHalMock;
|
std::shared_ptr<HalCppMock> mHalMock;
|
||||||
|
std::map<std::string, std::shared_ptr<VKeyHal>> mAllKeys;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -24,17 +24,49 @@ StatusCode HalCppTest::GetLedHals(std::vector<std::shared_ptr<VLedHal>> &ledHals
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
StatusCode HalCppTest::GetAllKeys(std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys)
|
||||||
|
{
|
||||||
|
LogInfo("HalCppTest::GetAllKeys\n");
|
||||||
|
StatusCode code = GetAllKeysTrace(allKeys);
|
||||||
|
if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
|
||||||
|
return HalCpp::GetAllKeys(allKeys);
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
StatusCode HalCppTest::GetLedHalsTrace(std::vector<std::shared_ptr<VLedHal>> &ledHals)
|
StatusCode HalCppTest::GetLedHalsTrace(std::vector<std::shared_ptr<VLedHal>> &ledHals)
|
||||||
{
|
{
|
||||||
//
|
|
||||||
LogInfo("HalCppTest::GetLedHalsTrace\n");
|
LogInfo("HalCppTest::GetLedHalsTrace\n");
|
||||||
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
}
|
}
|
||||||
|
StatusCode HalCppTest::GetAllKeysTrace(std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys)
|
||||||
|
{
|
||||||
|
LogInfo("HalCppTest::GetAllKeysTrace\n");
|
||||||
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
|
}
|
||||||
|
void KeyControlTest::SetKeyMonitor(std::shared_ptr<VKeyHalMonitor> &monitor)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
mMonitor = monitor;
|
||||||
|
}
|
||||||
|
void KeyControlTest::CheckKeyStatus(void)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
TimerKeyEventTrigger(KeyHalEvent::PRESSING);
|
||||||
|
}
|
||||||
|
void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs)
|
||||||
|
{
|
||||||
|
LogInfo("KeyEventTrigger time = %u\n", timeMs);
|
||||||
|
mMonitor->KeyEventHappened(keyName, static_cast<VirtualKeyEvent>(event), timeMs);
|
||||||
|
}
|
||||||
|
void KeyControlMock::SetKeyEvent(const KeyHalEvent &event)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
KeyHalEventTrigger(event);
|
||||||
|
}
|
||||||
void HalTestTool::Init(void)
|
void HalTestTool::Init(void)
|
||||||
{
|
{
|
||||||
mHalMock = std::make_shared<HalCppMock>();
|
mHalMock = std::make_shared<HalCppMock>();
|
||||||
EXPECT_CALL(*mHalMock.get(), GetLedHalsTrace(_))
|
HalMockInit(mHalMock);
|
||||||
.WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
|
|
||||||
OverrideHalMakePtrObject(mHalMock);
|
OverrideHalMakePtrObject(mHalMock);
|
||||||
}
|
}
|
||||||
void HalTestTool::UnInit(void)
|
void HalTestTool::UnInit(void)
|
||||||
|
@ -43,4 +75,44 @@ void HalTestTool::UnInit(void)
|
||||||
// IHalCpp::GetInstance(&impl);
|
// IHalCpp::GetInstance(&impl);
|
||||||
mHalMock.reset();
|
mHalMock.reset();
|
||||||
CancelOverrideHalMakePtrObject();
|
CancelOverrideHalMakePtrObject();
|
||||||
|
}
|
||||||
|
void HalTestTool::SetAllKeysResult(std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys)
|
||||||
|
{
|
||||||
|
SetAllKeysResult(mHalMock, allKeys);
|
||||||
|
mAllKeys = allKeys;
|
||||||
|
}
|
||||||
|
void HalTestTool::SetKeyEvent(const std::string keyName, const KeyHalEvent &event)
|
||||||
|
{
|
||||||
|
std::shared_ptr<KeyControlMock> key = SearchKey(keyName);
|
||||||
|
if (!key) {
|
||||||
|
LogError("Can't set key event, key not found.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
key->SetKeyEvent(event);
|
||||||
|
}
|
||||||
|
void HalTestTool::SetAllKeysResult(std::shared_ptr<HalCppMock> &mock,
|
||||||
|
std::map<std::string, std::shared_ptr<VKeyHal>> &allKeys)
|
||||||
|
{
|
||||||
|
EXPECT_CALL(*mock.get(), GetAllKeysTrace(_))
|
||||||
|
.WillRepeatedly(DoAll(SetArgReferee<0>(allKeys), Return(CreateStatusCode(STATUS_CODE_OK))));
|
||||||
|
}
|
||||||
|
std::shared_ptr<KeyControlMock> HalTestTool::SearchKey(const std::string &keyName)
|
||||||
|
{
|
||||||
|
std::shared_ptr<KeyControlMock> mock;
|
||||||
|
std::map<std::string, std::shared_ptr<VKeyHal>>::iterator iter;
|
||||||
|
iter = mAllKeys.find(keyName);
|
||||||
|
if (iter != mAllKeys.end()) {
|
||||||
|
mock = std::dynamic_pointer_cast<KeyControlMock>(mAllKeys[keyName]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LogWarning("Can't found the key control.\n");
|
||||||
|
}
|
||||||
|
return mock;
|
||||||
|
}
|
||||||
|
void HalTestTool::HalMockInit(std::shared_ptr<HalCppMock> &mock)
|
||||||
|
{
|
||||||
|
EXPECT_CALL(*mock.get(), GetLedHalsTrace(_))
|
||||||
|
.WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
|
||||||
|
EXPECT_CALL(*mock.get(), GetAllKeysTrace(_))
|
||||||
|
.WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@ include_directories(
|
||||||
${UTILS_SOURCE_PATH}/StatusCode/include
|
${UTILS_SOURCE_PATH}/StatusCode/include
|
||||||
${UTILS_SOURCE_PATH}/UartDevice/include
|
${UTILS_SOURCE_PATH}/UartDevice/include
|
||||||
${UTILS_SOURCE_PATH}/McuProtocol/include
|
${UTILS_SOURCE_PATH}/McuProtocol/include
|
||||||
|
${UTILS_SOURCE_PATH}/KeyControl/include
|
||||||
${HAL_SOURCE_PATH}/include
|
${HAL_SOURCE_PATH}/include
|
||||||
${HAL_SOURCE_PATH}/src
|
${HAL_SOURCE_PATH}/src
|
||||||
${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include
|
${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include
|
||||||
|
|
|
@ -59,8 +59,14 @@ public:
|
||||||
// ../output_files/test/bin/DeviceManagerTest --gtest_filter=DeviceManagerTest.INTEGRATION_DeviceManager_EXAMPLE_Demo
|
// ../output_files/test/bin/DeviceManagerTest --gtest_filter=DeviceManagerTest.INTEGRATION_DeviceManager_EXAMPLE_Demo
|
||||||
TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_Demo)
|
TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_Demo)
|
||||||
{
|
{
|
||||||
|
std::map<std::string, std::shared_ptr<VKeyHal>> allKeys;
|
||||||
|
std::shared_ptr<KeyControlMock> key = std::make_shared<KeyControlMock>();
|
||||||
|
allKeys["test"] = key;
|
||||||
|
SetAllKeysResult(allKeys);
|
||||||
IDeviceManager::GetInstance()->Init();
|
IDeviceManager::GetInstance()->Init();
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
|
SetKeyEvent("test", KeyHalEvent::PRESSING);
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
IDeviceManager::GetInstance()->UnInit();
|
IDeviceManager::GetInstance()->UnInit();
|
||||||
}
|
}
|
||||||
} // namespace DeviceManagerTest
|
} // namespace DeviceManagerTest
|
|
@ -18,7 +18,6 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
constexpr long int KEY_DO_NOT_HOLD_PRESSING = -1;
|
constexpr long int KEY_DO_NOT_HOLD_PRESSING = -1;
|
||||||
constexpr int PERIPHERAL_CHECK_PERIOD_MS = 100;
|
|
||||||
constexpr int KEY_ACTION_LONG_CLICK = 1000 * 5;
|
constexpr int KEY_ACTION_LONG_CLICK = 1000 * 5;
|
||||||
constexpr int KEY_ACTION_SHORT_CLICK = 200;
|
constexpr int KEY_ACTION_SHORT_CLICK = 200;
|
||||||
constexpr int KEY_ACTION_HOLD_DWON = 500;
|
constexpr int KEY_ACTION_HOLD_DWON = 500;
|
||||||
|
@ -36,32 +35,27 @@ enum class KeyEvent
|
||||||
HOLD_UP,
|
HOLD_UP,
|
||||||
END
|
END
|
||||||
};
|
};
|
||||||
class VKeyHal
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
VKeyHal() = default;
|
|
||||||
virtual ~VKeyHal() = default;
|
|
||||||
virtual void KeyEventTrigger(const KeyHalEvent &event) {}
|
|
||||||
virtual void TimerKeyEventTrigger(const KeyHalEvent &event) {}
|
|
||||||
virtual long int GetHoldPressingTimeMs(void) { return KEY_DO_NOT_HOLD_PRESSING; }
|
|
||||||
};
|
|
||||||
class VKeyControl
|
class VKeyControl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VKeyControl() = default;
|
VKeyControl() = default;
|
||||||
virtual ~VKeyControl() = default;
|
virtual ~VKeyControl() = default;
|
||||||
// virtual void SetKeyHalOwner(std::shared_ptr<VKeyHal> owner) {}
|
|
||||||
virtual const std::string GetKeyName(void) { return "undefine"; }
|
virtual const std::string GetKeyName(void) { return "undefine"; }
|
||||||
|
virtual unsigned int GetStatusCheckPeriodMs(void) { return 0; }
|
||||||
|
virtual void KeyHalEventTrigger(const KeyHalEvent &event) {}
|
||||||
|
virtual void KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) {}
|
||||||
|
virtual void TimerKeyEventTrigger(const KeyHalEvent &event) {}
|
||||||
|
virtual long int GetHoldPressingTimeMs(void) { return KEY_DO_NOT_HOLD_PRESSING; }
|
||||||
};
|
};
|
||||||
using KeyActionReport = std::function<void(const std::string &, const KeyEvent &, const unsigned int &)>;
|
// using KeyActionReport = std::function<void(const std::string &, const KeyEvent &, const unsigned int &)>;
|
||||||
class KeyControl : public VKeyControl, public VKeyHal, public std::enable_shared_from_this<KeyControl>
|
class KeyControl : public VKeyControl, public std::enable_shared_from_this<KeyControl>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
KeyControl();
|
KeyControl();
|
||||||
KeyControl(std::shared_ptr<VKeyControl> &keyHal, const KeyActionReport &keyAction,
|
// KeyControl(std::shared_ptr<VKeyControl> &keyHal, const KeyActionReport &keyAction,
|
||||||
const long int &longClickTime = KEY_ACTION_LONG_CLICK);
|
// const long int &longClickTime = KEY_ACTION_LONG_CLICK);
|
||||||
~KeyControl();
|
~KeyControl();
|
||||||
void KeyEventTrigger(const KeyHalEvent &event) override;
|
void KeyHalEventTrigger(const KeyHalEvent &event) override;
|
||||||
void TimerKeyEventTrigger(const KeyHalEvent &event) override;
|
void TimerKeyEventTrigger(const KeyHalEvent &event) override;
|
||||||
long int GetHoldPressingTimeMs(void) override;
|
long int GetHoldPressingTimeMs(void) override;
|
||||||
void Init(void);
|
void Init(void);
|
||||||
|
@ -75,8 +69,6 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex mMutex;
|
std::mutex mMutex;
|
||||||
// std::shared_ptr<VKeyControl> mKeyHal;
|
|
||||||
KeyActionReport mKeyActionReport;
|
|
||||||
long int mPressingTime;
|
long int mPressingTime;
|
||||||
long int mLongClickTime;
|
long int mLongClickTime;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,18 +19,18 @@ constexpr unsigned int NOT_A_HOLD_KEY_ACTION = 0;
|
||||||
KeyControl::KeyControl()
|
KeyControl::KeyControl()
|
||||||
{
|
{
|
||||||
// mKeyHal = nullptr;
|
// mKeyHal = nullptr;
|
||||||
mKeyActionReport = nullptr;
|
// mKeyActionReport = nullptr;
|
||||||
mPressingTime = KEY_NOT_PRESSING;
|
mPressingTime = KEY_NOT_PRESSING;
|
||||||
mLongClickTime = 0;
|
mLongClickTime = 0;
|
||||||
}
|
}
|
||||||
KeyControl::KeyControl(std::shared_ptr<VKeyControl> &keyHal, const KeyActionReport &keyAction,
|
// KeyControl::KeyControl(std::shared_ptr<VKeyControl> &keyHal, const KeyActionReport &keyAction,
|
||||||
const long int &longClickTime)
|
// const long int &longClickTime)
|
||||||
: mKeyActionReport(keyAction), mLongClickTime(longClickTime)
|
// : mKeyActionReport(keyAction), mLongClickTime(longClickTime)
|
||||||
{
|
// {
|
||||||
mPressingTime = KEY_NOT_PRESSING;
|
// mPressingTime = KEY_NOT_PRESSING;
|
||||||
}
|
// }
|
||||||
KeyControl::~KeyControl() {}
|
KeyControl::~KeyControl() {}
|
||||||
void KeyControl::KeyEventTrigger(const KeyHalEvent &event)
|
void KeyControl::KeyHalEventTrigger(const KeyHalEvent &event)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> locker(mMutex);
|
std::lock_guard<std::mutex> locker(mMutex);
|
||||||
ActionReport(GetKeyName(), event);
|
ActionReport(GetKeyName(), event);
|
||||||
|
@ -49,7 +49,7 @@ void KeyControl::UnInit(void) {}
|
||||||
void KeyControl::ActionReport(const std::string &key, const KeyHalEvent &keyEvent)
|
void KeyControl::ActionReport(const std::string &key, const KeyHalEvent &keyEvent)
|
||||||
{
|
{
|
||||||
if (KEY_PRESSING <= mPressingTime) {
|
if (KEY_PRESSING <= mPressingTime) {
|
||||||
mPressingTime += PERIPHERAL_CHECK_PERIOD_MS;
|
mPressingTime += GetStatusCheckPeriodMs();
|
||||||
}
|
}
|
||||||
switch (keyEvent) {
|
switch (keyEvent) {
|
||||||
case KeyHalEvent::PRESSING:
|
case KeyHalEvent::PRESSING:
|
||||||
|
@ -67,14 +67,9 @@ void KeyControl::KeyPressingTrigger(const std::string &key)
|
||||||
{
|
{
|
||||||
if (mLongClickTime <= mPressingTime) // Do not support long click, it should be count in application code.
|
if (mLongClickTime <= mPressingTime) // Do not support long click, it should be count in application code.
|
||||||
{
|
{
|
||||||
if (mKeyActionReport) {
|
|
||||||
// mKeyActionReport(key, KeyEvent::SF_KEY_ACTION_LONG_CLICK, NOT_A_HOLD_KEY_ACTION);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (mPressingTime != KEY_NOT_PRESSING && mPressingTime % KEY_ACTION_HOLD_DWON == 0) {
|
if (mPressingTime != KEY_NOT_PRESSING && mPressingTime % KEY_ACTION_HOLD_DWON == 0) {
|
||||||
if (mKeyActionReport) {
|
KeyEventTrigger(key, KeyEvent::HOLD_DOWN, mPressingTime);
|
||||||
mKeyActionReport(key, KeyEvent::HOLD_DOWN, mPressingTime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (KEY_NOT_PRESSING == mPressingTime) {
|
if (KEY_NOT_PRESSING == mPressingTime) {
|
||||||
mPressingTime = KEY_PRESSING;
|
mPressingTime = KEY_PRESSING;
|
||||||
|
@ -83,14 +78,10 @@ void KeyControl::KeyPressingTrigger(const std::string &key)
|
||||||
void KeyControl::KeyNotPressingTrigger(const std::string &key)
|
void KeyControl::KeyNotPressingTrigger(const std::string &key)
|
||||||
{
|
{
|
||||||
if (KEY_ACTION_SHORT_CLICK <= mPressingTime && mPressingTime < KEY_ACTION_HOLD_DWON) {
|
if (KEY_ACTION_SHORT_CLICK <= mPressingTime && mPressingTime < KEY_ACTION_HOLD_DWON) {
|
||||||
if (mKeyActionReport) {
|
KeyEventTrigger(key, KeyEvent::SHORT_CLICK, mPressingTime);
|
||||||
mKeyActionReport(key, KeyEvent::SHORT_CLICK, NOT_A_HOLD_KEY_ACTION);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (KEY_ACTION_HOLD_DWON <= mPressingTime) {
|
if (KEY_ACTION_HOLD_DWON <= mPressingTime) {
|
||||||
if (mKeyActionReport) {
|
KeyEventTrigger(key, KeyEvent::HOLD_UP, mPressingTime);
|
||||||
mKeyActionReport(key, KeyEvent::HOLD_UP, mPressingTime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mPressingTime = KEY_NOT_PRESSING;
|
mPressingTime = KEY_NOT_PRESSING;
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user