/********************************************************************************** * @file CApcIfRedunSw.cpp * @brief 功率控制接口服务,冗余切换类 * @author yikenan * @versiong 1.0 * @date **********************************************************************************/ #include "CThreadAnalog.h" #include "CThreadDigital.h" #include "CThreadLocalCurve.h" #include "CApcIfSrv.h" #include "CApcIfRedunSw.h" namespace iot_app { CApcIfRedunSw::CApcIfRedunSw() { m_pThreadAnalog = new CThreadAnalog; m_pThreadDigital = new CThreadDigital; m_pThreadLocalCurve = new CThreadLocalCurve; } CApcIfRedunSw::~CApcIfRedunSw() { delete m_pThreadAnalog; m_pThreadAnalog = NULL; delete m_pThreadDigital; m_pThreadDigital = NULL; delete m_pThreadLocalCurve; m_pThreadLocalCurve = NULL; } int CApcIfRedunSw::redundantSwitch(bool bMaster, bool bSlave) { //< 当前逻辑 bSlave 无需使用 if (bMaster && !bSlave) { //LOGDEBUG("\n\nredundantSwitch(): Resume master threads\n"); m_pThreadAnalog->resumeThread(); m_pThreadDigital->resumeThread(); m_pThreadLocalCurve->resumeThread(); //LOGDEBUG("\n\nredundantSwitch(): Resume master threads complete\n"); } else { //LOGDEBUG("\n\nredundantSwitch(): Suspend master threads\n"); m_pThreadAnalog->suspendThread(); m_pThreadDigital->suspendThread(); m_pThreadLocalCurve->suspendThread(); //LOGDEBUG("\n\nredundantSwitch(): Suspend master threads complete\n"); } const bool bMasterRunning = m_pThreadAnalog->isThreadRunning() && m_pThreadDigital->isThreadRunning() && m_pThreadLocalCurve->isThreadRunning(); CApcIfSrv::getInstance().updateProcInfo(true, bMasterRunning, bSlave); return iotSuccess; } } //< namespace iot_app