First
Dependents: mbed-os-rest-api-V1-1 mbed-os-rest-api-V1-2 mbed-os-rest-api-V1-2-2
Diff: NetworkManager.cpp
- Revision:
- 1:358fcf86ddab
- Parent:
- 0:b12dd3a065c0
- Child:
- 2:304e92340942
diff -r b12dd3a065c0 -r 358fcf86ddab NetworkManager.cpp --- a/NetworkManager.cpp Mon Oct 08 00:49:06 2018 +0000 +++ b/NetworkManager.cpp Fri Dec 21 07:54:04 2018 +0000 @@ -9,6 +9,8 @@ _m_ip = ""; _m_mac = ""; + eth.set_network(_ip,_mask,_gateway); + std::string _http_method = ""; std::string _api_command = ""; } @@ -21,6 +23,8 @@ _m_ip = ""; _m_mac = ""; + + eth.set_network(_ip,_mask,_gateway); std::string _http_method = ""; std::string _api_command = ""; @@ -31,10 +35,45 @@ _gateway = GATEWAY; _mask = MASK; _port = PORT; - printf("NetworkManager::SetConfig OK\r\n"); + + eth.set_network(_ip,_mask,_gateway); + + printf("NM::SetConfig OK\r\n"); } -void NetworkManager::ServerInit() { +bool NetworkManager::ServerInit() { + //eth.disconnect(); + //eth.init(); + //eth.set_network(_ip,_mask,_gateway); + int ii = eth.connect(); + + printf("NM connecting ...... \r\n"); + + if (ii>=0){ + _m_ip = eth.get_ip_address(); + _m_mac = eth.get_mac_address(); + + if(_m_ip != ""){ + printf("mbed's IP address is: %s\r\n", _m_ip); + } else { + printf("mbed's IP address is: No IP\r\n"); + } + + if(_m_mac != ""){ + printf("mbed's MAC address is: %s\r\n", _m_mac); + } else { + printf("mbed's MAC address is: No MAC\r\n"); + } + + printf("NM connected \r\n"); + return false; + } + + printf("NM connect failed ...... \r\n"); + return true; +} + +/*void NetworkManager::ServerInit() { eth.disconnect(); eth.set_network(_ip,_mask,_gateway); eth.connect(); @@ -43,7 +82,7 @@ _m_mac = eth.get_mac_address(); printf("mbed's IP address is: %s\n\r", _m_ip ? _m_ip : "No IP"); printf("mbed's MAC address is: %s\n\r", _m_mac ? _m_mac : "No MAC"); -} +}*/ bool NetworkManager::OpenServer() { /* Open the server on ethernet stack */ @@ -65,6 +104,8 @@ return true; } printf("Bound\r\n"); + //LXM Add + srv.set_blocking(false); return false; } @@ -89,7 +130,7 @@ return false; } -void NetworkManager::AcceptEvent() { +/*void NetworkManager::AcceptEvent() { srv.accept(&clt_sock, &clt_addr); //printf("The target IP address is '%s'\n", eth.get_ip_address()); @@ -97,20 +138,60 @@ printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port()); // Receive data - char buf[1024]; + //char buf[1024]; + char* buf = new char[1024]; clt_sock.recv(buf, 100); printf("## print recv: %s\r\n", buf); printf("## print recv: Finish\r\n"); //char *arr[10]; //memset(arr, 0, sizeof(arr)); - std::string tmpBuf(buf); + //std::string tmpBuf(buf); + std::string* tmpBuf = new std::string(buf); _recvList.reserve(100); - split(tmpBuf, _recvList, " "); + split(*tmpBuf, _recvList, " "); _http_method = _recvList[0]; _api_command = _recvList[1]; + + delete [] buf; + + delete tmpBuf; +}*/ + +void NetworkManager::AcceptEvent() { + DataStorage::isAccept = true; + if(srv.accept(&clt_sock, &clt_addr)<0){ + DataStorage::isAccept = false; + return; + } + + //printf("The target IP address is '%s'\n", eth.get_ip_address()); + //printf("The target MAC address is '%s'\n", eth.get_mac_address()); + printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port()); + + // Receive data + //char buf[1024]; + char* buf = new char[1024]; + clt_sock.recv(buf, 100); + printf("## print recv: %s\r\n", buf); + printf("## print recv: Finish\r\n"); + //char *arr[10]; + //memset(arr, 0, sizeof(arr)); + + //std::string tmpBuf(buf); + std::string* tmpBuf = new std::string(buf); + + _recvList.reserve(100); + split(*tmpBuf, _recvList, " "); + + _http_method = _recvList[0]; + _api_command = _recvList[1]; + + delete [] buf; + + delete tmpBuf; } void NetworkManager::SendResponseEvent(std::string _response) { @@ -125,7 +206,12 @@ //std::string tmpResponse = ""; //tmpResponse = makeResponse(_response); - char* tmpString = stringToChar(makeResponse(_response)); + std::string tmpResponse = makeResponse(_response); + //char* tmpString = new char; + char* tmpString = new char [tmpResponse.length()+1]; + + //tmpString = stringToChar(tmpResponse); + stringToChar(tmpString, tmpResponse); clt_sock.send(tmpString, strlen(tmpString)); //clt_sock.send(response, strlen(response)); @@ -135,6 +221,8 @@ // Close the socket clt_sock.close(); + delete [] tmpString; + printf("Socket close\r\n"); } @@ -156,4 +244,65 @@ returnResponse.append("\r\n"); return returnResponse; -} \ No newline at end of file +} + +/*void CheckConnectServer() { + + printf("###01\n"); + + //EthernetInterface eth; + printf("###02\n"); + + //eth.init(); //Use DHCP + //eth.connect(); + printf("###03 IP Address is %s\n", eth.get_ip_address()); + + //TCPSocketConnection sock; + //TCPSocket sock; + printf("###04\n"); + + clt_sock.open(ð); + printf("###05-1\n"); + + clt_sock.connect("192.168.20.1", 5001); + printf("###05-2\n"); + + char http_cmd[] = "GET /iamok/ HTTP/1.1\r\n\r\n"; + printf("###06\n"); + + //sock.send_all(http_cmd, sizeof(http_cmd)-1); + clt_sock.send(http_cmd, sizeof(http_cmd)); + printf("###07\n"); + + char buffer[300]; + int ret; + printf("###08\n"); + + while (true) { + //ret = sock.receive(buffer, sizeof(buffer)-1); + ret = clt_sock.recv(buffer, sizeof(buffer)); + printf("###09\n"); + + if (ret <= 0) + break; + + buffer[ret] = '\0'; + printf("Received %d chars from server:\n%s\n", ret, buffer); + printf("###11\n"); + } + + //sock.close(); + printf("###12\n"); + + //eth.disconnect(); + printf("###13\n"); + + delete buffer; + delete http_cmd; + printf("###14\n"); +} + +void NetworkManager::threadCheckConnectServer() { + Thread threadWM; + threadWM.start(CheckConnectServer); +}*/ \ No newline at end of file