|
#include "StdAfx.h"
|
#include "ExternLightControlLCP.h"
|
#include "ExternLightControlAKPNV.h"
|
#include "LightManager.h"
|
#include "HardwareSettings.h"
|
|
CLightManager::CLightManager()
|
{
|
m_pParents = NULL;
|
m_bNoUse_LightControl = FALSE;
|
m_pHardwareSetting = NULL;
|
}
|
|
CLightManager::~CLightManager()
|
{
|
DisConnectControl();
|
}
|
|
CExternLightControl *CLightManager::GetIdxLight(int idx)
|
{
|
std::vector<CExternLightControl *>::iterator it;
|
CExternLightControl *pLight = NULL;
|
BOOL bFind = FALSE;
|
|
for(it=m_vecLightControl.begin();it!=m_vecLightControl.end();it++)
|
{
|
pLight = *it;
|
if(pLight == NULL)
|
continue;
|
|
if(pLight->m_nIndex == idx)
|
{
|
bFind = TRUE;
|
break;
|
}
|
}
|
|
if(bFind == FALSE)
|
pLight = NULL;
|
|
return pLight;
|
|
}
|
|
void CLightManager::DisConnectControl()
|
{
|
std::vector<CExternLightControl *>::iterator it;
|
CExternLightControl *pLight;
|
|
for(it=m_vecLightControl.begin();it!=m_vecLightControl.end();it++)
|
{
|
pLight = *it;
|
if(pLight == NULL)
|
continue;
|
|
pLight->CloseControl();
|
delete pLight,pLight=NULL;
|
}
|
m_vecLightControl.clear();
|
}
|
|
BOOL CLightManager::ConnectToLight()
|
{
|
if(m_pHardwareSetting == NULL)
|
return FALSE;
|
|
int iCon;
|
CHardwareLightSettings *pLight;
|
CExternLightControl *pLingControl = NULL;
|
CString strMsg;
|
int nOldPort = -1;
|
|
for(iCon=0;iCon<m_pHardwareSetting->m_nLightCount_Trans+m_pHardwareSetting->m_nLightCount_Reflect;iCon++)
|
{
|
pLight = m_pHardwareSetting->GetLightSettings(iCon);
|
if(pLight == NULL || nOldPort == pLight->m_nPort)
|
continue;
|
|
switch(pLight->m_emMaker)
|
{
|
case MAKER_LCP:
|
pLingControl = new CExternLightControlLCP;
|
strMsg.Format(_T("LCP Idx[%d]"),pLight->m_nIndex);
|
break;
|
case MAKER_AKP:
|
pLingControl = new CExternLightControlAKPNV;
|
strMsg.Format(_T("AKP Idx[%d]"),pLight->m_nIndex);
|
break;
|
default:
|
continue;
|
}
|
|
if(pLingControl == NULL)
|
continue;
|
|
pLingControl->m_nIndex = pLight->m_nIndex;
|
|
if(pLingControl->OpenControl(pLight->m_nPort) == TRUE)
|
{
|
g_pLog->DisplayMessage(_T("Light controller %s connection success : Port[%d]"),strMsg,pLight->m_nPort);
|
//TRACE("炼疙 %s 楷搬 己傍 : Port[%d]\n",strMsg,pLight->m_nPort);
|
nOldPort = pLight->m_nPort;
|
}
|
else
|
{
|
g_pLog->DisplayMessage(_T("Light controller %s connection fail : Port[%d]"),strMsg,pLight->m_nPort);
|
//TRACE("炼疙 %s 楷搬 角菩 : Port[%d]\n",strMsg,pLight->m_nPort);
|
}
|
|
m_vecLightControl.push_back(pLingControl);
|
}
|
|
return TRUE;
|
}
|
|
BOOL CLightManager::SetLightControlValue(int iCon,int iCh,int nControlVal)
|
{
|
CString strName,strType;
|
|
CExternLightControl *pLight = GetIdxLight(iCon);
|
if(pLight == NULL)
|
return FALSE;
|
|
if(pLight->SetLightControlValue(iCh,nControlVal) == FALSE)
|
return FALSE;
|
|
return TRUE;
|
}
|
|
BOOL CLightManager::LampTurnOnOff(int iCon,int iCh, BOOL bOn)
|
{
|
CExternLightControl *pLight = GetIdxLight(iCon);
|
if(pLight == NULL)
|
return FALSE;
|
|
if(pLight->TurnOnOffLamp(iCh,bOn) == FALSE)
|
return FALSE;
|
|
|
return TRUE;
|
}
|