53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
#include "DisplayCenter.h"
|
|
|
|
#include "LCDDisplay.h"
|
|
|
|
DisplayCenter::DisplayCenter() : m_lcd(new LCDDisplay())
|
|
,brun(false), m_msgs("DisplayCenter")
|
|
{
|
|
m_showthread.reset(new std::thread(&DisplayCenter::runloop,this));
|
|
m_distype = DisType::Dis_Idel;
|
|
}
|
|
|
|
DisplayCenter::~DisplayCenter()
|
|
{
|
|
brun = false;
|
|
if(m_showthread.get()&& m_showthread->joinable())
|
|
{
|
|
m_showthread->join();
|
|
m_showthread.reset();
|
|
}
|
|
|
|
m_msgs.trigger();
|
|
m_msgs.clear();
|
|
|
|
m_lcd.reset();
|
|
}
|
|
|
|
void DisplayCenter::PutMsg(DisType distype,int pagenum,ClearScreen clearscreen)
|
|
{
|
|
m_msgs.save({distype,clearscreen,(unsigned int )pagenum,""}, true);
|
|
m_distype = distype;
|
|
printf("\n ----- distype = %d ",distype);
|
|
}
|
|
|
|
void DisplayCenter::ResetMsgQueue()
|
|
{
|
|
m_msgs.clear();
|
|
}
|
|
|
|
void DisplayCenter::runloop()
|
|
{
|
|
brun = true;
|
|
while (brun)
|
|
{
|
|
MsgPair msg;
|
|
if(m_msgs.take(msg, true))
|
|
m_lcd->DisplayState(msg.distype, msg.pagenum, msg.clearscree);
|
|
}
|
|
}
|
|
|
|
DisType DisplayCenter::getcurdistype()
|
|
{
|
|
return m_distype;
|
|
} |