#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(); } void CLightManager::InitLightControl() { SetLightPath(); } void CLightManager::SetLightPath() { m_ConfigLightValue.SetRegiConfig(NULL, NULL, LIGHT_CONTROL_FILE_PATH, FileMap_Mode); } 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(CString strRecipe,int iCon,int iCh,LIGHT_TYPE enType,BOOL bAuto,int nControlVal) { CString strName,strType; CExternLightControl *pLight = GetIdxLight(iCon); if(pLight == NULL) return FALSE; if(pLight->SetLightControlValue(iCh,nControlVal) == FALSE) return FALSE; enType = LIGHT_TYPE_REF; switch(enType) { case LIGHT_TYPE_REF: strType = "R"; break; case LIGHT_TYPE_TRANS: strType = "T"; break; default: return FALSE; } if(bAuto == TRUE) strName.Format(_T("%s_CON[%d]_CH[%d]_AUTO_%s"),strRecipe,iCon,iCh,strType); else strName.Format(_T("%s_CON[%d]_CH[%d]_MANUAL_%s"),strRecipe,iCon,iCh,strType); m_ConfigLightValue.SetItemValue((TCHAR*)(LPCTSTR)strName, nControlVal); return TRUE; } int CLightManager::GetLightControlValue(CString strRecipe,int iCon,int iCh,LIGHT_TYPE enType,BOOL bAuto) { int nControlVal = -1; CString strName,strType; switch(enType) { case LIGHT_TYPE_REF: strType = "R"; break; case LIGHT_TYPE_TRANS: strType = "T"; break; default: return nControlVal; } if(bAuto == TRUE) strName.Format(_T("%s_CON[%d]_CH[%d]_AUTO_%s"),strRecipe,iCon,iCh,strType); else strName.Format(_T("%s_CON[%d]_CH[%d]_MANUAL_%s"),strRecipe,iCon,iCh,strType); m_ConfigLightValue.GetItemValue((TCHAR*)(LPCTSTR)strName, nControlVal, -1); return nControlVal; } 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; }