TVmsCtlrF.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "TVmsCtlrF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. //---------------------------------------------------------------------------
  8. TVmsCtlr::TVmsCtlr()
  9. {
  10. InitializeCriticalSection(&FCS);
  11. VMS_MAX_PHSE_NUM = INT_MAX_VMS_FORM; // NUMBER(2) Y VMS 최대 표출면 개수
  12. VMS_PHSE_CHNG_CYCL = 5; // NUMBER(3) Y VMS 표출면 변경 주기
  13. VMS_CMNC_ERR_BASS_VAL = 127; // NUMBER(3) Y VMS 통신 오류 기본 값(모듈 전원이 꺼지는 온도값(℃))
  14. FAN_MTNS_TMPR = 35; // NUMBER(6,3) Y 팬 동작 온도
  15. HETR_MTNS_TMPR = 0; // NUMBER(6,3) Y 히터 동작 온도
  16. VMS_MODL_ERR_RATE = 20; // NUMBER(3) Y VMS 모듈 오류 율(Options)
  17. FDispLog = false;
  18. FSLog = NULL;
  19. FCLog = NULL;
  20. memset(&DSTATE, 0x00, sizeof(DSTATE));
  21. DSTATE.Comm = vms_error;
  22. DSTATE.Wcomm = vms_error;
  23. VComm_VmsInitStatus(&DSTATE);
  24. DSTATE.Comm = vms_normal;
  25. DSTATE.Comm = vms_error;
  26. DSTATE.Wcomm = vms_error;
  27. memset(&RSTATE, 0x00, sizeof(RSTATE));
  28. RSTATE.Comm = vms_error;
  29. RSTATE.Wcomm = vms_error;
  30. VComm_VmsInitStatus(&RSTATE);
  31. FSaveState = false;
  32. FOldState = vms_normal;
  33. FProvide = false;
  34. FModeChange = false;
  35. FIsOldProtocol = false;
  36. FIsFtpDownload = false;
  37. FIsProtolFontName = false;
  38. FIsStatusAuto = false;
  39. FBmpDownload = false;
  40. FSymbolDownload = false;
  41. }
  42. //---------------------------------------------------------------------------
  43. TVmsCtlr::~TVmsCtlr()
  44. {
  45. SAFE_DELETE(pPackQueue); /* 패킷 버퍼 */
  46. SAFE_DELETE(FSLog);
  47. SAFE_DELETE(FCLog);
  48. SAFE_DELETE(DOWNLOAD);
  49. SAFE_DELETE(CTLMODE);
  50. DeleteCriticalSection(&FCS);
  51. }
  52. //---------------------------------------------------------------------------
  53. void TVmsCtlr::Lock()
  54. {
  55. EnterCriticalSection(&FCS);
  56. }
  57. //---------------------------------------------------------------------------
  58. void TVmsCtlr::UnLock()
  59. {
  60. LeaveCriticalSection(&FCS);
  61. }
  62. //---------------------------------------------------------------------------
  63. //---------------------------------------------------------------------------
  64. TVmsCtlrManager *VmsManager = NULL;
  65. //---------------------------------------------------------------------------
  66. TVmsCtlrManager::TVmsCtlrManager()
  67. {
  68. Total = 0;
  69. Error = 0;
  70. Normal = 0;
  71. Module = 0;
  72. }
  73. //---------------------------------------------------------------------------
  74. TVmsCtlrManager::~TVmsCtlrManager()
  75. {
  76. FLists.RemoveAll();
  77. }
  78. //---------------------------------------------------------------------------
  79. void TVmsCtlrManager::InitProvide(bool AProvide/*=false*/)
  80. {
  81. try
  82. {
  83. FLists.Lock();
  84. FOR_STL(TVmsCtlr*, pObj, VmsManager->FLists)
  85. {
  86. pObj->FProvide = AProvide;;
  87. }
  88. }
  89. __finally
  90. {
  91. FLists.UnLock();
  92. }
  93. }
  94. //---------------------------------------------------------------------------
  95. bool ChangedState(INT_VMS_STATE *DSTATE, INT_VMS_STATE *RSTATE)
  96. {
  97. if (DSTATE->OprMode != RSTATE->OprMode) return true;
  98. //if (DSTATE->Comm != RSTATE->Comm) return true;
  99. if (DSTATE->Wcomm != RSTATE->Wcomm) return true;
  100. if (DSTATE->DoorStatus != RSTATE->DoorStatus) return true;
  101. if (DSTATE->ModulePowerStatus != RSTATE->ModulePowerStatus) return true;
  102. if (DSTATE->BodyTemp != RSTATE->BodyTemp) return true;
  103. if (DSTATE->LuminanceStatus != RSTATE->LuminanceStatus) return true;
  104. if (DSTATE->FanStatus != RSTATE->FanStatus) return true;
  105. if (DSTATE->HeaterStatus != RSTATE->HeaterStatus) return true;
  106. if (DSTATE->ExternalLightStatus != RSTATE->ExternalLightStatus) return true;
  107. if (DSTATE->AlarmLightStatus != RSTATE->AlarmLightStatus) return true;
  108. if (DSTATE->SpeakerStatus != RSTATE->SpeakerStatus) return true;
  109. //if (!memcmp(DSTATE->ControllerCurrentTime, RSTATE->ControllerCurrentTime, INT_VMS_MAX_DATETIME)) return true;
  110. if (DSTATE->Voltage != RSTATE->Voltage) return true;
  111. if (DSTATE->ModuleState != RSTATE->ModuleState) return true;
  112. if (DSTATE->ModuleVertical != RSTATE->ModuleVertical) return true;
  113. if (DSTATE->ModuleHorizontal != RSTATE->ModuleHorizontal) return true;
  114. if (memcmp(DSTATE->ModuleStatus, RSTATE->ModuleStatus, INT_VMS_MAX_MODULE_BIT)) return true;
  115. if (DSTATE->PowerCount != RSTATE->PowerCount) return true;
  116. if (memcmp(DSTATE->PowerStatus, RSTATE->PowerStatus, INT_VMS_MAX_POWER_BIT)) return true;
  117. if (DSTATE->ScheduledMessageOperatingTime != RSTATE->ScheduledMessageOperatingTime) return true;
  118. if (DSTATE->ModuleOperatingTemperature != RSTATE->ModuleOperatingTemperature) return true;
  119. if (DSTATE->FanOperatingTemperature != RSTATE->FanOperatingTemperature) return true;
  120. if (DSTATE->HeaterOperatingTemperature != RSTATE->HeaterOperatingTemperature) return true;
  121. if (DSTATE->ExternalLightOperatingLuminance != RSTATE->ExternalLightOperatingLuminance) return true;
  122. if (DSTATE->ModuleBasicFailureRate != RSTATE->ModuleBasicFailureRate) return true;
  123. if (DSTATE->MaximumRetry != RSTATE->MaximumRetry) return true;
  124. if (DSTATE->ResponseTimeOut != RSTATE->ResponseTimeOut) return true;
  125. if (DSTATE->BlinkingCycleTime != RSTATE->BlinkingCycleTime) return true;
  126. return false;
  127. }
  128. //---------------------------------------------------------------------------
  129. void InitDownLoadInfo(VMS_DOWNLOAD_INFO *AInfo)
  130. {
  131. AInfo->Enable = vms_download_disable;
  132. AInfo->SaveFlag = -1;
  133. AInfo->dTimer = Now();
  134. AInfo->Count = 0;
  135. }
  136. //---------------------------------------------------------------------------
  137. void InitCtlModeInfo(VMS_CONTROL_MODE *AInfo)
  138. {
  139. AInfo->SaveFlag = -1;
  140. AInfo->pTimer = Now();
  141. }
  142. //---------------------------------------------------------------------------
  143. void EventInit(VMS_EVENT_INFO *AInfo)
  144. {
  145. AInfo->Count = 0;
  146. for (int ii = 0; ii < VMS_MAX_EVENT; ii++)
  147. {
  148. AInfo->Unit[ii].LINK_ID = "";
  149. AInfo->Unit[ii].IFSC_ID = "";
  150. AInfo->Unit[ii].VMS_IFSC_ID = "";
  151. AInfo->Unit[ii].VMS_IFSC_NM = "";
  152. AInfo->Unit[ii].DSPL_STRT_NODE_NM = "";
  153. AInfo->Unit[ii].DSPL_END_NODE_NM = "";
  154. AInfo->Unit[ii].DETR_ID = "";
  155. AInfo->Unit[ii].DSPL_PRRT = "";
  156. AInfo->Unit[ii].INCD_OCRR_ID = "";
  157. AInfo->Unit[ii].STRT_LCTN_NM = "";
  158. AInfo->Unit[ii].END_LCTN_NM = "";
  159. AInfo->Unit[ii].OCRR_LCTN_NM = "";
  160. AInfo->Unit[ii].VMS_INCD_TYPE_NM = "";
  161. AInfo->Unit[ii].VMS_INCD_TYPE_CD = "";
  162. AInfo->Unit[ii].VMS_INCD_DETL_NM = "";
  163. AInfo->Unit[ii].VMS_INCD_DETL_TYPE_CD = "";
  164. AInfo->Unit[ii].CMTR_GRAD_NM = "";
  165. AInfo->Unit[ii].CMTR_GRAD_CD = "";
  166. AInfo->Unit[ii].INCD_CLSR_LANE = "";
  167. AInfo->Unit[ii].INCD_STRT_DT = "";
  168. AInfo->Unit[ii].INCD_END_PRAR_DT = "";
  169. }
  170. }
  171. //---------------------------------------------------------------------------
  172. void SafeInit(VMS_SAFE_INFO *AInfo)
  173. {
  174. AInfo->Count = 0;
  175. for (int ii = 0; ii < VMS_MAX_SAFE; ii++)
  176. {
  177. AInfo->Unit[ii].SAFE_ALM_ID = "";
  178. AInfo->Unit[ii].MSG_TP = 2;
  179. AInfo->Unit[ii].RGST_DT = "";
  180. AInfo->Unit[ii].ALM_STRT_DT = "";
  181. AInfo->Unit[ii].ALM_END_DT = "";
  182. AInfo->Unit[ii].MSG_LN_1 = "";
  183. AInfo->Unit[ii].MSG_LN_2 = "";
  184. AInfo->Unit[ii].MSG_LN_3 = "";
  185. }
  186. }
  187. //---------------------------------------------------------------------------
  188. void ScheduleInit(VMS_SCHEDULE_INFO *AInfo)
  189. {
  190. AInfo->Count = 0;
  191. for (int ii = 0; ii < VMS_MAX_SCHEDULE; ii++)
  192. {
  193. AInfo->Unit[ii].TRFC_SITU_TYPE_CD = 0;
  194. AInfo->Unit[ii].PHASE = 0;
  195. AInfo->Unit[ii].VMS_FORM_ID = "";
  196. AInfo->Unit[ii].FRST_VMS_IFSC_ID = "";
  197. AInfo->Unit[ii].SECD_VMS_IFSC_ID = "";
  198. AInfo->Unit[ii].THIR_VMS_IFSC_ID = "";
  199. AInfo->Unit[ii].FOUR_VMS_IFSC_ID = "";
  200. AInfo->Unit[ii].FRST_IMG_IFSC_ID = "";
  201. AInfo->Unit[ii].SECD_IMG_IFSC_ID = "";
  202. AInfo->Unit[ii].THIR_IMG_IFSC_ID = "";
  203. AInfo->Unit[ii].FOUR_IMG_IFSC_ID = "";
  204. AInfo->Unit[ii].DSPL_HH = 0;
  205. AInfo->Unit[ii].VMS_FORM_PRRT_CD = "";
  206. AInfo->Unit[ii].VMS_IFSC_ID = "";
  207. AInfo->Unit[ii].EVENT = NULL;
  208. }
  209. }
  210. //---------------------------------------------------------------------------