First

Dependents:   mbed-os-rest-api-V1-1 mbed-os-rest-api-V1-2 mbed-os-rest-api-V1-2-2

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(&eth);
+
+    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