ThingPlug GMMP for W5500 Ethernet Shield
Dependencies: GMMP_W5500 LM75B NTPClient WIZnet_Library mbed-src
main.cpp@0:4a49b42d3ccb, 2015-08-10 (annotated)
- Committer:
- hkjung
- Date:
- Mon Aug 10 02:14:08 2015 +0000
- Revision:
- 0:4a49b42d3ccb
ThingPlug GMMP for W5500 Ethernet Shield
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hkjung | 0:4a49b42d3ccb | 1 | #include "mbed.h" |
hkjung | 0:4a49b42d3ccb | 2 | |
hkjung | 0:4a49b42d3ccb | 3 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 4 | //#include "C12832.h" //for LCD |
hkjung | 0:4a49b42d3ccb | 5 | #include "LM75B.h" //for Temperature Sensor |
hkjung | 0:4a49b42d3ccb | 6 | #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_L152RE) |
hkjung | 0:4a49b42d3ccb | 7 | //Sensor N/A for Nucleo |
hkjung | 0:4a49b42d3ccb | 8 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 9 | #include "DHT.h" |
hkjung | 0:4a49b42d3ccb | 10 | #endif |
hkjung | 0:4a49b42d3ccb | 11 | |
hkjung | 0:4a49b42d3ccb | 12 | //DigitalOut myled(LED1); |
hkjung | 0:4a49b42d3ccb | 13 | |
hkjung | 0:4a49b42d3ccb | 14 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 15 | //C12832 lcd(p5, p7, p6, p8, p11); |
hkjung | 0:4a49b42d3ccb | 16 | LM75B sensor(p28, p27); |
hkjung | 0:4a49b42d3ccb | 17 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 18 | //PwmOut r(LED_RED); |
hkjung | 0:4a49b42d3ccb | 19 | //PwmOut g(LED_GREEN); |
hkjung | 0:4a49b42d3ccb | 20 | //PwmOut b(LED_BLUE); |
hkjung | 0:4a49b42d3ccb | 21 | DHT sensor(D4, DHT11); |
hkjung | 0:4a49b42d3ccb | 22 | DigitalOut r(LED_RED); |
hkjung | 0:4a49b42d3ccb | 23 | DigitalOut g(LED_GREEN); |
hkjung | 0:4a49b42d3ccb | 24 | DigitalOut b(LED_BLUE); |
hkjung | 0:4a49b42d3ccb | 25 | //AnalogIn ain0(A0); |
hkjung | 0:4a49b42d3ccb | 26 | //AnalogIn ain1(A1); |
hkjung | 0:4a49b42d3ccb | 27 | #endif |
hkjung | 0:4a49b42d3ccb | 28 | |
hkjung | 0:4a49b42d3ccb | 29 | |
hkjung | 0:4a49b42d3ccb | 30 | Serial pc(USBTX, USBRX); |
hkjung | 0:4a49b42d3ccb | 31 | |
hkjung | 0:4a49b42d3ccb | 32 | /** |
hkjung | 0:4a49b42d3ccb | 33 | * GMMP Test Code |
hkjung | 0:4a49b42d3ccb | 34 | */ |
hkjung | 0:4a49b42d3ccb | 35 | |
hkjung | 0:4a49b42d3ccb | 36 | #include "GMMP.h" |
hkjung | 0:4a49b42d3ccb | 37 | |
hkjung | 0:4a49b42d3ccb | 38 | #define USER_CONTROL_LED 0x80 |
hkjung | 0:4a49b42d3ccb | 39 | |
hkjung | 0:4a49b42d3ccb | 40 | #define HIGH 0x1 |
hkjung | 0:4a49b42d3ccb | 41 | #define LOW 0x0 |
hkjung | 0:4a49b42d3ccb | 42 | |
hkjung | 0:4a49b42d3ccb | 43 | |
hkjung | 0:4a49b42d3ccb | 44 | byte serverIp[] = {61, 250, 21, 211}; //ThingPlug GMMP |
hkjung | 0:4a49b42d3ccb | 45 | const int nServerPort = 31002; //ThingPlug GMMP |
hkjung | 0:4a49b42d3ccb | 46 | const char* pszDomainCode = "ThingPlug"; |
hkjung | 0:4a49b42d3ccb | 47 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 48 | //const char* pszGWAuthID = "0002F7F1CE5A"; |
hkjung | 0:4a49b42d3ccb | 49 | //const char* pszGWMFID = "NXP"; |
hkjung | 0:4a49b42d3ccb | 50 | //const char* pszDeviceMFID = "NXP"; |
hkjung | 0:4a49b42d3ccb | 51 | // Eric's Device #2, APIKey = _b4u79jV2IZP9u9n6LU7WySz9Zw= |
hkjung | 0:4a49b42d3ccb | 52 | const char* pszGWAuthID = "0008DC1D69F3"; |
hkjung | 0:4a49b42d3ccb | 53 | const char* pszGWMFID = "WIZnet"; |
hkjung | 0:4a49b42d3ccb | 54 | const char* pszDeviceMFID = "WIZnet"; |
hkjung | 0:4a49b42d3ccb | 55 | #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_L152RE) |
hkjung | 0:4a49b42d3ccb | 56 | const char* pszGWAuthID = "98F170674DC3"; |
hkjung | 0:4a49b42d3ccb | 57 | const char* pszGWMFID = "STMicro"; |
hkjung | 0:4a49b42d3ccb | 58 | const char* pszDeviceMFID = "STMicro"; |
hkjung | 0:4a49b42d3ccb | 59 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 60 | // Eric's Device #2, APIKey = _b4u79jV2IZP9u9n6LU7WySz9Zw= |
hkjung | 0:4a49b42d3ccb | 61 | const char* pszGWAuthID = "0008DC1D69F3"; |
hkjung | 0:4a49b42d3ccb | 62 | const char* pszGWMFID = "WIZnet"; |
hkjung | 0:4a49b42d3ccb | 63 | const char* pszDeviceMFID = "WIZnet"; |
hkjung | 0:4a49b42d3ccb | 64 | #else |
hkjung | 0:4a49b42d3ccb | 65 | const char* pszGWAuthID = "0008DC1D69F3"; |
hkjung | 0:4a49b42d3ccb | 66 | const char* pszGWMFID = "WIZnet"; |
hkjung | 0:4a49b42d3ccb | 67 | const char* pszDeviceMFID = "WIZnet"; |
hkjung | 0:4a49b42d3ccb | 68 | #endif |
hkjung | 0:4a49b42d3ccb | 69 | char* deviceId[LEN_DEVICE_ID]; |
hkjung | 0:4a49b42d3ccb | 70 | |
hkjung | 0:4a49b42d3ccb | 71 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 72 | //byte mac[] = {0x00, 0x02, 0xF7, 0xF1, 0xCE, 0x5A}; //mbed Application Board Ethernet |
hkjung | 0:4a49b42d3ccb | 73 | byte mac[6] = {0x00,0x08,0xDC,0x1D,0x69,0xF3}; // WIZnet MAC address #2 |
hkjung | 0:4a49b42d3ccb | 74 | #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_L152RE) |
hkjung | 0:4a49b42d3ccb | 75 | //byte mac[] = {0x98, 0xF1, 0x70, 0x67, 0x4D, 0xC3}; //MURATA WIFI |
hkjung | 0:4a49b42d3ccb | 76 | byte mac[6] = {0x00,0x08,0xDC,0x1D,0x6A,0x0B}; // WIZnet MAC address #1 |
hkjung | 0:4a49b42d3ccb | 77 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 78 | byte mac[6] = {0x00,0x08,0xDC,0x1D,0x69,0xF3}; // WIZnet MAC address #2 |
hkjung | 0:4a49b42d3ccb | 79 | #else |
hkjung | 0:4a49b42d3ccb | 80 | byte mac[6] = {0x00, }; |
hkjung | 0:4a49b42d3ccb | 81 | #endif |
hkjung | 0:4a49b42d3ccb | 82 | |
hkjung | 0:4a49b42d3ccb | 83 | uint32_t lastDeliverMilli = 0; |
hkjung | 0:4a49b42d3ccb | 84 | uint32_t reportPeriodMilli = 3000; |
hkjung | 0:4a49b42d3ccb | 85 | uint32_t lastHeartbeatMilli = 0; |
hkjung | 0:4a49b42d3ccb | 86 | uint32_t heartbeatPeriodMilli = 10000; |
hkjung | 0:4a49b42d3ccb | 87 | byte regDevCount = 0; |
hkjung | 0:4a49b42d3ccb | 88 | byte regGwCount = 0; |
hkjung | 0:4a49b42d3ccb | 89 | |
hkjung | 0:4a49b42d3ccb | 90 | void startSensingTemp(); |
hkjung | 0:4a49b42d3ccb | 91 | void delay(int d); |
hkjung | 0:4a49b42d3ccb | 92 | |
hkjung | 0:4a49b42d3ccb | 93 | int Recv(GMMPHeader* pstGMMPHeader, void* pBody) |
hkjung | 0:4a49b42d3ccb | 94 | { |
hkjung | 0:4a49b42d3ccb | 95 | U8 cMessageType = pstGMMPHeader->ucMessageType; |
hkjung | 0:4a49b42d3ccb | 96 | |
hkjung | 0:4a49b42d3ccb | 97 | //info(F("MsgType: ")); |
hkjung | 0:4a49b42d3ccb | 98 | //infoln(cMessageType); |
hkjung | 0:4a49b42d3ccb | 99 | INFO("MsgType: %d", cMessageType); |
hkjung | 0:4a49b42d3ccb | 100 | |
hkjung | 0:4a49b42d3ccb | 101 | if (cMessageType == OPERATION_GW_REG_RSP) { |
hkjung | 0:4a49b42d3ccb | 102 | stGwRegistrationRspHdr* pstRspHdr = (stGwRegistrationRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 103 | |
hkjung | 0:4a49b42d3ccb | 104 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 105 | //error(F("GWRegRes Error: ")); |
hkjung | 0:4a49b42d3ccb | 106 | //errorln(pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 107 | ERR("GWRegRes Error: %d", pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 108 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 109 | return 1; |
hkjung | 0:4a49b42d3ccb | 110 | } |
hkjung | 0:4a49b42d3ccb | 111 | |
hkjung | 0:4a49b42d3ccb | 112 | SetAuthKey((char*) pstGMMPHeader->usAuthKey); |
hkjung | 0:4a49b42d3ccb | 113 | SetGWID((char*) pstRspHdr->usGWID); |
hkjung | 0:4a49b42d3ccb | 114 | infoln(("GWRegRes has been received:")); |
hkjung | 0:4a49b42d3ccb | 115 | infoln(g_szAuthKey); |
hkjung | 0:4a49b42d3ccb | 116 | infoln(GetGWID()); |
hkjung | 0:4a49b42d3ccb | 117 | INFO("GWRegRes has been received:\r\n%s\r\n%s", g_szAuthKey, GetGWID()); |
hkjung | 0:4a49b42d3ccb | 118 | regGwCount++; |
hkjung | 0:4a49b42d3ccb | 119 | |
hkjung | 0:4a49b42d3ccb | 120 | int ret = GO_Profile(GetGWID(), NULL, 0); |
hkjung | 0:4a49b42d3ccb | 121 | |
hkjung | 0:4a49b42d3ccb | 122 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 123 | errorln("ReqProfile Err!!"); |
hkjung | 0:4a49b42d3ccb | 124 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 125 | return 1; |
hkjung | 0:4a49b42d3ccb | 126 | } |
hkjung | 0:4a49b42d3ccb | 127 | |
hkjung | 0:4a49b42d3ccb | 128 | infoln("ProfileReq has been sent."); |
hkjung | 0:4a49b42d3ccb | 129 | } else if (cMessageType == OPERATION_PROFILE_RSP) { |
hkjung | 0:4a49b42d3ccb | 130 | stProfileRspHdr* pstRspHdr = (stProfileRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 131 | |
hkjung | 0:4a49b42d3ccb | 132 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 133 | errorln("ProfileRes Error!"); |
hkjung | 0:4a49b42d3ccb | 134 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 135 | return 1; |
hkjung | 0:4a49b42d3ccb | 136 | } |
hkjung | 0:4a49b42d3ccb | 137 | |
hkjung | 0:4a49b42d3ccb | 138 | //infoln(F("ProfileRes has been received:")); |
hkjung | 0:4a49b42d3ccb | 139 | //infoln(Char2int(pstRspHdr->unHeartbeatPeriod, 4)); |
hkjung | 0:4a49b42d3ccb | 140 | //infoln(Char2int(pstRspHdr->unReportOffset, 4)); |
hkjung | 0:4a49b42d3ccb | 141 | //infoln(Char2int(pstRspHdr->unReportPeriod, 4)); |
hkjung | 0:4a49b42d3ccb | 142 | //infoln(Char2int(pstRspHdr->unResponseTimeout, 4)); |
hkjung | 0:4a49b42d3ccb | 143 | INFO("ProfileRes has been received:\r\n%d\r\n%d\r\n%d\r\n%d", |
hkjung | 0:4a49b42d3ccb | 144 | Char2int(pstRspHdr->unHeartbeatPeriod, 4), |
hkjung | 0:4a49b42d3ccb | 145 | Char2int(pstRspHdr->unReportOffset, 4), |
hkjung | 0:4a49b42d3ccb | 146 | Char2int(pstRspHdr->unReportPeriod, 4), |
hkjung | 0:4a49b42d3ccb | 147 | Char2int(pstRspHdr->unResponseTimeout,4) ); |
hkjung | 0:4a49b42d3ccb | 148 | /* 주기값 재설정 |
hkjung | 0:4a49b42d3ccb | 149 | pstRspHdr->unHeartbeatPeriod; |
hkjung | 0:4a49b42d3ccb | 150 | pstRspHdr->unReportOffset; |
hkjung | 0:4a49b42d3ccb | 151 | pstRspHdr->unReportPeriod; |
hkjung | 0:4a49b42d3ccb | 152 | pstRspHdr->unResponseTimeout; |
hkjung | 0:4a49b42d3ccb | 153 | */ |
hkjung | 0:4a49b42d3ccb | 154 | |
hkjung | 0:4a49b42d3ccb | 155 | reportPeriodMilli = Char2int(pstRspHdr->unReportPeriod, 4) * 1000 * 60; |
hkjung | 0:4a49b42d3ccb | 156 | //reportPeriodMilli = Char2int(pstRspHdr->unReportPeriod, 4) * 300; |
hkjung | 0:4a49b42d3ccb | 157 | heartbeatPeriodMilli = Char2int(pstRspHdr->unHeartbeatPeriod, 4) * 1000 * 60; |
hkjung | 0:4a49b42d3ccb | 158 | |
hkjung | 0:4a49b42d3ccb | 159 | long nHeartBeat = Char2int((char*) pstRspHdr->unHeartbeatPeriod, sizeof(pstGMMPHeader->usTID)); //수신받은 Heartbeat 주기 값을 확인. |
hkjung | 0:4a49b42d3ccb | 160 | |
hkjung | 0:4a49b42d3ccb | 161 | //Profile 요청 수신 값에 Heartbeat 주기 값으로 변경 |
hkjung | 0:4a49b42d3ccb | 162 | if (nHeartBeat > 0) { |
hkjung | 0:4a49b42d3ccb | 163 | //nTimerSec = nHeartBeat; |
hkjung | 0:4a49b42d3ccb | 164 | } |
hkjung | 0:4a49b42d3ccb | 165 | |
hkjung | 0:4a49b42d3ccb | 166 | int ret = GO_Reg(GetGWID(), pszDeviceMFID); |
hkjung | 0:4a49b42d3ccb | 167 | |
hkjung | 0:4a49b42d3ccb | 168 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 169 | errorln("DevRegReq Err!!"); |
hkjung | 0:4a49b42d3ccb | 170 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 171 | return 1; |
hkjung | 0:4a49b42d3ccb | 172 | } |
hkjung | 0:4a49b42d3ccb | 173 | |
hkjung | 0:4a49b42d3ccb | 174 | infoln("DevRegReq has been sent."); |
hkjung | 0:4a49b42d3ccb | 175 | } else if (cMessageType == OPERATION_DEVICE_REG_RSP) { |
hkjung | 0:4a49b42d3ccb | 176 | stDeviceRegistrationRspHdr* pstRspHdr = (stDeviceRegistrationRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 177 | |
hkjung | 0:4a49b42d3ccb | 178 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 179 | errorln("DevRegRes Error!"); |
hkjung | 0:4a49b42d3ccb | 180 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 181 | return 1; |
hkjung | 0:4a49b42d3ccb | 182 | } |
hkjung | 0:4a49b42d3ccb | 183 | |
hkjung | 0:4a49b42d3ccb | 184 | if (strlen((char*) pstRspHdr->usDeviceID) <= 0) { |
hkjung | 0:4a49b42d3ccb | 185 | errorln("No DeviceID!"); |
hkjung | 0:4a49b42d3ccb | 186 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 187 | return 1; |
hkjung | 0:4a49b42d3ccb | 188 | } |
hkjung | 0:4a49b42d3ccb | 189 | |
hkjung | 0:4a49b42d3ccb | 190 | int len = strlen((char*) pstRspHdr->usDeviceID); |
hkjung | 0:4a49b42d3ccb | 191 | memset(deviceId, 0, LEN_DEVICE_ID); |
hkjung | 0:4a49b42d3ccb | 192 | memcpy(deviceId, pstRspHdr->usDeviceID, len); |
hkjung | 0:4a49b42d3ccb | 193 | infoln("DevRegRes has been received:"); |
hkjung | 0:4a49b42d3ccb | 194 | infoln((char*) deviceId); |
hkjung | 0:4a49b42d3ccb | 195 | regDevCount++; |
hkjung | 0:4a49b42d3ccb | 196 | |
hkjung | 0:4a49b42d3ccb | 197 | //startSensingTemp(); |
hkjung | 0:4a49b42d3ccb | 198 | } else if (cMessageType == OPERATION_DELIVERY_RSP) { |
hkjung | 0:4a49b42d3ccb | 199 | stPacketDeliveryRspHdr* pstRspHdr = (stPacketDeliveryRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 200 | |
hkjung | 0:4a49b42d3ccb | 201 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 202 | // errorln("DeliverRes Err!!"); |
hkjung | 0:4a49b42d3ccb | 203 | ERR("DeliverRes Err(0x%2x)!!", pstRspHdr->ucResultCode); //lesmin |
hkjung | 0:4a49b42d3ccb | 204 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 205 | return 1; |
hkjung | 0:4a49b42d3ccb | 206 | } |
hkjung | 0:4a49b42d3ccb | 207 | |
hkjung | 0:4a49b42d3ccb | 208 | infoln("DeliveryRes has been received."); |
hkjung | 0:4a49b42d3ccb | 209 | } else if (pstGMMPHeader->ucMessageType == OPERATION_HEARTBEAT_RSP) { |
hkjung | 0:4a49b42d3ccb | 210 | //stHeartBeatMsgRspHdr* pstRspHdr = (stHeartBeatMsgRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 211 | |
hkjung | 0:4a49b42d3ccb | 212 | infoln("HeartbeatRes has been received."); |
hkjung | 0:4a49b42d3ccb | 213 | } else if (cMessageType == OPERATION_CONTROL_REQ) { |
hkjung | 0:4a49b42d3ccb | 214 | stControlReqHdr* pstReqHdr = (stControlReqHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 215 | |
hkjung | 0:4a49b42d3ccb | 216 | infoln("ControlReq has been received."); |
hkjung | 0:4a49b42d3ccb | 217 | |
hkjung | 0:4a49b42d3ccb | 218 | char cResult = 0x00; |
hkjung | 0:4a49b42d3ccb | 219 | |
hkjung | 0:4a49b42d3ccb | 220 | int len = 0; |
hkjung | 0:4a49b42d3ccb | 221 | if (pstReqHdr->usMessageBody) { |
hkjung | 0:4a49b42d3ccb | 222 | len = strlen((char*) pstReqHdr->usMessageBody); |
hkjung | 0:4a49b42d3ccb | 223 | } |
hkjung | 0:4a49b42d3ccb | 224 | if (len > 0) { |
hkjung | 0:4a49b42d3ccb | 225 | info("Control Msg Body: "); |
hkjung | 0:4a49b42d3ccb | 226 | infoln((char*) pstReqHdr->usMessageBody); |
hkjung | 0:4a49b42d3ccb | 227 | } |
hkjung | 0:4a49b42d3ccb | 228 | |
hkjung | 0:4a49b42d3ccb | 229 | long nTID = Char2int((char*) pstGMMPHeader->usTID, sizeof(pstGMMPHeader->usTID)); |
hkjung | 0:4a49b42d3ccb | 230 | |
hkjung | 0:4a49b42d3ccb | 231 | //debug(F("Received TID: ")); |
hkjung | 0:4a49b42d3ccb | 232 | //debugln(nTID); |
hkjung | 0:4a49b42d3ccb | 233 | DBG("Received TID: %d\r\n", nTID); |
hkjung | 0:4a49b42d3ccb | 234 | |
hkjung | 0:4a49b42d3ccb | 235 | int ret = GO_Control((char*) pstReqHdr->usGWID, (char*) pstReqHdr->usDeviceID, nTID, |
hkjung | 0:4a49b42d3ccb | 236 | (char)pstReqHdr->ucControlType, cResult); |
hkjung | 0:4a49b42d3ccb | 237 | |
hkjung | 0:4a49b42d3ccb | 238 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 239 | errorln("ControRes Err!!"); |
hkjung | 0:4a49b42d3ccb | 240 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 241 | return 1; |
hkjung | 0:4a49b42d3ccb | 242 | } |
hkjung | 0:4a49b42d3ccb | 243 | |
hkjung | 0:4a49b42d3ccb | 244 | infoln("ControlRes has been sent."); |
hkjung | 0:4a49b42d3ccb | 245 | |
hkjung | 0:4a49b42d3ccb | 246 | //infoln(pstReqHdr->ucControlType); |
hkjung | 0:4a49b42d3ccb | 247 | INFO("%d\r\n", pstReqHdr->ucControlType); |
hkjung | 0:4a49b42d3ccb | 248 | |
hkjung | 0:4a49b42d3ccb | 249 | if (pstReqHdr->ucControlType != USER_CONTROL_LED) { |
hkjung | 0:4a49b42d3ccb | 250 | ERR("Unknown Control Msg: %d\r\n", pstReqHdr->ucControlType); |
hkjung | 0:4a49b42d3ccb | 251 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 252 | return 1; |
hkjung | 0:4a49b42d3ccb | 253 | } |
hkjung | 0:4a49b42d3ccb | 254 | |
hkjung | 0:4a49b42d3ccb | 255 | if (pstReqHdr->usMessageBody[0] == '1') { |
hkjung | 0:4a49b42d3ccb | 256 | //myled = 1; |
hkjung | 0:4a49b42d3ccb | 257 | infoln("LED ON"); |
hkjung | 0:4a49b42d3ccb | 258 | } else if (pstReqHdr->usMessageBody[0] == '0') { |
hkjung | 0:4a49b42d3ccb | 259 | //myled = 0; |
hkjung | 0:4a49b42d3ccb | 260 | infoln("LED OFF"); |
hkjung | 0:4a49b42d3ccb | 261 | } else { |
hkjung | 0:4a49b42d3ccb | 262 | errorln("Unknown Control Msg Body; it must be '1' or '0'."); |
hkjung | 0:4a49b42d3ccb | 263 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 264 | return 1; |
hkjung | 0:4a49b42d3ccb | 265 | } |
hkjung | 0:4a49b42d3ccb | 266 | |
hkjung | 0:4a49b42d3ccb | 267 | //delay(1000); //msec |
hkjung | 0:4a49b42d3ccb | 268 | |
hkjung | 0:4a49b42d3ccb | 269 | ret = GO_Notifi((char*) pstReqHdr->usGWID, (char*) pstReqHdr->usDeviceID, |
hkjung | 0:4a49b42d3ccb | 270 | (char)pstReqHdr->ucControlType, cResult, (char*) pstReqHdr->usMessageBody, 0); |
hkjung | 0:4a49b42d3ccb | 271 | |
hkjung | 0:4a49b42d3ccb | 272 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 273 | ERR("NotiReq Err: %d\r\n", ret); |
hkjung | 0:4a49b42d3ccb | 274 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 275 | return 1; |
hkjung | 0:4a49b42d3ccb | 276 | } |
hkjung | 0:4a49b42d3ccb | 277 | |
hkjung | 0:4a49b42d3ccb | 278 | infoln("Control NotiReq has been sent."); |
hkjung | 0:4a49b42d3ccb | 279 | } else if (cMessageType == OPERATION_NOTIFICATION_RSP) { |
hkjung | 0:4a49b42d3ccb | 280 | stNotificationRspHdr* pstRspHdr = (stNotificationRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 281 | |
hkjung | 0:4a49b42d3ccb | 282 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 283 | //error(F("NotiRes Err: ")); |
hkjung | 0:4a49b42d3ccb | 284 | //errorln(pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 285 | ERR("NotiRes Err: %d\r\n", pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 286 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 287 | return 1; |
hkjung | 0:4a49b42d3ccb | 288 | } |
hkjung | 0:4a49b42d3ccb | 289 | |
hkjung | 0:4a49b42d3ccb | 290 | infoln("NotiRes has been received."); |
hkjung | 0:4a49b42d3ccb | 291 | } else if (cMessageType == OPERATION_GW_DEREG_RSP) { |
hkjung | 0:4a49b42d3ccb | 292 | stGwRegistrationRspHdr* pstRspHdr = (stGwRegistrationRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 293 | |
hkjung | 0:4a49b42d3ccb | 294 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 295 | //error(F("DeregGwRes Err: ")); |
hkjung | 0:4a49b42d3ccb | 296 | //errorln(pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 297 | ERR("DeregGwRes Err: %d\r\n", pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 298 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 299 | return 1; |
hkjung | 0:4a49b42d3ccb | 300 | } |
hkjung | 0:4a49b42d3ccb | 301 | |
hkjung | 0:4a49b42d3ccb | 302 | if (strlen((char*) pstRspHdr->usGWID) <= 0) { |
hkjung | 0:4a49b42d3ccb | 303 | errorln("No GW ID!!"); |
hkjung | 0:4a49b42d3ccb | 304 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 305 | return 1; |
hkjung | 0:4a49b42d3ccb | 306 | } |
hkjung | 0:4a49b42d3ccb | 307 | |
hkjung | 0:4a49b42d3ccb | 308 | if (strlen((char*) pstGMMPHeader->usAuthKey) <= 0) { |
hkjung | 0:4a49b42d3ccb | 309 | errorln("No Auth Key!!"); |
hkjung | 0:4a49b42d3ccb | 310 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 311 | return 1; |
hkjung | 0:4a49b42d3ccb | 312 | } |
hkjung | 0:4a49b42d3ccb | 313 | |
hkjung | 0:4a49b42d3ccb | 314 | infoln("DeregGwRes has been received."); |
hkjung | 0:4a49b42d3ccb | 315 | } else if (cMessageType == OPERATION_DEVICE_DEREG_RSP) { |
hkjung | 0:4a49b42d3ccb | 316 | stDeviceRegistrationRspHdr* pstRspHdr = (stDeviceRegistrationRspHdr*) pBody; |
hkjung | 0:4a49b42d3ccb | 317 | |
hkjung | 0:4a49b42d3ccb | 318 | if (pstRspHdr->ucResultCode != 0x00) { |
hkjung | 0:4a49b42d3ccb | 319 | //error(F("DeregDevRes Err: ")); |
hkjung | 0:4a49b42d3ccb | 320 | //errorln(pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 321 | ERR("DeregDevRes Err: %d\r\n", pstRspHdr->ucResultCode); |
hkjung | 0:4a49b42d3ccb | 322 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 323 | return 1; |
hkjung | 0:4a49b42d3ccb | 324 | } |
hkjung | 0:4a49b42d3ccb | 325 | |
hkjung | 0:4a49b42d3ccb | 326 | if (strlen((char*) pstRspHdr->usDeviceID) <= 0) { |
hkjung | 0:4a49b42d3ccb | 327 | errorln("No device ID!!"); |
hkjung | 0:4a49b42d3ccb | 328 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 329 | return 1; |
hkjung | 0:4a49b42d3ccb | 330 | } |
hkjung | 0:4a49b42d3ccb | 331 | |
hkjung | 0:4a49b42d3ccb | 332 | infoln("DeregDevRes has been received."); |
hkjung | 0:4a49b42d3ccb | 333 | } |
hkjung | 0:4a49b42d3ccb | 334 | |
hkjung | 0:4a49b42d3ccb | 335 | free(pBody); |
hkjung | 0:4a49b42d3ccb | 336 | return 0; |
hkjung | 0:4a49b42d3ccb | 337 | } |
hkjung | 0:4a49b42d3ccb | 338 | |
hkjung | 0:4a49b42d3ccb | 339 | byte isSensing = 0; |
hkjung | 0:4a49b42d3ccb | 340 | |
hkjung | 0:4a49b42d3ccb | 341 | void startSensingTemp() |
hkjung | 0:4a49b42d3ccb | 342 | { |
hkjung | 0:4a49b42d3ccb | 343 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 344 | if (sensor.open()) { |
hkjung | 0:4a49b42d3ccb | 345 | printf("Sensing started!\r\n"); |
hkjung | 0:4a49b42d3ccb | 346 | isSensing = 1; |
hkjung | 0:4a49b42d3ccb | 347 | } |
hkjung | 0:4a49b42d3ccb | 348 | else |
hkjung | 0:4a49b42d3ccb | 349 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 350 | if(1) |
hkjung | 0:4a49b42d3ccb | 351 | { |
hkjung | 0:4a49b42d3ccb | 352 | printf("Sensing started!\r\n"); |
hkjung | 0:4a49b42d3ccb | 353 | isSensing = 1; |
hkjung | 0:4a49b42d3ccb | 354 | } |
hkjung | 0:4a49b42d3ccb | 355 | else |
hkjung | 0:4a49b42d3ccb | 356 | #endif |
hkjung | 0:4a49b42d3ccb | 357 | { |
hkjung | 0:4a49b42d3ccb | 358 | printf("Sensor not detected!\r\n"); |
hkjung | 0:4a49b42d3ccb | 359 | //isSensing = 0; |
hkjung | 0:4a49b42d3ccb | 360 | isSensing = 1; //emulate sensor |
hkjung | 0:4a49b42d3ccb | 361 | } |
hkjung | 0:4a49b42d3ccb | 362 | } |
hkjung | 0:4a49b42d3ccb | 363 | |
hkjung | 0:4a49b42d3ccb | 364 | #define BUF_SIZE 10 |
hkjung | 0:4a49b42d3ccb | 365 | GMMPHeader header; |
hkjung | 0:4a49b42d3ccb | 366 | void *pBody = NULL; |
hkjung | 0:4a49b42d3ccb | 367 | char sendBuf[BUF_SIZE]; |
hkjung | 0:4a49b42d3ccb | 368 | |
hkjung | 0:4a49b42d3ccb | 369 | //Timer t; //for Millis() |
hkjung | 0:4a49b42d3ccb | 370 | Timer t_main; //for Millis() |
hkjung | 0:4a49b42d3ccb | 371 | |
hkjung | 0:4a49b42d3ccb | 372 | void setup(void) { |
hkjung | 0:4a49b42d3ccb | 373 | t_main.start(); |
hkjung | 0:4a49b42d3ccb | 374 | |
hkjung | 0:4a49b42d3ccb | 375 | infoln("Start setup()"); |
hkjung | 0:4a49b42d3ccb | 376 | |
hkjung | 0:4a49b42d3ccb | 377 | startSensingTemp(); //lesmin |
hkjung | 0:4a49b42d3ccb | 378 | |
hkjung | 0:4a49b42d3ccb | 379 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 380 | //char mac_addr[19]; |
hkjung | 0:4a49b42d3ccb | 381 | //mbed_mac_address((char *)mac); //Use mbed mac addres |
hkjung | 0:4a49b42d3ccb | 382 | //snprintf(mac_addr, 19, "%02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
hkjung | 0:4a49b42d3ccb | 383 | //printf("MAC: %s\n", mac_addr); |
hkjung | 0:4a49b42d3ccb | 384 | INFO("WIZnet MAC: %02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
hkjung | 0:4a49b42d3ccb | 385 | #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_L152RE) |
hkjung | 0:4a49b42d3ccb | 386 | INFO("Nucleo MAC: %02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
hkjung | 0:4a49b42d3ccb | 387 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 388 | INFO("WIZnet MAC: %02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
hkjung | 0:4a49b42d3ccb | 389 | #endif |
hkjung | 0:4a49b42d3ccb | 390 | |
hkjung | 0:4a49b42d3ccb | 391 | if ( Initialize(serverIp, nServerPort, pszDomainCode, pszGWAuthID, mac) ) { |
hkjung | 0:4a49b42d3ccb | 392 | infoln("Initialize failed!"); |
hkjung | 0:4a49b42d3ccb | 393 | } |
hkjung | 0:4a49b42d3ccb | 394 | |
hkjung | 0:4a49b42d3ccb | 395 | SetCallFunction(Recv); |
hkjung | 0:4a49b42d3ccb | 396 | |
hkjung | 0:4a49b42d3ccb | 397 | int ret = GO_Reg(NULL, pszGWMFID); |
hkjung | 0:4a49b42d3ccb | 398 | |
hkjung | 0:4a49b42d3ccb | 399 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 400 | errorln("RegReq Error!!"); |
hkjung | 0:4a49b42d3ccb | 401 | for(;;); |
hkjung | 0:4a49b42d3ccb | 402 | } |
hkjung | 0:4a49b42d3ccb | 403 | |
hkjung | 0:4a49b42d3ccb | 404 | infoln("GW RegReq has been sent."); |
hkjung | 0:4a49b42d3ccb | 405 | } |
hkjung | 0:4a49b42d3ccb | 406 | |
hkjung | 0:4a49b42d3ccb | 407 | int millis(void) { |
hkjung | 0:4a49b42d3ccb | 408 | return t_main.read_ms(); |
hkjung | 0:4a49b42d3ccb | 409 | } |
hkjung | 0:4a49b42d3ccb | 410 | |
hkjung | 0:4a49b42d3ccb | 411 | float getTemperature(void) { |
hkjung | 0:4a49b42d3ccb | 412 | #if defined(TARGET_LPC1768) |
hkjung | 0:4a49b42d3ccb | 413 | float Temp = sensor; |
hkjung | 0:4a49b42d3ccb | 414 | |
hkjung | 0:4a49b42d3ccb | 415 | //lcd.cls(); |
hkjung | 0:4a49b42d3ccb | 416 | //lcd.locate(0,3); |
hkjung | 0:4a49b42d3ccb | 417 | //lcd.printf("Temp = %.3f\n", (float)Temp); |
hkjung | 0:4a49b42d3ccb | 418 | |
hkjung | 0:4a49b42d3ccb | 419 | wait(1.0); |
hkjung | 0:4a49b42d3ccb | 420 | return Temp; |
hkjung | 0:4a49b42d3ccb | 421 | #elif defined(TARGET_WIZwiki_W7500) |
hkjung | 0:4a49b42d3ccb | 422 | float c = 0.0f; |
hkjung | 0:4a49b42d3ccb | 423 | if(!sensor.readData()) |
hkjung | 0:4a49b42d3ccb | 424 | { |
hkjung | 0:4a49b42d3ccb | 425 | c = sensor.ReadTemperature(CELCIUS); |
hkjung | 0:4a49b42d3ccb | 426 | } |
hkjung | 0:4a49b42d3ccb | 427 | return c; |
hkjung | 0:4a49b42d3ccb | 428 | #else |
hkjung | 0:4a49b42d3ccb | 429 | return 33.3; |
hkjung | 0:4a49b42d3ccb | 430 | #endif |
hkjung | 0:4a49b42d3ccb | 431 | } |
hkjung | 0:4a49b42d3ccb | 432 | |
hkjung | 0:4a49b42d3ccb | 433 | void delay(int d) { |
hkjung | 0:4a49b42d3ccb | 434 | float delay_time = d/1000.0; |
hkjung | 0:4a49b42d3ccb | 435 | wait(delay_time); |
hkjung | 0:4a49b42d3ccb | 436 | } |
hkjung | 0:4a49b42d3ccb | 437 | |
hkjung | 0:4a49b42d3ccb | 438 | void loop(void) |
hkjung | 0:4a49b42d3ccb | 439 | { |
hkjung | 0:4a49b42d3ccb | 440 | int ret = GetReadData(&header, &pBody); |
hkjung | 0:4a49b42d3ccb | 441 | if (ret != E_WOULDBLOCK) { |
hkjung | 0:4a49b42d3ccb | 442 | infoln("******** NOT E_WOULDBLOCK *********"); |
hkjung | 0:4a49b42d3ccb | 443 | //info(F("Free memory size: ")); |
hkjung | 0:4a49b42d3ccb | 444 | //infoln(freeRam()); |
hkjung | 0:4a49b42d3ccb | 445 | } |
hkjung | 0:4a49b42d3ccb | 446 | |
hkjung | 0:4a49b42d3ccb | 447 | //byte addr[8]; |
hkjung | 0:4a49b42d3ccb | 448 | float temperature; |
hkjung | 0:4a49b42d3ccb | 449 | |
hkjung | 0:4a49b42d3ccb | 450 | int curMilli = millis(); |
hkjung | 0:4a49b42d3ccb | 451 | byte mustDeliver = (curMilli - lastDeliverMilli) > reportPeriodMilli; |
hkjung | 0:4a49b42d3ccb | 452 | byte mustHeartbeat = (curMilli - lastHeartbeatMilli) > heartbeatPeriodMilli; |
hkjung | 0:4a49b42d3ccb | 453 | |
hkjung | 0:4a49b42d3ccb | 454 | if (!isSensing) { |
hkjung | 0:4a49b42d3ccb | 455 | printf("Sensor is off...\r\n"); |
hkjung | 0:4a49b42d3ccb | 456 | return; |
hkjung | 0:4a49b42d3ccb | 457 | } |
hkjung | 0:4a49b42d3ccb | 458 | |
hkjung | 0:4a49b42d3ccb | 459 | #if 1 |
hkjung | 0:4a49b42d3ccb | 460 | //int mustGwDereg = digitalRead(DEREGISTRATION_GW_SWITCH_PIN); |
hkjung | 0:4a49b42d3ccb | 461 | int mustGwDereg = LOW; //lesmin |
hkjung | 0:4a49b42d3ccb | 462 | |
hkjung | 0:4a49b42d3ccb | 463 | if (mustGwDereg == HIGH && regGwCount > 0) { |
hkjung | 0:4a49b42d3ccb | 464 | ret = GO_DeReg(GetGWID(), NULL); |
hkjung | 0:4a49b42d3ccb | 465 | |
hkjung | 0:4a49b42d3ccb | 466 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 467 | errorln("DeregGwReq Error!!"); |
hkjung | 0:4a49b42d3ccb | 468 | delay(1000); |
hkjung | 0:4a49b42d3ccb | 469 | return; |
hkjung | 0:4a49b42d3ccb | 470 | } |
hkjung | 0:4a49b42d3ccb | 471 | |
hkjung | 0:4a49b42d3ccb | 472 | regGwCount--; |
hkjung | 0:4a49b42d3ccb | 473 | return; |
hkjung | 0:4a49b42d3ccb | 474 | } |
hkjung | 0:4a49b42d3ccb | 475 | |
hkjung | 0:4a49b42d3ccb | 476 | //int mustDevDereg = digitalRead(DEREGISTRATION_DEVICE_SWITCH_PIN); |
hkjung | 0:4a49b42d3ccb | 477 | int mustDevDereg = LOW; |
hkjung | 0:4a49b42d3ccb | 478 | |
hkjung | 0:4a49b42d3ccb | 479 | if (mustDevDereg == HIGH && regDevCount > 0) { |
hkjung | 0:4a49b42d3ccb | 480 | ret = GO_DeReg(GetGWID(), (char*) deviceId); |
hkjung | 0:4a49b42d3ccb | 481 | |
hkjung | 0:4a49b42d3ccb | 482 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 483 | errorln("DeregDevReq Error!!"); |
hkjung | 0:4a49b42d3ccb | 484 | delay(1000); |
hkjung | 0:4a49b42d3ccb | 485 | return; |
hkjung | 0:4a49b42d3ccb | 486 | } |
hkjung | 0:4a49b42d3ccb | 487 | |
hkjung | 0:4a49b42d3ccb | 488 | regDevCount--; |
hkjung | 0:4a49b42d3ccb | 489 | return; |
hkjung | 0:4a49b42d3ccb | 490 | } |
hkjung | 0:4a49b42d3ccb | 491 | |
hkjung | 0:4a49b42d3ccb | 492 | if (mustHeartbeat) { |
hkjung | 0:4a49b42d3ccb | 493 | DBG("lastHeartbeatMilli: %d\r\ncurMilli: %d\r\n", lastHeartbeatMilli, curMilli); |
hkjung | 0:4a49b42d3ccb | 494 | |
hkjung | 0:4a49b42d3ccb | 495 | ret = GO_HB(GetGWID()); |
hkjung | 0:4a49b42d3ccb | 496 | |
hkjung | 0:4a49b42d3ccb | 497 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 498 | errorln("HeartbeatReq Error!!"); |
hkjung | 0:4a49b42d3ccb | 499 | return; |
hkjung | 0:4a49b42d3ccb | 500 | } |
hkjung | 0:4a49b42d3ccb | 501 | |
hkjung | 0:4a49b42d3ccb | 502 | infoln("HeartbeatReq has been sent."); |
hkjung | 0:4a49b42d3ccb | 503 | |
hkjung | 0:4a49b42d3ccb | 504 | lastHeartbeatMilli = curMilli; |
hkjung | 0:4a49b42d3ccb | 505 | } |
hkjung | 0:4a49b42d3ccb | 506 | |
hkjung | 0:4a49b42d3ccb | 507 | if (!mustDeliver) { |
hkjung | 0:4a49b42d3ccb | 508 | return; |
hkjung | 0:4a49b42d3ccb | 509 | } |
hkjung | 0:4a49b42d3ccb | 510 | #endif |
hkjung | 0:4a49b42d3ccb | 511 | |
hkjung | 0:4a49b42d3ccb | 512 | temperature = getTemperature(); |
hkjung | 0:4a49b42d3ccb | 513 | |
hkjung | 0:4a49b42d3ccb | 514 | memset(sendBuf, 0, BUF_SIZE); |
hkjung | 0:4a49b42d3ccb | 515 | |
hkjung | 0:4a49b42d3ccb | 516 | sprintf(sendBuf, "%.1f", temperature); |
hkjung | 0:4a49b42d3ccb | 517 | |
hkjung | 0:4a49b42d3ccb | 518 | ret = GO_Delivery(GetGWID(), NULL, DELIVERY_COLLECT_DATA, 0x01, sendBuf); |
hkjung | 0:4a49b42d3ccb | 519 | |
hkjung | 0:4a49b42d3ccb | 520 | info("Sent Data: "); |
hkjung | 0:4a49b42d3ccb | 521 | infoln(sendBuf); |
hkjung | 0:4a49b42d3ccb | 522 | INFO("Sent Data: %s\r\n", sendBuf); |
hkjung | 0:4a49b42d3ccb | 523 | |
hkjung | 0:4a49b42d3ccb | 524 | if (ret != GMMP_SUCCESS) { |
hkjung | 0:4a49b42d3ccb | 525 | errorln("DeliveryReq Error!!"); |
hkjung | 0:4a49b42d3ccb | 526 | return; |
hkjung | 0:4a49b42d3ccb | 527 | } |
hkjung | 0:4a49b42d3ccb | 528 | |
hkjung | 0:4a49b42d3ccb | 529 | lastDeliverMilli = curMilli; |
hkjung | 0:4a49b42d3ccb | 530 | } |
hkjung | 0:4a49b42d3ccb | 531 | |
hkjung | 0:4a49b42d3ccb | 532 | int main() { |
hkjung | 0:4a49b42d3ccb | 533 | |
hkjung | 0:4a49b42d3ccb | 534 | //Set serial port baudrate speed: 115200 |
hkjung | 0:4a49b42d3ccb | 535 | pc.baud(115200); |
hkjung | 0:4a49b42d3ccb | 536 | wait(1); |
hkjung | 0:4a49b42d3ccb | 537 | |
hkjung | 0:4a49b42d3ccb | 538 | // Initialize: SKT ThingPlug GMMP (Network init included) |
hkjung | 0:4a49b42d3ccb | 539 | setup(); |
hkjung | 0:4a49b42d3ccb | 540 | wait(1); |
hkjung | 0:4a49b42d3ccb | 541 | pc.printf("ThingPlug: Initialize Done\r\n"); |
hkjung | 0:4a49b42d3ccb | 542 | |
hkjung | 0:4a49b42d3ccb | 543 | while(1) |
hkjung | 0:4a49b42d3ccb | 544 | { |
hkjung | 0:4a49b42d3ccb | 545 | // Run: SKT ThingPlug GMMP stack handler |
hkjung | 0:4a49b42d3ccb | 546 | loop(); |
hkjung | 0:4a49b42d3ccb | 547 | |
hkjung | 0:4a49b42d3ccb | 548 | //User's Applications |
hkjung | 0:4a49b42d3ccb | 549 | { |
hkjung | 0:4a49b42d3ccb | 550 | |
hkjung | 0:4a49b42d3ccb | 551 | } |
hkjung | 0:4a49b42d3ccb | 552 | } |
hkjung | 0:4a49b42d3ccb | 553 | } |