TCP Client, WIZwiki-W7500. It will get weather of South Korea from openweathermap.org

Dependencies:   WIZnetInterface mbed

Fork of TCPClient_HelloWorld by jehoon song

Committer:
jh_ndm
Date:
Fri Nov 04 07:38:15 2016 +0000
Revision:
4:19ee5010a9e9
Parent:
2:00baa8aaaaf1
asdwfe

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jehoon 0:af541535ef54 1 #include "mbed.h"
jehoon 0:af541535ef54 2 #include "EthernetInterface.h"
jh_ndm 1:3550659bd872 3 #include "cJSON.h"
jehoon 0:af541535ef54 4
jh_ndm 4:19ee5010a9e9 5 AnalogIn Gas(A2);
jh_ndm 1:3550659bd872 6 int socketPort = 8000;
jh_ndm 1:3550659bd872 7 int httpPort = 80;
jh_ndm 1:3550659bd872 8
jh_ndm 1:3550659bd872 9 Serial pc(PA_13,PA_14);
jh_ndm 1:3550659bd872 10
jh_ndm 1:3550659bd872 11 char path[]="/v1/datastreams/test/datapoint/";
jh_ndm 1:3550659bd872 12
jh_ndm 1:3550659bd872 13 int MallocSize = 800*sizeof(char);
jh_ndm 1:3550659bd872 14 bool socket_GET(TCPSocketConnection &conn);
jh_ndm 1:3550659bd872 15 bool http_GET(TCPSocketConnection &conn);
jh_ndm 1:3550659bd872 16 bool http_POST(TCPSocketConnection &conn);
jh_ndm 1:3550659bd872 17 bool socket_POST(TCPSocketConnection &conn,int vall);
jh_ndm 1:3550659bd872 18 bool closeConnect(TCPSocketConnection &conn);
jh_ndm 1:3550659bd872 19
jh_ndm 1:3550659bd872 20 float val;
jh_ndm 4:19ee5010a9e9 21 //int mathtest;
jh_ndm 1:3550659bd872 22 bool out=false;
jh_ndm 1:3550659bd872 23
jh_ndm 1:3550659bd872 24 int main() {
jehoon 0:af541535ef54 25 int phy_link;
jh_ndm 1:3550659bd872 26 pc.printf("Wait a second...\r\n");
jh_ndm 1:3550659bd872 27 uint8_t mac_addr[6] = {0x78, 0x08, 0xDC, 0x1c, 0xa8, 0x95};
jehoon 0:af541535ef54 28
jehoon 0:af541535ef54 29 EthernetInterface eth;
jehoon 0:af541535ef54 30 eth.init(mac_addr); //Use DHCP
jehoon 0:af541535ef54 31 eth.connect();
jh_ndm 1:3550659bd872 32 pc.printf("start IP Address is %s\r\n", eth.getIPAddress());
jh_ndm 1:3550659bd872 33 /*
jh_ndm 1:3550659bd872 34 do{
jh_ndm 1:3550659bd872 35 phy_link = eth.ethernet_link();
jh_ndm 1:3550659bd872 36 pc.printf("...");
jh_ndm 1:3550659bd872 37 wait(2);
jh_ndm 1:3550659bd872 38 }while(!phy_link);
jh_ndm 1:3550659bd872 39 printf("\r\n");
jh_ndm 1:3550659bd872 40 */
jh_ndm 1:3550659bd872 41 pc.printf("IP Address is %s\r\n", eth.getIPAddress());
jh_ndm 1:3550659bd872 42
jh_ndm 1:3550659bd872 43 TCPSocketConnection conn;
jehoon 0:af541535ef54 44
jh_ndm 1:3550659bd872 45 while(true)
jh_ndm 1:3550659bd872 46 {
jh_ndm 1:3550659bd872 47 wait(1);
jh_ndm 4:19ee5010a9e9 48 val = Gas.read()*1023;
jh_ndm 4:19ee5010a9e9 49 int mathtest = ceil(val);//math.h
jh_ndm 4:19ee5010a9e9 50 pc.printf("Gas.read=%02f,n=%d\r\n",val,mathtest);
jh_ndm 1:3550659bd872 51 pc.printf("start http_post\r\n");
jh_ndm 1:3550659bd872 52 if(http_POST(conn))
jh_ndm 1:3550659bd872 53 {
jh_ndm 1:3550659bd872 54 if(!conn.close()){//短连接,断开一次连接一次
jh_ndm 1:3550659bd872 55 pc.printf("conn.close OK\r\n");
jh_ndm 1:3550659bd872 56 }else{
jh_ndm 1:3550659bd872 57 pc.printf("conn.close ERR\r\n");
jh_ndm 1:3550659bd872 58 break;
jh_ndm 1:3550659bd872 59 }
jh_ndm 1:3550659bd872 60 }else{
jh_ndm 1:3550659bd872 61 if(out)break;
jh_ndm 1:3550659bd872 62 pc.printf("connect close err!!!to do something\r\n");
jh_ndm 1:3550659bd872 63
jh_ndm 1:3550659bd872 64 }
jh_ndm 1:3550659bd872 65
jh_ndm 1:3550659bd872 66 //val = 0.0;
jh_ndm 1:3550659bd872 67 //mathtest = 0;
jh_ndm 1:3550659bd872 68
jh_ndm 1:3550659bd872 69 if(out)break;
jh_ndm 1:3550659bd872 70 }
jh_ndm 1:3550659bd872 71
jh_ndm 1:3550659bd872 72 eth.disconnect();
jh_ndm 1:3550659bd872 73 pc.printf("out the program!\r\n");
jh_ndm 1:3550659bd872 74 return 0;
jh_ndm 1:3550659bd872 75 }
jh_ndm 1:3550659bd872 76
jh_ndm 1:3550659bd872 77 /*socket GET*/
jh_ndm 1:3550659bd872 78 bool socket_GET(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 79 {
jh_ndm 1:3550659bd872 80 if(conn.is_connected()){
jh_ndm 1:3550659bd872 81 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 82 }else{
jh_ndm 1:3550659bd872 83 if(!conn.connect("iot.espressif.cn", socketPort)) //80 for http,8000 for socket,处理超时,拔掉网线后,卡在conn.connect
jh_ndm 1:3550659bd872 84 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 85 else{
jh_ndm 1:3550659bd872 86 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 87 out = true;
jh_ndm 1:3550659bd872 88 return false;
jh_ndm 1:3550659bd872 89 }
jh_ndm 1:3550659bd872 90 }
jh_ndm 1:3550659bd872 91
jh_ndm 1:3550659bd872 92 cJSON * pJsonRoot = NULL;
jh_ndm 1:3550659bd872 93 pJsonRoot = cJSON_CreateObject();
jh_ndm 1:3550659bd872 94 if(NULL == pJsonRoot)
jh_ndm 1:3550659bd872 95 {
jh_ndm 1:3550659bd872 96 pc.printf("socket_GET OUT1\r\n");
jh_ndm 1:3550659bd872 97 out = true;
jh_ndm 1:3550659bd872 98 return false;
jh_ndm 1:3550659bd872 99 }
jh_ndm 1:3550659bd872 100
jh_ndm 1:3550659bd872 101 cJSON * pSubJson = NULL;
jh_ndm 1:3550659bd872 102 pSubJson = cJSON_CreateObject();
jh_ndm 1:3550659bd872 103 if(NULL == pSubJson)
jh_ndm 1:3550659bd872 104 {
jh_ndm 1:3550659bd872 105 cJSON_Delete(pJsonRoot);
jh_ndm 1:3550659bd872 106 pc.printf("socket_GET OUT2\r\n");
jh_ndm 1:3550659bd872 107 out = true;
jh_ndm 1:3550659bd872 108 return false;
jh_ndm 1:3550659bd872 109 }
jh_ndm 1:3550659bd872 110
jh_ndm 1:3550659bd872 111 cJSON_AddStringToObject(pJsonRoot, "path", "/v1/datastreams/test/datapoint/");
jh_ndm 1:3550659bd872 112 cJSON_AddStringToObject(pSubJson, "Authorization", "token 48661aa81484f501362ed5ef4cc85e67eb2a3e3d");
jh_ndm 1:3550659bd872 113 cJSON_AddItemToObject(pJsonRoot, "meta", pSubJson);
jh_ndm 1:3550659bd872 114 cJSON_AddStringToObject(pJsonRoot, "method", "GET");
jh_ndm 1:3550659bd872 115
jh_ndm 1:3550659bd872 116 char* pJSON = cJSON_PrintUnformatted(pJsonRoot);
jh_ndm 1:3550659bd872 117 strcat(pJSON,"\n");//socket at the end should have '\n',use wireshark
jh_ndm 1:3550659bd872 118
jh_ndm 1:3550659bd872 119 if(NULL == pJSON)
jh_ndm 1:3550659bd872 120 {
jh_ndm 1:3550659bd872 121 cJSON_Delete(pJsonRoot);
jh_ndm 1:3550659bd872 122 pc.printf("socket_GET OUT3\r\n");
jh_ndm 1:3550659bd872 123 out = true;
jh_ndm 1:3550659bd872 124 return false;
jh_ndm 1:3550659bd872 125 }
jh_ndm 1:3550659bd872 126
jh_ndm 1:3550659bd872 127 conn.send_all(pJSON, strlen(pJSON));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 128 pc.printf("%s\r\n",pJSON);
jh_ndm 1:3550659bd872 129
jh_ndm 1:3550659bd872 130 char *buffer = NULL;
jh_ndm 1:3550659bd872 131 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 132 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 133 int ret;
jh_ndm 1:3550659bd872 134
jh_ndm 1:3550659bd872 135 while (true) {
jh_ndm 1:3550659bd872 136 wait(1);
jh_ndm 1:3550659bd872 137 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 138 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 139 if (ret <= 0) {
jh_ndm 1:3550659bd872 140 break;
jh_ndm 1:3550659bd872 141 }
jh_ndm 1:3550659bd872 142 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 143 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 144 }
jh_ndm 1:3550659bd872 145 pc.printf("socket_GET OUT\r\n");
jh_ndm 1:3550659bd872 146
jh_ndm 1:3550659bd872 147 free(pJSON);//for socket
jh_ndm 1:3550659bd872 148 cJSON_Delete(pJsonRoot);//for socket
jh_ndm 1:3550659bd872 149 free(buffer);
jh_ndm 1:3550659bd872 150 return true;
jh_ndm 1:3550659bd872 151 }
jh_ndm 1:3550659bd872 152
jh_ndm 1:3550659bd872 153 /*http_GET*/
jh_ndm 1:3550659bd872 154 bool http_GET(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 155 {
jh_ndm 1:3550659bd872 156 if(conn.is_connected()){
jh_ndm 1:3550659bd872 157 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 158 }else{
jh_ndm 1:3550659bd872 159 if(!conn.connect("iot.espressif.cn", httpPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 160 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 161 else{
jh_ndm 1:3550659bd872 162 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 163 out = true;
jh_ndm 1:3550659bd872 164 return false;
jh_ndm 1:3550659bd872 165 }
jh_ndm 1:3550659bd872 166 }
jh_ndm 1:3550659bd872 167
jh_ndm 1:3550659bd872 168 char http_cmd[] = "GET /v1/datastreams/Gas/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
jh_ndm 1:3550659bd872 169 "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token ebe1671e9d9f42a5231d017ec550552b9bae2cdf\r\n\r\n";
jh_ndm 1:3550659bd872 170
jh_ndm 1:3550659bd872 171 conn.send_all(http_cmd, strlen(http_cmd));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 172 pc.printf("%s\r\n",http_cmd);
jh_ndm 1:3550659bd872 173
jh_ndm 1:3550659bd872 174 //char *buffer = NULL;
jh_ndm 1:3550659bd872 175 //buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 176 //if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 177 char buffer[500];
jh_ndm 1:3550659bd872 178 int ret;
jh_ndm 1:3550659bd872 179
jh_ndm 1:3550659bd872 180 while (true) {
jh_ndm 1:3550659bd872 181 wait(1);
jh_ndm 1:3550659bd872 182 ret = conn.receive(buffer, 500-1);
jh_ndm 1:3550659bd872 183 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 184 if (ret <= 0) {
jh_ndm 1:3550659bd872 185 break;
jh_ndm 1:3550659bd872 186 }
jh_ndm 1:3550659bd872 187 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 188 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 189 }
jh_ndm 1:3550659bd872 190 pc.printf("http_GET OUT\r\n");
jh_ndm 1:3550659bd872 191 /* ///conn.close已经放到main中,55 行
jh_ndm 1:3550659bd872 192 if(conn.close()){
jh_ndm 1:3550659bd872 193 pc.printf("conn.close OK\r\n");
jh_ndm 1:3550659bd872 194 }else{
jh_ndm 1:3550659bd872 195 pc.printf("conn.close ERR\r\n");
jh_ndm 1:3550659bd872 196 }
jh_ndm 1:3550659bd872 197 */
jh_ndm 1:3550659bd872 198 //free(buffer);
jh_ndm 1:3550659bd872 199 return true;
jh_ndm 1:3550659bd872 200 }
jh_ndm 1:3550659bd872 201
jh_ndm 1:3550659bd872 202 /*http POST*/
jh_ndm 1:3550659bd872 203 bool http_POST(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 204 {
jh_ndm 1:3550659bd872 205 pc.printf("1111\r\n");
jh_ndm 1:3550659bd872 206 wait(0.5);
jh_ndm 1:3550659bd872 207 if(conn.is_connected()){
jh_ndm 1:3550659bd872 208 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 209 }else{
jh_ndm 1:3550659bd872 210 if(!conn.connect("iot.espressif.cn", httpPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 211 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 212 else{
jh_ndm 1:3550659bd872 213 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 214 out = true;
jh_ndm 1:3550659bd872 215 return false;
jh_ndm 1:3550659bd872 216 }
jh_ndm 1:3550659bd872 217 }
jh_ndm 1:3550659bd872 218 pc.printf("2222\r\n");
jh_ndm 1:3550659bd872 219 cJSON* http_post=NULL;
jh_ndm 1:3550659bd872 220 http_post = cJSON_CreateObject();
jh_ndm 1:3550659bd872 221 if(NULL == http_post)
jh_ndm 1:3550659bd872 222 {
jh_ndm 1:3550659bd872 223 pc.printf("OUT4\r\n");
jh_ndm 1:3550659bd872 224 out = true;
jh_ndm 1:3550659bd872 225 return false;
jh_ndm 1:3550659bd872 226 }
jh_ndm 1:3550659bd872 227 pc.printf("3333\r\n");
jh_ndm 1:3550659bd872 228 cJSON* http_post_json=NULL;
jh_ndm 1:3550659bd872 229 http_post_json = cJSON_CreateObject();
jh_ndm 1:3550659bd872 230 if(NULL == http_post_json)
jh_ndm 1:3550659bd872 231 {
jh_ndm 1:3550659bd872 232 cJSON_Delete(http_post);
jh_ndm 1:3550659bd872 233 pc.printf("OUT5\r\n");
jh_ndm 1:3550659bd872 234 out = true;
jh_ndm 1:3550659bd872 235 return false;
jh_ndm 1:3550659bd872 236 }
jh_ndm 1:3550659bd872 237 cJSON_AddNumberToObject(http_post_json, "x", 2);
jh_ndm 1:3550659bd872 238 //cJSON_AddNumberToObject(http_post_json, "y", 2);
jh_ndm 1:3550659bd872 239 //cJSON_AddNumberToObject(http_post_json, "z", 2);
jh_ndm 1:3550659bd872 240 cJSON_AddItemToObject(http_post, "datapoint", http_post_json);
jh_ndm 1:3550659bd872 241 char* pJSON_http_post = cJSON_PrintUnformatted(http_post);
jh_ndm 1:3550659bd872 242 pc.printf("4444\r\n");
jh_ndm 1:3550659bd872 243 if(NULL == pJSON_http_post)
jh_ndm 1:3550659bd872 244 {
jh_ndm 1:3550659bd872 245 cJSON_Delete(http_post);
jh_ndm 1:3550659bd872 246 pc.printf("OUT6\r\n");
jh_ndm 1:3550659bd872 247 out = true;
jh_ndm 1:3550659bd872 248 return false;
jh_ndm 1:3550659bd872 249 }
jh_ndm 1:3550659bd872 250
jh_ndm 1:3550659bd872 251 //Pay attention to out of memory
jh_ndm 1:3550659bd872 252 //char http_POST_cmd[500] = "POST /v1/datastreams/jhtest/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
jh_ndm 1:3550659bd872 253 // "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token ebe1671e9d9f42a5231d017ec550552b9bae2cdf\r\n"\
jh_ndm 1:3550659bd872 254 // "Content-Length: 33\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n";
jh_ndm 1:3550659bd872 255 char http_POST_cmd[500] = "POST /v1/datastreams/test/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
jh_ndm 1:3550659bd872 256 "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token 48661aa81484f501362ed5ef4cc85e67eb2a3e3d\r\n"\
jh_ndm 1:3550659bd872 257 "Content-Length: ";
jh_ndm 1:3550659bd872 258 char len[2];
jh_ndm 1:3550659bd872 259 len[0]=strlen(pJSON_http_post)/10%10+48;
jh_ndm 1:3550659bd872 260 len[1]=strlen(pJSON_http_post)%10+48;
jh_ndm 1:3550659bd872 261 strcat(http_POST_cmd,len);
jh_ndm 1:3550659bd872 262 strcat(http_POST_cmd,"\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n");
jehoon 0:af541535ef54 263
jh_ndm 1:3550659bd872 264 strcat(http_POST_cmd,pJSON_http_post);
jh_ndm 1:3550659bd872 265 conn.send_all(http_POST_cmd, strlen(http_POST_cmd));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 266 pc.printf("%s\r\n",http_POST_cmd);
jh_ndm 1:3550659bd872 267 pc.printf("5555\r\n");
jh_ndm 1:3550659bd872 268 char *buffer = NULL;
jh_ndm 1:3550659bd872 269 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 270 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 271
jh_ndm 1:3550659bd872 272 int ret;
jh_ndm 1:3550659bd872 273 pc.printf("6666\r\n");
jh_ndm 1:3550659bd872 274 while (true) {
jh_ndm 1:3550659bd872 275 wait(1);
jh_ndm 1:3550659bd872 276 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 277 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 278 if (ret <= 0) {
jh_ndm 1:3550659bd872 279 break;
jh_ndm 1:3550659bd872 280 }
jh_ndm 1:3550659bd872 281 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 282 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 283 }
jh_ndm 1:3550659bd872 284 pc.printf("http_POST OUT\r\n");
jh_ndm 1:3550659bd872 285
jh_ndm 1:3550659bd872 286 free(pJSON_http_post);
jh_ndm 1:3550659bd872 287 free(buffer);
jh_ndm 1:3550659bd872 288 cJSON_Delete(http_post);
jh_ndm 1:3550659bd872 289 pc.printf("7777\r\n");
jh_ndm 1:3550659bd872 290 return true;
jh_ndm 1:3550659bd872 291 }
jh_ndm 1:3550659bd872 292
jh_ndm 1:3550659bd872 293 /*socket POST*/
jh_ndm 1:3550659bd872 294 bool socket_POST(TCPSocketConnection &conn,int vall)
jh_ndm 1:3550659bd872 295 {
jh_ndm 1:3550659bd872 296 if(conn.is_connected()){
jh_ndm 1:3550659bd872 297 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 298 }else{
jh_ndm 1:3550659bd872 299 if(!conn.connect("iot.espressif.cn", socketPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 300 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 301 else{
jh_ndm 1:3550659bd872 302 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 303 out = true;
jh_ndm 1:3550659bd872 304 return false;
jh_ndm 1:3550659bd872 305 }
jh_ndm 1:3550659bd872 306 }
jh_ndm 1:3550659bd872 307 cJSON* socket_post=NULL;
jh_ndm 1:3550659bd872 308 socket_post = cJSON_CreateObject();
jh_ndm 1:3550659bd872 309 if(NULL == socket_post)
jh_ndm 1:3550659bd872 310 {
jh_ndm 1:3550659bd872 311 pc.printf("OUT4\r\n");
jh_ndm 1:3550659bd872 312 out = true;
jh_ndm 1:3550659bd872 313 return false;
jh_ndm 1:3550659bd872 314 }
jh_ndm 1:3550659bd872 315
jh_ndm 1:3550659bd872 316
jh_ndm 1:3550659bd872 317 cJSON_AddStringToObject(socket_post, "path", path);
jh_ndm 1:3550659bd872 318 cJSON_AddStringToObject(socket_post, "method", "POST");
jh_ndm 1:3550659bd872 319
jh_ndm 1:3550659bd872 320 cJSON* sock_post_token=NULL;
jh_ndm 1:3550659bd872 321 sock_post_token = cJSON_CreateObject();
jh_ndm 1:3550659bd872 322 if(NULL == sock_post_token)
jh_ndm 1:3550659bd872 323 {
jh_ndm 1:3550659bd872 324 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 325 pc.printf("OUT5\r\n");
jh_ndm 1:3550659bd872 326 out = true;
jh_ndm 1:3550659bd872 327 return false;
jh_ndm 1:3550659bd872 328 }
jh_ndm 1:3550659bd872 329 cJSON_AddStringToObject(sock_post_token, "Authorization", "token 514cc9c3aa07a4a56246cb9259c8264fd2ae56f6");
jh_ndm 1:3550659bd872 330 cJSON_AddItemToObject(socket_post, "meta", sock_post_token);
jehoon 0:af541535ef54 331
jh_ndm 1:3550659bd872 332 cJSON* sock_post_xyz=NULL;
jh_ndm 1:3550659bd872 333 sock_post_xyz = cJSON_CreateObject();
jh_ndm 1:3550659bd872 334 if(NULL == sock_post_xyz)
jh_ndm 1:3550659bd872 335 {
jh_ndm 1:3550659bd872 336 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 337 pc.printf("OUT6\r\n");
jh_ndm 1:3550659bd872 338 out = true;
jh_ndm 1:3550659bd872 339 return false;
jh_ndm 1:3550659bd872 340 }
jh_ndm 1:3550659bd872 341 cJSON_AddNumberToObject(sock_post_xyz, "x", vall);
jh_ndm 1:3550659bd872 342 //cJSON_AddNumberToObject(sock_post_xyz, "y", 8);
jh_ndm 1:3550659bd872 343 //cJSON_AddNumberToObject(sock_post_xyz, "z", 8);
jh_ndm 1:3550659bd872 344 cJSON* sock_post_datapoint=NULL;
jh_ndm 1:3550659bd872 345 sock_post_datapoint = cJSON_CreateObject();
jh_ndm 1:3550659bd872 346 if(NULL == sock_post_datapoint)
jh_ndm 1:3550659bd872 347 {
jh_ndm 1:3550659bd872 348 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 349 pc.printf("OUT6\r\n");
jh_ndm 1:3550659bd872 350 out = true;
jh_ndm 1:3550659bd872 351 return false;
jh_ndm 1:3550659bd872 352 }
jh_ndm 1:3550659bd872 353 cJSON_AddItemToObject(sock_post_datapoint, "datapoint", sock_post_xyz);
jh_ndm 1:3550659bd872 354 cJSON_AddItemToObject(socket_post, "body", sock_post_datapoint);
jh_ndm 1:3550659bd872 355
jh_ndm 1:3550659bd872 356 char* pJSON_sock_post = cJSON_PrintUnformatted(socket_post);
jh_ndm 1:3550659bd872 357
jh_ndm 1:3550659bd872 358 if(NULL == pJSON_sock_post)
jh_ndm 1:3550659bd872 359 {
jh_ndm 1:3550659bd872 360 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 361 pc.printf("OUT7\r\n");
jh_ndm 1:3550659bd872 362 out = true;
jh_ndm 1:3550659bd872 363 return false;
jh_ndm 1:3550659bd872 364 }
jh_ndm 1:3550659bd872 365 strcat(pJSON_sock_post,"\n");
jh_ndm 1:3550659bd872 366
jh_ndm 1:3550659bd872 367 conn.send_all(pJSON_sock_post, strlen(pJSON_sock_post));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 368 pc.printf("%s\r\n",pJSON_sock_post);
jh_ndm 1:3550659bd872 369
jh_ndm 1:3550659bd872 370 char *buffer = NULL;
jh_ndm 1:3550659bd872 371 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 372 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 373
jh_ndm 1:3550659bd872 374 int ret;
jh_ndm 1:3550659bd872 375
jh_ndm 1:3550659bd872 376 while (true) {
jh_ndm 1:3550659bd872 377 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 378 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 379 if (ret <= 0) {
jh_ndm 1:3550659bd872 380 break;
jh_ndm 1:3550659bd872 381 }
jh_ndm 1:3550659bd872 382 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 383 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 384 }
jh_ndm 1:3550659bd872 385 pc.printf("socket_POST OUT\r\n");
jh_ndm 1:3550659bd872 386
jh_ndm 1:3550659bd872 387 free(pJSON_sock_post);
jh_ndm 1:3550659bd872 388 free(buffer);
jh_ndm 1:3550659bd872 389 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 390
jh_ndm 1:3550659bd872 391 return true;
jh_ndm 1:3550659bd872 392 }
jh_ndm 1:3550659bd872 393
jh_ndm 1:3550659bd872 394 bool closeConnect(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 395 {
jh_ndm 1:3550659bd872 396 if(conn.is_connected()){
jh_ndm 1:3550659bd872 397 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 398 }else{
jh_ndm 1:3550659bd872 399 if(!conn.connect("iot.espressif.cn", socketPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 400 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 401 else{
jh_ndm 1:3550659bd872 402 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 403 out = true;
jh_ndm 1:3550659bd872 404 return false;
jh_ndm 1:3550659bd872 405 }
jh_ndm 1:3550659bd872 406 }
jehoon 0:af541535ef54 407
jehoon 0:af541535ef54 408
jh_ndm 1:3550659bd872 409 cJSON* close_post=NULL;
jh_ndm 1:3550659bd872 410 close_post = cJSON_CreateObject();
jh_ndm 1:3550659bd872 411 if(NULL == close_post)
jh_ndm 1:3550659bd872 412 {
jh_ndm 1:3550659bd872 413 pc.printf("OUT4\r\n");
jh_ndm 1:3550659bd872 414 out = true;
jh_ndm 1:3550659bd872 415 return false;
jh_ndm 1:3550659bd872 416 }
jh_ndm 1:3550659bd872 417
jh_ndm 1:3550659bd872 418
jh_ndm 1:3550659bd872 419 cJSON_AddStringToObject(close_post, "path", "/v1/The_Gas/quit/");
jh_ndm 1:3550659bd872 420 cJSON_AddStringToObject(close_post, "method", "POST");
jh_ndm 1:3550659bd872 421
jh_ndm 1:3550659bd872 422 cJSON* close_post_token=NULL;
jh_ndm 1:3550659bd872 423 close_post_token = cJSON_CreateObject();
jh_ndm 1:3550659bd872 424 if(NULL == close_post_token)
jh_ndm 1:3550659bd872 425 {
jh_ndm 1:3550659bd872 426 cJSON_Delete(close_post);
jh_ndm 1:3550659bd872 427 pc.printf("OUT5\r\n");
jh_ndm 1:3550659bd872 428 out = true;
jh_ndm 1:3550659bd872 429 return false;
jh_ndm 1:3550659bd872 430 }
jh_ndm 1:3550659bd872 431 cJSON_AddStringToObject(close_post_token, "Authorization", "token 514cc9c3aa07a4a56246cb9259c8264fd2ae56f6");
jh_ndm 1:3550659bd872 432 cJSON_AddItemToObject(close_post, "meta", close_post_token);
jh_ndm 1:3550659bd872 433
jh_ndm 1:3550659bd872 434 char* close_pJSON = cJSON_PrintUnformatted(close_post);
jehoon 0:af541535ef54 435
jh_ndm 1:3550659bd872 436 if(NULL == close_pJSON)
jh_ndm 1:3550659bd872 437 {
jh_ndm 1:3550659bd872 438 cJSON_Delete(close_post);
jh_ndm 1:3550659bd872 439 pc.printf("OUT7\r\n");
jh_ndm 1:3550659bd872 440 out = true;
jh_ndm 1:3550659bd872 441 return false;
jh_ndm 1:3550659bd872 442 }
jh_ndm 1:3550659bd872 443 strcat(close_pJSON,"\n");
jh_ndm 1:3550659bd872 444
jh_ndm 1:3550659bd872 445 conn.send_all(close_pJSON, strlen(close_pJSON));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 446 pc.printf("%s\r\n",close_pJSON);
jh_ndm 1:3550659bd872 447
jh_ndm 1:3550659bd872 448 char *buffer = NULL;
jh_ndm 1:3550659bd872 449 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 450 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 451
jehoon 0:af541535ef54 452 int ret;
jh_ndm 1:3550659bd872 453
jehoon 0:af541535ef54 454 while (true) {
jh_ndm 1:3550659bd872 455 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 456 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 457 if (ret <= 0) {
jh_ndm 1:3550659bd872 458 break;
jh_ndm 1:3550659bd872 459 }
jehoon 0:af541535ef54 460 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 461 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jehoon 0:af541535ef54 462 }
jh_ndm 1:3550659bd872 463 pc.printf("close_POST OUT\r\n");
jh_ndm 1:3550659bd872 464
jh_ndm 1:3550659bd872 465 free(close_pJSON);
jh_ndm 1:3550659bd872 466 free(buffer);
jh_ndm 1:3550659bd872 467 cJSON_Delete(close_post);
jehoon 0:af541535ef54 468
jh_ndm 1:3550659bd872 469 return true;
jh_ndm 1:3550659bd872 470 }