123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /****************************************************************************
- * @source : WVMSProtocol.h
- * @description : Wireless VMS Protocol header
- ****************************************************************************
- * DATE AUTHOR DESCRIPTION
- * --------------------------------------------------------------------------
- * 2012/03/09 CYM [100] First Cut
- *
- ****************************************************************************/
- //---------------------------------------------------------------------------
- #ifndef __WVMSPROTOCOL_H__
- #define __WVMSPROTOCOL_H__
- //---------------------------------------------------------------------------
- #pragma pack(push, 1)
- //---------------------------------------------------------------------------
- /***************************************
- **
- ** Constants
- **
- */
- #define WVMS_DEFAULT_PORT 6021 /* 기본 포드 */
- #define WVMS_DEFAULT_TIMEOUT 3 /* 3 Sec */
- #define WVMS_MAX_RETRY_COUNT 3 /* 3 EA */
- #define WVMS_HEADER_SIZE (sizeof(WVMS_HEAD_STRUCT))
- #define WVMS_TAIL_SIZE (sizeof(WVMS_TAIL_STRUCT))
- #define WVMS_MAX_PACKET_SIZE 1024 /* max packet size */
- #define WVMS_MIN_PACKET_SIZE 8 /* min packet size */
- #define WVMS_MAX_DATA_SIZE 1016 /* 1024-8 Byte */
- #define WVMS_HEADER_INFO_SIZE 5 /* DeviceId + OpCode + PacketNo + Length */
- #define WVMS_DEFAULT_CYCLE 60 /* 60 Sec */
- //control characters
- #define WVMS_NULL 0x00 /* 널문자 */
- #define WVMS_SOH 0x01 /* 헤더의 시작 */
- #define WVMS_STX 0x02 /* 텍스트의 시작이며, 데이터 블록의 시작 */
- #define WVMS_ETX 0x03 /* 텍스트의 끝이며, 데이터 블록의 끝 */
- #define WVMS_EOT 0x04 /* 전송의 끝이며, 데이터 흐름을 종료 */
- #define WVMS_ENQ 0x05 /* 요청(상대방 확인) */
- #define WVMS_ACK 0x06 /* 승인 */
- #define WVMS_DLE 0x10 /* Data Link Escape */
- #define WVMS_NAK 0x15 /* 비승인 */
- #define WVMS_SYN 0x16 /* synchronous idle */
- #define WVMS_ETB 0x17 /* 전송 블록의 끝 */
- #define WVMS_ESC 0x1B /* escape */
- //OP-CODE
- #define WVMS_OP_ACK 0x06 /* 승인 */
- #define WVMS_OP_NACK 0x15 /* 비승인 */
- #define WVMS_OP_CMD 0x25 /* 제어명령 */
- #define WVMS_OP_STATE_REQ 0x27 /* 상태정보 요청 */
- #define WVMS_OP_STATE_RES 0x28 /* 상태정보 응답 */
- #define WVMS_DEVICE_ID 0x21 /* 시설물 장치의 구분 ID */
- /* 오류 코드 */
- enum EN_WVMS_ERROR_CODE{
- WVMS_ERROR_ETC, /* 0:기타 */
- WVMS_ERROR_DATA_LENGTH, /* 1:Data Length Error */
- WVMS_ERROR_UNKNOWN_OPCODE, /* 2:Unknown OP Code */
- WVMS_ERROR_DEVICE_ID, /* 3:Invalid Device ID */
- WVMS_ERROR_CHECK_SUM /* 4:Check Sum Error */
- };
- /* 제어 코드 */
- enum EN_WVMS_CTL_CODE{
- WVMS_CTL_POWER_ON = 1, /* 1:전광판 Power On */
- WVMS_CTL_POWER_OFF, /* 2:전광판 Power Off */
- WVMS_CTL_RESET /* 3:시스템 Reset */
- };
-
- /***************************************
- **
- ** Error codes
- **
- */
- /***************************************
- **
- ** Code macros
- **
- */
- /***************************************
- **
- ** Type definitions
- **
- */
- /* HEAD */
- typedef struct wvms_head_struct
- {
- BYTE Stx; /* Start Transmission */
- BYTE DeviceId; /* 시설물 장치의 구분 ID */
- BYTE OpCode; /* Operation Code */
- BYTE PacketNo; /* Packet 일련번호, 1~255 */
- WORD Length; /* Length */
- }WVMS_HEAD_STRUCT;
- /* DATA */
- typedef struct wvms_data_struct
- {
- BYTE Data[WVMS_MAX_DATA_SIZE]; /* Data */
- }WVMS_DATA_STRUCT;
- /* TAIL */
- typedef struct wvms_tail_struct
- {
- BYTE CheckSum; /* Check Sum */
- BYTE Etx; /* End Transmission */
- }WVMS_TAIL_STRUCT;
- /* 승인 */
- typedef struct{
- WORD VmsId; /* VMS ID, 1~65535 */
- BYTE RecvOpCode; /* 수신 OP Code */
- BYTE RecvPacketNo; /* 수신 Packet No */
- }WVMS_ACK_RES_STRUCT;
- /* 비승인 */
- typedef struct{
- WORD VmsId; /* VMS ID, 1~65535 */
- BYTE RecvOpCode; /* 수신 OP Code */
- BYTE RecvPacketNo; /* 수신 Packet No */
- BYTE Error; /* 오류 코드 */
- }WVMS_NACK_RES_STRUCT;
- /* 제어명령 */
- typedef struct{
- WORD VmsId; /* VMS ID, 1~65535 */
- BYTE CtlCode; /* 제어 코드 */
- }WVMS_CMD_REQ_STRUCT;
-
- /* 상태정보 요청 */
- typedef struct{
- WORD VmsId; /* VMS ID, 1~65535 */
- }WVMS_STATE_REQ_STRUCT;
-
- /* 상태정보 응답 */
- typedef struct{
- WORD VmsId; /* VMS ID, 1~65535 */
- BYTE Voltage; /* 전압, 0~255 */
- BYTE Temp; /* 온도, -128~127 2의 보수 */
- struct{
- BYTE Dummy : 5; /* Reserved */
- BYTE Heater : 1; /* Heater 동작, 0:정지 1:작동 */
- BYTE Fan : 1; /* FAN 동작, 0:정지 1:작동 */
- BYTE Door : 1; /* Door 열림, 0:닫힘 1:열림 */
- }State;
- BYTE Power; /* 모듈 전원 상태, 0:정지 1:작동 */
- BYTE Bright; /* 모듈 휘도값, 0~100 */
- BYTE ModuleCount; /* 모듈 개수 */
- BYTE ModuleState[32]; /* 모듈 상태, 0:장애 1:정상 */
- }WVMS_STATE_RES_STRUCT;
- /* 요청 */
- typedef union{
- WVMS_DATA_STRUCT Buff;
- WVMS_CMD_REQ_STRUCT Cmd;
- WVMS_STATE_REQ_STRUCT State;
- }UNION_WVMS_REQ;
- /* 응답 */
- typedef union{
- WVMS_DATA_STRUCT Buff;
- WVMS_ACK_RES_STRUCT Ack;
- WVMS_NACK_RES_STRUCT Nack;
- WVMS_STATE_RES_STRUCT State;
- }UNION_WVMS_RES;
- /* 공통 */
- typedef union{
- UNION_WVMS_REQ Req;
- UNION_WVMS_RES Res;
- }UNION_WVMS_DATA;
- /* 패킷 */
- typedef struct{
- WVMS_HEAD_STRUCT Head;
- UNION_WVMS_DATA Data;
- WVMS_TAIL_STRUCT Tail;
- }STRUCT_WVMS_PKT;
- /***************************************
- **
- ** Prototypes
- **
- */
- //---------------------------------------------------------------------------
- #pragma pack(pop)
- //---------------------------------------------------------------------------
- #endif
|