123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495 |
- //---------------------------------------------------------------------------
- #ifndef PacketHandllingFH
- #define PacketHandllingFH
- //---------------------------------------------------------------------------
- #include "VmsProtocolF.h"
- //---------------------------------------------------------------------------
- #pragma pack(push, 1)
- //---------------------------------------------------------------------------
- /*
- *****************************************************************************
- * 프로토콜 수신 OP Code
- ****************************************************************************/
- typedef enum _e_vms_recv_packet
- {
- e_rpkt_MIN = 0x00,
- e_rpkt_VMS_ID_RES = 0xFF, // client -> server
- e_rpkt_NOTIFY_STTS = 0x01, // client -> server
- e_rpkt_DNLD_SCENARIO_RES = 0x02, // client -> server
- e_rpkt_CTRL_RESET_RES = 0x03, // client -> server
- e_rpkt_DNLD_FILE_RES = 0x04, // client -> server
- e_rpkt_PARAMETER_RES = 0x05, // client -> server
- e_rpkt_CTRL_LED_POWER_RES = 0x06, // client -> server
- e_rpkt_CTRL_FAN_POWER_RES = 0x07, // client -> server
- e_rpkt_CTRL_BRGH_RES = 0x08, // client -> server
- e_rpkt_CTRL_CONFIG_RES = 0x09, // client -> server
- e_rpkt_CTRL_TIME_RES = 0x10, // client -> server
- e_rpkt_MAX = 0xFF+1,
- } e_vms_recv_packet;
- /*
- *****************************************************************************
- * 프로토콜 define
- ****************************************************************************/
- #define MAX_PACKET_SIZE 4096
- #define MAX_VMS_ID 10 /* '00000100001' */
- #define MAX_DISP_TIME 12 /* YYYYMMDDHHMI */
- #define MAX_SYS_TIME 14 /* YYYYMMDDHHMISS */
- #define MAX_FILE_NAME 60
- #define MAX_SCENARIO INT_VMS_MAX_FORM
- #define MAX_DNLD_FILE INT_VMS_MAX_FORM
- /*
- *****************************************************************************
- * 프로토콜 OP 코드 정의
- ****************************************************************************/
- #define VMS_STX 0x02 // Start of TeXt
- #define VMS_ETX 0x03 // End of TeXt
- #define VMS_NULL 0x00
- #define VMS_ID_REQ 0xFF // server -> client
- #define VMS_ID_RES 0xFF // client -> server
- #define NOTIFY_STTS 0x01 // client -> server
- #define NOTIFY_STTS_ACK 0x01 // server -> client
- #define DNLD_SCENARIO_REQ 0x02 // server -> client
- #define DNLD_SCENARIO_RES 0x02 // client -> server
- #define CTRL_RESET_REQ 0x03 // server -> client
- #define CTRL_RESET_RES 0x03 // client -> server
- #define DNLD_FILE_REQ 0x04 // server -> client
- #define DNLD_FILE_RES 0x04 // client -> server
- #define PARAMETER_REQ 0x05 // server -> client
- #define PARAMETER_RES 0x05 // client -> server
- #define CTRL_LED_POWER_REQ 0x06 // server -> client
- #define CTRL_LED_POWER_RES 0x06 // client -> server
- #define CTRL_FAN_POWER_REQ 0x07 // server -> client
- #define CTRL_FAN_POWER_RES 0x07 // client -> server
- #define CTRL_BRGH_REQ 0x08 // server -> client
- #define CTRL_BRGH_RES 0x08 // client -> server
- #define CTRL_CONFIG_REQ 0x09 // server -> client
- #define CTRL_CONFIG_RES 0x09 // client -> server
- #define CTRL_TIME_REQ 0x10 // server -> client
- #define CTRL_TIME_RES 0x10 // client -> server
- typedef struct _st_head
- {
- _st_head()
- {
- Stx = VMS_STX;
- OpCode = VMS_NULL;
- Length = 0;
- }
- BYTE Stx;
- BYTE OpCode;
- char vmsid[MAX_VMS_ID];
- WORD Length;
- } st_head;
- typedef struct _st_simple_req
- {
- _st_simple_req()
- {
- Stx = VMS_STX;
- OpCode = VMS_NULL;
- Length = 0;
- Etx = VMS_ETX;
- }
- BYTE Stx;
- BYTE OpCode;
- char vmsid[MAX_VMS_ID];
- WORD Length;
- BYTE Etx;
- } st_simple_req;
- /*
- * VMS ID 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_vms_id_req
- {
- _st_vms_id_req()
- {
- Stx = VMS_STX;
- OpCode = VMS_ID_REQ;
- Length = 0;
- Etx = VMS_ETX;
- }
- BYTE Stx;
- BYTE OpCode;
- WORD Length;
- BYTE Etx;
- } st_vms_id_req;
- typedef struct _st_vms_id_res : public st_head
- {
- _st_vms_id_res()
- {
- Length = 1;
- OpCode = (BYTE)e_rpkt_VMS_ID_RES;
- Ack = 0x00;
- Etx = VMS_ETX;
- }
- BYTE Ack; // 0x00 : 정상
- // 0x31 : 데이터크기 불일치
- // 0x32 : CRC16 에러
- // 0x33 : 정의되지 않은 OP_CODE
- // 0x34 : 기타
- BYTE Etx;
- } st_vms_id_res;
- #define ACK_NORMAL 0x00 // 0x00 : 정상
- #define ACK_ERR_SIZE 0x31 // 0x31 : 데이터크기 불일치
- #define ACK_ERR_CRD 0x32 // 0x32 : CRC16 에러
- #define ACK_ERR_OPCODE 0x33 // 0x33 : 정의되지 않은 OP_CODE
- #define ACK_ERR_ETC 0x34 // 0x34 : 기타
- typedef struct _st_ack
- {
- _st_ack()
- {
- Stx = VMS_STX;
- OpCode = VMS_NULL;
- Length = 1;
- Ack = ACK_NORMAL;
- Etx = VMS_ETX;
- }
- BYTE Stx;
- BYTE OpCode;
- char vmsid[MAX_VMS_ID];
- WORD Length;
- BYTE Ack; // 0x00 : 정상
- // 0x31 : 데이터크기 불일치
- // 0x32 : CRC16 에러
- // 0x33 : 정의되지 않은 OP_CODE
- // 0x34 : 기타
- BYTE Etx;
- } st_ack;
- /*
- * 상태정보 수신 통보/응답 (client -> server)
- ****************************************************************************/
- typedef struct _st_stts
- {
- char time[MAX_SYS_TIME]; // 현재 제어기 시간
- BYTE led; // 0x00 : 작동안함
- // 0x01 : 작동중
- // 0x02 : 알수없음
- BYTE door; // 0x00 : 닫힘
- // 0x01 : 열림
- // 0x02 : 알수없음
- BYTE fan; // 0x00 : 작동안함
- // 0x01 : 작동중
- // 0x02 : 알수없음
- BYTE hetr; // 0x00 : 작동안함
- // 0x01 : 작동중
- // 0x02 : 알수없음
- BYTE tmpr; // 온도값( 0x00~0x3f)
- BYTE brgh; // 현재의 휘도값(0x00~0x3f)
- BYTE comm; // 0x00 : 정상
- // 0x01 : 비정상
- } st_stts;
- typedef struct _st_notify_stts : public st_head
- {
- _st_notify_stts()
- {
- Length = sizeof(st_stts);
- }
- st_stts stts;
- BYTE Etx;
- } st_notify_stts;
- typedef struct _st_notify_stts_ack : public st_head
- {
- _st_notify_stts_ack()
- {
- OpCode = NOTIFY_STTS_ACK;
- Length = 1;
- Ack = 0x00;
- Etx = VMS_ETX;
- }
- BYTE Ack; // 0x00 : 정상
- // 0x31 : 데이터크기 불일치
- // 0x32 : CRC16 에러
- // 0x33 : 정의되지 않은 OP_CODE
- // 0x34 : 기타
- BYTE Etx;
- } st_notify_stts_ack;
- /*
- * 시나리오 다운로드 요청/응답 (server -> client)
- ****************************************************************************/
- #define P_FILE_TYPE_IMAGE 0x01
- #define P_FILE_TYPE_VIDEO 0x02
- #define P_FILE_TYPE_STREAM 0x03
- #define P_FILE_TYPE_TRAFFIC 0x04
- #define P_FILE_TYPE_TEXT 0x05
- typedef struct _st_scenario
- {
- BYTE seq; // 시나리오 순번
- BYTE type; // 0x01 : 이미지 (JPG)
- // 0x02 : 동영상 (AVI)
- // 0x03 : URL(스트리밍)
- // 0x04 : 소통 이미지
- // 0x05 : 표출문구 이미지
- BYTE dispEffect; // 표출타입이 이미지일 경우에만 효출효과가 적용된다.
- // 0x00 : Static (기본)
- // 0x01 : Blink
- char fileName[MAX_FILE_NAME]; // 파일명
- // ※ 표출 타입별 FTP 폴더 개설
- BYTE dispTm; // 표출문구 표출시각('03' : 3초)
- char dispStrTm[MAX_DISP_TIME]; // 표출시작시간(0000 00 00 0000)
- char dispEndTm[MAX_DISP_TIME]; // 표출종료시각(999912312359)
- BYTE dnldFlag; // 파일다운로드 여부 D : 다운로드
- // C : 비교후 다운로드(없을경우)
- } st_scenario;
- typedef struct _st_dnld_scenario_req : public st_head
- {
- _st_dnld_scenario_req()
- {
- OpCode = DNLD_SCENARIO_REQ;
- }
- BYTE type;
- BYTE cnt; // 해당 VMS의 전체시나리오 수
- st_scenario scenario[MAX_SCENARIO+1];
- } st_dnld_scenario_req;
- typedef st_ack st_dnld_scenario_res;
- /*
- * 파일 다운로드 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_dnld_file
- {
- BYTE type; // 표출타입 0x01 : 이미지 (JPG)
- // 0x02 : 동영상 (AVI)
- char fileName[MAX_FILE_NAME]; // 파일명
- // ※ VMS ID 및 표출 타입별 FTP 폴더 개설
- } st_dnld_file;
- typedef struct _st_dnld_file_req : public st_head
- {
- _st_dnld_file_req()
- {
- OpCode = DNLD_FILE_REQ;
- }
- char cnt[2]; // 전송 파일수
- union
- {
- st_dnld_file file[MAX_DNLD_FILE];
- char data[sizeof(st_dnld_file)*MAX_DNLD_FILE+1];
- } U;
- } st_dnld_file_req;
- typedef st_ack st_dnld_file_res;
- /*
- * 파라미터값 요청/응답 (server -> client)
- ****************************************************************************/
- typedef st_simple_req st_parameter_req;
- typedef struct _st_parameter
- {
- BYTE led; // 0x00 : 꺼짐
- // 0x01 : 켜짐
- // 0x02 : 자동
- // 0x09 : 알수없음
- BYTE fan; // 0x00 : 꺼짐
- // 0x01 : 켜짐
- // 0x02 : 자동
- // 0x09 : 알수없음
- BYTE fanTmpr; // Fan 동작온도(0x00~0x3f)
- BYTE hetr; // 0x00 : 꺼짐
- // 0x01 : 켜짐
- // 0x02 : 자동
- // 0x09 : 알수없음
- BYTE hetrTmpr; // Heater 동작온도(0x00~0x3f)
- BYTE brgh; // 0x00 : 주간
- // 0x01 : 야간
- // 0x02 : 자동
- // 0x09 : 수동
- BYTE brghVal; // 현재휘도값 (0 ~ 100)
- BYTE brghDay; // 주간 휘도값(0 ~ 100)
- BYTE brghNight; // 야간 휘도값(0 ~ 100)
- char time[MAX_SYS_TIME]; // 현재 제어기 시간
- } st_parameter;
- typedef struct _st_parameter_res : public st_head
- {
- _st_parameter_res()
- {
- }
- BYTE Ack;
- st_parameter para;
- BYTE Etx;
- } st_parameter_res;
- /*
- * LED 전원제어 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_ctrl_led_power_req : public st_head
- {
- _st_ctrl_led_power_req()
- {
- OpCode = CTRL_LED_POWER_REQ;
- Etx = VMS_ETX;
- Length = 1;
- }
- BYTE cmd; // LED 전원 ON/OFF 제어 정보 ON - 1
- // OFF - 0
- BYTE Etx;
- } st_ctrl_led_power_req;
- typedef st_ack st_ctrl_led_power_res;
- /*
- * FAN 전원제어 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_ctrl_fan_power_req : public st_head
- {
- _st_ctrl_fan_power_req()
- {
- OpCode = CTRL_FAN_POWER_REQ;
- Etx = VMS_ETX;
- Length = 1;
- }
- BYTE cmd; // FAN 전원 ON/OFF 제어 정보 ON - 1
- // OFF - 0
- BYTE Etx;
- } st_ctrl_fan_power_req;
- typedef st_ack st_ctrl_fan_power_res;
- /*
- * 휘도 제어 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_brgh
- {
- BYTE brgh; // 0x00 : 주간
- // 0x01 : 야간
- // 0x02 : 자동
- // 0x09 : 수동
- byte brghVal; // 현재휘도값 (0 ~ 100)
- byte brghDay; // 주간 휘도값(0 ~ 100)
- byte brghNight; // 야간 휘도값(0 ~ 100)
- } st_brgh;
- typedef struct _st_ctrl_brgh_req : public st_head
- {
- _st_ctrl_brgh_req()
- {
- OpCode = CTRL_BRGH_REQ;
- Length = sizeof(st_brgh);
- Etx = VMS_ETX;
- }
- st_brgh set;
- BYTE Etx;
- } st_ctrl_brgh_req;
- typedef st_ack st_ctrl_brgh_res;
- /*
- * 환경정보 설정 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_cfg
- {
- BYTE fanTmpr; // Fan 동작온도(0x00~0x3f)
- BYTE hetrTmpr; // Heater 동작온도(0x00~0x3f)
- char dispOnTm[4]; // 전광판 가동 시작시간(0900)
- char dispOffTm[4]; // 전광판 가동 종료시간(2400)
- } st_cfg;
- typedef struct _st_ctrl_cfg_req : public st_head
- {
- _st_ctrl_cfg_req()
- {
- OpCode = CTRL_CONFIG_REQ;
- Length = sizeof(st_cfg);
- Etx = VMS_ETX;
- }
- st_cfg set;
- BYTE Etx;
- } st_ctrl_cfg_req;
- typedef st_ack st_ctrl_cfg_res;
- /*
- * 시간 설정 요청/응답 (server -> client)
- ****************************************************************************/
- typedef struct _st_time
- {
- char time[MAX_SYS_TIME]; // 현재시간 정보(YYYYMMDDHHMISS)
- } st_time;
- typedef struct _st_ctrl_time_req : public st_head
- {
- _st_ctrl_time_req()
- {
- OpCode = CTRL_TIME_REQ;
- Length = sizeof(st_time);
- Etx = VMS_ETX;
- }
- st_time set;
- BYTE Etx;
- } st_ctrl_time_req;
- typedef st_ack st_ctrl_time_res;
- /*
- * 제어기 리셋
- ****************************************************************************/
- typedef struct _st_reset_req : public st_head
- {
- _st_reset_req()
- {
- OpCode = CTRL_TIME_REQ;
- Length = 1;
- Etx = VMS_ETX;
- }
- BYTE type; //0x00 : 프로세스 리셋 0x01 : 제어기 리셋
- BYTE Etx;
- } st_reset_req;
- typedef st_ack st_reset_res;
- //---------------------------------------------------------------------------
- #pragma pack(pop)
- //---------------------------------------------------------------------------
- #endif
|