#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; }