77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
|
#include "MotorController.h"
|
||
|
#include "Mt_Count.h"
|
||
|
#include "Mt_Error.h"
|
||
|
#include "Mt_Idel.h"
|
||
|
#include "Mt_Scan.h"
|
||
|
#include "Mt_Set.h"
|
||
|
#include "Mt_Welcome.h"
|
||
|
#include "applog.h"
|
||
|
#include "keymonitor.h"
|
||
|
|
||
|
static const std::string loggername = "motorcontroller";
|
||
|
using namespace std;
|
||
|
|
||
|
MotorController::MotorController():
|
||
|
m_bloop(false)
|
||
|
{
|
||
|
LOG_INIT();
|
||
|
m_threadmsgloop = make_shared<thread>(&MotorController::runloop,this);
|
||
|
auto keycall=[&](int key)
|
||
|
{
|
||
|
auto iter = m_keystats.find((HgBtn)key);
|
||
|
if(iter!=m_keystats.end())
|
||
|
{
|
||
|
m_msg.Put(iter->second);
|
||
|
}
|
||
|
};
|
||
|
m_keyMinitor= make_shared<KeyMonitor>(keycall);
|
||
|
}
|
||
|
|
||
|
MotorController::~MotorController()
|
||
|
{
|
||
|
|
||
|
if(m_threadmsgloop.get() && m_threadmsgloop->joinable())
|
||
|
{
|
||
|
m_bloop = false;
|
||
|
m_threadmsgloop->join();
|
||
|
m_threadmsgloop.reset();
|
||
|
}
|
||
|
LOG_TRACE("MotorController ~ctor exit \n");
|
||
|
}
|
||
|
|
||
|
void MotorController::runloop()
|
||
|
{
|
||
|
m_bloop = true;
|
||
|
IState* mtstate = StateManager<Mt_Welcome>::GetState();
|
||
|
m_msg.Put({HGScannerStatus::Mode_Idel,0});
|
||
|
while (m_bloop)
|
||
|
{
|
||
|
auto msg = m_msg.Take();
|
||
|
printf("\n msg status = %d ",msg.status);
|
||
|
if(msg.status == HGScannerStatus::Mode_Scan_Start)
|
||
|
mtstate = StateManager<Mt_Scan>::GetState();
|
||
|
if(msg.status == HGScannerStatus::Mode_Count)
|
||
|
mtstate = StateManager<Mt_Count>::GetState(msg.value);
|
||
|
if(msg.status == HGScannerStatus::Mode_Set_Key_Manual)
|
||
|
mtstate = StateManager<Mt_Set>::GetState();
|
||
|
if(msg.status >= HGScannerStatus::Mode_Error_Jam && msg.status <= HGScannerStatus::Mode_Error_DogEar || msg.status == HGScannerStatus::Mode_Error_FeedError)
|
||
|
mtstate = StateManager<Mt_Error>::GetState((int)msg.status);
|
||
|
if(msg.status == HGScannerStatus::Mode_Idel)
|
||
|
mtstate = StateManager<Mt_Idel>::GetState();
|
||
|
//mtstate = mtstate->OnState(msg);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void MotorController::PutMsg(StateInfo mode)
|
||
|
{
|
||
|
m_msg.Put(mode);
|
||
|
}
|
||
|
|
||
|
|
||
|
void MotorController::SendMsg()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
|