ThingPlug GMMP library for mbed
Dependents: ThingPlug_WiFi_Example_2 ThingPlug_Ethernet_Example ThingPlug_Ethernet_Example_temp_V2
Fork of GMMP_2 by
GMMP.cpp@10:84a748b7d1f6, 2015-08-14 (annotated)
- Committer:
- lesmin
- Date:
- Fri Aug 14 09:11:32 2015 +0000
- Revision:
- 10:84a748b7d1f6
- Parent:
- 9:68708791efac
added TCP retry codes by WIZnet
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lesmin | 0:7e575e5f88ec | 1 | /** GMMP 공통 정의 |
lesmin | 0:7e575e5f88ec | 2 | * @file GMMP.cpp |
lesmin | 0:7e575e5f88ec | 3 | * @date 2015/07/20 |
lesmin | 0:7e575e5f88ec | 4 | * @version 0.0.1.0 |
lesmin | 0:7e575e5f88ec | 5 | **/ |
lesmin | 0:7e575e5f88ec | 6 | |
lesmin | 0:7e575e5f88ec | 7 | #ifndef GMMP_h |
lesmin | 0:7e575e5f88ec | 8 | #define GMMP_h |
lesmin | 0:7e575e5f88ec | 9 | |
lesmin | 0:7e575e5f88ec | 10 | /* |
lesmin | 0:7e575e5f88ec | 11 | #include <stdio.h> |
lesmin | 0:7e575e5f88ec | 12 | #include <stdlib.h> |
lesmin | 0:7e575e5f88ec | 13 | #include <string.h> |
lesmin | 0:7e575e5f88ec | 14 | #include <time.h> |
lesmin | 0:7e575e5f88ec | 15 | #include <pthread.h> |
lesmin | 0:7e575e5f88ec | 16 | #include <unistd.h> |
lesmin | 0:7e575e5f88ec | 17 | #include <stdarg.h> |
lesmin | 0:7e575e5f88ec | 18 | */ |
lesmin | 0:7e575e5f88ec | 19 | |
lesmin | 0:7e575e5f88ec | 20 | //#include <inttypes.h> |
lesmin | 0:7e575e5f88ec | 21 | //#include <Time.h> |
lesmin | 0:7e575e5f88ec | 22 | //#include <Arduino.h> |
lesmin | 0:7e575e5f88ec | 23 | |
lesmin | 0:7e575e5f88ec | 24 | #include "config.h" |
lesmin | 0:7e575e5f88ec | 25 | |
lesmin | 1:29d7f5c53126 | 26 | #include "Client.h" |
lesmin | 0:7e575e5f88ec | 27 | |
lesmin | 0:7e575e5f88ec | 28 | /** moved to config.h |
lesmin | 0:7e575e5f88ec | 29 | //#define USE_SNIC_WIFI //Murata Type YD Wi-Fi |
lesmin | 0:7e575e5f88ec | 30 | //#define USE_WIZNET_W5500 |
lesmin | 0:7e575e5f88ec | 31 | **/ |
lesmin | 0:7e575e5f88ec | 32 | |
lesmin | 1:29d7f5c53126 | 33 | #if defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_L152RE) |
lesmin | 0:7e575e5f88ec | 34 | |
lesmin | 5:e210cb961300 | 35 | #ifdef USE_SNIC_WIFI___ |
lesmin | 0:7e575e5f88ec | 36 | /** moved to config.h |
lesmin | 5:e210cb961300 | 37 | // #define MBED_AP_SSID "TIDE867"//"tide855" |
lesmin | 0:7e575e5f88ec | 38 | // /** Securiry Options |
lesmin | 0:7e575e5f88ec | 39 | // e_SEC_OPEN = 0x00, //Open |
lesmin | 0:7e575e5f88ec | 40 | // e_SEC_WEP = 0x01, // WEP |
lesmin | 0:7e575e5f88ec | 41 | // e_SEC_WPA_TKIP = 0x02, // WPA-PSK(TKIP) |
lesmin | 0:7e575e5f88ec | 42 | // e_SEC_WPA2_AES = 0x04, // WPA2-PSK(AES) |
lesmin | 0:7e575e5f88ec | 43 | // e_SEC_WPA2_MIXED = 0x06, // WPA2-PSK(TKIP/AES) |
lesmin | 0:7e575e5f88ec | 44 | // e_SEC_WPA_AES = 0x07 // WPA-PSK(AES) **/ |
lesmin | 5:e210cb961300 | 45 | // #define MBED_AP_SECURITY_TYPE e_SEC_WPA2_AES//e_SEC_OPEN |
lesmin | 5:e210cb961300 | 46 | // #define MBED_AP_SECUTIRY_KEY "tidetide" |
lesmin | 0:7e575e5f88ec | 47 | // **/ |
lesmin | 0:7e575e5f88ec | 48 | #endif//USE_SNIC_WIFI |
lesmin | 0:7e575e5f88ec | 49 | #endif |
lesmin | 0:7e575e5f88ec | 50 | |
lesmin | 0:7e575e5f88ec | 51 | #include "NTPClient.h" |
lesmin | 0:7e575e5f88ec | 52 | |
lesmin | 0:7e575e5f88ec | 53 | #include "GMMP.h" |
lesmin | 0:7e575e5f88ec | 54 | |
lesmin | 0:7e575e5f88ec | 55 | byte g_serverIp[LEN_IP] ; ///< 서버 IP 정보를 저장한다. |
lesmin | 0:7e575e5f88ec | 56 | int g_nServerPort = 0; ///< 서버 Port 정보를 저장한다. |
lesmin | 0:7e575e5f88ec | 57 | |
lesmin | 0:7e575e5f88ec | 58 | char g_szAuthID[LEN_AUTH_ID];///< OMP Portal을 통해 사전에 등록된 M2M GW 의 Serial Number 저장 변수, 자동화를 위해 사용된다. |
lesmin | 0:7e575e5f88ec | 59 | |
lesmin | 0:7e575e5f88ec | 60 | char g_szAuthKey[LEN_AUTH_KEY]; ///< 등록 절차 시 OMP에서 할당 받은 AuthKey 저장 변수, 자동화를 위해 사용된다. |
lesmin | 0:7e575e5f88ec | 61 | |
lesmin | 0:7e575e5f88ec | 62 | char g_szDomainCode[LEN_DOMAIN_CODE]; ///< OMP Portal을 통해 사전에 등록된 서비스 영역별 구분 코드 저장 변수, 자동화를 위해 사용된다. |
lesmin | 0:7e575e5f88ec | 63 | |
lesmin | 0:7e575e5f88ec | 64 | char g_szGWID[LEN_GW_ID]; ///< OMP에서 할당 받은 Gateway의 ID 문자열 저장 변수, 자동화를 위해 사용된다. |
lesmin | 0:7e575e5f88ec | 65 | |
lesmin | 1:29d7f5c53126 | 66 | Client *g_pClient = NULL; |
lesmin | 1:29d7f5c53126 | 67 | |
lesmin | 0:7e575e5f88ec | 68 | /** |
lesmin | 0:7e575e5f88ec | 69 | * @brief OMP서버로 부터 수신한 패킷을 제공할 콜백함수 포인트 구조체 |
lesmin | 0:7e575e5f88ec | 70 | * @param pstGMMPHeader GMMP Header의 구조체 포인트 |
lesmin | 0:7e575e5f88ec | 71 | * @param pstBody GMMP Body의 구조체 포인트 |
lesmin | 0:7e575e5f88ec | 72 | * @return 성공:0, 실패: 1이상 , 에러코드 참조 |
lesmin | 0:7e575e5f88ec | 73 | */ |
lesmin | 0:7e575e5f88ec | 74 | typedef int (*callback_Reg)(GMMPHeader* pstGMMPHeader, void* pstBody); |
lesmin | 0:7e575e5f88ec | 75 | |
lesmin | 0:7e575e5f88ec | 76 | callback_Reg g_CallFunctionRegRecv = NULL; ///< OMP서버로 부터 수신한 패킷을 제공할 콜백함수 포인트 변수. |
lesmin | 0:7e575e5f88ec | 77 | //callback_Reg g_CallHeartbeatRegRecv = NULL; ///< OMP서버로 부터 수신한 패킷 중 Heartbeat 패킷을 제공할 콜백함수 포인트 변수. (TCP Always On mode에서만 사용된다.) |
lesmin | 0:7e575e5f88ec | 78 | |
lesmin | 0:7e575e5f88ec | 79 | void Uninitialize() |
lesmin | 0:7e575e5f88ec | 80 | { |
lesmin | 0:7e575e5f88ec | 81 | InitMemory(); |
lesmin | 0:7e575e5f88ec | 82 | CloseSocket(); |
lesmin | 0:7e575e5f88ec | 83 | } |
lesmin | 0:7e575e5f88ec | 84 | |
lesmin | 0:7e575e5f88ec | 85 | |
lesmin | 0:7e575e5f88ec | 86 | |
lesmin | 0:7e575e5f88ec | 87 | int Initialize(byte* serverIp, |
lesmin | 0:7e575e5f88ec | 88 | const int nPort, |
lesmin | 0:7e575e5f88ec | 89 | const char* pszDomainCode, |
lesmin | 0:7e575e5f88ec | 90 | const char* pszGWAuthID, |
lesmin | 0:7e575e5f88ec | 91 | byte* mac) |
lesmin | 0:7e575e5f88ec | 92 | { |
lesmin | 0:7e575e5f88ec | 93 | debugln("Initialize()"); |
lesmin | 0:7e575e5f88ec | 94 | |
lesmin | 0:7e575e5f88ec | 95 | InitMemory(); |
lesmin | 0:7e575e5f88ec | 96 | |
lesmin | 0:7e575e5f88ec | 97 | //delay(2000); |
lesmin | 0:7e575e5f88ec | 98 | //NTPClient ntp; |
lesmin | 0:7e575e5f88ec | 99 | |
lesmin | 8:0345116b42c8 | 100 | //infoln("Getting IP..."); |
lesmin | 0:7e575e5f88ec | 101 | |
lesmin | 5:e210cb961300 | 102 | #ifdef USE_SNIC_WIFI___ |
lesmin | 5:e210cb961300 | 103 | /** moved to main.cpp |
lesmin | 0:7e575e5f88ec | 104 | wifi.init(); |
lesmin | 0:7e575e5f88ec | 105 | |
lesmin | 0:7e575e5f88ec | 106 | wait(0.5); |
lesmin | 0:7e575e5f88ec | 107 | int s = wifi.disconnect(); |
lesmin | 0:7e575e5f88ec | 108 | if( s != 0 ) { |
lesmin | 0:7e575e5f88ec | 109 | return -1; |
lesmin | 0:7e575e5f88ec | 110 | } |
lesmin | 0:7e575e5f88ec | 111 | |
lesmin | 0:7e575e5f88ec | 112 | wait(0.3); |
lesmin | 0:7e575e5f88ec | 113 | // Connect AP |
lesmin | 0:7e575e5f88ec | 114 | wifi.connect( MBED_AP_SSID |
lesmin | 0:7e575e5f88ec | 115 | , strlen(MBED_AP_SSID) |
lesmin | 0:7e575e5f88ec | 116 | , MBED_AP_SECURITY_TYPE |
lesmin | 0:7e575e5f88ec | 117 | , MBED_AP_SECUTIRY_KEY |
lesmin | 0:7e575e5f88ec | 118 | , strlen(MBED_AP_SECUTIRY_KEY) ); |
lesmin | 0:7e575e5f88ec | 119 | wait(0.5); |
lesmin | 0:7e575e5f88ec | 120 | wifi.setIPConfig( true ); //Use DHCP |
lesmin | 0:7e575e5f88ec | 121 | wait(0.5); |
lesmin | 0:7e575e5f88ec | 122 | |
lesmin | 0:7e575e5f88ec | 123 | tagWIFI_STATUS_T wifi_status; |
lesmin | 0:7e575e5f88ec | 124 | if( wifi.getWifiStatus(&wifi_status) ) printf("wifi_status error!\r\n"); |
lesmin | 0:7e575e5f88ec | 125 | |
lesmin | 0:7e575e5f88ec | 126 | printf("MAC Address is %02x:%02x:%02x:%02x:%02x:%02x\r\n", |
lesmin | 0:7e575e5f88ec | 127 | wifi_status.mac_address[0], wifi_status.mac_address[1], wifi_status.mac_address[2], |
lesmin | 0:7e575e5f88ec | 128 | wifi_status.mac_address[3], wifi_status.mac_address[4], wifi_status.mac_address[5]); |
lesmin | 0:7e575e5f88ec | 129 | printf("IP Address is %s\r\n", wifi.getIPAddress()); |
lesmin | 5:e210cb961300 | 130 | **/ |
lesmin | 0:7e575e5f88ec | 131 | #endif//USE_SNIC_WIFI |
lesmin | 5:e210cb961300 | 132 | |
lesmin | 5:e210cb961300 | 133 | #ifdef USE_WIZNET_W5500___ |
lesmin | 5:e210cb961300 | 134 | /** moved to main.cpp |
lesmin | 0:7e575e5f88ec | 135 | //mbed_mac_address((char *)MAC_Addr); //Use mbed mac addres |
lesmin | 0:7e575e5f88ec | 136 | printf("input MAC Address is %02x:%02x:%02x:%02x:%02x:%02x\r\n", |
lesmin | 0:7e575e5f88ec | 137 | mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
lesmin | 0:7e575e5f88ec | 138 | |
lesmin | 0:7e575e5f88ec | 139 | int ret = ethernet.init(mac); |
lesmin | 0:7e575e5f88ec | 140 | //printf("SPI Initialized \r\n"); |
lesmin | 0:7e575e5f88ec | 141 | //wait(1); // 1 second for stable state |
lesmin | 0:7e575e5f88ec | 142 | |
lesmin | 0:7e575e5f88ec | 143 | printf("W5500 Networking Started \r\n"); |
lesmin | 0:7e575e5f88ec | 144 | //wait(1); // 1 second for stable state |
lesmin | 0:7e575e5f88ec | 145 | |
lesmin | 0:7e575e5f88ec | 146 | if (!ret) { |
lesmin | 0:7e575e5f88ec | 147 | printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress()); |
lesmin | 0:7e575e5f88ec | 148 | ret = ethernet.connect(); |
lesmin | 0:7e575e5f88ec | 149 | if (!ret) { |
lesmin | 0:7e575e5f88ec | 150 | printf("IP: %s, MASK: %s, GW: %s\r\n", |
lesmin | 0:7e575e5f88ec | 151 | ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway()); |
lesmin | 0:7e575e5f88ec | 152 | } else { |
lesmin | 0:7e575e5f88ec | 153 | printf("Error ethernet.connect() - ret = %d\r\n", ret); |
lesmin | 0:7e575e5f88ec | 154 | //exit(0); |
lesmin | 0:7e575e5f88ec | 155 | } |
lesmin | 0:7e575e5f88ec | 156 | } else { |
lesmin | 0:7e575e5f88ec | 157 | printf("Error ethernet.init() - ret = %d\r\n", ret); |
lesmin | 0:7e575e5f88ec | 158 | //exit(0); |
lesmin | 0:7e575e5f88ec | 159 | } |
lesmin | 5:e210cb961300 | 160 | **/ |
lesmin | 0:7e575e5f88ec | 161 | #endif//USE_WIZNET_W5500 |
lesmin | 0:7e575e5f88ec | 162 | |
lesmin | 0:7e575e5f88ec | 163 | NTPClient ntp; |
lesmin | 0:7e575e5f88ec | 164 | printf("Trying to update time...\r\n"); |
lesmin | 0:7e575e5f88ec | 165 | //if (ntp.setTime("0.pool.ntp.org") == 0) |
lesmin | 0:7e575e5f88ec | 166 | // if (ntp.setTime("time-a.timefreq.bldrdoc.gov") == 0) |
lesmin | 0:7e575e5f88ec | 167 | // if (ntp.setTime("kr.pool.ntp.org") == 0) |
lesmin | 0:7e575e5f88ec | 168 | // if (ntp.setTime("112.220.115.166") == 0) |
lesmin | 0:7e575e5f88ec | 169 | if (ntp.setTime("211.233.40.78") == 0) //MURATA UDP does not support DNS resolver... |
lesmin | 0:7e575e5f88ec | 170 | { |
lesmin | 0:7e575e5f88ec | 171 | printf("Set time successfully\r\n"); |
lesmin | 0:7e575e5f88ec | 172 | time_t ctTime; |
lesmin | 0:7e575e5f88ec | 173 | ctTime = time(NULL); |
lesmin | 0:7e575e5f88ec | 174 | // printf("Time is set to (UTC): %s\r\n", ctime(&ctTime)); |
lesmin | 0:7e575e5f88ec | 175 | ctTime += 32400; // GMT+9/Seoul |
lesmin | 0:7e575e5f88ec | 176 | printf("Time is set to (GMT+9): %s\r\n", ctime(&ctTime)); |
lesmin | 0:7e575e5f88ec | 177 | } |
lesmin | 0:7e575e5f88ec | 178 | else |
lesmin | 0:7e575e5f88ec | 179 | { |
lesmin | 0:7e575e5f88ec | 180 | printf("Error\r\n"); |
lesmin | 9:68708791efac | 181 | return SERVER_CONNECT_ERROR; |
lesmin | 0:7e575e5f88ec | 182 | } |
lesmin | 0:7e575e5f88ec | 183 | |
lesmin | 0:7e575e5f88ec | 184 | g_pClient = new Client; //lesmin |
lesmin | 0:7e575e5f88ec | 185 | |
lesmin | 0:7e575e5f88ec | 186 | if(SetServerInfo(serverIp, nPort, pszGWAuthID, pszDomainCode) != 0) |
lesmin | 0:7e575e5f88ec | 187 | { |
lesmin | 9:68708791efac | 188 | return SERVER_CONNECT_ERROR; |
lesmin | 0:7e575e5f88ec | 189 | } |
lesmin | 0:7e575e5f88ec | 190 | SetTID(0); |
lesmin | 0:7e575e5f88ec | 191 | |
lesmin | 0:7e575e5f88ec | 192 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 193 | } |
lesmin | 0:7e575e5f88ec | 194 | |
lesmin | 0:7e575e5f88ec | 195 | void SetAuthKey(const char* pszAuthKey) |
lesmin | 0:7e575e5f88ec | 196 | { |
lesmin | 0:7e575e5f88ec | 197 | memcpy(g_szAuthKey, pszAuthKey, strlen(pszAuthKey)); |
lesmin | 0:7e575e5f88ec | 198 | } |
lesmin | 0:7e575e5f88ec | 199 | |
lesmin | 0:7e575e5f88ec | 200 | void SetGWID(const char* pszGWID) |
lesmin | 0:7e575e5f88ec | 201 | { |
lesmin | 0:7e575e5f88ec | 202 | if(pszGWID != NULL) |
lesmin | 0:7e575e5f88ec | 203 | { |
lesmin | 0:7e575e5f88ec | 204 | memcpy(g_szGWID, pszGWID, strlen(pszGWID)); |
lesmin | 0:7e575e5f88ec | 205 | } |
lesmin | 0:7e575e5f88ec | 206 | } |
lesmin | 0:7e575e5f88ec | 207 | |
lesmin | 0:7e575e5f88ec | 208 | char* GetGWID() |
lesmin | 0:7e575e5f88ec | 209 | { |
lesmin | 0:7e575e5f88ec | 210 | return g_szGWID; |
lesmin | 0:7e575e5f88ec | 211 | } |
lesmin | 0:7e575e5f88ec | 212 | |
lesmin | 0:7e575e5f88ec | 213 | int SetServerInfo(byte* serverIp, int nPort, const char* pszAuthID, const char* pszDoamainCode) |
lesmin | 0:7e575e5f88ec | 214 | { |
lesmin | 0:7e575e5f88ec | 215 | /* |
lesmin | 0:7e575e5f88ec | 216 | if(pszAuthID == NULL || strlen(pszAuthID) > LEN_AUTH_ID |
lesmin | 0:7e575e5f88ec | 217 | || pszDoamainCode == NULL || strlen(pszDoamainCode) > LEN_DOMAIN_CODE) |
lesmin | 0:7e575e5f88ec | 218 | { |
lesmin | 0:7e575e5f88ec | 219 | return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 220 | } |
lesmin | 0:7e575e5f88ec | 221 | */ |
lesmin | 0:7e575e5f88ec | 222 | |
lesmin | 0:7e575e5f88ec | 223 | memcpy(g_serverIp, serverIp, LEN_IP); |
lesmin | 0:7e575e5f88ec | 224 | memcpy(g_szAuthID, pszAuthID, strlen(pszAuthID)); |
lesmin | 0:7e575e5f88ec | 225 | memcpy(g_szDomainCode, pszDoamainCode, strlen(pszDoamainCode)); |
lesmin | 0:7e575e5f88ec | 226 | |
lesmin | 0:7e575e5f88ec | 227 | g_nServerPort = nPort; |
lesmin | 0:7e575e5f88ec | 228 | |
lesmin | 0:7e575e5f88ec | 229 | int nRet = SetIntiSocket(); |
lesmin | 0:7e575e5f88ec | 230 | if(nRet != GMMP_SUCCESS) |
lesmin | 0:7e575e5f88ec | 231 | { |
lesmin | 0:7e575e5f88ec | 232 | return nRet; |
lesmin | 0:7e575e5f88ec | 233 | } |
lesmin | 0:7e575e5f88ec | 234 | |
lesmin | 0:7e575e5f88ec | 235 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 236 | } |
lesmin | 0:7e575e5f88ec | 237 | |
lesmin | 0:7e575e5f88ec | 238 | void SetCallFunction(int (* pCallFunctionName)(GMMPHeader* pstGMMPHeader, void* pstBody)) |
lesmin | 0:7e575e5f88ec | 239 | { |
lesmin | 0:7e575e5f88ec | 240 | g_CallFunctionRegRecv = (callback_Reg)pCallFunctionName; |
lesmin | 0:7e575e5f88ec | 241 | } |
lesmin | 0:7e575e5f88ec | 242 | |
lesmin | 0:7e575e5f88ec | 243 | int GO_Reg(const char* pszGWID, |
lesmin | 0:7e575e5f88ec | 244 | const char* pszManufactureID) |
lesmin | 0:7e575e5f88ec | 245 | { |
lesmin | 0:7e575e5f88ec | 246 | debugln("GO_Reg()"); |
lesmin | 0:7e575e5f88ec | 247 | SetTID(GetTID()+1); |
lesmin | 0:7e575e5f88ec | 248 | |
lesmin | 0:7e575e5f88ec | 249 | int nRet = GMMP_SetReg(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID, pszManufactureID); |
lesmin | 0:7e575e5f88ec | 250 | debugln("GO_SetReg() Done"); |
lesmin | 0:7e575e5f88ec | 251 | |
lesmin | 0:7e575e5f88ec | 252 | return nRet; |
lesmin | 0:7e575e5f88ec | 253 | } |
lesmin | 0:7e575e5f88ec | 254 | |
lesmin | 0:7e575e5f88ec | 255 | int GO_DeReg(const char* pszGWID, const char* pszDeviceID) |
lesmin | 0:7e575e5f88ec | 256 | { |
lesmin | 0:7e575e5f88ec | 257 | SetTID(GetTID()+1); |
lesmin | 0:7e575e5f88ec | 258 | |
lesmin | 0:7e575e5f88ec | 259 | int nRet = GMMP_SetDeReg(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID, pszDeviceID); |
lesmin | 0:7e575e5f88ec | 260 | |
lesmin | 0:7e575e5f88ec | 261 | return nRet; |
lesmin | 0:7e575e5f88ec | 262 | } |
lesmin | 0:7e575e5f88ec | 263 | |
lesmin | 0:7e575e5f88ec | 264 | int GO_Profile(const char* pszGWID, |
lesmin | 0:7e575e5f88ec | 265 | const char* pszDeviceID, |
lesmin | 0:7e575e5f88ec | 266 | const long nTID /*=0*/) |
lesmin | 0:7e575e5f88ec | 267 | { |
lesmin | 0:7e575e5f88ec | 268 | if(nTID == 0) { |
lesmin | 0:7e575e5f88ec | 269 | SetTID(GetTID()+1); |
lesmin | 0:7e575e5f88ec | 270 | } else { |
lesmin | 0:7e575e5f88ec | 271 | SetTID(nTID); |
lesmin | 0:7e575e5f88ec | 272 | } |
lesmin | 0:7e575e5f88ec | 273 | |
lesmin | 0:7e575e5f88ec | 274 | int nRet = GMMP_SetProfile(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID, pszDeviceID); |
lesmin | 0:7e575e5f88ec | 275 | |
lesmin | 0:7e575e5f88ec | 276 | return nRet; |
lesmin | 0:7e575e5f88ec | 277 | } |
lesmin | 0:7e575e5f88ec | 278 | |
lesmin | 0:7e575e5f88ec | 279 | int GO_Delivery(const char* pszGWID, |
lesmin | 0:7e575e5f88ec | 280 | const char* pszDeviceID, |
lesmin | 0:7e575e5f88ec | 281 | const char cReportType, |
lesmin | 0:7e575e5f88ec | 282 | const char cMediaType, |
lesmin | 0:7e575e5f88ec | 283 | const char* pszMessageBody) |
lesmin | 0:7e575e5f88ec | 284 | { |
lesmin | 0:7e575e5f88ec | 285 | SetTID(GetTID()+1); |
lesmin | 0:7e575e5f88ec | 286 | |
lesmin | 0:7e575e5f88ec | 287 | int nRet = GMMP_SetDelivery(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID, pszDeviceID, cReportType, cMediaType, pszMessageBody, 1, 1); |
lesmin | 0:7e575e5f88ec | 288 | |
lesmin | 0:7e575e5f88ec | 289 | return nRet; |
lesmin | 0:7e575e5f88ec | 290 | } |
lesmin | 0:7e575e5f88ec | 291 | |
lesmin | 0:7e575e5f88ec | 292 | int GO_Control(const char* pszGWID, |
lesmin | 0:7e575e5f88ec | 293 | const char* pszDeviceID, |
lesmin | 0:7e575e5f88ec | 294 | long nTID, |
lesmin | 0:7e575e5f88ec | 295 | const char cControlType, |
lesmin | 0:7e575e5f88ec | 296 | const char cResultCode) |
lesmin | 0:7e575e5f88ec | 297 | { |
lesmin | 0:7e575e5f88ec | 298 | SetTID(nTID); |
lesmin | 0:7e575e5f88ec | 299 | |
lesmin | 0:7e575e5f88ec | 300 | return GMMP_SetControl(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID, pszDeviceID, cControlType, cResultCode); |
lesmin | 0:7e575e5f88ec | 301 | } |
lesmin | 0:7e575e5f88ec | 302 | |
lesmin | 0:7e575e5f88ec | 303 | int GO_Notifi(const char* pszGWID, |
lesmin | 0:7e575e5f88ec | 304 | const char* pszDeviceID, |
lesmin | 0:7e575e5f88ec | 305 | const char cControlType, |
lesmin | 0:7e575e5f88ec | 306 | const char cResultCode, |
lesmin | 0:7e575e5f88ec | 307 | const char* pszMessageBody, |
lesmin | 0:7e575e5f88ec | 308 | const int nMessageBodySize) |
lesmin | 0:7e575e5f88ec | 309 | { |
lesmin | 0:7e575e5f88ec | 310 | int nRet = GMMP_SetNotifi(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID, pszDeviceID, cControlType, cResultCode, pszMessageBody, nMessageBodySize); |
lesmin | 0:7e575e5f88ec | 311 | |
lesmin | 0:7e575e5f88ec | 312 | return nRet; |
lesmin | 0:7e575e5f88ec | 313 | } |
lesmin | 0:7e575e5f88ec | 314 | |
lesmin | 0:7e575e5f88ec | 315 | int GO_HB(const char* pszGWID) |
lesmin | 0:7e575e5f88ec | 316 | { |
lesmin | 0:7e575e5f88ec | 317 | int nRet = GMMP_SetHB(g_szAuthID, g_szAuthKey, g_szDomainCode, pszGWID); |
lesmin | 0:7e575e5f88ec | 318 | |
lesmin | 0:7e575e5f88ec | 319 | return nRet; |
lesmin | 0:7e575e5f88ec | 320 | } |
lesmin | 0:7e575e5f88ec | 321 | |
lesmin | 0:7e575e5f88ec | 322 | int OG_Reg_Recv(GMMPHeader* pstGMMPHeader, stGwRegistrationRspHdr* pstGWBody, stDeviceRegistrationRspHdr* pstDeviceBody) |
lesmin | 0:7e575e5f88ec | 323 | { |
lesmin | 0:7e575e5f88ec | 324 | int nRet = 0; |
lesmin | 0:7e575e5f88ec | 325 | |
lesmin | 0:7e575e5f88ec | 326 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 327 | { |
lesmin | 0:7e575e5f88ec | 328 | if(pstGWBody != NULL) |
lesmin | 0:7e575e5f88ec | 329 | { |
lesmin | 0:7e575e5f88ec | 330 | nRet= (*g_CallFunctionRegRecv)(pstGMMPHeader, pstGWBody); |
lesmin | 0:7e575e5f88ec | 331 | |
lesmin | 0:7e575e5f88ec | 332 | if(nRet != GMMP_SUCCESS) |
lesmin | 0:7e575e5f88ec | 333 | { |
lesmin | 0:7e575e5f88ec | 334 | return nRet; |
lesmin | 0:7e575e5f88ec | 335 | } |
lesmin | 0:7e575e5f88ec | 336 | } |
lesmin | 0:7e575e5f88ec | 337 | else |
lesmin | 0:7e575e5f88ec | 338 | { |
lesmin | 0:7e575e5f88ec | 339 | nRet = (*g_CallFunctionRegRecv)(pstGMMPHeader, pstDeviceBody); |
lesmin | 0:7e575e5f88ec | 340 | |
lesmin | 0:7e575e5f88ec | 341 | if(nRet != GMMP_SUCCESS) |
lesmin | 0:7e575e5f88ec | 342 | { |
lesmin | 0:7e575e5f88ec | 343 | return nRet; |
lesmin | 0:7e575e5f88ec | 344 | } |
lesmin | 0:7e575e5f88ec | 345 | } |
lesmin | 0:7e575e5f88ec | 346 | } |
lesmin | 0:7e575e5f88ec | 347 | |
lesmin | 0:7e575e5f88ec | 348 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 349 | } |
lesmin | 0:7e575e5f88ec | 350 | |
lesmin | 0:7e575e5f88ec | 351 | int OG_DeReg_Recv(GMMPHeader* pstGMMPHeader, stGwDeRegistrationRspHdr* pstGWBody, stDeviceDeRegistrationRspHdr* pstDeviceBody) |
lesmin | 0:7e575e5f88ec | 352 | { |
lesmin | 0:7e575e5f88ec | 353 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 354 | { |
lesmin | 0:7e575e5f88ec | 355 | if(pstGWBody != NULL) |
lesmin | 0:7e575e5f88ec | 356 | { |
lesmin | 0:7e575e5f88ec | 357 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstGWBody); |
lesmin | 0:7e575e5f88ec | 358 | } |
lesmin | 0:7e575e5f88ec | 359 | else |
lesmin | 0:7e575e5f88ec | 360 | { |
lesmin | 0:7e575e5f88ec | 361 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstDeviceBody); |
lesmin | 0:7e575e5f88ec | 362 | } |
lesmin | 0:7e575e5f88ec | 363 | } |
lesmin | 0:7e575e5f88ec | 364 | |
lesmin | 0:7e575e5f88ec | 365 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 366 | } |
lesmin | 0:7e575e5f88ec | 367 | |
lesmin | 0:7e575e5f88ec | 368 | int OG_Profile_Recv(GMMPHeader* pstGMMPHeader, stProfileRspHdr* pstBody) |
lesmin | 0:7e575e5f88ec | 369 | { |
lesmin | 0:7e575e5f88ec | 370 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 371 | { |
lesmin | 0:7e575e5f88ec | 372 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstBody); |
lesmin | 0:7e575e5f88ec | 373 | } |
lesmin | 0:7e575e5f88ec | 374 | |
lesmin | 0:7e575e5f88ec | 375 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 376 | } |
lesmin | 0:7e575e5f88ec | 377 | |
lesmin | 0:7e575e5f88ec | 378 | int OG_Delivery_Recv(GMMPHeader* pstGMMPHeader, stPacketDeliveryRspHdr* pstBody) |
lesmin | 0:7e575e5f88ec | 379 | { |
lesmin | 0:7e575e5f88ec | 380 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 381 | { |
lesmin | 0:7e575e5f88ec | 382 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstBody); |
lesmin | 0:7e575e5f88ec | 383 | } |
lesmin | 0:7e575e5f88ec | 384 | |
lesmin | 0:7e575e5f88ec | 385 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 386 | } |
lesmin | 0:7e575e5f88ec | 387 | |
lesmin | 0:7e575e5f88ec | 388 | int OG_Ctrl_Recv(GMMPHeader* pstGMMPHeader, stControlReqHdr* pstBody) |
lesmin | 0:7e575e5f88ec | 389 | { |
lesmin | 0:7e575e5f88ec | 390 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 391 | { |
lesmin | 0:7e575e5f88ec | 392 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstBody); |
lesmin | 0:7e575e5f88ec | 393 | } |
lesmin | 0:7e575e5f88ec | 394 | |
lesmin | 0:7e575e5f88ec | 395 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 396 | } |
lesmin | 0:7e575e5f88ec | 397 | |
lesmin | 0:7e575e5f88ec | 398 | int OG_HB_Recv(GMMPHeader* pstGMMPHeader, stHeartBeatMsgRspHdr* pstBody) |
lesmin | 0:7e575e5f88ec | 399 | { |
lesmin | 0:7e575e5f88ec | 400 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 401 | { |
lesmin | 0:7e575e5f88ec | 402 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstBody); |
lesmin | 0:7e575e5f88ec | 403 | } |
lesmin | 0:7e575e5f88ec | 404 | |
lesmin | 0:7e575e5f88ec | 405 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 406 | } |
lesmin | 0:7e575e5f88ec | 407 | |
lesmin | 0:7e575e5f88ec | 408 | int OG_Notifi_Recv(GMMPHeader* pstGMMPHeader, stNotificationRspHdr* pstBody) |
lesmin | 0:7e575e5f88ec | 409 | { |
lesmin | 0:7e575e5f88ec | 410 | if(g_CallFunctionRegRecv != NULL) |
lesmin | 0:7e575e5f88ec | 411 | { |
lesmin | 0:7e575e5f88ec | 412 | return (*g_CallFunctionRegRecv)(pstGMMPHeader, pstBody); |
lesmin | 0:7e575e5f88ec | 413 | } |
lesmin | 0:7e575e5f88ec | 414 | |
lesmin | 0:7e575e5f88ec | 415 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 416 | } |
lesmin | 0:7e575e5f88ec | 417 | |
lesmin | 0:7e575e5f88ec | 418 | int GetReadData(GMMPHeader* pstGMMPHeader, void** pBody) |
lesmin | 0:7e575e5f88ec | 419 | { |
lesmin | 0:7e575e5f88ec | 420 | int nHeaderCound = 0; |
lesmin | 0:7e575e5f88ec | 421 | int nRet = 0; |
lesmin | 0:7e575e5f88ec | 422 | |
lesmin | 0:7e575e5f88ec | 423 | while(true) |
lesmin | 0:7e575e5f88ec | 424 | { |
lesmin | 0:7e575e5f88ec | 425 | nRet = GMMP_Read(pstGMMPHeader, pBody); |
lesmin | 0:7e575e5f88ec | 426 | if(nRet == GMMP_HEADER_SIZE_ERROR) { |
lesmin | 0:7e575e5f88ec | 427 | if(nHeaderCound > 3) { |
lesmin | 0:7e575e5f88ec | 428 | break; |
lesmin | 0:7e575e5f88ec | 429 | } |
lesmin | 0:7e575e5f88ec | 430 | nHeaderCound++; |
lesmin | 0:7e575e5f88ec | 431 | continue; |
lesmin | 0:7e575e5f88ec | 432 | } |
lesmin | 0:7e575e5f88ec | 433 | else if(nRet == GMMP_SUCCESS) { |
lesmin | 0:7e575e5f88ec | 434 | break; |
lesmin | 0:7e575e5f88ec | 435 | } |
lesmin | 0:7e575e5f88ec | 436 | else { |
lesmin | 0:7e575e5f88ec | 437 | return nRet; |
lesmin | 0:7e575e5f88ec | 438 | } |
lesmin | 0:7e575e5f88ec | 439 | } |
lesmin | 0:7e575e5f88ec | 440 | |
lesmin | 0:7e575e5f88ec | 441 | GMMP_Recv(pstGMMPHeader, *pBody); |
lesmin | 0:7e575e5f88ec | 442 | |
lesmin | 0:7e575e5f88ec | 443 | return nRet; |
lesmin | 0:7e575e5f88ec | 444 | } |
lesmin | 0:7e575e5f88ec | 445 | |
lesmin | 0:7e575e5f88ec | 446 | long Char2int(void* pBuffer, int nSize) |
lesmin | 0:7e575e5f88ec | 447 | { |
lesmin | 0:7e575e5f88ec | 448 | if(nSize != sizeof(long)) { |
lesmin | 0:7e575e5f88ec | 449 | return 0; |
lesmin | 0:7e575e5f88ec | 450 | } |
lesmin | 0:7e575e5f88ec | 451 | |
lesmin | 0:7e575e5f88ec | 452 | long nInt = 0; |
lesmin | 0:7e575e5f88ec | 453 | memcpy(&nInt, pBuffer, sizeof(long)); |
lesmin | 0:7e575e5f88ec | 454 | return btoli(nInt); |
lesmin | 0:7e575e5f88ec | 455 | } |
lesmin | 0:7e575e5f88ec | 456 | |
lesmin | 0:7e575e5f88ec | 457 | int Char2short(void* pBuffer, short nSize) |
lesmin | 0:7e575e5f88ec | 458 | { |
lesmin | 0:7e575e5f88ec | 459 | if(nSize != sizeof(short)) { |
lesmin | 0:7e575e5f88ec | 460 | return 0; |
lesmin | 0:7e575e5f88ec | 461 | } |
lesmin | 0:7e575e5f88ec | 462 | |
lesmin | 0:7e575e5f88ec | 463 | short nShort = 0; |
lesmin | 0:7e575e5f88ec | 464 | memcpy(&nShort, pBuffer, sizeof(short)); |
lesmin | 0:7e575e5f88ec | 465 | return btols(nShort); |
lesmin | 0:7e575e5f88ec | 466 | } |
lesmin | 0:7e575e5f88ec | 467 | |
lesmin | 0:7e575e5f88ec | 468 | void InitMemory() |
lesmin | 0:7e575e5f88ec | 469 | { |
lesmin | 5:e210cb961300 | 470 | memset(g_szDomainCode, 0 , sizeof(g_szDomainCode)); //lesmin bug patch 20150812 |
lesmin | 0:7e575e5f88ec | 471 | memset(g_szAuthID, 0 , sizeof(g_szAuthID)); |
lesmin | 0:7e575e5f88ec | 472 | memset(g_szAuthKey, 0 , sizeof(g_szAuthKey)); |
lesmin | 0:7e575e5f88ec | 473 | memset(g_szGWID, 0 , sizeof(g_szGWID)); |
lesmin | 0:7e575e5f88ec | 474 | |
lesmin | 0:7e575e5f88ec | 475 | g_nServerPort = 0; |
lesmin | 0:7e575e5f88ec | 476 | |
lesmin | 0:7e575e5f88ec | 477 | g_CallFunctionRegRecv = NULL; |
lesmin | 0:7e575e5f88ec | 478 | } |
lesmin | 0:7e575e5f88ec | 479 | |
lesmin | 0:7e575e5f88ec | 480 | #endif |