nt9856x/code/application/sifarsdk/test/test_utils/KeyContrlMock.cpp

44 lines
1.6 KiB
C++

#include "KeyContrlMock.h"
#include "Log.h"
#include <thread>
KeyContrlMock::KeyContrlMock(const SfKeyDefine &key) : mKey(key)
{
mKeyEvent = nullptr;
mEventContext = nullptr;
mKeyMonitor = std::make_shared<VKeyEventMonitor>();
}
// KeyContrlMock::~KeyContrlMock() = default;
// void KeyContrlMock::SetKeyEventCallback(std::function<void(const SfKeyDefine &, const SfKeyEvent &, void *)> event, void *context)
// {
// mKeyEvent = event;
// mEventContext = context;
// }
void KeyContrlMock::SetKeyEventMonitor(std::shared_ptr<VKeyEventMonitor> monitor, void *context)
{
LogInfo("KeyContrlMock::SetKeyEventMonitor.\n");
mKeyMonitor = monitor;
mEventContext = context;
}
void KeyContrlMock::MockKeyEvent(const SfKeyEvent &event)
{
auto monitor = mKeyMonitor.lock();
if (!mKeyMonitor.expired()) // mKeyMonitor is available.
{
monitor->HalKeyEventHappened(mKey, event, mEventContext);
}
}
void KeyContrlMock::MockKeyPressing(const unsigned int pressingTime)
{
auto monitor = mKeyMonitor.lock();
if (!mKeyMonitor.expired()) // mKeyMonitor is available.
{
unsigned int pressing = 0;
while (pressing < pressingTime)
{
monitor->HalKeyEventHappened(mKey, SfKeyEvent::KEY_EVENT_PRESSED, mEventContext);
std::this_thread::sleep_for(std::chrono::milliseconds(PERIPHERAL_CHECK_PERIOD_MS));
pressing +=PERIPHERAL_CHECK_PERIOD_MS;
}
monitor->HalKeyEventHappened(mKey, SfKeyEvent::KEY_EVENT_UN_PRESSED, mEventContext);
}
}