sensor web server

Dependencies:   EthernetNetIf HTTPServer mbed

SensorHandler.cpp

Committer:
nobuki
Date:
2012-11-18
Revision:
0:803d8094260a

File content as of revision 0:803d8094260a:

#include "SensorHandler.h"

//#define __DEBUG
#include <dbg.h>

AnalogIn g_ain_brightness(p15);
AnalogIn g_ain_temperature(p20);

SensorHandler::SensorHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket)
{
    DBG("SensorHandler()\r\n");
}

SensorHandler::~SensorHandler()
{
    DBG("~SensorHandler()\r\n");
}
void SensorHandler::printString( const char* pszString )
{
    writeData( pszString, strlen(pszString) );
}

double GetTemperature()
{
    double dV = g_ain_temperature * 3.3;
    return dV * 100.0;
}

int GetBrightness()
{
    double dV = g_ain_brightness * 3.3;
    
    double dR = 0.0;
    if( 0.005 < (3.3 - dV) )
    {
        dR = 10 * 1000 * dV / (3.3 - dV);
    }
    
    if( 100000.0 < dR )
    {
        return 0;
    }
    if( 4000.0 > dR )
    {
        return 2;
    }
    return 1;
}

void SensorHandler::doGet()
{
    DBG("doGet()\r\n");

    respHeaders()["Connection"] = "close";
    
    printString( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n" );
    printString( "<html lang=\"ja\">\n" );
    printString( "<head>\n" );
    printString( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" );
    printString( "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n" );
    printString( "<title></title>\n" );
    printString( "</head>\n" );
    printString( "<body>\n" );
    
    printString( "Temperature : " );
    char szTemperature[10];
    sprintf( szTemperature, "%4.1f", GetTemperature() );
    printString( szTemperature );
    printString( " [degree]\n" );
    printString( "<br /><br />\n" );

    printString( "Brightness : "); 
    switch( GetBrightness() )
    {
    case 0:
        printString("Dark");
        break;
    case 1:
        printString("Ordinarily");
        break;
    case 2:
        printString("Bright");
        break;
    }
    printString( "<br />\n" );

    printString( "</body>\n" );
    printString( "</html>" );
}

void SensorHandler::doPost()
{
    DBG("doPost()\r\n");
}

void SensorHandler::doHead()
{
    DBG("doHead()\r\n");
}
  
void SensorHandler::onReadable() //Data has been read
{
    DBG("onReadable()\r\n");
}

void SensorHandler::onWriteable() //Data has been written & buf is free
{
    DBG("onWriteable()\r\n");
    close(); //Data written, we can close the connection
}

void SensorHandler::onClose() //Connection is closing
{
    DBG("onClose()\r\n");
}