Modified for W5500 Ethernet initialize Added the Ethernet interface re-initialize code Added the connection retry

Dependents:   ThingPlug_Ethernet_Example

Fork of GMMP_mbed by Eric Jung

Committer:
hkjung
Date:
Wed Aug 12 08:58:58 2015 +0000
Revision:
5:9bbb6933559b
Parent:
0:7e575e5f88ec
Ethernet interface reinitialize code added

Who changed what in which revision?

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