First

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

Revision:
1:358fcf86ddab
Parent:
0:b12dd3a065c0
Child:
2:304e92340942
--- 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(&eth);
+    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