#pragma once #include "StateManager.h" #include "IState.h" #include "BlockingQueue.h" #include "keymonitor.h" using HgBtn = KeyMonitor::HGKey; class MotorController { public: MotorController(/* args */); ~MotorController(); void PutMsg(StateInfo mode); private: void runloop(); void SendMsg(); void procmsg(); private: std::atomic m_bloop; BlockingQueue m_msg; std::shared_ptr m_threadmsgloop; std::shared_ptr m_keyMinitor; const std::map m_keystats={ {HgBtn::Key_Enter,{HGScannerStatus::Mode_Set_Key_Enter,0}}, {HgBtn::Key_Cancle,{HGScannerStatus::Mode_Set_Key_Back,0}}, {HgBtn::Key_Count,{HGScannerStatus::Mode_Set_Key_Count,0}}, {HgBtn::Key_Handle,{HGScannerStatus::Mode_Set_HandMode,0}}, {HgBtn::Key_DoubleFeed,{HGScannerStatus::Mode_Set_Key_EnDoubleFeed,0}}, {HgBtn::Key_Left,{HGScannerStatus::Mode_Set_Key_Left,0}}, {HgBtn::Key_Menu,{HGScannerStatus::Mode_Set_Key_Manual,0}}, {HgBtn::Key_Right,{HGScannerStatus::Mode_Set_Key_Right,0}}, {HgBtn::Key_Clear,{HGScannerStatus::Mode_Set_Key_ClearCount,0}} }; };