75 lines
1.9 KiB
C++
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
|
|
|