//--------------------------------------------------------------------------- #ifndef CDSVmsCtlrFH #define CDSVmsCtlrFH //--------------------------------------------------------------------------- #include #include #include #include #include "LibSTLF.hpp" //--------------------------------------------------------------------------- #include "VitzroCommF.h" #include "ITSLogF.h" #include "TVmsFormF.h" //--------------------------------------------------------------------------- typedef enum en_object_state { object_disable = 0, object_enable = 1, } EN_OBJECT_STATE; typedef enum en_bit_state { bit_disable = 0, bit_enable = 1, } EN_BIT_STATE; typedef enum en_state { state_close = 0, state_open = 1, state_stop = 0, state_run = 1, state_normal = 0, state_error = 1, state_unknown= 2, } EN_STATE; typedef enum en_process_state { process_fail = 0, process_run, process_stop, } EN_PROCESS_STATE; //--------------------------------------------------------------------------- // ÇÁ·Î¼¼½º Á¤º¸ //--------------------------------------------------------------------------- class PROCESS_INFO { public: PROCESS_INFO() { UseFlag = bit_disable; Status = process_fail; Comm = state_close; pThread = NULL; ActiveIndicator = false; wTimer = Now() - 1; }; ~PROCESS_INFO() { } public: BYTE UseFlag; BYTE Status; /* ÇÁ·Î¼¼½º »óÅÂ, 0:ºñÁ¤»ó 1:Á¤»ó 2:Á¤Áö */ BYTE Comm; /* Åë½Å»óÅÂ, 0:close, 1:open */ void *pThread; /* ½º·¹µå Æ÷ÀÎÅÍ */ bool ActiveIndicator; /* ½º·¹µå ½ÇÇà »óÅ */ TDateTime wTimer; /* timer for connect wait time check */ }; //--------------------------------------------------------------------------- // VMS Á¦¾î¸ðµå typedef struct vms_form_download { BYTE Control; /* VMS Á¦¾î¸ðµå */ AnsiString ManSceId; /* ¼öµ¿½Ã³ª¸®¿ÀID */ AnsiString EmeSceId; /* ±ä±Þ½Ã³ª¸®¿ÀID */ AnsiString CurSceId; /* ÇöÀç½Ã³ª¸®¿ÀID */ bool Enable; /* Ȱ¼ºÈ­ ¿©ºÎ */ int MaxDisplayForm; /* ÃÖ´ë Ç¥ÃâÆû °¹¼ö */ AnsiString SvcDate; /* Á¦°ø½Ã°¢ */ int SaveFlag; /* Á¦°øÁ¤º¸ ÀúÀå ¿©ºÎ */ TDateTime pTimer; /* timer for provide */ bool Result; } VMS_CONTROL_MODE; // VMS ´Ù¿î·Îµå #define VMS_MAX_DOWNLOAD 8 /* ÃÖ´ë VMS ´Ù¿î·Îµå */ typedef struct VmsDownLoadInfo { bool Enable; /* Ȱ¼ºÈ­ ¿©ºÎ */ int SaveFlag; /* ´Ù¿î·ÎµåÁ¤º¸ ÀúÀå ¿©ºÎ */ TDateTime dTimer; /* timer for download */ int Count; /* Á¤º¸ °¹¼ö */ struct { AnsiString RegDate; /* µî·ÏÀϽà */ AnsiString FileType; /* ´Ù¿î·ÎµåÆÄÀÏÀ¯Çü */ AnsiString FileId; /* ´Ù¿î·ÎµåÆÄÀÏID */ AnsiString SendStartDate; /* Àü¼Û½ÃÀ۽ð¢ */ AnsiString SendEndDate; /* Àü¼Û¿Ï·á½Ã°¢ */ int SendStep; /* Àü¼ÛÁøÇà´Ü°è */ int SendResult; /* Àü¼Û°á°ú */ } Unit[VMS_MAX_DOWNLOAD]; } VMS_DOWNLOAD_INFO; typedef enum en_vms_downalod { vms_download_disable = 0, vms_download_enable = 1, } EN_VMS_DOWNLOAD; typedef enum en_vms_download_step { send_wait, /* 0:´ë±â */ send_progress, /* 1:Àü¼ÛÁß */ send_complete, /* 2:Àü¼Û¿Ï·á */ } EN_VMS_DOWNLOAD_STEP; // Àü¼Û°á°ú typedef enum en_send_result { send_result_fail, /* 0:½ÇÆÐ */ send_result_succ /* 1:¼º°ø */ } EN_SEND_RESULT; //--------------------------------------------------------------------------- #define VMS_MAX_EVENT 16 typedef struct vms_event_detl { AnsiString LINK_ID; AnsiString IFSC_ID; AnsiString VMS_IFSC_ID; AnsiString VMS_IFSC_NM; AnsiString DSPL_STRT_NODE_NM; AnsiString DSPL_END_NODE_NM; AnsiString DETR_ID; AnsiString DSPL_PRRT; AnsiString INCD_OCRR_ID; AnsiString STRT_LCTN_NM; AnsiString END_LCTN_NM; AnsiString OCRR_LCTN_NM; AnsiString VMS_INCD_TYPE_NM; AnsiString VMS_INCD_TYPE_CD; AnsiString VMS_INCD_DETL_NM; AnsiString VMS_INCD_DETL_TYPE_CD; AnsiString CMTR_GRAD_NM; AnsiString CMTR_GRAD_CD; AnsiString INCD_CLSR_LANE; AnsiString INCD_STRT_DT; AnsiString INCD_END_PRAR_DT; AnsiString ROAD_NM; AnsiString SPOT_NM; } VMS_EVENT_DETL; typedef struct vms_event_info { int Count; VMS_EVENT_DETL Unit[VMS_MAX_EVENT]; } VMS_EVENT_INFO; //--------------------------------------------------------------------------- #define VMS_MAX_SAFE 16 typedef struct vms_safe_detl { AnsiString SAFE_ALM_ID; //Àç³­¾ÈÀü ¾Ë¶÷ ID(YYYYMMDDNNNNN) int MSG_TP; //Ç¥Ãâ¸Þ½ÃÁöÁ¾·ù(2:2´Ü¸Þ½ÃÁö,3:3´Ü¸Þ½ÃÁö) AnsiString RGST_DT; //µî·Ï ÀϽÃ(YYYYMMDDHH24MISS) AnsiString ALM_STRT_DT; //¹æ¼Û½ÃÀ۽ð¢(YYYYMMDDHH24MISS) AnsiString ALM_END_DT; //¹æ¼ÛÁ¾·á½Ã°¢(YYYYMMDDHH24MISS) AnsiString MSG_LN_1; //Àç³­¾ÈÀü¹®ÀÚ 1¿­ AnsiString MSG_LN_2; //Àç³­¾ÈÀü¹®ÀÚ 2¿­ AnsiString MSG_LN_3; //Àç³­¾ÈÀü¹®ÀÚ 3¿­ } VMS_SAFE_DETL; typedef struct vms_safe_info { int Count; VMS_SAFE_DETL Unit[VMS_MAX_SAFE]; } VMS_SAFE_INFO; //--------------------------------------------------------------------------- #define VMS_MAX_SCHEDULE 16 typedef struct vms_schedule_detl { int TRFC_SITU_TYPE_CD; //VARCHAR2(7) N ½ºÄÉÁÙ À¯Çü ÄÚµå(0:±³ÅëÁ¤º¸,1:µ¹¹ß,2:°ø»ç/Çà»ç¹®¾È,3:È«º¸¹®¾È,4:¿ìȸµµ·Î,5:°íÁ¤½ºÄÉÁÙ) int PHASE; //NUMBER(2) N PHASE AnsiString VMS_FORM_ID; //NUMBER(5) Y VMS FORM ID AnsiString FRST_VMS_IFSC_ID; //NUMBER(10) Y 1´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString SECD_VMS_IFSC_ID; //NUMBER(10) Y 2´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString THIR_VMS_IFSC_ID; //NUMBER(10) Y 3´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString FOUR_VMS_IFSC_ID; //NUMBER(10) Y 4´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString FRST_IMG_IFSC_ID; //NUMBER(10) Y 1´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID AnsiString SECD_IMG_IFSC_ID; //NUMBER(10) Y 2´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID AnsiString THIR_IMG_IFSC_ID; //NUMBER(10) Y 3´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID AnsiString FOUR_IMG_IFSC_ID; //NUMBER(10) Y 4´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID int DSPL_HH; //NUMBER(3) Y 0 Ç¥Ã⠽ð£ AnsiString VMS_FORM_PRRT_CD; //VARCHAR2(3) Y VMS FORM ¿ì¼±¼øÀ§ ÄÚµå AnsiString VMS_IFSC_ID; //µµÇü½Ä ¹è°æ ÇÏ´Ü ¼ÒÅëÁ¤º¸ Á¦°ø±¸°£ ID VMS_EVENT_DETL *EVENT; VMS_SAFE_DETL *SAFE; //Àç³­¾ÈÀü } VMS_SCHEDULE_DETL; typedef struct vms_schedule_info { int Count; VMS_SCHEDULE_DETL Unit[VMS_MAX_SCHEDULE]; } VMS_SCHEDULE_INFO; //--------------------------------------------------------------------------- class TVmsIfsc { public: TVmsIfsc() {}; ~TVmsIfsc(){}; public: AnsiString VMS_IFSC_ID; //NUMBER(10) N VMS Á¤º¸Á¦°ø±¸°£ ID int DSPL_PRRT; //NUMBER(2) Y Ç¥Ãâ ¿ì¼±¼øÀ§ }; //--------------------------------------------------------------------------- class TVmsCtlr { public: TVmsCtlr(); ~TVmsCtlr(); private: CRITICAL_SECTION FCS; public: PROCESS_INFO Server; PROCESS_INFO Client; AnsiString ChangeDate; /* º¯°æ½Ã°¢ */ TThreadList *pPackQueue; /* ÆÐŶ ¹öÆÛ */ public: AnsiString VmsNo; /* VMS NO */ AnsiString VmsId; /* VMS ID */ AnsiString VmsType; /* VMSÁ¾·ù */ AnsiString Name; /* ¸íĪ */ AnsiString Location; /* ¼³Ä¡À§Ä¡ */ int LocalNo; /* Local¹øÈ£ */ AnsiString IpAddress; /* IP Address */ AnsiString WlTelNo; /* ¹«¼±Åë½Å¿¬°á¹øÈ£ */ AnsiString WlIp; /* ¹«¼±Åë½Å IP Address */ int WlPort; /* ¹«¼±Åë½Å Port */ AnsiString OPER_MODE; /* ¿î¿µ ¸ðµå A:Auto, F:Fix */ AnsiString ConnectTm; AnsiString DisconnectTm; struct { AnsiString PowerOnTime; /* ON TIME */ AnsiString PowerOffTime; /* OFF TIME */ int Retry; } MODULE; struct { AnsiString SchTime; int Value; int Retry; } LUMINANCE; int VMS_PHSE_CHNG_CYCL; // NUMBER(3) Y VMS Ç¥Ãâ¸é º¯°æ ÁÖ±â int VMS_CMNC_ERR_BASS_VAL; // NUMBER(3) Y VMS Åë½Å ¿À·ù ±âº» °ª int FAN_MTNS_TMPR; // NUMBER(6,3) Y ÆÒ µ¿ÀÛ ¿Âµµ int HETR_MTNS_TMPR; // NUMBER(6,3) Y È÷ÅÍ µ¿ÀÛ ¿Âµµ int VMS_MODL_ERR_RATE; // NUMBER(3) Y VMS ¸ðµâ ¿À·ù À² int VMS_MAX_PHSE_NUM; // NUMBER(2) Y VMS ÃÖ´ë Ç¥Ãâ¸é °³¼ö int WIDTH; int HEIGHT; int ModHorCnt; int ModVerCnt; IntMap FIfscLists; VMS_SCHEDULE_INFO *SCHEDULE; VMS_EVENT_INFO *INCIDENT; VMS_EVENT_INFO *EVENT; VMS_SAFE_INFO *SAFE; VMS_DOWNLOAD_INFO *DOWNLOAD; VMS_CONTROL_MODE *CTLMODE; TVmsFormManager *pForms; bool FSaveState; BYTE FOldState; INT_VMS_STATE DSTATE; INT_VMS_STATE RSTATE; bool FProvide; bool FModeChange; bool FIsOldProtocol; bool FIsFtpDownload; bool FIsProtolFontName; bool FIsStatusAuto; AnsiString VmsDownId; bool FBmpDownload; bool FSymbolDownload; //TODO: 20181230 String DSPL_DT; String DNLD_YN; public: bool FDispLog; TITSLog *FSLog; TITSLog *FCLog; void Lock(); void UnLock(); }; //--------------------------------------------------------------------------- class TVmsCtlrManager { public: TVmsCtlrManager(); ~TVmsCtlrManager(); private: public: unsigned short Total; unsigned short Error; unsigned short Normal; unsigned short Module; ListMap FLists; public: int GetCount() { return FLists.Size(); } void InitProvide(bool AProvide=false); __property int Count = { read = GetCount }; }; //--------------------------------------------------------------------------- extern TVmsCtlrManager *VmsManager; //--------------------------------------------------------------------------- typedef std::map::iterator VmsIterator; #ifndef VMS_STL #define VMS_STL(_class, _pointer) for(VmsIterator it=_list.begin(); it!=_list.end(); ++it, _pointer=(TVmsCtrl*)it->second) #if 0 VmsIterator it; for(it=VmsManager->FLists.FMapObject.begin(); it != VmsManager->FLists.FMapObject.end(); ++it) { TVmsCtlr *pObj = (TVmsCtlr*)it->second; pInfo = pObj->DOWNLOAD; InitDownLoadInfo(pInfo); } #endif #endif bool ChangedState(INT_VMS_STATE *DSTATE, INT_VMS_STATE *RSTATE); void InitDownLoadInfo(VMS_DOWNLOAD_INFO *AInfo); void InitCtlModeInfo(VMS_CONTROL_MODE *AInfo); void EventInit(VMS_EVENT_INFO *AInfo); void SafeInit(VMS_SAFE_INFO *AInfo); void ScheduleInit(VMS_SCHEDULE_INFO *AInfo); #endif