PacketHandllingF.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. //---------------------------------------------------------------------------
  2. #ifndef PacketHandllingFH
  3. #define PacketHandllingFH
  4. //---------------------------------------------------------------------------
  5. #include "VmsProtocolF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma pack(push, 1)
  8. //---------------------------------------------------------------------------
  9. /*
  10. *****************************************************************************
  11. * 프로토콜 수신 OP Code
  12. ****************************************************************************/
  13. typedef enum _e_vms_recv_packet
  14. {
  15. e_rpkt_MIN = 0x00,
  16. e_rpkt_VMS_ID_RES = 0xFF, // client -> server
  17. e_rpkt_NOTIFY_STTS = 0x01, // client -> server
  18. e_rpkt_DNLD_SCENARIO_RES = 0x02, // client -> server
  19. e_rpkt_CTRL_RESET_RES = 0x03, // client -> server
  20. e_rpkt_DNLD_FILE_RES = 0x04, // client -> server
  21. e_rpkt_PARAMETER_RES = 0x05, // client -> server
  22. e_rpkt_CTRL_LED_POWER_RES = 0x06, // client -> server
  23. e_rpkt_CTRL_FAN_POWER_RES = 0x07, // client -> server
  24. e_rpkt_CTRL_BRGH_RES = 0x08, // client -> server
  25. e_rpkt_CTRL_CONFIG_RES = 0x09, // client -> server
  26. e_rpkt_CTRL_TIME_RES = 0x10, // client -> server
  27. e_rpkt_MAX = 0xFF+1,
  28. } e_vms_recv_packet;
  29. /*
  30. *****************************************************************************
  31. * 프로토콜 define
  32. ****************************************************************************/
  33. #define MAX_PACKET_SIZE 4096
  34. #define MAX_VMS_ID 10 /* '00000100001' */
  35. #define MAX_DISP_TIME 12 /* YYYYMMDDHHMI */
  36. #define MAX_SYS_TIME 14 /* YYYYMMDDHHMISS */
  37. #define MAX_FILE_NAME 60
  38. #define MAX_SCENARIO INT_VMS_MAX_FORM
  39. #define MAX_DNLD_FILE INT_VMS_MAX_FORM
  40. /*
  41. *****************************************************************************
  42. * 프로토콜 OP 코드 정의
  43. ****************************************************************************/
  44. #define VMS_STX 0x02 // Start of TeXt
  45. #define VMS_ETX 0x03 // End of TeXt
  46. #define VMS_NULL 0x00
  47. #define VMS_ID_REQ 0xFF // server -> client
  48. #define VMS_ID_RES 0xFF // client -> server
  49. #define NOTIFY_STTS 0x01 // client -> server
  50. #define NOTIFY_STTS_ACK 0x01 // server -> client
  51. #define DNLD_SCENARIO_REQ 0x02 // server -> client
  52. #define DNLD_SCENARIO_RES 0x02 // client -> server
  53. #define CTRL_RESET_REQ 0x03 // server -> client
  54. #define CTRL_RESET_RES 0x03 // client -> server
  55. #define DNLD_FILE_REQ 0x04 // server -> client
  56. #define DNLD_FILE_RES 0x04 // client -> server
  57. #define PARAMETER_REQ 0x05 // server -> client
  58. #define PARAMETER_RES 0x05 // client -> server
  59. #define CTRL_LED_POWER_REQ 0x06 // server -> client
  60. #define CTRL_LED_POWER_RES 0x06 // client -> server
  61. #define CTRL_FAN_POWER_REQ 0x07 // server -> client
  62. #define CTRL_FAN_POWER_RES 0x07 // client -> server
  63. #define CTRL_BRGH_REQ 0x08 // server -> client
  64. #define CTRL_BRGH_RES 0x08 // client -> server
  65. #define CTRL_CONFIG_REQ 0x09 // server -> client
  66. #define CTRL_CONFIG_RES 0x09 // client -> server
  67. #define CTRL_TIME_REQ 0x10 // server -> client
  68. #define CTRL_TIME_RES 0x10 // client -> server
  69. typedef struct _st_head
  70. {
  71. _st_head()
  72. {
  73. Stx = VMS_STX;
  74. OpCode = VMS_NULL;
  75. Length = 0;
  76. }
  77. BYTE Stx;
  78. BYTE OpCode;
  79. char vmsid[MAX_VMS_ID];
  80. WORD Length;
  81. } st_head;
  82. typedef struct _st_simple_req
  83. {
  84. _st_simple_req()
  85. {
  86. Stx = VMS_STX;
  87. OpCode = VMS_NULL;
  88. Length = 0;
  89. Etx = VMS_ETX;
  90. }
  91. BYTE Stx;
  92. BYTE OpCode;
  93. char vmsid[MAX_VMS_ID];
  94. WORD Length;
  95. BYTE Etx;
  96. } st_simple_req;
  97. /*
  98. * VMS ID 요청/응답 (server -> client)
  99. ****************************************************************************/
  100. typedef struct _st_vms_id_req
  101. {
  102. _st_vms_id_req()
  103. {
  104. Stx = VMS_STX;
  105. OpCode = VMS_ID_REQ;
  106. Length = 0;
  107. Etx = VMS_ETX;
  108. }
  109. BYTE Stx;
  110. BYTE OpCode;
  111. WORD Length;
  112. BYTE Etx;
  113. } st_vms_id_req;
  114. typedef struct _st_vms_id_res : public st_head
  115. {
  116. _st_vms_id_res()
  117. {
  118. Length = 1;
  119. OpCode = (BYTE)e_rpkt_VMS_ID_RES;
  120. Ack = 0x00;
  121. Etx = VMS_ETX;
  122. }
  123. BYTE Ack; // 0x00 : 정상
  124. // 0x31 : 데이터크기 불일치
  125. // 0x32 : CRC16 에러
  126. // 0x33 : 정의되지 않은 OP_CODE
  127. // 0x34 : 기타
  128. BYTE Etx;
  129. } st_vms_id_res;
  130. #define ACK_NORMAL 0x00 // 0x00 : 정상
  131. #define ACK_ERR_SIZE 0x31 // 0x31 : 데이터크기 불일치
  132. #define ACK_ERR_CRD 0x32 // 0x32 : CRC16 에러
  133. #define ACK_ERR_OPCODE 0x33 // 0x33 : 정의되지 않은 OP_CODE
  134. #define ACK_ERR_ETC 0x34 // 0x34 : 기타
  135. typedef struct _st_ack
  136. {
  137. _st_ack()
  138. {
  139. Stx = VMS_STX;
  140. OpCode = VMS_NULL;
  141. Length = 1;
  142. Ack = ACK_NORMAL;
  143. Etx = VMS_ETX;
  144. }
  145. BYTE Stx;
  146. BYTE OpCode;
  147. char vmsid[MAX_VMS_ID];
  148. WORD Length;
  149. BYTE Ack; // 0x00 : 정상
  150. // 0x31 : 데이터크기 불일치
  151. // 0x32 : CRC16 에러
  152. // 0x33 : 정의되지 않은 OP_CODE
  153. // 0x34 : 기타
  154. BYTE Etx;
  155. } st_ack;
  156. /*
  157. * 상태정보 수신 통보/응답 (client -> server)
  158. ****************************************************************************/
  159. typedef struct _st_stts
  160. {
  161. char time[MAX_SYS_TIME]; // 현재 제어기 시간
  162. BYTE led; // 0x00 : 작동안함
  163. // 0x01 : 작동중
  164. // 0x02 : 알수없음
  165. BYTE door; // 0x00 : 닫힘
  166. // 0x01 : 열림
  167. // 0x02 : 알수없음
  168. BYTE fan; // 0x00 : 작동안함
  169. // 0x01 : 작동중
  170. // 0x02 : 알수없음
  171. BYTE hetr; // 0x00 : 작동안함
  172. // 0x01 : 작동중
  173. // 0x02 : 알수없음
  174. BYTE tmpr; // 온도값( 0x00~0x3f)
  175. BYTE brgh; // 현재의 휘도값(0x00~0x3f)
  176. BYTE comm; // 0x00 : 정상
  177. // 0x01 : 비정상
  178. } st_stts;
  179. typedef struct _st_notify_stts : public st_head
  180. {
  181. _st_notify_stts()
  182. {
  183. Length = sizeof(st_stts);
  184. }
  185. st_stts stts;
  186. BYTE Etx;
  187. } st_notify_stts;
  188. typedef struct _st_notify_stts_ack : public st_head
  189. {
  190. _st_notify_stts_ack()
  191. {
  192. OpCode = NOTIFY_STTS_ACK;
  193. Length = 1;
  194. Ack = 0x00;
  195. Etx = VMS_ETX;
  196. }
  197. BYTE Ack; // 0x00 : 정상
  198. // 0x31 : 데이터크기 불일치
  199. // 0x32 : CRC16 에러
  200. // 0x33 : 정의되지 않은 OP_CODE
  201. // 0x34 : 기타
  202. BYTE Etx;
  203. } st_notify_stts_ack;
  204. /*
  205. * 시나리오 다운로드 요청/응답 (server -> client)
  206. ****************************************************************************/
  207. #define P_FILE_TYPE_IMAGE 0x01
  208. #define P_FILE_TYPE_VIDEO 0x02
  209. #define P_FILE_TYPE_STREAM 0x03
  210. #define P_FILE_TYPE_TRAFFIC 0x04
  211. #define P_FILE_TYPE_TEXT 0x05
  212. typedef struct _st_scenario
  213. {
  214. BYTE seq; // 시나리오 순번
  215. BYTE type; // 0x01 : 이미지 (JPG)
  216. // 0x02 : 동영상 (AVI)
  217. // 0x03 : URL(스트리밍)
  218. // 0x04 : 소통 이미지
  219. // 0x05 : 표출문구 이미지
  220. BYTE dispEffect; // 표출타입이 이미지일 경우에만 효출효과가 적용된다.
  221. // 0x00 : Static (기본)
  222. // 0x01 : Blink
  223. char fileName[MAX_FILE_NAME]; // 파일명
  224. // ※ 표출 타입별 FTP 폴더 개설
  225. BYTE dispTm; // 표출문구 표출시각('03' : 3초)
  226. char dispStrTm[MAX_DISP_TIME]; // 표출시작시간(0000 00 00 0000)
  227. char dispEndTm[MAX_DISP_TIME]; // 표출종료시각(999912312359)
  228. BYTE dnldFlag; // 파일다운로드 여부 D : 다운로드
  229. // C : 비교후 다운로드(없을경우)
  230. } st_scenario;
  231. typedef struct _st_dnld_scenario_req : public st_head
  232. {
  233. _st_dnld_scenario_req()
  234. {
  235. OpCode = DNLD_SCENARIO_REQ;
  236. }
  237. BYTE type;
  238. BYTE cnt; // 해당 VMS의 전체시나리오 수
  239. st_scenario scenario[MAX_SCENARIO+1];
  240. } st_dnld_scenario_req;
  241. typedef st_ack st_dnld_scenario_res;
  242. /*
  243. * 파일 다운로드 요청/응답 (server -> client)
  244. ****************************************************************************/
  245. typedef struct _st_dnld_file
  246. {
  247. BYTE type; // 표출타입 0x01 : 이미지 (JPG)
  248. // 0x02 : 동영상 (AVI)
  249. char fileName[MAX_FILE_NAME]; // 파일명
  250. // ※ VMS ID 및 표출 타입별 FTP 폴더 개설
  251. } st_dnld_file;
  252. typedef struct _st_dnld_file_req : public st_head
  253. {
  254. _st_dnld_file_req()
  255. {
  256. OpCode = DNLD_FILE_REQ;
  257. }
  258. char cnt[2]; // 전송 파일수
  259. union
  260. {
  261. st_dnld_file file[MAX_DNLD_FILE];
  262. char data[sizeof(st_dnld_file)*MAX_DNLD_FILE+1];
  263. } U;
  264. } st_dnld_file_req;
  265. typedef st_ack st_dnld_file_res;
  266. /*
  267. * 파라미터값 요청/응답 (server -> client)
  268. ****************************************************************************/
  269. typedef st_simple_req st_parameter_req;
  270. typedef struct _st_parameter
  271. {
  272. BYTE led; // 0x00 : 꺼짐
  273. // 0x01 : 켜짐
  274. // 0x02 : 자동
  275. // 0x09 : 알수없음
  276. BYTE fan; // 0x00 : 꺼짐
  277. // 0x01 : 켜짐
  278. // 0x02 : 자동
  279. // 0x09 : 알수없음
  280. BYTE fanTmpr; // Fan 동작온도(0x00~0x3f)
  281. BYTE hetr; // 0x00 : 꺼짐
  282. // 0x01 : 켜짐
  283. // 0x02 : 자동
  284. // 0x09 : 알수없음
  285. BYTE hetrTmpr; // Heater 동작온도(0x00~0x3f)
  286. BYTE brgh; // 0x00 : 주간
  287. // 0x01 : 야간
  288. // 0x02 : 자동
  289. // 0x09 : 수동
  290. BYTE brghVal; // 현재휘도값 (0 ~ 100)
  291. BYTE brghDay; // 주간 휘도값(0 ~ 100)
  292. BYTE brghNight; // 야간 휘도값(0 ~ 100)
  293. char time[MAX_SYS_TIME]; // 현재 제어기 시간
  294. } st_parameter;
  295. typedef struct _st_parameter_res : public st_head
  296. {
  297. _st_parameter_res()
  298. {
  299. }
  300. BYTE Ack;
  301. st_parameter para;
  302. BYTE Etx;
  303. } st_parameter_res;
  304. /*
  305. * LED 전원제어 요청/응답 (server -> client)
  306. ****************************************************************************/
  307. typedef struct _st_ctrl_led_power_req : public st_head
  308. {
  309. _st_ctrl_led_power_req()
  310. {
  311. OpCode = CTRL_LED_POWER_REQ;
  312. Etx = VMS_ETX;
  313. Length = 1;
  314. }
  315. BYTE cmd; // LED 전원 ON/OFF 제어 정보 ON - 1
  316. // OFF - 0
  317. BYTE Etx;
  318. } st_ctrl_led_power_req;
  319. typedef st_ack st_ctrl_led_power_res;
  320. /*
  321. * FAN 전원제어 요청/응답 (server -> client)
  322. ****************************************************************************/
  323. typedef struct _st_ctrl_fan_power_req : public st_head
  324. {
  325. _st_ctrl_fan_power_req()
  326. {
  327. OpCode = CTRL_FAN_POWER_REQ;
  328. Etx = VMS_ETX;
  329. Length = 1;
  330. }
  331. BYTE cmd; // FAN 전원 ON/OFF 제어 정보 ON - 1
  332. // OFF - 0
  333. BYTE Etx;
  334. } st_ctrl_fan_power_req;
  335. typedef st_ack st_ctrl_fan_power_res;
  336. /*
  337. * 휘도 제어 요청/응답 (server -> client)
  338. ****************************************************************************/
  339. typedef struct _st_brgh
  340. {
  341. BYTE brgh; // 0x00 : 주간
  342. // 0x01 : 야간
  343. // 0x02 : 자동
  344. // 0x09 : 수동
  345. byte brghVal; // 현재휘도값 (0 ~ 100)
  346. byte brghDay; // 주간 휘도값(0 ~ 100)
  347. byte brghNight; // 야간 휘도값(0 ~ 100)
  348. } st_brgh;
  349. typedef struct _st_ctrl_brgh_req : public st_head
  350. {
  351. _st_ctrl_brgh_req()
  352. {
  353. OpCode = CTRL_BRGH_REQ;
  354. Length = sizeof(st_brgh);
  355. Etx = VMS_ETX;
  356. }
  357. st_brgh set;
  358. BYTE Etx;
  359. } st_ctrl_brgh_req;
  360. typedef st_ack st_ctrl_brgh_res;
  361. /*
  362. * 환경정보 설정 요청/응답 (server -> client)
  363. ****************************************************************************/
  364. typedef struct _st_cfg
  365. {
  366. BYTE fanTmpr; // Fan 동작온도(0x00~0x3f)
  367. BYTE hetrTmpr; // Heater 동작온도(0x00~0x3f)
  368. char dispOnTm[4]; // 전광판 가동 시작시간(0900)
  369. char dispOffTm[4]; // 전광판 가동 종료시간(2400)
  370. } st_cfg;
  371. typedef struct _st_ctrl_cfg_req : public st_head
  372. {
  373. _st_ctrl_cfg_req()
  374. {
  375. OpCode = CTRL_CONFIG_REQ;
  376. Length = sizeof(st_cfg);
  377. Etx = VMS_ETX;
  378. }
  379. st_cfg set;
  380. BYTE Etx;
  381. } st_ctrl_cfg_req;
  382. typedef st_ack st_ctrl_cfg_res;
  383. /*
  384. * 시간 설정 요청/응답 (server -> client)
  385. ****************************************************************************/
  386. typedef struct _st_time
  387. {
  388. char time[MAX_SYS_TIME]; // 현재시간 정보(YYYYMMDDHHMISS)
  389. } st_time;
  390. typedef struct _st_ctrl_time_req : public st_head
  391. {
  392. _st_ctrl_time_req()
  393. {
  394. OpCode = CTRL_TIME_REQ;
  395. Length = sizeof(st_time);
  396. Etx = VMS_ETX;
  397. }
  398. st_time set;
  399. BYTE Etx;
  400. } st_ctrl_time_req;
  401. typedef st_ack st_ctrl_time_res;
  402. /*
  403. * 제어기 리셋
  404. ****************************************************************************/
  405. typedef struct _st_reset_req : public st_head
  406. {
  407. _st_reset_req()
  408. {
  409. OpCode = CTRL_TIME_REQ;
  410. Length = 1;
  411. Etx = VMS_ETX;
  412. }
  413. BYTE type; //0x00 : 프로세스 리셋 0x01 : 제어기 리셋
  414. BYTE Etx;
  415. } st_reset_req;
  416. typedef st_ack st_reset_res;
  417. //---------------------------------------------------------------------------
  418. #pragma pack(pop)
  419. //---------------------------------------------------------------------------
  420. #endif