networking library files
Networking.cpp
- Committer:
- Swabey89
- Date:
- 2018-12-18
- Revision:
- 4:71e730ed7ee0
- Parent:
- 3:71f9a18a216d
- Child:
- 5:b1f83bdeae79
File content as of revision 4:71e730ed7ee0:
#include "sample_hardware.hpp" #include "Networking.hpp" //Network thread - responsible for listening for connectinos and responding with updated tempature values void network() { char temp_str[10]; char press_str[10]; char light_str[10]; EthernetInterface eth; eth.set_network(IP, NETMASK, GATEWAY); eth.connect(); pc->printf("The target IP address is '%s'\n", eth.get_ip_address()); //Now setup a web server TCPServer srv; //TCP/IP Server TCPSocket clt_sock; //Socket for communication SocketAddress clt_addr; //Address of incoming connection /* Open the server on ethernet stack */ srv.open(ð); /* Bind the HTTP port (TCP 80) to the server */ srv.bind(eth.get_ip_address(), 80); /* Can handle 5 simultaneous connections */ srv.listen(5); while(true) { //Block and wait on an incoming connection srv.accept(&clt_sock, &clt_addr); pc->printf("Incoming connection accepted on %s:%d\n\r", clt_addr.get_ip_address(), clt_addr.get_port()); //Uses a C++ string to make it easier to concatinate string response; //move? bufferLock.lock(); double temp = buffer[newestIndex].gettemp(); double press = buffer[newestIndex].getpress(); float light = buffer[newestIndex].getlight()*100; string time_str = buffer[newestIndex].getTime(); bufferLock.unlock(); //Convert to a C String //MAKE SURE FORMATTING IS CORRECT ON THESE sprintf(temp_str, "%5.2f", temp); sprintf(press_str, "%5.2f", press); sprintf(light_str, "%5.2f", light); /* //TEST pc->printf("%s\n\r", temp_str); pc->printf("%s\n\r", press_str); pc->printf("%s\n\r", light_str); pc->printf("%s\n\r", time_str); //TEST */ //Build the C++ string response response = HTTP_RESPONSE; response += HTTP_MESSAGE_TIME; response += time_str; response += HTTP_MESSAGE_TEMP; response += temp_str; response += HTTP_MESSAGE_PRESSURE; response += press_str; response += HTTP_MESSAGE_LIGHT; response += light_str; response += HTTP_MESSAGE_FOOT; response += "\r\n"; //Send static HTML response (as a C string) clt_sock.send(response.c_str(), response.size()+6); } }