First
Dependents: mbed-os-rest-api-V1-1 mbed-os-rest-api-V1-2 mbed-os-rest-api-V1-2-2
NetworkManager.cpp
- Committer:
- asaewing
- Date:
- 2018-10-08
- Revision:
- 0:b12dd3a065c0
- Child:
- 1:358fcf86ddab
File content as of revision 0:b12dd3a065c0:
#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; }