44 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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);
 | |
|     }
 | |
| } |