2024-01-09 06:26:46 +00:00
|
|
|
#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));
|
2024-02-02 08:53:17 +00:00
|
|
|
m_distype = DisType::Dis_Unkown;
|
|
|
|
PutMsg(DisType::Dis_Init, code_page_, ClearScreen::All);
|
2024-01-09 06:26:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
DisplayCenter::~DisplayCenter()
|
|
|
|
{
|
|
|
|
brun = false;
|
2024-02-02 08:53:17 +00:00
|
|
|
|
|
|
|
m_msgs.trigger();
|
2024-01-09 06:26:46 +00:00
|
|
|
if(m_showthread.get()&& m_showthread->joinable())
|
|
|
|
{
|
|
|
|
m_showthread->join();
|
|
|
|
m_showthread.reset();
|
|
|
|
}
|
|
|
|
m_msgs.clear();
|
|
|
|
|
|
|
|
m_lcd.reset();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisplayCenter::PutMsg(DisType distype,int pagenum,ClearScreen clearscreen)
|
|
|
|
{
|
|
|
|
m_msgs.save({distype,clearscreen,(unsigned int )pagenum,""}, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisplayCenter::ResetMsgQueue()
|
|
|
|
{
|
|
|
|
m_msgs.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisplayCenter::runloop()
|
|
|
|
{
|
|
|
|
brun = true;
|
|
|
|
while (brun)
|
|
|
|
{
|
|
|
|
MsgPair msg;
|
|
|
|
if(m_msgs.take(msg, true))
|
2024-02-02 08:53:17 +00:00
|
|
|
{
|
|
|
|
m_distype = msg.distype;
|
2024-01-09 06:26:46 +00:00
|
|
|
m_lcd->DisplayState(msg.distype, msg.pagenum, msg.clearscree);
|
2024-02-02 08:53:17 +00:00
|
|
|
}
|
2024-01-09 06:26:46 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
DisType DisplayCenter::getcurdistype()
|
|
|
|
{
|
|
|
|
return m_distype;
|
|
|
|
}
|