ThingPlug GMMP library for mbed
Dependents: ThingPlug_WiFi_Example
Operation/Struct_Common.h@4:bb6c1ee1d5f0, 2015-08-13 (annotated)
- Committer:
- lesmin
- Date:
- Thu Aug 13 07:04:29 2015 +0000
- Revision:
- 4:bb6c1ee1d5f0
- Parent:
- 0:32c20cfb2b30
added NTP error return
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lesmin | 0:32c20cfb2b30 | 1 | /** GMMP 공통 구조체 |
lesmin | 0:32c20cfb2b30 | 2 | * @date 2013/11/21 |
lesmin | 0:32c20cfb2b30 | 3 | * @version 0.0.0.1 |
lesmin | 0:32c20cfb2b30 | 4 | * @file Struct_Common.h |
lesmin | 0:32c20cfb2b30 | 5 | **/ |
lesmin | 0:32c20cfb2b30 | 6 | |
lesmin | 0:32c20cfb2b30 | 7 | #ifndef STRUCT_H_ |
lesmin | 0:32c20cfb2b30 | 8 | #define STRUCT_H_ |
lesmin | 0:32c20cfb2b30 | 9 | |
lesmin | 0:32c20cfb2b30 | 10 | #include "Define.h" |
lesmin | 0:32c20cfb2b30 | 11 | |
lesmin | 0:32c20cfb2b30 | 12 | /////////////////////////////////////////////////////////////////////////// |
lesmin | 0:32c20cfb2b30 | 13 | //GMMP TCP Packet 공통 |
lesmin | 0:32c20cfb2b30 | 14 | |
lesmin | 0:32c20cfb2b30 | 15 | #pragma pack(1) |
lesmin | 0:32c20cfb2b30 | 16 | /** |
lesmin | 0:32c20cfb2b30 | 17 | *@struct GMMPHeader |
lesmin | 0:32c20cfb2b30 | 18 | *@brief GMMP TCP Packet Common Header |
lesmin | 0:32c20cfb2b30 | 19 | */ |
lesmin | 0:32c20cfb2b30 | 20 | typedef struct { |
lesmin | 0:32c20cfb2b30 | 21 | /**@var ucVersion |
lesmin | 0:32c20cfb2b30 | 22 | * @brief GMMP Version |
lesmin | 0:32c20cfb2b30 | 23 | */ |
lesmin | 0:32c20cfb2b30 | 24 | U8 ucVersion; |
lesmin | 0:32c20cfb2b30 | 25 | |
lesmin | 0:32c20cfb2b30 | 26 | /**@var usMessageLength |
lesmin | 0:32c20cfb2b30 | 27 | * @brief GMMP 통신 패킷의 전체 길이. |
lesmin | 0:32c20cfb2b30 | 28 | */ |
lesmin | 0:32c20cfb2b30 | 29 | /**@var ucMessageType |
lesmin | 0:32c20cfb2b30 | 30 | * @brief 메시지의 유형으로서 단말등록, 주기보고, 단말제어 등 각각에 대해 요청과 응답을 구분한다.\n |
lesmin | 0:32c20cfb2b30 | 31 | * *아래 표 참조\n |
lesmin | 0:32c20cfb2b30 | 32 | *@image html OperationDefine.png Operation Type 표 |
lesmin | 0:32c20cfb2b30 | 33 | * @ref Define_Operation.h 참조 |
lesmin | 0:32c20cfb2b30 | 34 | */ |
lesmin | 0:32c20cfb2b30 | 35 | /**@var unOriginTimeStamp |
lesmin | 0:32c20cfb2b30 | 36 | * @brief Unix Time(=POSIX time, 1970년 1월1일부터 경과된 초)을 사용한다. 메시지를 전송하는 쪽에서 해당 값을 설정한다. |
lesmin | 0:32c20cfb2b30 | 37 | */ |
lesmin | 0:32c20cfb2b30 | 38 | /**@var usTotalCount |
lesmin | 0:32c20cfb2b30 | 39 | * @brief Message Body에 전달될 내용이 2048 Bytes를 초과할 경우 여러 개의 메시지로 전송하며 전체 메시지 개수를 표시 한다. |
lesmin | 0:32c20cfb2b30 | 40 | */ |
lesmin | 0:32c20cfb2b30 | 41 | /**@var usCurrentCount |
lesmin | 0:32c20cfb2b30 | 42 | * @brief 여러 개의 메시지로 전송되는 경우 현재 메시지의 순서로서 1에서 Total Count까지의 값이 기록 된다. |
lesmin | 0:32c20cfb2b30 | 43 | */ |
lesmin | 0:32c20cfb2b30 | 44 | /**@var usAuthID |
lesmin | 0:32c20cfb2b30 | 45 | * @brief M2M GW 의 Serial Number 값이며, MSISDN 또는 MAC Address값을 사용할 수도 있다. |
lesmin | 0:32c20cfb2b30 | 46 | */ |
lesmin | 0:32c20cfb2b30 | 47 | /**@var usAuthKey |
lesmin | 0:32c20cfb2b30 | 48 | * @brief GMMP Message를 인증하기 위해 사용되는 Key 값으로 등록 절차 시 OMP에서 할당한다.\n |
lesmin | 0:32c20cfb2b30 | 49 | * (등록 이전에 Default 로 16byte를 0x00으로 채운다.) |
lesmin | 0:32c20cfb2b30 | 50 | */ |
lesmin | 0:32c20cfb2b30 | 51 | /**@var usTID |
lesmin | 0:32c20cfb2b30 | 52 | * @brief T-ID는 M2M GW와 OMP 간의 트랜잭션을 구분하기 위한 값으로서 Request 요청하는 곳에서 할당하며 Response 받은 곳에서는 해당 T-ID 값을 그대로 반환한다. |
lesmin | 0:32c20cfb2b30 | 53 | M2M GW와 OMP에서 T-ID 사용 범위는 다음과 같다. (“6.4 T-ID 사용 범위”절 참조)\n |
lesmin | 0:32c20cfb2b30 | 54 | ※ M2M GW T-ID : 0 ~ 99,999 (10만개)\n |
lesmin | 0:32c20cfb2b30 | 55 | ※ OMP T-ID : M2M GW가 사용 이외의 값. |
lesmin | 0:32c20cfb2b30 | 56 | */ |
lesmin | 0:32c20cfb2b30 | 57 | /**@var ucReserved1 |
lesmin | 0:32c20cfb2b30 | 58 | * @brief Message Body를 암호화하여 전송시 0x01로 설정한다. 그렇지 않은 경우에는 0x00으로 설정한다. |
lesmin | 0:32c20cfb2b30 | 59 | */ |
lesmin | 0:32c20cfb2b30 | 60 | /**@var ucReserved2 |
lesmin | 0:32c20cfb2b30 | 61 | * @brief 현재 사용하지 않음 ( 0x00으로 설정한다.). |
lesmin | 0:32c20cfb2b30 | 62 | */ |
lesmin | 0:32c20cfb2b30 | 63 | U8 usMessageLength[2]; |
lesmin | 0:32c20cfb2b30 | 64 | U8 ucMessageType; |
lesmin | 0:32c20cfb2b30 | 65 | U8 unOriginTimeStamp[4]; |
lesmin | 0:32c20cfb2b30 | 66 | U8 usTotalCount[2]; |
lesmin | 0:32c20cfb2b30 | 67 | U8 usCurrentCount[2]; |
lesmin | 0:32c20cfb2b30 | 68 | U8 usAuthID[LEN_AUTH_ID]; |
lesmin | 0:32c20cfb2b30 | 69 | U8 usAuthKey[LEN_AUTH_KEY]; |
lesmin | 0:32c20cfb2b30 | 70 | U8 usTID[LEN_TID]; |
lesmin | 0:32c20cfb2b30 | 71 | U8 ucReserved1; |
lesmin | 0:32c20cfb2b30 | 72 | U8 ucReserved2; |
lesmin | 0:32c20cfb2b30 | 73 | }GMMPHeader; //기본 구조체 |
lesmin | 0:32c20cfb2b30 | 74 | |
lesmin | 0:32c20cfb2b30 | 75 | /**@union ConvertShort |
lesmin | 0:32c20cfb2b30 | 76 | * @brief short형 변수를 endian 변환을 위해 사용된다. |
lesmin | 0:32c20cfb2b30 | 77 | */ |
lesmin | 0:32c20cfb2b30 | 78 | |
lesmin | 0:32c20cfb2b30 | 79 | typedef union{ |
lesmin | 0:32c20cfb2b30 | 80 | U8 usShort[2]; |
lesmin | 0:32c20cfb2b30 | 81 | short sU8; |
lesmin | 0:32c20cfb2b30 | 82 | }ConvertShort; |
lesmin | 0:32c20cfb2b30 | 83 | |
lesmin | 0:32c20cfb2b30 | 84 | /**@union ConvertInt |
lesmin | 0:32c20cfb2b30 | 85 | * @brief short형 변수를 endian 변환을 위해 사용된다. |
lesmin | 0:32c20cfb2b30 | 86 | */ |
lesmin | 0:32c20cfb2b30 | 87 | typedef union{ |
lesmin | 0:32c20cfb2b30 | 88 | U8 usInt[4]; |
lesmin | 0:32c20cfb2b30 | 89 | long sU8; |
lesmin | 0:32c20cfb2b30 | 90 | }ConvertInt; |
lesmin | 0:32c20cfb2b30 | 91 | |
lesmin | 0:32c20cfb2b30 | 92 | |
lesmin | 0:32c20cfb2b30 | 93 | /** |
lesmin | 0:32c20cfb2b30 | 94 | *@struct SMSMessage |
lesmin | 0:32c20cfb2b30 | 95 | *@brief GMMP SMS Packet |
lesmin | 0:32c20cfb2b30 | 96 | *@brief SMS 메시지는 Header Message와 최대 38byte를 갖는 Body Message로 구성된다. \n |
lesmin | 0:32c20cfb2b30 | 97 | *@brief Header 메시지는 제어 명령을 구분할 수 있는 T-ID(Transaction ID)와 제어의 종류를 나타내는 Control Type Code값을 포함한다. |
lesmin | 0:32c20cfb2b30 | 98 | *@ref Define_Operation.h 참조 |
lesmin | 0:32c20cfb2b30 | 99 | */ |
lesmin | 0:32c20cfb2b30 | 100 | typedef struct { |
lesmin | 0:32c20cfb2b30 | 101 | /**@var unTID |
lesmin | 0:32c20cfb2b30 | 102 | * @brief T-ID는 M2M GW와 OMP 간의 트랜잭션을 구분하기 위한 값으로서 Request 요청하는 곳에서 할당하며 Response 받은 곳에서는 해당 T-ID 값을 그대로 반환한다. |
lesmin | 0:32c20cfb2b30 | 103 | M2M GW와 OMP에서 T-ID 사용 범위는 다음과 같다. (“6.4 T-ID 사용 범위”절 참조)\n |
lesmin | 0:32c20cfb2b30 | 104 | ※ M2M GW T-ID : 0 ~ 99,999 (10만개)\n |
lesmin | 0:32c20cfb2b30 | 105 | ※ OMP T-ID : M2M GW가 사용 이외의 값. |
lesmin | 0:32c20cfb2b30 | 106 | */ |
lesmin | 0:32c20cfb2b30 | 107 | /**@var ucControlTypeCode |
lesmin | 0:32c20cfb2b30 | 108 | * @brief M2M 단말로의 제어 명령 전달 시 제어 명령에 대한 Code값이다. |
lesmin | 0:32c20cfb2b30 | 109 | * @ref Define_Operation.h 참조 |
lesmin | 0:32c20cfb2b30 | 110 | */ |
lesmin | 0:32c20cfb2b30 | 111 | /**@var ucLongSentenceFlag |
lesmin | 0:32c20cfb2b30 | 112 | * @brief 0x00 : 제어 데이터의 크기가 38 bytes 이하여서 SMS Control Message Body 에 제어 데이터가 포함되어 있으며, Long Sentence Operation을 수행할 필요 없다. |
lesmin | 0:32c20cfb2b30 | 113 | * @brief 0x01 : 제어 데이터의 크기가 38 bytes 이상이므로 SMS Control Message Body 에 제어 데이터가 포함되어 있지않고, M2M GW/Device Long Sentence(@ref GMMP_LSentence_Operation 참조)을 수행하여 제어 데이터를 획득해야 한다. |
lesmin | 0:32c20cfb2b30 | 114 | */ |
lesmin | 0:32c20cfb2b30 | 115 | /**@var usDeviceID |
lesmin | 0:32c20cfb2b30 | 116 | * @brief M2M Device ID |
lesmin | 0:32c20cfb2b30 | 117 | * @warning 0x00이면 GW의 단말제어로 간주 |
lesmin | 0:32c20cfb2b30 | 118 | */ |
lesmin | 0:32c20cfb2b30 | 119 | /**@var usSMSMessageBody |
lesmin | 0:32c20cfb2b30 | 120 | * @brief 단말에게 전달될 제어 명령에 대한 내용이 포함된다. |
lesmin | 0:32c20cfb2b30 | 121 | */ |
lesmin | 0:32c20cfb2b30 | 122 | U8 unTID[4]; |
lesmin | 0:32c20cfb2b30 | 123 | U8 ucControlTypeCode; |
lesmin | 0:32c20cfb2b30 | 124 | U8 ucLongSentenceFlag; |
lesmin | 0:32c20cfb2b30 | 125 | U8 usDeviceID[LEN_DEVICE_ID]; |
lesmin | 0:32c20cfb2b30 | 126 | U8 usSMSMessageBody[38]; |
lesmin | 0:32c20cfb2b30 | 127 | }SMSMessage; |
lesmin | 0:32c20cfb2b30 | 128 | |
lesmin | 0:32c20cfb2b30 | 129 | #pragma pack(0) |
lesmin | 0:32c20cfb2b30 | 130 | #endif /* STRUCT_H_ */ |
lesmin | 0:32c20cfb2b30 | 131 | |
lesmin | 0:32c20cfb2b30 | 132 | |
lesmin | 0:32c20cfb2b30 | 133 |