//--------------------------------------------------------------------------- #ifndef CDSCtlrFH #define CDSCtlrFH //--------------------------------------------------------------------------- #include #include #include #include //--------------------------------------------------------------------------- #include "ITSLibF.h" #include "CDSItsObjectF.h" #include "CenterCommF.h" #include "ITSLogF.h" #include "VmsFormF.h" #include "PacketHandllingF.h" //--------------------------------------------------------------------------- /* °´Ã¼ »ç¿ë¿©ºÎ Ç÷¡±× */ typedef enum en_object_state { object_disable = 0, object_enable = 1, } EN_OBJECT_STATE; /* BIT »ç¿ë¿©ºÎ Ç÷¡±× */ typedef enum en_bit_state { bit_disable = 0, bit_enable = 1, } EN_BIT_STATE; /* »ç¿ë¿©ºÎ Ç÷¡±× */ typedef enum _e_use_flag { use_disable = 0, use_enable, } e_use_flag; /* ½º·¹µå »óÅ Ç÷¡±× */ typedef enum _e_thread_state { thr_ready = 0, thr_run, thr_stop, } e_thread_state; /* Åë½Å»óÅ Ç÷¡±× */ typedef enum _e_comm_state { comm_close = 0, comm_open, } e_comm_state; /* Á¦¾î±â»óÅ Ç÷¡±× */ typedef enum _e_ctlr_state { state_normal = 0, state_error, state_unknown, } e_ctlr_state; typedef struct _THR_INFO { public: void Init() { useFlag = use_enable; thrState = thr_ready; commState = comm_close; pThread = NULL; activeIndicator = false; }; BYTE useFlag; /* ½º·¹µå »ç¿ë ¿©ºÎ */ BYTE thrState; /* ½º·¹µå »óÅ */ BYTE commState; /* Åë½Å »óÅ */ AnsiString ConnectTm; AnsiString DisconnectTm; void *pThread; /* ½º·¹µå Æ÷ÀÎÅÍ */ bool activeIndicator; /* ½º·¹µå ½ÇÇà »óÅ */ } THR_INFO; //--------------------------------------------------------------------------- // 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; bool Schedule; /* ½ºÄÉÁÙ¿¡ ÀÇÇÑ ´Ù¿î·Îµå ÀÎ °æ¿ì */ } 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; AnsiString VMS_INCD_RSTR_TYPE_CD; AnsiString VMS_INCD_RSTR_TYPE_NM; AnsiString INCD_TITL; } 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 INT_VMS_MAX_FORM typedef struct vms_schedule_detl { AnsiString VMS_SCH_TYPE; //VARCHAR2(5) N VMS ½ºÄÉÁÙ À¯Çü(A:ÀÚµ¿,F:°íÁ¤,B:±âº») int VMS_SCH_FORM_TYPE; //NUMBER(3) N VMS Æû ½ºÄÉÁì À¯Çü(0:±³Åë,1:µ¹¹ß,2:°ø»çÇà»ç,3:È«º¸,4:¿ìȸ,5:Á¤Ã¼,6:¾ÈÀü,7:µ¿¿µ»ó,8:½ºÆ®¸®¹Ö¿µ»ó) int PHASE; //NUMBER(2) N PHASE AnsiString VMS_FORM_ID; //NUMBER(5) Y VMS FORM ID int DSPL_HH; //NUMBER(3) Y 0 Ç¥Ã⠽ð£ AnsiString DSPL_STRT_HH; //VARCHAR2(14) N Ç¥Ãâ½ÃÀ۽ð£ AnsiString DSPL_END_HH; //VARCHAR2(14) N Ç¥ÃâÁ¾·á½Ã°£ 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 AnsiString SYMB_LIB_NMBR; //NUMBER(4) Y 0 µ¿¿µ»óÀÎ °æ¿ì µ¿¿µ»ó ÆÄÀÏ ½É¹ú ¾ÆÀ̵ð AnsiString STRM_ADDR; //VARCHAR2(60) Y ½ºÆ®¸®¹ÖÀΰæ¿ì ½ºÆ®¸®¹Ö ÁÖ¼Ò AnsiString VMS_IFSC_ID; //µµÇü½Ä ¹è°æ ÇÏ´Ü ¼ÒÅëÁ¤º¸ Á¦°ø±¸°£ ID bool DSPL_CNGS_YN; 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; //--------------------------------------------------------------------------- #define VMS_MAX_CNGS_FORM 20 class TVmsIfsc { public: TVmsIfsc() { IsUsed = true; CNGS_SPD = 0; CNGST_CNT = 0; dtCngst = Now(); CNGS_CNFM_YN = false; CNGS_CNFM_SPED = 0; }; ~TVmsIfsc(){}; public: AnsiString VMS_IFSC_ID; //NUMBER(10) N VMS Á¤º¸Á¦°ø±¸°£ ID int DSPL_PRRT; //NUMBER(2) Y Ç¥Ãâ ¿ì¼±¼øÀ§ AnsiString AXIS_YN; //CHAR(1) Y 'N' ÃàÁ¤º¸ »ý¼º¿ë int CNGS_SPD; bool CNGS_CNFM_YN; int CNGS_CNFM_SPED; bool IsUsed; int CNGST_CNT; TDateTime dtCngst; }; //--------------------------------------------------------------------------- class TClientSession; class TDownloadForm { public: TDownloadForm() { } ~TDownloadForm() { } public: AnsiString VMS_FORM_ID; //NUMBER(5) N VMS FORM ID TDateTime DownloadTm; AnsiString UPDT_DT; bool AlreadyDownload; public: }; //--------------------------------------------------------------------------- class TCDSCtlr { public: TCDSCtlr(); ~TCDSCtlr(); private: CRITICAL_SECTION FCS; public: THR_INFO Server; THR_INFO Client; TThreadList *pPackQueue; /* ÆÐŶ ¹öÆÛ */ public: bool Used; AnsiString CTLR_NMBR; // N NUMBER(10) N Á¦¾î±â ¹øÈ£ AnsiString CTLR_ID; // N VARCHAR2(10) Y Á¦¾î±â ID AnsiString NM; // N VARCHAR2(40) Y ¸í AnsiString CTLR_IP; // N VARCHAR2(20) Y Á¦¾î±â ¾ÆÀÌÇÇ int CTLR_PORT; // N NUMBER(5) Y 0 Á¦¾î±â Æ÷Æ® int GROUP_NO; int CTLR_LOCAL_NO; // N NUMBER(5) Y 0 Á¦¾î±â Áö¿ª¹øÈ£ AnsiString TYPE_CD; // N VARCHAR2(7) Y À¯Çü ÄÚµå AnsiString ISTL_LCTN_NM; // N VARCHAR2(40) Y ¼³Ä¡ À§Ä¡ ¸í double X_CRDN; // N NUMBER(11,8) Y X ÁÂÇ¥ double Y_CRDN; // N NUMBER(10,8) Y Y ÁÂÇ¥ AnsiString DEL_YN; // N CHAR(1) Y 'N' »èÁ¦ ¿©ºÎ TDateTime dtConnect; TDateTime dtDisConnect; DWORD dwConnectCnt; ////////////////////////////// Private controller information int WIDTH, HEIGHT; int ROW_NUM, COL_NUM; int MODL_ROW_NUM, MODL_COL_NUM; int POWR_ROW_NUM, POWR_COL_NUM; int VMS_MAX_PHSE_NUM; // N NUMBER(2) Y 14 VMS ÃÖ´ë Ç¥Ãâ¸é °³¼ö int DEF_PHSE_CHNG_CYCL; // N NUMBER(3) Y 5 ±âº»¸Þ½ÃÁöÁÖ±â int PANL_PWER_MODE; // N NUMBER(3) Y 2 Àü±¤ÆÇ Àü¿ø ¸ðµå(0x00:²¨Áü,0x01:ÄÑÁü,0x02:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) int FAN_MODE; // N NUMBER(3) Y 2 FAN µ¿ÀÛ¸ðµå(0x00:²¨Áü,0x01:ÄÑÁü,0x02:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) int FAN_RUN_TMPR; // N NUMBER(3) Y 30 ÆÒ µ¿ÀÛ ¿Âµµ int HETR_MODE; // N NUMBER(3) Y 2 È÷ÅÍ µ¿ÀÛ¸ðµå(0x00:²¨Áü,0x01:ÄÑÁü,0x02:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) int HETR_RUN_TMPR; // N NUMBER(3) Y 0 È÷ÅÍ µ¿ÀÛ ¿Âµµ int BRGH_MODE; // N NUMBER(3) Y 2 ÈÖµµ ¸ðµå(0x00:ÁÖ°£,0x01:¾ß°£,0x00:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) int BRGH_CURR_STEP; // N NUMBER(3) Y 40 ÈÖµµ ÇöÀç ´Ü°è(0~100) int BRGH_WEEK_STEP; // N NUMBER(3) Y 64 ÈÖµµ ÁÖ°£ ´Ü°è(0~100) int BRGH_NGHT_STEP; // N NUMBER(3) Y 48 ÈÖµµ ¾ß°£ ´Ü°è(0~100) int MODL_ERR_RATE; // N NUMBER(3) Y 10 VMS ¸ðµâ ¿À·ù À² int CMNC_FAIL_RATE; // N NUMBER(3) Y 60 VMS Åë½Å ¿À·ù ±âº» °ª AnsiString OPER_MODE; // N VARCHAR2(7) Y 'A' ¿î¿µ ¸ðµå AnsiString PANL_ON_TIME; // N VARCHAR2(4) Y '0400' Àü±¤ÆÇ ON TIME AnsiString PANL_OFF_TIME; // N VARCHAR2(4) Y '0200' Àü±¤ÆÇ OFF TIME AnsiString ParamResTime; int PROTOCOL_VER; // ±¸¹Ì½Ã ÅØ½ºÆ®, µµÇü½Ä ÇÁ·ÎÅäÄÝ ±¸ºÐÀ» À§ÇØ Ãß°¡ AnsiString DownloadFormId; VMS_DOWNLOAD_DATA FormDownload; TItsMap FDownloadLists; ////////////////////////////// struct { bool IsOnOff; BYTE OnOff; AnsiString PowerOnTime; /* ON TIME */ AnsiString PowerOffTime; /* OFF TIME */ int Retry; } MODULE; struct { AnsiString SchTime; int Value; int Retry; } LUMINANCE; VMS_SCHEDULE_INFO *SCHEDULE; VMS_EVENT_INFO *INCIDENT; VMS_EVENT_INFO *EVENT; VMS_SAFE_INFO *SAFE; VMS_DOWNLOAD_INFO *DOWNLOAD; VMS_CONTROL_MODE *CTRLMODE; TVmsFormManager *pForms; bool FSaveState; 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; bool FExistCngsForm; // À̹øÁÖ±â Á¤Ã¼ÆûÀ» ´Ù¿î·Îµå ÇÒ°Ô Á¸ÀçÇÏ´ÂÁö ¿©ºÎ int FMaxCngsForm; // Á¤Ã¼Æû »ý¼º ÃÖ´ë °¹¼ö BYTE FTxtOpCode; TItsMap FIfscLists; //TItsMap FIfscLists; //¿ì¼±¼øÀ§¸¦ Ű·Î ÇÏ´Â °æ¿ì ////////////////////////////// AnsiString CTLR_NMBR_ID; TClientSession *FSession; AnsiString LOGIN_IPADDR; TDateTime tmStts; String DSPL_DT; int PHASE; public: bool FDispLog; TITSLog *FSLog; TITSLog *FCLog; AnsiString FFtpFormDir; AnsiString FLocalFormDir; AnsiString MODL_STTS; AnsiString PWER_STTS; public: void Lock(); void UnLock(); bool ChangedState(INT_VMS_STATE *DSTATE, INT_VMS_STATE *RSTATE); void InitDownLoadInfo(); void InitCtrlMode(); void InitEvent(); void InitIncident(); void InitSchedule(); void InitSafe(); void InitDownloadFileInfo(); }; //--------------------------------------------------------------------------- class TCDSCtlrManager : public TCDSItsObject { public: TCDSCtlrManager(); ~TCDSCtlrManager(); private: public: int Total; int Error; int Normal; int Module; int FCtlrStts5Min; TItsMap FLists; public: int GetCount() { return FLists.Size(); } void InitProvide(TCDSCtlr *AObj=NULL); __property int Count = { read = GetCount }; public: void InitProvide(); public: int LoadCtlrInfo(TADOConnection *ADbConn); int LoadCtlrStts(TADOConnection *ADbConn); int SaveCtlrStts(TADOConnection *ADbConn, void *AData); int SaveCtlrIpAddr(TADOConnection *ADbConn, void *AData); int SaveCtlrSttsAll(TADOConnection *ADbConn); int SendCtlrSttsAll(); int SaveCtlrParam(TADOConnection *ADbConn, void *AData); }; //--------------------------------------------------------------------------- extern TCDSCtlrManager *CDSCtlrManager; typedef std::map::iterator CtlrItr; //--------------------------------------------------------------------------- #define LOCK_FOR_CTLR(_obj) \ { \ TItsAutoLock lock(CDSCtlrManager->FLists.GetLock()); \ for(CtlrItr it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) \ { \ TCDSCtlr *_obj = (TCDSCtlr*)it->second; #define LOCK_FOR_CTLR_END \ } \ } #define FOR_CTLR \ { \ CtlrItr it; \ for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) \ { \ TCDSCtlr *pObj = (TCDSCtlr*)it->second; #define FOR_CTLR_END \ } \ } #endif