61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
|
#include "DisplayCenter.h"
|
||
|
#include "deviceconfig.h"
|
||
|
|
||
|
DisplayCenter::DisplayCenter():m_lcd(new LCDDisplay(Get_static_deviceconfig().GetParam().language))
|
||
|
,brun(false)
|
||
|
{
|
||
|
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();
|
||
|
}
|
||
|
|
||
|
if(!m_msgs.IsShutDown())
|
||
|
m_msgs.ShutDown();
|
||
|
|
||
|
m_lcd.reset();
|
||
|
}
|
||
|
|
||
|
void DisplayCenter::PutMsg(DisType distype,int pagenum,ClearScreen clearscreen)
|
||
|
{
|
||
|
m_msgs.Put({distype,clearscreen,(unsigned int )pagenum,""});
|
||
|
m_distype = distype;
|
||
|
printf("\n ----- distype = %d ",distype);
|
||
|
}
|
||
|
|
||
|
void DisplayCenter::ResetMsgQueue()
|
||
|
{
|
||
|
m_msgs.Clear();
|
||
|
}
|
||
|
|
||
|
void DisplayCenter::runloop()
|
||
|
{
|
||
|
brun = true;
|
||
|
while (brun)
|
||
|
{
|
||
|
if(m_msgs.Size()>0)
|
||
|
{
|
||
|
auto msg= m_msgs.Take();
|
||
|
m_lcd->DisplayState(msg.distype,msg.pagenum,msg.clearscree);
|
||
|
}
|
||
|
else
|
||
|
std::this_thread::sleep_for(std::chrono::milliseconds(2));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DisType DisplayCenter::getcurdistype()
|
||
|
{
|
||
|
return m_distype;
|
||
|
}
|
||
|
|
||
|
void DisplayCenter::set_language(LCDDisplay::Language language)
|
||
|
{
|
||
|
if(m_lcd.get()) m_lcd->set_language(language);
|
||
|
}
|