VmsDataTypeF.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. //---------------------------------------------------------------------------
  2. #ifndef VmsDataTypeFH
  3. #define VmsDataTypeFH
  4. //---------------------------------------------------------------------------
  5. #include "VitzroCommF.h"
  6. #define VMS_MAX_RETRY_COUNT 3 /* 3 EA */
  7. #define VMS_DOWNLOAD_TIMEOUT 30 /* 30 sec */
  8. #define VMS_PROVIDE_TIMEOUT 30 /* 30 sec */
  9. #define VMS_BASE_DEFAULT_ID 8000 /* 기본 시나리오 ID */
  10. #define VMS_BASE_MANUAL_ID 9000 /* 수동 시나리오 ID */
  11. // 제공유형
  12. typedef enum en_provide_type
  13. {
  14. provide_event = 1, /* 1:정보가공 완료 */
  15. provide_mode, /* 2:운영모드 변경 */
  16. } EN_PROVIDE_TYPE;
  17. typedef enum en_object_id
  18. {
  19. OBJ_None = 0, /* None */
  20. OBJ_RealTimeDisplay = 1, /* 실시간정보표출 */
  21. OBJ_ScheduledDisplay = 2, /* 계획된정보표출 */
  22. OBJ_DownloadGraphicData = 3, /* 그래픽데이터 다운로드 */
  23. OBJ_StatusControl = 4, /* 상태제어 */
  24. OBJ_StatusSetting = 5, /* 상태설정 */
  25. OBJ_GeneralStatus = 6, /* 기본상태정보 */
  26. OBJ_PowerStatus = 7, /* 전원상태정보 */
  27. OBJ_ModuleStatus = 8, /* 모듈상태정보 */
  28. OBJ_DotStatus = 9, /* 도트상태정보 */
  29. OBJ_ScreenStatus = 10, /* 표출상태정보 */
  30. OBJ_DisplayingData = 11, /* 표출정보 */
  31. OBJ_RealtimeFtpDisplay = 12, /* 표출정보 */
  32. } EN_OBJECT_ID;
  33. typedef enum en_status_control
  34. {
  35. CTL_MODULE_POWER_ON = 1,
  36. CTL_MODULE_POWER_OFF,
  37. CTL_LUMINANCE_SET,
  38. CTL_CONTROLLER_RESET,
  39. CTL_SCREENSTATUS_REQ,
  40. CTL_REALTIMEDISPLAY_REQ,
  41. } EN_STATUS_CONTROL;
  42. // 제어유형
  43. typedef enum en_control_type
  44. {
  45. CTL_TYPE_PARA_SET = 1, /* 1:환경설정정보 전송 */
  46. CTL_TYPE_POWER_ON = 11, /* 11:전원 On */
  47. CTL_TYPE_POWER_OFF = 12, /* 12:전원 Off */
  48. CTL_TYPE_HEATER_ON = 21, /* 21:히터 On */
  49. CTL_TYPE_HEATER_OFF = 22, /* 22:히터 Off */
  50. CTL_TYPE_FAN_ON = 31, /* 31:팬 On */
  51. CTL_TYPE_FAN_OFF = 32, /* 32:팬 Off */
  52. CTL_TYPE_MODULE_ON = 41, /* 41:전광판 On */
  53. CTL_TYPE_MODULE_OFF = 42, /* 42:전광판 Off */
  54. CTL_TYPE_RESET = 61, /* 61:제어기리셋 */
  55. CTL_TYPE_LUMINANCE = 71, /* 71:휘도제어 */
  56. } EN_CONTROL_TYPE;
  57. // 제어결과
  58. typedef enum en_control_ressult
  59. {
  60. CTL_RESULT_SUCC, /* 0:성공 */
  61. CTL_RESULT_FAIL /* 1:실패 */
  62. } EN_CONTROL_RESULT;
  63. // 스레드 자체 요청 메시지
  64. typedef struct local_command
  65. {
  66. BYTE OpCode;
  67. int obj; /* EN_OBJECT_ID */
  68. DWORD DataPacketNumber; /* DataPacket Number */
  69. int Idx; /* index */
  70. bool GeneralStatus; /* 기본상태정보 */
  71. bool PowerStatus; /* 전원상태정보 */
  72. bool ModuleStatus; /* 모듈상태정보 */
  73. bool DotStatus;
  74. bool ScreenStatus;
  75. bool DisplayingData;
  76. bool ScreenDataStatusMessage;
  77. bool RealTimeDisplayMessage;
  78. } LOCAL_COMMAND;
  79. /* 설정 정보 */
  80. typedef struct vms_control_info
  81. {
  82. BYTE OpCode;
  83. int obj; /* EN_OBJECT_ID */
  84. DWORD DataPacketNumber; /* DataPacket Number */
  85. int Idx; /* index */
  86. BYTE CmdTime[INT_VMS_MAX_DATETIME]; /* 명령수행시각 */
  87. BYTE VmsId[INT_VMS_MAX_ID+1]; /* VMS ID */
  88. BYTE OperId[INT_VMS_MAX_OPER_ID+1]; /* 제어운영자ID */
  89. BYTE Result; /* 제어결과 */
  90. union
  91. {
  92. struct
  93. {
  94. int SchMsgTime; /* 계획된 메시지 동작시간 */
  95. int ModuleTemp; /* 모듈전원 OFF 온도 */
  96. int FanTemp; /* Fan동작 기준온도 */
  97. int HeaterTemp; /* Heater동작 기준온도 */
  98. int ModuleFail; /* 모듈장애 판단율 */
  99. int RetryCount; /* 재시도 횟수 */
  100. int TimeOut; /* 최대응답대기시간 */
  101. } Para;
  102. } Data;
  103. } VMS_CONTROL_INFO;
  104. typedef struct
  105. {
  106. int obj; /* EN_OBJECT_ID */
  107. DWORD DataPacketNumber; /* DataPacket Number */
  108. int Idx; /* index */
  109. } VMS_SERVER_CTL_INFO;
  110. /* 저장 정보 */
  111. typedef enum en_save_type
  112. {
  113. save_provide = 1, /* 1:제공정보 */
  114. save_download /* 2:다운로드정보 */
  115. } EN_SAVE_TYPE;
  116. typedef struct save_struct
  117. {
  118. BYTE Type; /* 저장유형 */
  119. BYTE Count; /* 정보 갯수 */
  120. void *pObj[INT_MAX_VMS_STATE];
  121. } SAVE_STRUCT;
  122. /* 제공 정보 */
  123. typedef struct provide_struct
  124. {
  125. BYTE Type; /* 제공유형 */
  126. BYTE Count; /* 대상 VMS 개수 */
  127. INT_VMS_MODE Unit[INT_MAX_VMS_MODE];
  128. } PROVIDE_STRUCT;
  129. #define ALL_VMS_ID "ALL" /* 전체 VMS */
  130. // VMS 폼 스케줄종류
  131. typedef enum enFormScheduleType
  132. {
  133. enFormTraffic = 0,
  134. enFormDolbal,
  135. enFormGongsa,
  136. enFormHongbo,
  137. enFormDeture,
  138. enFormFixed,
  139. enFormBase,
  140. enFormCongest,
  141. } EN_FORM_SCHEDULE_TYPE;
  142. // VMS 폼 유형
  143. typedef enum enFormKind
  144. {
  145. enFormKindTrfRow1 = 11, // 소통상황(1단)
  146. enFormKindTrfRow2 = 12, // 소통상황(2단)
  147. enFormKindTrfRow3 = 13, // 소통상황(3단)
  148. enFormKindTrfRow4 = 14, // 소통상황(4단)
  149. enFormKindTrfImg = 15, // 소통상황(도형식배경소통정보)
  150. enFormKindCongest = 16, // 정체소통상황
  151. enFormKindDolbal = 20, // 돌발문안
  152. enFormKindGongsa = 30, // 공사/행사문안
  153. enFormKindHongbo = 40, // 홍보문안
  154. enFormKindDetour = 50, // 우회도로
  155. } EN_FORM_KIND;
  156. // VMS 객체종류
  157. typedef enum en_object_data
  158. {
  159. text_object_data, /* 0:문자열 */
  160. graphic_object_data, /* 1:이미지 */
  161. graphicID_object_data, /* 2:이미지ID */
  162. } EN_OBJECT_DATA;
  163. // VMS 제공정보 객체 코드
  164. typedef enum en_vms_object_type
  165. {
  166. vms_obj_none, /* 0:정보없음 */
  167. vms_obj_text, /* 1:문자열 */
  168. vms_obj_bitmap, /* 2:Bitmap ID */
  169. vms_obj_draw, /* 3:Draw */
  170. } EN_VMS_OBJECT_TYPE;
  171. // 소통등급(혼잡도코드)
  172. typedef enum en_traffic_grade
  173. {
  174. grade_none, /* 0:정보없음 */
  175. grade_smoothness, /* 1:원활 */
  176. grade_delay, /* 2:지체 */
  177. grade_congestion, /* 3:정체 */
  178. } EN_TRAFFIC_GRADE;
  179. // VMS 컬러
  180. typedef enum en_color_code
  181. {
  182. color_black, /* 0:검정색 */
  183. color_red, /* 1:적색 */
  184. color_green, /* 2:녹색 */
  185. color_amber, /* 3:황색 */
  186. } EN_COLOR_CODE;
  187. // VMS 객체 폰트
  188. typedef enum en_font_code
  189. {
  190. /* 0:굴림 */
  191. font_malgun = 1, /* 1:고딕체 */
  192. font_hygmj, /* 2:HY견명조 */
  193. font_gulim, /* 3:굴림체 */
  194. font_gungsuh, /* 4:궁서체 */
  195. font_dotum, /* 5:돋움체 */
  196. font_batang /* 6:바탕체 */
  197. } EN_FONT_CODE;
  198. // 폰트굵기
  199. typedef enum en_font_thickness
  200. {
  201. font_thickness_normal, /* 0:보통 */
  202. font_thickness_bold, /* 1:굵게 */
  203. } EN_FONT_THICKNESS;
  204. // 문자열정열방식
  205. typedef enum en_text_align
  206. {
  207. text_align_left, /* 0:LEFT */
  208. text_align_right, /* 1:RIGHT */
  209. text_align_center, /* 2:CENTER */
  210. } EN_TEXT_ALIGN;
  211. /*
  212. * VMS ASN.1 Code convert functions
  213. */
  214. int GradeToColorCode(int AGrade);
  215. TColor GradeToFillColor(int AGrade);
  216. AnsiString GradeToString(int AGrade, int AType);
  217. TColor CodeToColor(int ACode);
  218. AnsiString CodeToFont(int ACode);
  219. AnsiString GetFtpImageId(AnsiString AImgNmbr);
  220. #endif