First

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

Committer:
asaewing
Date:
Mon Oct 08 00:49:06 2018 +0000
Revision:
0:b12dd3a065c0
Child:
1:358fcf86ddab
First;

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 0:b12dd3a065c0 12 std::string _http_method = "";
asaewing 0:b12dd3a065c0 13 std::string _api_command = "";
asaewing 0:b12dd3a065c0 14 }
asaewing 0:b12dd3a065c0 15
asaewing 0:b12dd3a065c0 16 NetworkManager::NetworkManager(char* IP, char* GATEWAY, char* MASK, int PORT) {
asaewing 0:b12dd3a065c0 17 _ip = IP;
asaewing 0:b12dd3a065c0 18 _gateway = GATEWAY;
asaewing 0:b12dd3a065c0 19 _mask = MASK;
asaewing 0:b12dd3a065c0 20 _port = PORT;
asaewing 0:b12dd3a065c0 21
asaewing 0:b12dd3a065c0 22 _m_ip = "";
asaewing 0:b12dd3a065c0 23 _m_mac = "";
asaewing 0:b12dd3a065c0 24
asaewing 0:b12dd3a065c0 25 std::string _http_method = "";
asaewing 0:b12dd3a065c0 26 std::string _api_command = "";
asaewing 0:b12dd3a065c0 27 }
asaewing 0:b12dd3a065c0 28
asaewing 0:b12dd3a065c0 29 void NetworkManager::SetConfig(char* IP, char* GATEWAY, char* MASK, int PORT) {
asaewing 0:b12dd3a065c0 30 _ip = IP;
asaewing 0:b12dd3a065c0 31 _gateway = GATEWAY;
asaewing 0:b12dd3a065c0 32 _mask = MASK;
asaewing 0:b12dd3a065c0 33 _port = PORT;
asaewing 0:b12dd3a065c0 34 printf("NetworkManager::SetConfig OK\r\n");
asaewing 0:b12dd3a065c0 35 }
asaewing 0:b12dd3a065c0 36
asaewing 0:b12dd3a065c0 37 void NetworkManager::ServerInit() {
asaewing 0:b12dd3a065c0 38 eth.disconnect();
asaewing 0:b12dd3a065c0 39 eth.set_network(_ip,_mask,_gateway);
asaewing 0:b12dd3a065c0 40 eth.connect();
asaewing 0:b12dd3a065c0 41
asaewing 0:b12dd3a065c0 42 _m_ip = eth.get_ip_address();
asaewing 0:b12dd3a065c0 43 _m_mac = eth.get_mac_address();
asaewing 0:b12dd3a065c0 44 printf("mbed's IP address is: %s\n\r", _m_ip ? _m_ip : "No IP");
asaewing 0:b12dd3a065c0 45 printf("mbed's MAC address is: %s\n\r", _m_mac ? _m_mac : "No MAC");
asaewing 0:b12dd3a065c0 46 }
asaewing 0:b12dd3a065c0 47
asaewing 0:b12dd3a065c0 48 bool NetworkManager::OpenServer() {
asaewing 0:b12dd3a065c0 49 /* Open the server on ethernet stack */
asaewing 0:b12dd3a065c0 50 int ii=srv.open(&eth);
asaewing 0:b12dd3a065c0 51
asaewing 0:b12dd3a065c0 52 if (ii<0) {
asaewing 0:b12dd3a065c0 53 printf("open error: %i \r\n",ii);
asaewing 0:b12dd3a065c0 54 return true;
asaewing 0:b12dd3a065c0 55 }
asaewing 0:b12dd3a065c0 56 printf("server open\r\n");
asaewing 0:b12dd3a065c0 57 return false;
asaewing 0:b12dd3a065c0 58 }
asaewing 0:b12dd3a065c0 59
asaewing 0:b12dd3a065c0 60 bool NetworkManager::BindPort() {
asaewing 0:b12dd3a065c0 61 /* Bind the HTTP port (TCP 80) to the server */
asaewing 0:b12dd3a065c0 62 int ii=srv.bind(_m_ip, 80);
asaewing 0:b12dd3a065c0 63 if (ii<0) {
asaewing 0:b12dd3a065c0 64 printf("bind error: %i \r\n",ii);
asaewing 0:b12dd3a065c0 65 return true;
asaewing 0:b12dd3a065c0 66 }
asaewing 0:b12dd3a065c0 67 printf("Bound\r\n");
asaewing 0:b12dd3a065c0 68 return false;
asaewing 0:b12dd3a065c0 69 }
asaewing 0:b12dd3a065c0 70
asaewing 0:b12dd3a065c0 71 bool NetworkManager::ListenConnections() {
asaewing 0:b12dd3a065c0 72 /* Can handle 5 simultaneous connections */
asaewing 0:b12dd3a065c0 73 srv.listen(5);
asaewing 0:b12dd3a065c0 74 if (srv.listen()<0) {
asaewing 0:b12dd3a065c0 75 printf("listen error\r\n");
asaewing 0:b12dd3a065c0 76 return true;
asaewing 0:b12dd3a065c0 77 }
asaewing 0:b12dd3a065c0 78 printf("Listening\r\n");
asaewing 0:b12dd3a065c0 79 return false;
asaewing 0:b12dd3a065c0 80 }
asaewing 0:b12dd3a065c0 81
asaewing 0:b12dd3a065c0 82 bool NetworkManager::CheckAccept() {
asaewing 0:b12dd3a065c0 83 int ii = srv.accept(&clt_sock);
asaewing 0:b12dd3a065c0 84 if (ii<0) {
asaewing 0:b12dd3a065c0 85 printf("accept error: %i \r\n",ii);
asaewing 0:b12dd3a065c0 86 return true;
asaewing 0:b12dd3a065c0 87 }
asaewing 0:b12dd3a065c0 88 printf("Socket Accepted\r\n");
asaewing 0:b12dd3a065c0 89 return false;
asaewing 0:b12dd3a065c0 90 }
asaewing 0:b12dd3a065c0 91
asaewing 0:b12dd3a065c0 92 void NetworkManager::AcceptEvent() {
asaewing 0:b12dd3a065c0 93 srv.accept(&clt_sock, &clt_addr);
asaewing 0:b12dd3a065c0 94
asaewing 0:b12dd3a065c0 95 //printf("The target IP address is '%s'\n", eth.get_ip_address());
asaewing 0:b12dd3a065c0 96 //printf("The target MAC address is '%s'\n", eth.get_mac_address());
asaewing 0:b12dd3a065c0 97 printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port());
asaewing 0:b12dd3a065c0 98
asaewing 0:b12dd3a065c0 99 // Receive data
asaewing 0:b12dd3a065c0 100 char buf[1024];
asaewing 0:b12dd3a065c0 101 clt_sock.recv(buf, 100);
asaewing 0:b12dd3a065c0 102 printf("## print recv: %s\r\n", buf);
asaewing 0:b12dd3a065c0 103 printf("## print recv: Finish\r\n");
asaewing 0:b12dd3a065c0 104 //char *arr[10];
asaewing 0:b12dd3a065c0 105 //memset(arr, 0, sizeof(arr));
asaewing 0:b12dd3a065c0 106
asaewing 0:b12dd3a065c0 107 std::string tmpBuf(buf);
asaewing 0:b12dd3a065c0 108
asaewing 0:b12dd3a065c0 109 _recvList.reserve(100);
asaewing 0:b12dd3a065c0 110 split(tmpBuf, _recvList, " ");
asaewing 0:b12dd3a065c0 111
asaewing 0:b12dd3a065c0 112 _http_method = _recvList[0];
asaewing 0:b12dd3a065c0 113 _api_command = _recvList[1];
asaewing 0:b12dd3a065c0 114 }
asaewing 0:b12dd3a065c0 115
asaewing 0:b12dd3a065c0 116 void NetworkManager::SendResponseEvent(std::string _response) {
asaewing 0:b12dd3a065c0 117
asaewing 0:b12dd3a065c0 118 //std::string response = HTTP_STATUS_LINE;
asaewing 0:b12dd3a065c0 119
asaewing 0:b12dd3a065c0 120 /*printf("$$ _recvList[0] : %s \r\n", _recvList[0].c_str());
asaewing 0:b12dd3a065c0 121 printf("$$ _recvList[1] : %s \r\n", _recvList[1].c_str());
asaewing 0:b12dd3a065c0 122 printf("$$ _recvList[2] : %s \r\n", _recvList[2].c_str());
asaewing 0:b12dd3a065c0 123 printf("$$ _recvList[3] : %s \r\n", _recvList[3].c_str());*/
asaewing 0:b12dd3a065c0 124
asaewing 0:b12dd3a065c0 125
asaewing 0:b12dd3a065c0 126 //std::string tmpResponse = "";
asaewing 0:b12dd3a065c0 127 //tmpResponse = makeResponse(_response);
asaewing 0:b12dd3a065c0 128 char* tmpString = stringToChar(makeResponse(_response));
asaewing 0:b12dd3a065c0 129 clt_sock.send(tmpString, strlen(tmpString));
asaewing 0:b12dd3a065c0 130 //clt_sock.send(response, strlen(response));
asaewing 0:b12dd3a065c0 131
asaewing 0:b12dd3a065c0 132 // Send data
asaewing 0:b12dd3a065c0 133 //clt_sock.send(HTTP_RESPONSE, strlen(HTTP_RESPONSE));
asaewing 0:b12dd3a065c0 134
asaewing 0:b12dd3a065c0 135 // Close the socket
asaewing 0:b12dd3a065c0 136 clt_sock.close();
asaewing 0:b12dd3a065c0 137
asaewing 0:b12dd3a065c0 138 printf("Socket close\r\n");
asaewing 0:b12dd3a065c0 139 }
asaewing 0:b12dd3a065c0 140
asaewing 0:b12dd3a065c0 141 std::string NetworkManager::getHttpMethod() {
asaewing 0:b12dd3a065c0 142 return _http_method;
asaewing 0:b12dd3a065c0 143 }
asaewing 0:b12dd3a065c0 144
asaewing 0:b12dd3a065c0 145
asaewing 0:b12dd3a065c0 146 std::string NetworkManager::getApiCommand() {
asaewing 0:b12dd3a065c0 147 return _api_command;
asaewing 0:b12dd3a065c0 148 }
asaewing 0:b12dd3a065c0 149
asaewing 0:b12dd3a065c0 150 std::string NetworkManager::makeResponse(std::string tmpResponse) {
asaewing 0:b12dd3a065c0 151 std::string returnResponse = HTTP_STATUS_LINE;
asaewing 0:b12dd3a065c0 152 returnResponse.append("\r\n");
asaewing 0:b12dd3a065c0 153 returnResponse.append(HTTP_HEADER_FIELDS);
asaewing 0:b12dd3a065c0 154 returnResponse.append("\r\n\r\n");
asaewing 0:b12dd3a065c0 155 returnResponse.append(tmpResponse);
asaewing 0:b12dd3a065c0 156 returnResponse.append("\r\n");
asaewing 0:b12dd3a065c0 157
asaewing 0:b12dd3a065c0 158 return returnResponse;
asaewing 0:b12dd3a065c0 159 }