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:
- 0:b12dd3a065c0
- Child:
- 1:358fcf86ddab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NetworkManager.cpp Mon Oct 08 00:49:06 2018 +0000 @@ -0,0 +1,159 @@ +#include "module_for_all.h" + +NetworkManager::NetworkManager() { + _ip = "192.168.20.101"; + _gateway = "192.168.20.1"; + _mask = "255.255.255.0"; + _port = 8080; + + _m_ip = ""; + _m_mac = ""; + + std::string _http_method = ""; + std::string _api_command = ""; +} + +NetworkManager::NetworkManager(char* IP, char* GATEWAY, char* MASK, int PORT) { + _ip = IP; + _gateway = GATEWAY; + _mask = MASK; + _port = PORT; + + _m_ip = ""; + _m_mac = ""; + + std::string _http_method = ""; + std::string _api_command = ""; +} + +void NetworkManager::SetConfig(char* IP, char* GATEWAY, char* MASK, int PORT) { + _ip = IP; + _gateway = GATEWAY; + _mask = MASK; + _port = PORT; + printf("NetworkManager::SetConfig OK\r\n"); +} + +void NetworkManager::ServerInit() { + eth.disconnect(); + eth.set_network(_ip,_mask,_gateway); + eth.connect(); + + _m_ip = eth.get_ip_address(); + _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 */ + int ii=srv.open(ð); + + if (ii<0) { + printf("open error: %i \r\n",ii); + return true; + } + printf("server open\r\n"); + return false; +} + +bool NetworkManager::BindPort() { + /* Bind the HTTP port (TCP 80) to the server */ + int ii=srv.bind(_m_ip, 80); + if (ii<0) { + printf("bind error: %i \r\n",ii); + return true; + } + printf("Bound\r\n"); + return false; +} + +bool NetworkManager::ListenConnections() { + /* Can handle 5 simultaneous connections */ + srv.listen(5); + if (srv.listen()<0) { + printf("listen error\r\n"); + return true; + } + printf("Listening\r\n"); + return false; +} + +bool NetworkManager::CheckAccept() { + int ii = srv.accept(&clt_sock); + if (ii<0) { + printf("accept error: %i \r\n",ii); + return true; + } + printf("Socket Accepted\r\n"); + return false; +} + +void NetworkManager::AcceptEvent() { + srv.accept(&clt_sock, &clt_addr); + + //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]; + 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); + + _recvList.reserve(100); + split(tmpBuf, _recvList, " "); + + _http_method = _recvList[0]; + _api_command = _recvList[1]; +} + +void NetworkManager::SendResponseEvent(std::string _response) { + + //std::string response = HTTP_STATUS_LINE; + + /*printf("$$ _recvList[0] : %s \r\n", _recvList[0].c_str()); + printf("$$ _recvList[1] : %s \r\n", _recvList[1].c_str()); + printf("$$ _recvList[2] : %s \r\n", _recvList[2].c_str()); + printf("$$ _recvList[3] : %s \r\n", _recvList[3].c_str());*/ + + + //std::string tmpResponse = ""; + //tmpResponse = makeResponse(_response); + char* tmpString = stringToChar(makeResponse(_response)); + clt_sock.send(tmpString, strlen(tmpString)); + //clt_sock.send(response, strlen(response)); + + // Send data + //clt_sock.send(HTTP_RESPONSE, strlen(HTTP_RESPONSE)); + + // Close the socket + clt_sock.close(); + + printf("Socket close\r\n"); +} + +std::string NetworkManager::getHttpMethod() { + return _http_method; +} + + +std::string NetworkManager::getApiCommand() { + return _api_command; +} + +std::string NetworkManager::makeResponse(std::string tmpResponse) { + std::string returnResponse = HTTP_STATUS_LINE; + returnResponse.append("\r\n"); + returnResponse.append(HTTP_HEADER_FIELDS); + returnResponse.append("\r\n\r\n"); + returnResponse.append(tmpResponse); + returnResponse.append("\r\n"); + + return returnResponse; +} \ No newline at end of file