First

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

Committer:
asaewing
Date:
Fri Dec 21 07:54:04 2018 +0000
Revision:
1:358fcf86ddab
Parent:
0:b12dd3a065c0
Child:
2:304e92340942
First 2018-12-21

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asaewing 0:b12dd3a065c0 1 #include "module_for_all.h"
asaewing 0:b12dd3a065c0 2
asaewing 0:b12dd3a065c0 3 NetworkManager::NetworkManager() {
asaewing 0:b12dd3a065c0 4 _ip = "192.168.20.101";
asaewing 0:b12dd3a065c0 5 _gateway = "192.168.20.1";
asaewing 0:b12dd3a065c0 6 _mask = "255.255.255.0";
asaewing 0:b12dd3a065c0 7 _port = 8080;
asaewing 0:b12dd3a065c0 8
asaewing 0:b12dd3a065c0 9 _m_ip = "";
asaewing 0:b12dd3a065c0 10 _m_mac = "";
asaewing 0:b12dd3a065c0 11
asaewing 1:358fcf86ddab 12 eth.set_network(_ip,_mask,_gateway);
asaewing 1:358fcf86ddab 13
asaewing 0:b12dd3a065c0 14 std::string _http_method = "";
asaewing 0:b12dd3a065c0 15 std::string _api_command = "";
asaewing 0:b12dd3a065c0 16 }
asaewing 0:b12dd3a065c0 17
asaewing 0:b12dd3a065c0 18 NetworkManager::NetworkManager(char* IP, char* GATEWAY, char* MASK, int PORT) {
asaewing 0:b12dd3a065c0 19 _ip = IP;
asaewing 0:b12dd3a065c0 20 _gateway = GATEWAY;
asaewing 0:b12dd3a065c0 21 _mask = MASK;
asaewing 0:b12dd3a065c0 22 _port = PORT;
asaewing 0:b12dd3a065c0 23
asaewing 0:b12dd3a065c0 24 _m_ip = "";
asaewing 0:b12dd3a065c0 25 _m_mac = "";
asaewing 1:358fcf86ddab 26
asaewing 1:358fcf86ddab 27 eth.set_network(_ip,_mask,_gateway);
asaewing 0:b12dd3a065c0 28
asaewing 0:b12dd3a065c0 29 std::string _http_method = "";
asaewing 0:b12dd3a065c0 30 std::string _api_command = "";
asaewing 0:b12dd3a065c0 31 }
asaewing 0:b12dd3a065c0 32
asaewing 0:b12dd3a065c0 33 void NetworkManager::SetConfig(char* IP, char* GATEWAY, char* MASK, int PORT) {
asaewing 0:b12dd3a065c0 34 _ip = IP;
asaewing 0:b12dd3a065c0 35 _gateway = GATEWAY;
asaewing 0:b12dd3a065c0 36 _mask = MASK;
asaewing 0:b12dd3a065c0 37 _port = PORT;
asaewing 1:358fcf86ddab 38
asaewing 1:358fcf86ddab 39 eth.set_network(_ip,_mask,_gateway);
asaewing 1:358fcf86ddab 40
asaewing 1:358fcf86ddab 41 printf("NM::SetConfig OK\r\n");
asaewing 0:b12dd3a065c0 42 }
asaewing 0:b12dd3a065c0 43
asaewing 1:358fcf86ddab 44 bool NetworkManager::ServerInit() {
asaewing 1:358fcf86ddab 45 //eth.disconnect();
asaewing 1:358fcf86ddab 46 //eth.init();
asaewing 1:358fcf86ddab 47 //eth.set_network(_ip,_mask,_gateway);
asaewing 1:358fcf86ddab 48 int ii = eth.connect();
asaewing 1:358fcf86ddab 49
asaewing 1:358fcf86ddab 50 printf("NM connecting ...... \r\n");
asaewing 1:358fcf86ddab 51
asaewing 1:358fcf86ddab 52 if (ii>=0){
asaewing 1:358fcf86ddab 53 _m_ip = eth.get_ip_address();
asaewing 1:358fcf86ddab 54 _m_mac = eth.get_mac_address();
asaewing 1:358fcf86ddab 55
asaewing 1:358fcf86ddab 56 if(_m_ip != ""){
asaewing 1:358fcf86ddab 57 printf("mbed's IP address is: %s\r\n", _m_ip);
asaewing 1:358fcf86ddab 58 } else {
asaewing 1:358fcf86ddab 59 printf("mbed's IP address is: No IP\r\n");
asaewing 1:358fcf86ddab 60 }
asaewing 1:358fcf86ddab 61
asaewing 1:358fcf86ddab 62 if(_m_mac != ""){
asaewing 1:358fcf86ddab 63 printf("mbed's MAC address is: %s\r\n", _m_mac);
asaewing 1:358fcf86ddab 64 } else {
asaewing 1:358fcf86ddab 65 printf("mbed's MAC address is: No MAC\r\n");
asaewing 1:358fcf86ddab 66 }
asaewing 1:358fcf86ddab 67
asaewing 1:358fcf86ddab 68 printf("NM connected \r\n");
asaewing 1:358fcf86ddab 69 return false;
asaewing 1:358fcf86ddab 70 }
asaewing 1:358fcf86ddab 71
asaewing 1:358fcf86ddab 72 printf("NM connect failed ...... \r\n");
asaewing 1:358fcf86ddab 73 return true;
asaewing 1:358fcf86ddab 74 }
asaewing 1:358fcf86ddab 75
asaewing 1:358fcf86ddab 76 /*void NetworkManager::ServerInit() {
asaewing 0:b12dd3a065c0 77 eth.disconnect();
asaewing 0:b12dd3a065c0 78 eth.set_network(_ip,_mask,_gateway);
asaewing 0:b12dd3a065c0 79 eth.connect();
asaewing 0:b12dd3a065c0 80
asaewing 0:b12dd3a065c0 81 _m_ip = eth.get_ip_address();
asaewing 0:b12dd3a065c0 82 _m_mac = eth.get_mac_address();
asaewing 0:b12dd3a065c0 83 printf("mbed's IP address is: %s\n\r", _m_ip ? _m_ip : "No IP");
asaewing 0:b12dd3a065c0 84 printf("mbed's MAC address is: %s\n\r", _m_mac ? _m_mac : "No MAC");
asaewing 1:358fcf86ddab 85 }*/
asaewing 0:b12dd3a065c0 86
asaewing 0:b12dd3a065c0 87 bool NetworkManager::OpenServer() {
asaewing 0:b12dd3a065c0 88 /* Open the server on ethernet stack */
asaewing 0:b12dd3a065c0 89 int ii=srv.open(&eth);
asaewing 0:b12dd3a065c0 90
asaewing 0:b12dd3a065c0 91 if (ii<0) {
asaewing 0:b12dd3a065c0 92 printf("open error: %i \r\n",ii);
asaewing 0:b12dd3a065c0 93 return true;
asaewing 0:b12dd3a065c0 94 }
asaewing 0:b12dd3a065c0 95 printf("server open\r\n");
asaewing 0:b12dd3a065c0 96 return false;
asaewing 0:b12dd3a065c0 97 }
asaewing 0:b12dd3a065c0 98
asaewing 0:b12dd3a065c0 99 bool NetworkManager::BindPort() {
asaewing 0:b12dd3a065c0 100 /* Bind the HTTP port (TCP 80) to the server */
asaewing 0:b12dd3a065c0 101 int ii=srv.bind(_m_ip, 80);
asaewing 0:b12dd3a065c0 102 if (ii<0) {
asaewing 0:b12dd3a065c0 103 printf("bind error: %i \r\n",ii);
asaewing 0:b12dd3a065c0 104 return true;
asaewing 0:b12dd3a065c0 105 }
asaewing 0:b12dd3a065c0 106 printf("Bound\r\n");
asaewing 1:358fcf86ddab 107 //LXM Add
asaewing 1:358fcf86ddab 108 srv.set_blocking(false);
asaewing 0:b12dd3a065c0 109 return false;
asaewing 0:b12dd3a065c0 110 }
asaewing 0:b12dd3a065c0 111
asaewing 0:b12dd3a065c0 112 bool NetworkManager::ListenConnections() {
asaewing 0:b12dd3a065c0 113 /* Can handle 5 simultaneous connections */
asaewing 0:b12dd3a065c0 114 srv.listen(5);
asaewing 0:b12dd3a065c0 115 if (srv.listen()<0) {
asaewing 0:b12dd3a065c0 116 printf("listen error\r\n");
asaewing 0:b12dd3a065c0 117 return true;
asaewing 0:b12dd3a065c0 118 }
asaewing 0:b12dd3a065c0 119 printf("Listening\r\n");
asaewing 0:b12dd3a065c0 120 return false;
asaewing 0:b12dd3a065c0 121 }
asaewing 0:b12dd3a065c0 122
asaewing 0:b12dd3a065c0 123 bool NetworkManager::CheckAccept() {
asaewing 0:b12dd3a065c0 124 int ii = srv.accept(&clt_sock);
asaewing 0:b12dd3a065c0 125 if (ii<0) {
asaewing 0:b12dd3a065c0 126 printf("accept error: %i \r\n",ii);
asaewing 0:b12dd3a065c0 127 return true;
asaewing 0:b12dd3a065c0 128 }
asaewing 0:b12dd3a065c0 129 printf("Socket Accepted\r\n");
asaewing 0:b12dd3a065c0 130 return false;
asaewing 0:b12dd3a065c0 131 }
asaewing 0:b12dd3a065c0 132
asaewing 1:358fcf86ddab 133 /*void NetworkManager::AcceptEvent() {
asaewing 0:b12dd3a065c0 134 srv.accept(&clt_sock, &clt_addr);
asaewing 0:b12dd3a065c0 135
asaewing 0:b12dd3a065c0 136 //printf("The target IP address is '%s'\n", eth.get_ip_address());
asaewing 0:b12dd3a065c0 137 //printf("The target MAC address is '%s'\n", eth.get_mac_address());
asaewing 0:b12dd3a065c0 138 printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port());
asaewing 0:b12dd3a065c0 139
asaewing 0:b12dd3a065c0 140 // Receive data
asaewing 1:358fcf86ddab 141 //char buf[1024];
asaewing 1:358fcf86ddab 142 char* buf = new char[1024];
asaewing 0:b12dd3a065c0 143 clt_sock.recv(buf, 100);
asaewing 0:b12dd3a065c0 144 printf("## print recv: %s\r\n", buf);
asaewing 0:b12dd3a065c0 145 printf("## print recv: Finish\r\n");
asaewing 0:b12dd3a065c0 146 //char *arr[10];
asaewing 0:b12dd3a065c0 147 //memset(arr, 0, sizeof(arr));
asaewing 0:b12dd3a065c0 148
asaewing 1:358fcf86ddab 149 //std::string tmpBuf(buf);
asaewing 1:358fcf86ddab 150 std::string* tmpBuf = new std::string(buf);
asaewing 0:b12dd3a065c0 151
asaewing 0:b12dd3a065c0 152 _recvList.reserve(100);
asaewing 1:358fcf86ddab 153 split(*tmpBuf, _recvList, " ");
asaewing 0:b12dd3a065c0 154
asaewing 0:b12dd3a065c0 155 _http_method = _recvList[0];
asaewing 0:b12dd3a065c0 156 _api_command = _recvList[1];
asaewing 1:358fcf86ddab 157
asaewing 1:358fcf86ddab 158 delete [] buf;
asaewing 1:358fcf86ddab 159
asaewing 1:358fcf86ddab 160 delete tmpBuf;
asaewing 1:358fcf86ddab 161 }*/
asaewing 1:358fcf86ddab 162
asaewing 1:358fcf86ddab 163 void NetworkManager::AcceptEvent() {
asaewing 1:358fcf86ddab 164 DataStorage::isAccept = true;
asaewing 1:358fcf86ddab 165 if(srv.accept(&clt_sock, &clt_addr)<0){
asaewing 1:358fcf86ddab 166 DataStorage::isAccept = false;
asaewing 1:358fcf86ddab 167 return;
asaewing 1:358fcf86ddab 168 }
asaewing 1:358fcf86ddab 169
asaewing 1:358fcf86ddab 170 //printf("The target IP address is '%s'\n", eth.get_ip_address());
asaewing 1:358fcf86ddab 171 //printf("The target MAC address is '%s'\n", eth.get_mac_address());
asaewing 1:358fcf86ddab 172 printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port());
asaewing 1:358fcf86ddab 173
asaewing 1:358fcf86ddab 174 // Receive data
asaewing 1:358fcf86ddab 175 //char buf[1024];
asaewing 1:358fcf86ddab 176 char* buf = new char[1024];
asaewing 1:358fcf86ddab 177 clt_sock.recv(buf, 100);
asaewing 1:358fcf86ddab 178 printf("## print recv: %s\r\n", buf);
asaewing 1:358fcf86ddab 179 printf("## print recv: Finish\r\n");
asaewing 1:358fcf86ddab 180 //char *arr[10];
asaewing 1:358fcf86ddab 181 //memset(arr, 0, sizeof(arr));
asaewing 1:358fcf86ddab 182
asaewing 1:358fcf86ddab 183 //std::string tmpBuf(buf);
asaewing 1:358fcf86ddab 184 std::string* tmpBuf = new std::string(buf);
asaewing 1:358fcf86ddab 185
asaewing 1:358fcf86ddab 186 _recvList.reserve(100);
asaewing 1:358fcf86ddab 187 split(*tmpBuf, _recvList, " ");
asaewing 1:358fcf86ddab 188
asaewing 1:358fcf86ddab 189 _http_method = _recvList[0];
asaewing 1:358fcf86ddab 190 _api_command = _recvList[1];
asaewing 1:358fcf86ddab 191
asaewing 1:358fcf86ddab 192 delete [] buf;
asaewing 1:358fcf86ddab 193
asaewing 1:358fcf86ddab 194 delete tmpBuf;
asaewing 0:b12dd3a065c0 195 }
asaewing 0:b12dd3a065c0 196
asaewing 0:b12dd3a065c0 197 void NetworkManager::SendResponseEvent(std::string _response) {
asaewing 0:b12dd3a065c0 198
asaewing 0:b12dd3a065c0 199 //std::string response = HTTP_STATUS_LINE;
asaewing 0:b12dd3a065c0 200
asaewing 0:b12dd3a065c0 201 /*printf("$$ _recvList[0] : %s \r\n", _recvList[0].c_str());
asaewing 0:b12dd3a065c0 202 printf("$$ _recvList[1] : %s \r\n", _recvList[1].c_str());
asaewing 0:b12dd3a065c0 203 printf("$$ _recvList[2] : %s \r\n", _recvList[2].c_str());
asaewing 0:b12dd3a065c0 204 printf("$$ _recvList[3] : %s \r\n", _recvList[3].c_str());*/
asaewing 0:b12dd3a065c0 205
asaewing 0:b12dd3a065c0 206
asaewing 0:b12dd3a065c0 207 //std::string tmpResponse = "";
asaewing 0:b12dd3a065c0 208 //tmpResponse = makeResponse(_response);
asaewing 1:358fcf86ddab 209 std::string tmpResponse = makeResponse(_response);
asaewing 1:358fcf86ddab 210 //char* tmpString = new char;
asaewing 1:358fcf86ddab 211 char* tmpString = new char [tmpResponse.length()+1];
asaewing 1:358fcf86ddab 212
asaewing 1:358fcf86ddab 213 //tmpString = stringToChar(tmpResponse);
asaewing 1:358fcf86ddab 214 stringToChar(tmpString, tmpResponse);
asaewing 0:b12dd3a065c0 215 clt_sock.send(tmpString, strlen(tmpString));
asaewing 0:b12dd3a065c0 216 //clt_sock.send(response, strlen(response));
asaewing 0:b12dd3a065c0 217
asaewing 0:b12dd3a065c0 218 // Send data
asaewing 0:b12dd3a065c0 219 //clt_sock.send(HTTP_RESPONSE, strlen(HTTP_RESPONSE));
asaewing 0:b12dd3a065c0 220
asaewing 0:b12dd3a065c0 221 // Close the socket
asaewing 0:b12dd3a065c0 222 clt_sock.close();
asaewing 0:b12dd3a065c0 223
asaewing 1:358fcf86ddab 224 delete [] tmpString;
asaewing 1:358fcf86ddab 225
asaewing 0:b12dd3a065c0 226 printf("Socket close\r\n");
asaewing 0:b12dd3a065c0 227 }
asaewing 0:b12dd3a065c0 228
asaewing 0:b12dd3a065c0 229 std::string NetworkManager::getHttpMethod() {
asaewing 0:b12dd3a065c0 230 return _http_method;
asaewing 0:b12dd3a065c0 231 }
asaewing 0:b12dd3a065c0 232
asaewing 0:b12dd3a065c0 233
asaewing 0:b12dd3a065c0 234 std::string NetworkManager::getApiCommand() {
asaewing 0:b12dd3a065c0 235 return _api_command;
asaewing 0:b12dd3a065c0 236 }
asaewing 0:b12dd3a065c0 237
asaewing 0:b12dd3a065c0 238 std::string NetworkManager::makeResponse(std::string tmpResponse) {
asaewing 0:b12dd3a065c0 239 std::string returnResponse = HTTP_STATUS_LINE;
asaewing 0:b12dd3a065c0 240 returnResponse.append("\r\n");
asaewing 0:b12dd3a065c0 241 returnResponse.append(HTTP_HEADER_FIELDS);
asaewing 0:b12dd3a065c0 242 returnResponse.append("\r\n\r\n");
asaewing 0:b12dd3a065c0 243 returnResponse.append(tmpResponse);
asaewing 0:b12dd3a065c0 244 returnResponse.append("\r\n");
asaewing 0:b12dd3a065c0 245
asaewing 0:b12dd3a065c0 246 return returnResponse;
asaewing 1:358fcf86ddab 247 }
asaewing 1:358fcf86ddab 248
asaewing 1:358fcf86ddab 249 /*void CheckConnectServer() {
asaewing 1:358fcf86ddab 250
asaewing 1:358fcf86ddab 251 printf("###01\n");
asaewing 1:358fcf86ddab 252
asaewing 1:358fcf86ddab 253 //EthernetInterface eth;
asaewing 1:358fcf86ddab 254 printf("###02\n");
asaewing 1:358fcf86ddab 255
asaewing 1:358fcf86ddab 256 //eth.init(); //Use DHCP
asaewing 1:358fcf86ddab 257 //eth.connect();
asaewing 1:358fcf86ddab 258 printf("###03 IP Address is %s\n", eth.get_ip_address());
asaewing 1:358fcf86ddab 259
asaewing 1:358fcf86ddab 260 //TCPSocketConnection sock;
asaewing 1:358fcf86ddab 261 //TCPSocket sock;
asaewing 1:358fcf86ddab 262 printf("###04\n");
asaewing 1:358fcf86ddab 263
asaewing 1:358fcf86ddab 264 clt_sock.open(&eth);
asaewing 1:358fcf86ddab 265 printf("###05-1\n");
asaewing 1:358fcf86ddab 266
asaewing 1:358fcf86ddab 267 clt_sock.connect("192.168.20.1", 5001);
asaewing 1:358fcf86ddab 268 printf("###05-2\n");
asaewing 1:358fcf86ddab 269
asaewing 1:358fcf86ddab 270 char http_cmd[] = "GET /iamok/ HTTP/1.1\r\n\r\n";
asaewing 1:358fcf86ddab 271 printf("###06\n");
asaewing 1:358fcf86ddab 272
asaewing 1:358fcf86ddab 273 //sock.send_all(http_cmd, sizeof(http_cmd)-1);
asaewing 1:358fcf86ddab 274 clt_sock.send(http_cmd, sizeof(http_cmd));
asaewing 1:358fcf86ddab 275 printf("###07\n");
asaewing 1:358fcf86ddab 276
asaewing 1:358fcf86ddab 277 char buffer[300];
asaewing 1:358fcf86ddab 278 int ret;
asaewing 1:358fcf86ddab 279 printf("###08\n");
asaewing 1:358fcf86ddab 280
asaewing 1:358fcf86ddab 281 while (true) {
asaewing 1:358fcf86ddab 282 //ret = sock.receive(buffer, sizeof(buffer)-1);
asaewing 1:358fcf86ddab 283 ret = clt_sock.recv(buffer, sizeof(buffer));
asaewing 1:358fcf86ddab 284 printf("###09\n");
asaewing 1:358fcf86ddab 285
asaewing 1:358fcf86ddab 286 if (ret <= 0)
asaewing 1:358fcf86ddab 287 break;
asaewing 1:358fcf86ddab 288
asaewing 1:358fcf86ddab 289 buffer[ret] = '\0';
asaewing 1:358fcf86ddab 290 printf("Received %d chars from server:\n%s\n", ret, buffer);
asaewing 1:358fcf86ddab 291 printf("###11\n");
asaewing 1:358fcf86ddab 292 }
asaewing 1:358fcf86ddab 293
asaewing 1:358fcf86ddab 294 //sock.close();
asaewing 1:358fcf86ddab 295 printf("###12\n");
asaewing 1:358fcf86ddab 296
asaewing 1:358fcf86ddab 297 //eth.disconnect();
asaewing 1:358fcf86ddab 298 printf("###13\n");
asaewing 1:358fcf86ddab 299
asaewing 1:358fcf86ddab 300 delete buffer;
asaewing 1:358fcf86ddab 301 delete http_cmd;
asaewing 1:358fcf86ddab 302 printf("###14\n");
asaewing 1:358fcf86ddab 303 }
asaewing 1:358fcf86ddab 304
asaewing 1:358fcf86ddab 305 void NetworkManager::threadCheckConnectServer() {
asaewing 1:358fcf86ddab 306 Thread threadWM;
asaewing 1:358fcf86ddab 307 threadWM.start(CheckConnectServer);
asaewing 1:358fcf86ddab 308 }*/