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