.

Dependencies:   BME280 BMP280 TextLCD mbed

Fork of CW_watchdog_09012018_copy by Calvin Kalintra

Committer:
FranciscoSalle
Date:
Wed Jan 10 01:27:01 2018 +0000
Revision:
6:f95438838ece
.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FranciscoSalle 6:f95438838ece 1 #if !FEATURE_LWIP
FranciscoSalle 6:f95438838ece 2 #error [NOT_SUPPORTED] LWIP not supported for this target
FranciscoSalle 6:f95438838ece 3 #endif
FranciscoSalle 6:f95438838ece 4
FranciscoSalle 6:f95438838ece 5 #include "mbed.h"
FranciscoSalle 6:f95438838ece 6 #include "EthernetInterface.h"
FranciscoSalle 6:f95438838ece 7 #include "TCPServer.h"
FranciscoSalle 6:f95438838ece 8 #include "TCPSocket.h"
FranciscoSalle 6:f95438838ece 9 #include "sd.h"
FranciscoSalle 6:f95438838ece 10 #include <iostream>
FranciscoSalle 6:f95438838ece 11 #include <string>
FranciscoSalle 6:f95438838ece 12
FranciscoSalle 6:f95438838ece 13 #define HTTP_STATUS_LINE "HTTP/1.0 200 OK"
FranciscoSalle 6:f95438838ece 14 #define HTTP_HEADER_FIELDS "Content-Type: text/html; charset=utf-8"
FranciscoSalle 6:f95438838ece 15 #define HTTP_MESSAGE_BODY1 "" \
FranciscoSalle 6:f95438838ece 16 "<html>" "\r\n" \
FranciscoSalle 6:f95438838ece 17 " <body style=\"display:flex;text-align:center\">" "\r\n" \
FranciscoSalle 6:f95438838ece 18 " <div style=\"margin:auto\">" "\r\n" \
FranciscoSalle 6:f95438838ece 19 " <h1>Hello World</h1>" "\r\n" \
FranciscoSalle 6:f95438838ece 20 " <p>The LDR value is "
FranciscoSalle 6:f95438838ece 21 #define HTTP_MESSAGE_BODY2 "" \
FranciscoSalle 6:f95438838ece 22 "</p>" "\r\n" \
FranciscoSalle 6:f95438838ece 23 " <p1>The Temperature value is"
FranciscoSalle 6:f95438838ece 24 #define HTTP_MESSAGE_BODY6 "" \
FranciscoSalle 6:f95438838ece 25 "</p1>" "\r\n" \
FranciscoSalle 6:f95438838ece 26 " <p2>The Pressure value is "
FranciscoSalle 6:f95438838ece 27 #define HTTP_MESSAGE_BODY4 "" \
FranciscoSalle 6:f95438838ece 28 "</p2>" "\r\n" \
FranciscoSalle 6:f95438838ece 29 " </div>" "\r\n" \
FranciscoSalle 6:f95438838ece 30 " </body>" "\r\n" \
FranciscoSalle 6:f95438838ece 31 "</html>"
FranciscoSalle 6:f95438838ece 32
FranciscoSalle 6:f95438838ece 33 #define HTTP_RESPONSE HTTP_STATUS_LINE "\r\n" \
FranciscoSalle 6:f95438838ece 34 HTTP_HEADER_FIELDS "\r\n" \
FranciscoSalle 6:f95438838ece 35 "\r\n" \
FranciscoSalle 6:f95438838ece 36 HTTP_MESSAGE_BODY "\r\n"
FranciscoSalle 6:f95438838ece 37
FranciscoSalle 6:f95438838ece 38 #define IP "10.0.0.1"
FranciscoSalle 6:f95438838ece 39 #define NETMASK "255.0.0.0"
FranciscoSalle 6:f95438838ece 40 #define GATEWAY "10.0.0.1"
FranciscoSalle 6:f95438838ece 41
FranciscoSalle 6:f95438838ece 42 //BMP280 bmp(D14,D15,0x76);
FranciscoSalle 6:f95438838ece 43 //AnalogIn ldr(PA_0);
FranciscoSalle 6:f95438838ece 44 //Mutex stdio_mutex;
FranciscoSalle 6:f95438838ece 45
FranciscoSalle 6:f95438838ece 46 void network()
FranciscoSalle 6:f95438838ece 47 {
FranciscoSalle 6:f95438838ece 48 //printf("Basic HTTP server example\n");
FranciscoSalle 6:f95438838ece 49 //Configure an ethernet connection
FranciscoSalle 6:f95438838ece 50
FranciscoSalle 6:f95438838ece 51 EthernetInterface eth;
FranciscoSalle 6:f95438838ece 52 eth.set_network(IP, NETMASK, GATEWAY);
FranciscoSalle 6:f95438838ece 53 eth.connect();
FranciscoSalle 6:f95438838ece 54 //stdio_mutex.lock();
FranciscoSalle 6:f95438838ece 55 printf("The target IP address is '%s'\n", eth.get_ip_address());
FranciscoSalle 6:f95438838ece 56 //stdio_mutex.unlock();
FranciscoSalle 6:f95438838ece 57 //Now setup a web server
FranciscoSalle 6:f95438838ece 58 TCPServer srv; //TCP/IP Server
FranciscoSalle 6:f95438838ece 59 TCPSocket clt_sock; //Socket for communication
FranciscoSalle 6:f95438838ece 60 SocketAddress clt_addr; //Address of incoming connection
FranciscoSalle 6:f95438838ece 61
FranciscoSalle 6:f95438838ece 62 /* Open the server on ethernet stack */
FranciscoSalle 6:f95438838ece 63 srv.open(&eth);
FranciscoSalle 6:f95438838ece 64
FranciscoSalle 6:f95438838ece 65 /* Bind the HTTP port (TCP 80) to the server */
FranciscoSalle 6:f95438838ece 66 srv.bind(eth.get_ip_address(), 80);
FranciscoSalle 6:f95438838ece 67
FranciscoSalle 6:f95438838ece 68 /* Can handle 5 simultaneous connections */
FranciscoSalle 6:f95438838ece 69 srv.listen(5);
FranciscoSalle 6:f95438838ece 70 //while (true) {
FranciscoSalle 6:f95438838ece 71 using namespace std;
FranciscoSalle 6:f95438838ece 72 //Block and wait on an incoming connection
FranciscoSalle 6:f95438838ece 73 srv.accept(&clt_sock, &clt_addr);
FranciscoSalle 6:f95438838ece 74 //printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port());
FranciscoSalle 6:f95438838ece 75
FranciscoSalle 6:f95438838ece 76 //Uses a C++ string to make it easier to concatinate
FranciscoSalle 6:f95438838ece 77 string response;
FranciscoSalle 6:f95438838ece 78 //This is a C string
FranciscoSalle 6:f95438838ece 79 char ldr_str[64];
FranciscoSalle 6:f95438838ece 80
FranciscoSalle 6:f95438838ece 81 //Read the LDR value
FranciscoSalle 6:f95438838ece 82 float u = 7;
FranciscoSalle 6:f95438838ece 83
FranciscoSalle 6:f95438838ece 84 //Convert to a C String
FranciscoSalle 6:f95438838ece 85 sprintf(ldr_str, "%5.3f", u );
FranciscoSalle 6:f95438838ece 86 //printf("LDR: %5.3f\n\r", u);
FranciscoSalle 6:f95438838ece 87
FranciscoSalle 6:f95438838ece 88 string response1,response2;
FranciscoSalle 6:f95438838ece 89 float tempr, pressurer;
FranciscoSalle 6:f95438838ece 90 tempr = 64;
FranciscoSalle 6:f95438838ece 91 pressurer = 322;
FranciscoSalle 6:f95438838ece 92 char data_temp[64] , data_press[64];
FranciscoSalle 6:f95438838ece 93 //tempf = bmp.getTemperature();
FranciscoSalle 6:f95438838ece 94 //pressuref = bmp.getPressure();
FranciscoSalle 6:f95438838ece 95 sprintf(data_temp, "%5.3f", tempr );
FranciscoSalle 6:f95438838ece 96 sprintf(data_press, "%5.3f", pressurer );
FranciscoSalle 6:f95438838ece 97
FranciscoSalle 6:f95438838ece 98
FranciscoSalle 6:f95438838ece 99
FranciscoSalle 6:f95438838ece 100 //Build the C++ string response
FranciscoSalle 6:f95438838ece 101 response = HTTP_MESSAGE_BODY1;
FranciscoSalle 6:f95438838ece 102 response += ldr_str;
FranciscoSalle 6:f95438838ece 103 response += HTTP_MESSAGE_BODY2;
FranciscoSalle 6:f95438838ece 104
FranciscoSalle 6:f95438838ece 105
FranciscoSalle 6:f95438838ece 106 response1 += data_temp;
FranciscoSalle 6:f95438838ece 107 response1 += HTTP_MESSAGE_BODY6;
FranciscoSalle 6:f95438838ece 108
FranciscoSalle 6:f95438838ece 109
FranciscoSalle 6:f95438838ece 110 response2 += data_press;
FranciscoSalle 6:f95438838ece 111 response2 += HTTP_MESSAGE_BODY4;
FranciscoSalle 6:f95438838ece 112
FranciscoSalle 6:f95438838ece 113
FranciscoSalle 6:f95438838ece 114 //Send static HTML response (as a C string)
FranciscoSalle 6:f95438838ece 115 clt_sock.send(response.c_str(), response.size()+6);
FranciscoSalle 6:f95438838ece 116 clt_sock.send(response1.c_str(), response1.size()+6);
FranciscoSalle 6:f95438838ece 117 clt_sock.send(response2.c_str(), response2.size()+6);
FranciscoSalle 6:f95438838ece 118 //}
FranciscoSalle 6:f95438838ece 119 }