75 lines
1.9 KiB
C++

/**********************************************************************************
* @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