Eric Jung / GMMP_mbed_Ethernet_Reinit

Dependents:   ThingPlug_Ethernet_Example

Fork of GMMP_mbed by Eric Jung

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Struct_Common.h Source File

Struct_Common.h

Go to the documentation of this file.
00001 /** GMMP 공통 구조체
00002   * @date 2013/11/21
00003  * @version 0.0.0.1
00004  * @file Struct_Common.h
00005  **/
00006 
00007 #ifndef STRUCT_H_
00008 #define STRUCT_H_
00009 
00010 #include "Define.h"
00011 
00012 ///////////////////////////////////////////////////////////////////////////
00013 //GMMP TCP Packet 공통
00014 
00015 #pragma pack(1)
00016 /**
00017  *@struct GMMPHeader
00018  *@brief GMMP TCP Packet Common Header
00019  */
00020 typedef struct {
00021 /**@var ucVersion
00022 * @brief GMMP Version
00023 */
00024     U8  ucVersion;
00025 
00026 /**@var usMessageLength
00027 * @brief GMMP 통신 패킷의 전체 길이.
00028 */
00029 /**@var ucMessageType
00030 * @brief 메시지의 유형으로서 단말등록, 주기보고, 단말제어 등 각각에 대해 요청과 응답을 구분한다.\n
00031 * *아래 표 참조\n
00032 *@image html OperationDefine.png Operation Type 표
00033 * @ref Define_Operation.h 참조
00034 */
00035 /**@var unOriginTimeStamp
00036 * @brief Unix Time(=POSIX time, 1970년 1월1일부터 경과된 초)을 사용한다. 메시지를 전송하는 쪽에서 해당 값을 설정한다.
00037 */
00038 /**@var usTotalCount
00039 * @brief Message Body에 전달될 내용이 2048 Bytes를 초과할 경우 여러 개의 메시지로 전송하며 전체 메시지 개수를 표시 한다.
00040 */
00041 /**@var usCurrentCount
00042 * @brief 여러 개의 메시지로 전송되는 경우 현재 메시지의 순서로서 1에서 Total Count까지의 값이 기록 된다.
00043 */
00044 /**@var usAuthID
00045 * @brief M2M GW 의 Serial Number 값이며, MSISDN 또는 MAC Address값을 사용할 수도 있다.
00046 */
00047 /**@var usAuthKey
00048 * @brief GMMP Message를 인증하기 위해 사용되는 Key 값으로 등록 절차 시 OMP에서 할당한다.\n
00049 *  (등록 이전에 Default 로 16byte를 0x00으로 채운다.)
00050 */
00051 /**@var usTID
00052 * @brief T-ID는 M2M GW와 OMP 간의 트랜잭션을 구분하기 위한 값으로서 Request 요청하는 곳에서 할당하며 Response 받은 곳에서는 해당 T-ID 값을 그대로 반환한다.
00053 M2M GW와 OMP에서 T-ID 사용 범위는 다음과 같다. (“6.4 T-ID 사용 범위”절 참조)\n
00054 ※ M2M GW T-ID : 0 ~ 99,999 (10만개)\n
00055 ※ OMP T-ID : M2M GW가 사용 이외의 값.
00056 */
00057 /**@var ucReserved1
00058 * @brief Message Body를 암호화하여 전송시 0x01로 설정한다. 그렇지 않은 경우에는 0x00으로 설정한다.
00059 */
00060 /**@var ucReserved2
00061 * @brief 현재 사용하지 않음 ( 0x00으로 설정한다.).
00062 */
00063     U8  usMessageLength[2];
00064     U8  ucMessageType;
00065     U8  unOriginTimeStamp[4];
00066     U8  usTotalCount[2];
00067     U8  usCurrentCount[2];
00068     U8  usAuthID[LEN_AUTH_ID];
00069     U8  usAuthKey[LEN_AUTH_KEY];
00070     U8  usTID[LEN_TID];
00071     U8  ucReserved1;
00072     U8  ucReserved2;
00073 }GMMPHeader; //기본 구조체
00074 
00075 /**@union ConvertShort
00076 * @brief short형 변수를 endian 변환을 위해 사용된다.
00077 */
00078 
00079 typedef union{
00080     U8      usShort[2];
00081     short   sU8;
00082 }ConvertShort;
00083 
00084 /**@union ConvertInt
00085 * @brief short형 변수를 endian 변환을 위해 사용된다.
00086 */
00087 typedef union{
00088     U8      usInt[4];
00089     long sU8;
00090 }ConvertInt;
00091 
00092 
00093 /**
00094  *@struct SMSMessage
00095  *@brief GMMP SMS Packet
00096  *@brief SMS 메시지는 Header Message와 최대 38byte를 갖는 Body Message로 구성된다. \n
00097  *@brief Header 메시지는 제어 명령을 구분할 수 있는 T-ID(Transaction ID)와 제어의 종류를 나타내는 Control Type Code값을 포함한다.
00098  *@ref Define_Operation.h 참조
00099  */
00100 typedef struct {
00101 /**@var unTID
00102 * @brief T-ID는 M2M GW와 OMP 간의 트랜잭션을 구분하기 위한 값으로서 Request 요청하는 곳에서 할당하며 Response 받은 곳에서는 해당 T-ID 값을 그대로 반환한다.
00103 M2M GW와 OMP에서 T-ID 사용 범위는 다음과 같다. (“6.4 T-ID 사용 범위”절 참조)\n
00104 ※ M2M GW T-ID : 0 ~ 99,999 (10만개)\n
00105 ※ OMP T-ID : M2M GW가 사용 이외의 값.
00106 */
00107 /**@var ucControlTypeCode
00108 * @brief M2M 단말로의 제어 명령 전달 시 제어 명령에 대한 Code값이다.
00109 * @ref Define_Operation.h 참조
00110 */
00111 /**@var ucLongSentenceFlag
00112 * @brief 0x00 : 제어 데이터의 크기가 38 bytes 이하여서 SMS Control Message Body 에 제어 데이터가 포함되어 있으며, Long Sentence Operation을 수행할 필요 없다.
00113 * @brief 0x01 : 제어 데이터의 크기가 38 bytes 이상이므로 SMS Control Message Body 에 제어 데이터가 포함되어 있지않고, M2M GW/Device Long Sentence(@ref GMMP_LSentence_Operation 참조)을 수행하여 제어 데이터를 획득해야 한다.
00114 */
00115 /**@var usDeviceID
00116 * @brief M2M Device ID
00117 * @warning 0x00이면 GW의 단말제어로 간주
00118 */
00119 /**@var usSMSMessageBody
00120 * @brief 단말에게 전달될 제어 명령에 대한 내용이 포함된다.
00121 */
00122     U8  unTID[4];
00123     U8      ucControlTypeCode;
00124     U8      ucLongSentenceFlag;
00125     U8      usDeviceID[LEN_DEVICE_ID];
00126     U8      usSMSMessageBody[38];
00127 }SMSMessage;
00128 
00129 #pragma pack(0)
00130 #endif /* STRUCT_H_ */
00131 
00132 
00133