Giung Kim
/
WIZnet-IoTShield-WM-N400MSE-HTTP
Init Project for HTTP
Diff: main.cpp
- Revision:
- 1:b195d2a6ad11
- Parent:
- 0:37121f302ff1
--- a/main.cpp Wed Sep 11 07:34:13 2019 +0000 +++ b/main.cpp Tue Sep 17 23:50:37 2019 +0000 @@ -38,7 +38,6 @@ #define WM01_CONNECT_TIMEOUT 15000 #define WM01_SEND_TIMEOUT 500 #define WM01_RECV_TIMEOUT 500 -#define WM01_BOOTING_TIME 15000 #define WM01_APN_PROTOCOL WM01_APN_PROTOCOL_IPv6 #define WM01_DEFAULT_BAUD_RATE 115200 @@ -51,6 +50,7 @@ #define devlog(f_, ...) if(CATM1_DEVICE_DEBUG == DEBUG_ENABLE) { pc.printf("\r\n[%s] ", DEVNAME); pc.printf((f_), ##__VA_ARGS__); } #define myprintf(f_, ...) {pc.printf("\r\n[MAIN] "); pc.printf((f_), ##__VA_ARGS__);} +#define httpprintf(f_, ...) {pc.printf((f_), ##__VA_ARGS__);} /* Pin configuraiton */ // Cat.M1 @@ -71,14 +71,11 @@ // Domain Name and Port number //char dest_domain_name[] = "www.dest_domain_name.co.kr"; //int dest_port = xxxx; -char dest_domain_name[] = "www.kma.co.kr"; +char dest_domain_name[] = "www.kma.go.kr"; int dest_port = 80; int protocol = 1; // 1 : TCP, 2 : UPD int packet_type = 0; // 0 : ASCII, 1 : HEX, 2 : Binary -// REST(Representational State Transfer) API -char rest_data[] = "GET /wid/queryDFSRSS.jsp?zone=4113552000 HTTP/1.1 HOST: www.kma.go.kr Connection: close"; - // Functions: Print information void printInfo(void); @@ -95,7 +92,8 @@ // Functions: TCP/UDP socket service int8_t sockOpenConnect_WM01(int protocol, const char *addr, int port, int pckttype); int8_t sockClose_WM01(void); -int8_t sendData_WM01(char *data, int len); +int8_t sendData_WM01(void); +int8_t recvData_WM01(void); Serial pc(USBTX, USBRX); // USB debug @@ -177,20 +175,29 @@ setContextActivate_WM01(); - // TCP Client: Send and Receive - myprintf("TCP Client Start - Connect to %s:%d\r\n", dest_domain_name, dest_port); + // TCP Client : Send and Receive + myprintf("Connect to %s:%d\r\n", dest_domain_name, dest_port); - if(sockOpenConnect_WM01(protocol, dest_domain_name, dest_port, packet_type) == RET_OK) + if(sockOpenConnect_WM01(protocol, dest_domain_name, dest_port, packet_type) == RET_OK) { myprintf("Socket Open Connect : success\r\n"); - if(sendData_WM01(rest_data, strlen(rest_data))) + if(sendData_WM01() == RET_OK) { - myprintf("Data Send : success [%d] %s\r\n", sizeof(rest_data), rest_data); + myprintf("Data Send : success\r\n"); + + if(recvData_WM01() == RET_OK) + { + myprintf("Data Receive : success\r\n"); + } + else + { + myprintf("Data Receive : failed\r\n"); + } } else { - myprintf("Data Send : failed"); + myprintf("Data Send : failed\r\n"); } } else @@ -206,11 +213,6 @@ myprintf("Socket Close : failed\r\n"); } } - - while(1) - { - - } } // ---------------------------------------------------------------- @@ -422,16 +424,24 @@ return ret; } -int8_t sendData_WM01(char *data, int len) +int8_t sendData_WM01(void) { int8_t ret = RET_NOK; bool done = false; + // REST(Representational State Transfer) API + char rest_data_1st[] = "GET /wid/queryDFSRSS.jsp?zone=4113552000 HTTP/1.1"; + char rest_data_2nd[] = "HOST: www.kma.go.kr"; + char rest_data_3rd[] = "Connection: close"; int ok = 0; // 0 : failure , 1 : success int id = 0; + int len = 93; _parser->set_timeout(WM01_SEND_TIMEOUT); - _parser->send("AT+WSOWR=%d,%d,%s", id, len, data); + _parser->send("AT+WSOWR=%d,%d,%s", id, len, rest_data_1st); + _parser->send("%s", rest_data_2nd); + _parser->send("%s", rest_data_3rd); + _parser->send("\r\n"); if(_parser->recv("+WSOWR:%d,%d", &ok, &id) && _parser->recv("OK")) { @@ -444,4 +454,35 @@ _parser->set_timeout(WM01_DEFAULT_TIMEOUT); return ret; +} + +int8_t recvData_WM01(void) +{ + int8_t ret = RET_NOK; + char _tmpbuf[50] = {0, }; + char http_version[10] = {0, }; + int id = 0; + int bufsize = 0; + int status_code = 0; + + Timer t; + + _parser->set_timeout((1000 * 4)); + + if(_parser->recv("+WSORD:%d,%d,%s %d OK", &id, &bufsize, http_version, &status_code)) + { + t.start(); + + while(t.read_ms() < (1000 * 4)) + { + pc.printf("%c", _parser->getc()); + } + + ret = RET_OK; + } + + _parser->set_timeout(WM01_DEFAULT_TIMEOUT); + _parser->flush(); + + return ret; } \ No newline at end of file