sensor web server

Dependencies:   EthernetNetIf HTTPServer mbed

Committer:
nobuki
Date:
Sun Nov 18 11:24:12 2012 +0000
Revision:
0:803d8094260a
version1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nobuki 0:803d8094260a 1 #include "SensorHandler.h"
nobuki 0:803d8094260a 2
nobuki 0:803d8094260a 3 //#define __DEBUG
nobuki 0:803d8094260a 4 #include <dbg.h>
nobuki 0:803d8094260a 5
nobuki 0:803d8094260a 6 AnalogIn g_ain_brightness(p15);
nobuki 0:803d8094260a 7 AnalogIn g_ain_temperature(p20);
nobuki 0:803d8094260a 8
nobuki 0:803d8094260a 9 SensorHandler::SensorHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket)
nobuki 0:803d8094260a 10 {
nobuki 0:803d8094260a 11 DBG("SensorHandler()\r\n");
nobuki 0:803d8094260a 12 }
nobuki 0:803d8094260a 13
nobuki 0:803d8094260a 14 SensorHandler::~SensorHandler()
nobuki 0:803d8094260a 15 {
nobuki 0:803d8094260a 16 DBG("~SensorHandler()\r\n");
nobuki 0:803d8094260a 17 }
nobuki 0:803d8094260a 18 void SensorHandler::printString( const char* pszString )
nobuki 0:803d8094260a 19 {
nobuki 0:803d8094260a 20 writeData( pszString, strlen(pszString) );
nobuki 0:803d8094260a 21 }
nobuki 0:803d8094260a 22
nobuki 0:803d8094260a 23 double GetTemperature()
nobuki 0:803d8094260a 24 {
nobuki 0:803d8094260a 25 double dV = g_ain_temperature * 3.3;
nobuki 0:803d8094260a 26 return dV * 100.0;
nobuki 0:803d8094260a 27 }
nobuki 0:803d8094260a 28
nobuki 0:803d8094260a 29 int GetBrightness()
nobuki 0:803d8094260a 30 {
nobuki 0:803d8094260a 31 double dV = g_ain_brightness * 3.3;
nobuki 0:803d8094260a 32
nobuki 0:803d8094260a 33 double dR = 0.0;
nobuki 0:803d8094260a 34 if( 0.005 < (3.3 - dV) )
nobuki 0:803d8094260a 35 {
nobuki 0:803d8094260a 36 dR = 10 * 1000 * dV / (3.3 - dV);
nobuki 0:803d8094260a 37 }
nobuki 0:803d8094260a 38
nobuki 0:803d8094260a 39 if( 100000.0 < dR )
nobuki 0:803d8094260a 40 {
nobuki 0:803d8094260a 41 return 0;
nobuki 0:803d8094260a 42 }
nobuki 0:803d8094260a 43 if( 4000.0 > dR )
nobuki 0:803d8094260a 44 {
nobuki 0:803d8094260a 45 return 2;
nobuki 0:803d8094260a 46 }
nobuki 0:803d8094260a 47 return 1;
nobuki 0:803d8094260a 48 }
nobuki 0:803d8094260a 49
nobuki 0:803d8094260a 50 void SensorHandler::doGet()
nobuki 0:803d8094260a 51 {
nobuki 0:803d8094260a 52 DBG("doGet()\r\n");
nobuki 0:803d8094260a 53
nobuki 0:803d8094260a 54 respHeaders()["Connection"] = "close";
nobuki 0:803d8094260a 55
nobuki 0:803d8094260a 56 printString( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n" );
nobuki 0:803d8094260a 57 printString( "<html lang=\"ja\">\n" );
nobuki 0:803d8094260a 58 printString( "<head>\n" );
nobuki 0:803d8094260a 59 printString( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" );
nobuki 0:803d8094260a 60 printString( "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n" );
nobuki 0:803d8094260a 61 printString( "<title></title>\n" );
nobuki 0:803d8094260a 62 printString( "</head>\n" );
nobuki 0:803d8094260a 63 printString( "<body>\n" );
nobuki 0:803d8094260a 64
nobuki 0:803d8094260a 65 printString( "Temperature : " );
nobuki 0:803d8094260a 66 char szTemperature[10];
nobuki 0:803d8094260a 67 sprintf( szTemperature, "%4.1f", GetTemperature() );
nobuki 0:803d8094260a 68 printString( szTemperature );
nobuki 0:803d8094260a 69 printString( " [degree]\n" );
nobuki 0:803d8094260a 70 printString( "<br /><br />\n" );
nobuki 0:803d8094260a 71
nobuki 0:803d8094260a 72 printString( "Brightness : ");
nobuki 0:803d8094260a 73 switch( GetBrightness() )
nobuki 0:803d8094260a 74 {
nobuki 0:803d8094260a 75 case 0:
nobuki 0:803d8094260a 76 printString("Dark");
nobuki 0:803d8094260a 77 break;
nobuki 0:803d8094260a 78 case 1:
nobuki 0:803d8094260a 79 printString("Ordinarily");
nobuki 0:803d8094260a 80 break;
nobuki 0:803d8094260a 81 case 2:
nobuki 0:803d8094260a 82 printString("Bright");
nobuki 0:803d8094260a 83 break;
nobuki 0:803d8094260a 84 }
nobuki 0:803d8094260a 85 printString( "<br />\n" );
nobuki 0:803d8094260a 86
nobuki 0:803d8094260a 87 printString( "</body>\n" );
nobuki 0:803d8094260a 88 printString( "</html>" );
nobuki 0:803d8094260a 89 }
nobuki 0:803d8094260a 90
nobuki 0:803d8094260a 91 void SensorHandler::doPost()
nobuki 0:803d8094260a 92 {
nobuki 0:803d8094260a 93 DBG("doPost()\r\n");
nobuki 0:803d8094260a 94 }
nobuki 0:803d8094260a 95
nobuki 0:803d8094260a 96 void SensorHandler::doHead()
nobuki 0:803d8094260a 97 {
nobuki 0:803d8094260a 98 DBG("doHead()\r\n");
nobuki 0:803d8094260a 99 }
nobuki 0:803d8094260a 100
nobuki 0:803d8094260a 101 void SensorHandler::onReadable() //Data has been read
nobuki 0:803d8094260a 102 {
nobuki 0:803d8094260a 103 DBG("onReadable()\r\n");
nobuki 0:803d8094260a 104 }
nobuki 0:803d8094260a 105
nobuki 0:803d8094260a 106 void SensorHandler::onWriteable() //Data has been written & buf is free
nobuki 0:803d8094260a 107 {
nobuki 0:803d8094260a 108 DBG("onWriteable()\r\n");
nobuki 0:803d8094260a 109 close(); //Data written, we can close the connection
nobuki 0:803d8094260a 110 }
nobuki 0:803d8094260a 111
nobuki 0:803d8094260a 112 void SensorHandler::onClose() //Connection is closing
nobuki 0:803d8094260a 113 {
nobuki 0:803d8094260a 114 DBG("onClose()\r\n");
nobuki 0:803d8094260a 115 }