WVMSProtocol.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. /****************************************************************************
  2. * @source : WVMSProtocol.h
  3. * @description : Wireless VMS Protocol header
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2012/03/09 CYM [100] First Cut
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #ifndef __WVMSPROTOCOL_H__
  12. #define __WVMSPROTOCOL_H__
  13. //---------------------------------------------------------------------------
  14. #pragma pack(push, 1)
  15. //---------------------------------------------------------------------------
  16. /***************************************
  17. **
  18. ** Constants
  19. **
  20. */
  21. #define WVMS_DEFAULT_PORT 6021 /* 기본 포드 */
  22. #define WVMS_DEFAULT_TIMEOUT 3 /* 3 Sec */
  23. #define WVMS_MAX_RETRY_COUNT 3 /* 3 EA */
  24. #define WVMS_HEADER_SIZE (sizeof(WVMS_HEAD_STRUCT))
  25. #define WVMS_TAIL_SIZE (sizeof(WVMS_TAIL_STRUCT))
  26. #define WVMS_MAX_PACKET_SIZE 1024 /* max packet size */
  27. #define WVMS_MIN_PACKET_SIZE 8 /* min packet size */
  28. #define WVMS_MAX_DATA_SIZE 1016 /* 1024-8 Byte */
  29. #define WVMS_HEADER_INFO_SIZE 5 /* DeviceId + OpCode + PacketNo + Length */
  30. #define WVMS_DEFAULT_CYCLE 60 /* 60 Sec */
  31. //control characters
  32. #define WVMS_NULL 0x00 /* 널문자 */
  33. #define WVMS_SOH 0x01 /* 헤더의 시작 */
  34. #define WVMS_STX 0x02 /* 텍스트의 시작이며, 데이터 블록의 시작 */
  35. #define WVMS_ETX 0x03 /* 텍스트의 끝이며, 데이터 블록의 끝 */
  36. #define WVMS_EOT 0x04 /* 전송의 끝이며, 데이터 흐름을 종료 */
  37. #define WVMS_ENQ 0x05 /* 요청(상대방 확인) */
  38. #define WVMS_ACK 0x06 /* 승인 */
  39. #define WVMS_DLE 0x10 /* Data Link Escape */
  40. #define WVMS_NAK 0x15 /* 비승인 */
  41. #define WVMS_SYN 0x16 /* synchronous idle */
  42. #define WVMS_ETB 0x17 /* 전송 블록의 끝 */
  43. #define WVMS_ESC 0x1B /* escape */
  44. //OP-CODE
  45. #define WVMS_OP_ACK 0x06 /* 승인 */
  46. #define WVMS_OP_NACK 0x15 /* 비승인 */
  47. #define WVMS_OP_CMD 0x25 /* 제어명령 */
  48. #define WVMS_OP_STATE_REQ 0x27 /* 상태정보 요청 */
  49. #define WVMS_OP_STATE_RES 0x28 /* 상태정보 응답 */
  50. #define WVMS_DEVICE_ID 0x21 /* 시설물 장치의 구분 ID */
  51. /* 오류 코드 */
  52. enum EN_WVMS_ERROR_CODE{
  53. WVMS_ERROR_ETC, /* 0:기타 */
  54. WVMS_ERROR_DATA_LENGTH, /* 1:Data Length Error */
  55. WVMS_ERROR_UNKNOWN_OPCODE, /* 2:Unknown OP Code */
  56. WVMS_ERROR_DEVICE_ID, /* 3:Invalid Device ID */
  57. WVMS_ERROR_CHECK_SUM /* 4:Check Sum Error */
  58. };
  59. /* 제어 코드 */
  60. enum EN_WVMS_CTL_CODE{
  61. WVMS_CTL_POWER_ON = 1, /* 1:전광판 Power On */
  62. WVMS_CTL_POWER_OFF, /* 2:전광판 Power Off */
  63. WVMS_CTL_RESET /* 3:시스템 Reset */
  64. };
  65. /***************************************
  66. **
  67. ** Error codes
  68. **
  69. */
  70. /***************************************
  71. **
  72. ** Code macros
  73. **
  74. */
  75. /***************************************
  76. **
  77. ** Type definitions
  78. **
  79. */
  80. /* HEAD */
  81. typedef struct wvms_head_struct
  82. {
  83. BYTE Stx; /* Start Transmission */
  84. BYTE DeviceId; /* 시설물 장치의 구분 ID */
  85. BYTE OpCode; /* Operation Code */
  86. BYTE PacketNo; /* Packet 일련번호, 1~255 */
  87. WORD Length; /* Length */
  88. }WVMS_HEAD_STRUCT;
  89. /* DATA */
  90. typedef struct wvms_data_struct
  91. {
  92. BYTE Data[WVMS_MAX_DATA_SIZE]; /* Data */
  93. }WVMS_DATA_STRUCT;
  94. /* TAIL */
  95. typedef struct wvms_tail_struct
  96. {
  97. BYTE CheckSum; /* Check Sum */
  98. BYTE Etx; /* End Transmission */
  99. }WVMS_TAIL_STRUCT;
  100. /* 승인 */
  101. typedef struct{
  102. WORD VmsId; /* VMS ID, 1~65535 */
  103. BYTE RecvOpCode; /* 수신 OP Code */
  104. BYTE RecvPacketNo; /* 수신 Packet No */
  105. }WVMS_ACK_RES_STRUCT;
  106. /* 비승인 */
  107. typedef struct{
  108. WORD VmsId; /* VMS ID, 1~65535 */
  109. BYTE RecvOpCode; /* 수신 OP Code */
  110. BYTE RecvPacketNo; /* 수신 Packet No */
  111. BYTE Error; /* 오류 코드 */
  112. }WVMS_NACK_RES_STRUCT;
  113. /* 제어명령 */
  114. typedef struct{
  115. WORD VmsId; /* VMS ID, 1~65535 */
  116. BYTE CtlCode; /* 제어 코드 */
  117. }WVMS_CMD_REQ_STRUCT;
  118. /* 상태정보 요청 */
  119. typedef struct{
  120. WORD VmsId; /* VMS ID, 1~65535 */
  121. }WVMS_STATE_REQ_STRUCT;
  122. /* 상태정보 응답 */
  123. typedef struct{
  124. WORD VmsId; /* VMS ID, 1~65535 */
  125. BYTE Voltage; /* 전압, 0~255 */
  126. BYTE Temp; /* 온도, -128~127 2의 보수 */
  127. struct{
  128. BYTE Dummy : 5; /* Reserved */
  129. BYTE Heater : 1; /* Heater 동작, 0:정지 1:작동 */
  130. BYTE Fan : 1; /* FAN 동작, 0:정지 1:작동 */
  131. BYTE Door : 1; /* Door 열림, 0:닫힘 1:열림 */
  132. }State;
  133. BYTE Power; /* 모듈 전원 상태, 0:정지 1:작동 */
  134. BYTE Bright; /* 모듈 휘도값, 0~100 */
  135. BYTE ModuleCount; /* 모듈 개수 */
  136. BYTE ModuleState[32]; /* 모듈 상태, 0:장애 1:정상 */
  137. }WVMS_STATE_RES_STRUCT;
  138. /* 요청 */
  139. typedef union{
  140. WVMS_DATA_STRUCT Buff;
  141. WVMS_CMD_REQ_STRUCT Cmd;
  142. WVMS_STATE_REQ_STRUCT State;
  143. }UNION_WVMS_REQ;
  144. /* 응답 */
  145. typedef union{
  146. WVMS_DATA_STRUCT Buff;
  147. WVMS_ACK_RES_STRUCT Ack;
  148. WVMS_NACK_RES_STRUCT Nack;
  149. WVMS_STATE_RES_STRUCT State;
  150. }UNION_WVMS_RES;
  151. /* 공통 */
  152. typedef union{
  153. UNION_WVMS_REQ Req;
  154. UNION_WVMS_RES Res;
  155. }UNION_WVMS_DATA;
  156. /* 패킷 */
  157. typedef struct{
  158. WVMS_HEAD_STRUCT Head;
  159. UNION_WVMS_DATA Data;
  160. WVMS_TAIL_STRUCT Tail;
  161. }STRUCT_WVMS_PKT;
  162. /***************************************
  163. **
  164. ** Prototypes
  165. **
  166. */
  167. //---------------------------------------------------------------------------
  168. #pragma pack(pop)
  169. //---------------------------------------------------------------------------
  170. #endif