Measure system

Dependencies:   EthernetNetIf mbed RF12B

Committer:
benecsj
Date:
Thu Mar 10 19:56:45 2011 +0000
Revision:
1:b26ab2467b1a
Parent:
0:8d62137f7ff4
Child:
2:afe5826411e3

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benecsj 0:8d62137f7ff4 1
benecsj 0:8d62137f7ff4 2 /*
benecsj 0:8d62137f7ff4 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
benecsj 1:b26ab2467b1a 4
benecsj 0:8d62137f7ff4 5 Permission is hereby granted, free of charge, to any person obtaining a copy
benecsj 0:8d62137f7ff4 6 of this software and associated documentation files (the "Software"), to deal
benecsj 0:8d62137f7ff4 7 in the Software without restriction, including without limitation the rights
benecsj 0:8d62137f7ff4 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
benecsj 0:8d62137f7ff4 9 copies of the Software, and to permit persons to whom the Software is
benecsj 0:8d62137f7ff4 10 furnished to do so, subject to the following conditions:
benecsj 1:b26ab2467b1a 11
benecsj 0:8d62137f7ff4 12 The above copyright notice and this permission notice shall be included in
benecsj 0:8d62137f7ff4 13 all copies or substantial portions of the Software.
benecsj 1:b26ab2467b1a 14
benecsj 0:8d62137f7ff4 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
benecsj 0:8d62137f7ff4 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
benecsj 0:8d62137f7ff4 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
benecsj 0:8d62137f7ff4 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
benecsj 0:8d62137f7ff4 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
benecsj 0:8d62137f7ff4 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
benecsj 0:8d62137f7ff4 21 THE SOFTWARE.
benecsj 0:8d62137f7ff4 22 */
benecsj 0:8d62137f7ff4 23
benecsj 1:b26ab2467b1a 24 #include "MeasureSystem.h"
benecsj 0:8d62137f7ff4 25 #include "SimpleHandler.h"
benecsj 0:8d62137f7ff4 26 #include "DS1820.h"
benecsj 1:b26ab2467b1a 27
benecsj 1:b26ab2467b1a 28 extern DS1820* probe[2];
benecsj 0:8d62137f7ff4 29 extern int devices_found;
benecsj 0:8d62137f7ff4 30
benecsj 0:8d62137f7ff4 31 //#define __DEBUG
benecsj 0:8d62137f7ff4 32 //#include "dbg/dbg.h"
benecsj 0:8d62137f7ff4 33
benecsj 1:b26ab2467b1a 34 SimpleHandler::SimpleHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket) {}
benecsj 0:8d62137f7ff4 35
benecsj 1:b26ab2467b1a 36 SimpleHandler::~SimpleHandler() {
benecsj 1:b26ab2467b1a 37 HandlerActive = false;
benecsj 1:b26ab2467b1a 38 printf("2-SIMPLE-Handler destroyed\r\n");
benecsj 0:8d62137f7ff4 39 }
benecsj 0:8d62137f7ff4 40
benecsj 1:b26ab2467b1a 41 void SimpleHandler::doGet() {
benecsj 1:b26ab2467b1a 42 printf("2-SIMPLE-In SimpleHandler::doGet()\r\n");
benecsj 1:b26ab2467b1a 43
benecsj 1:b26ab2467b1a 44 if (path().compare("/currentdata") == 0) {
benecsj 1:b26ab2467b1a 45 char resp[32] = "Temps";
benecsj 1:b26ab2467b1a 46 char temp[32] ;
benecsj 1:b26ab2467b1a 47 probe[0]->convert_temperature(DS1820::all_devices);
benecsj 0:8d62137f7ff4 48 for (int i=0; i<devices_found; i++) {
benecsj 0:8d62137f7ff4 49 sprintf(temp," - %3.1f",(probe[i]->temperature('c')));
benecsj 1:b26ab2467b1a 50 strcat(resp,temp);
benecsj 1:b26ab2467b1a 51 }
benecsj 1:b26ab2467b1a 52 sprintf( temp , "\r\n");
benecsj 1:b26ab2467b1a 53 strcat(resp,temp);
benecsj 1:b26ab2467b1a 54
benecsj 1:b26ab2467b1a 55 setContentLen( strlen(resp) );
benecsj 1:b26ab2467b1a 56 respHeaders()["Connection"] = "close";
benecsj 1:b26ab2467b1a 57 writeData(resp, strlen(resp));
benecsj 1:b26ab2467b1a 58 } else
benecsj 1:b26ab2467b1a 59 if (path().compare("/currenthtml") == 0) {
benecsj 1:b26ab2467b1a 60 char temp[1000];
benecsj 1:b26ab2467b1a 61
benecsj 1:b26ab2467b1a 62 printf("2-SIMPLE- Generating html code\r\n");
benecsj 1:b26ab2467b1a 63
benecsj 1:b26ab2467b1a 64 string htmltext ("");
benecsj 1:b26ab2467b1a 65 htmltext +="<html>";
benecsj 1:b26ab2467b1a 66 htmltext +="<head>";
benecsj 1:b26ab2467b1a 67 htmltext += "<title>mbed Measure System</title>";
benecsj 1:b26ab2467b1a 68 htmltext +="</head>";
benecsj 1:b26ab2467b1a 69 htmltext +="<body bgcolor=""#0000FF"" text=""#00FFFF"" link=""#AAFFD4"" vlink=""#FFFFFF"" alink=""#FF0000"">";
benecsj 1:b26ab2467b1a 70 htmltext +="<div align=""center"">";
benecsj 1:b26ab2467b1a 71 htmltext +="<h1>Current values</h1>";
benecsj 1:b26ab2467b1a 72
benecsj 1:b26ab2467b1a 73 printf("2-SIMPLE- Reading temps\r\n");
benecsj 1:b26ab2467b1a 74
benecsj 1:b26ab2467b1a 75 probe[0]->convert_temperature(DS1820::all_devices);
benecsj 1:b26ab2467b1a 76 for (int i=0; i<devices_found; i++) {
benecsj 1:b26ab2467b1a 77 sprintf(temp,"%d.) %3.1f C",(i+1),(probe[i]->temperature('c')));
benecsj 1:b26ab2467b1a 78 htmltext +="<h1>";
benecsj 1:b26ab2467b1a 79 htmltext += temp;
benecsj 1:b26ab2467b1a 80 htmltext +="</h1>";
benecsj 0:8d62137f7ff4 81 }
benecsj 1:b26ab2467b1a 82
benecsj 1:b26ab2467b1a 83 printf("2-SIMPLE- Generating html code\r\n");
benecsj 1:b26ab2467b1a 84
benecsj 1:b26ab2467b1a 85 htmltext +="<h1><a href=""javascript:location.reload(true)"">Refresh</a></h1>";
benecsj 1:b26ab2467b1a 86 htmltext +="<h1><a href=""javascript:history.back()"">Return</a></h1>";
benecsj 1:b26ab2467b1a 87 htmltext +="</div>";
benecsj 1:b26ab2467b1a 88 htmltext +="</body>";
benecsj 1:b26ab2467b1a 89 htmltext +="</html>";
benecsj 1:b26ab2467b1a 90
benecsj 1:b26ab2467b1a 91 strcpy(temp, htmltext.c_str());
benecsj 1:b26ab2467b1a 92 setContentLen( strlen(temp) );
benecsj 1:b26ab2467b1a 93 respHeaders()["Connection"] = "close";
benecsj 1:b26ab2467b1a 94 writeData(temp, strlen(temp));
benecsj 1:b26ab2467b1a 95
benecsj 1:b26ab2467b1a 96 }
benecsj 1:b26ab2467b1a 97 else if (path().compare("/logs") == 0) {
benecsj 1:b26ab2467b1a 98 char temp[1000];
benecsj 1:b26ab2467b1a 99 string htmltext ("");
benecsj 1:b26ab2467b1a 100 htmltext +="<html>\r\n";
benecsj 1:b26ab2467b1a 101 htmltext +="<head>\r\n";
benecsj 1:b26ab2467b1a 102 htmltext +="</head>\r\n";
benecsj 1:b26ab2467b1a 103 htmltext +="<body bgcolor=""#0000FF"" ";
benecsj 1:b26ab2467b1a 104 htmltext += "text=""#00FFFF"" link=""#AAFFD4"" vlink=""#FFFFFF"" alink=""#FF0000"">\r\n";
benecsj 1:b26ab2467b1a 105 htmltext +="<h2>Logged measures</h2>\r\n";
benecsj 1:b26ab2467b1a 106 htmltext +="</body>\r\n";
benecsj 1:b26ab2467b1a 107 htmltext +="</html>\r\n";
benecsj 1:b26ab2467b1a 108
benecsj 1:b26ab2467b1a 109 strcpy(temp, htmltext.c_str());
benecsj 1:b26ab2467b1a 110 setContentLen( strlen(temp) );
benecsj 1:b26ab2467b1a 111 respHeaders()["Connection"] = "close";
benecsj 1:b26ab2467b1a 112 writeData(temp, strlen(temp));
benecsj 1:b26ab2467b1a 113
benecsj 1:b26ab2467b1a 114 }
benecsj 1:b26ab2467b1a 115 else {
benecsj 1:b26ab2467b1a 116 char temp[] = "Invalid com command.";
benecsj 1:b26ab2467b1a 117 setContentLen( strlen(temp) );
benecsj 1:b26ab2467b1a 118 respHeaders()["Connection"] = "close";
benecsj 1:b26ab2467b1a 119 writeData(temp, strlen(temp));
benecsj 1:b26ab2467b1a 120 }
benecsj 1:b26ab2467b1a 121
benecsj 1:b26ab2467b1a 122
benecsj 1:b26ab2467b1a 123 printf("2-SIMPLE-Exit SimpleHandler::doGet()\r\n");
benecsj 0:8d62137f7ff4 124 }
benecsj 0:8d62137f7ff4 125
benecsj 1:b26ab2467b1a 126 void SimpleHandler::doPost() {
benecsj 1:b26ab2467b1a 127 printf("2-SIMPLE-In SimpleHandler::doPost() STARTED\r\n");
benecsj 1:b26ab2467b1a 128
benecsj 1:b26ab2467b1a 129 if (path().compare("/start") == 0) {
benecsj 1:b26ab2467b1a 130 MeasureStart();
benecsj 1:b26ab2467b1a 131 }
benecsj 1:b26ab2467b1a 132 else if (path().compare("/stop") == 0) {
benecsj 1:b26ab2467b1a 133 printf("CALLING MEASURE STOP\r\n");
benecsj 1:b26ab2467b1a 134 MeasureStop();
benecsj 1:b26ab2467b1a 135 }
benecsj 1:b26ab2467b1a 136 else
benecsj 1:b26ab2467b1a 137 {
benecsj 1:b26ab2467b1a 138 printf ("PATH = %s\r\n ",path().c_str());
benecsj 1:b26ab2467b1a 139 printf ("INVALID POST COMMAND\r\n");
benecsj 1:b26ab2467b1a 140 }
benecsj 1:b26ab2467b1a 141
benecsj 1:b26ab2467b1a 142 string htmltext ("");
benecsj 1:b26ab2467b1a 143 htmltext +="<html>\r\n";
benecsj 1:b26ab2467b1a 144 htmltext +="<head>\r\n";
benecsj 1:b26ab2467b1a 145 htmltext +="</head>\r\n";
benecsj 1:b26ab2467b1a 146 htmltext +="<body bgcolor=""#0000FF"" ";
benecsj 1:b26ab2467b1a 147 htmltext += "text=""#00FFFF"" link=""#AAFFD4"" vlink=""#FFFFFF"" alink=""#FF0000"">\r\n";
benecsj 1:b26ab2467b1a 148 htmltext +="<h2>Command received.</h2>\r\n";
benecsj 1:b26ab2467b1a 149 htmltext +="<script type=""text/javascript"">\r\n";
benecsj 1:b26ab2467b1a 150 htmltext += "setTimeout(""history.back()"",1500);";
benecsj 1:b26ab2467b1a 151 htmltext +="</script>\r\n";
benecsj 1:b26ab2467b1a 152 htmltext +="</body>\r\n";
benecsj 1:b26ab2467b1a 153 htmltext +="</html>\r\n";
benecsj 1:b26ab2467b1a 154
benecsj 1:b26ab2467b1a 155 printf("2-SIMPLE-In SimpleHandler::doPost() htmltext done\r\n");
benecsj 1:b26ab2467b1a 156
benecsj 1:b26ab2467b1a 157 char temp[300];
benecsj 1:b26ab2467b1a 158 strcpy(temp, htmltext.c_str());
benecsj 1:b26ab2467b1a 159
benecsj 1:b26ab2467b1a 160 setContentLen( strlen(temp) );
benecsj 1:b26ab2467b1a 161 respHeaders()["Connection"] = "close";
benecsj 1:b26ab2467b1a 162 writeData(temp, strlen(temp));
benecsj 1:b26ab2467b1a 163 printf("2-SIMPLE-In SimpleHandler::doPost() DONE\r\n");
benecsj 1:b26ab2467b1a 164 }
benecsj 1:b26ab2467b1a 165
benecsj 1:b26ab2467b1a 166 void SimpleHandler::doHead() {
benecsj 0:8d62137f7ff4 167
benecsj 0:8d62137f7ff4 168 }
benecsj 0:8d62137f7ff4 169
benecsj 0:8d62137f7ff4 170
benecsj 1:b26ab2467b1a 171 void SimpleHandler::onReadable() { //Data has been read
benecsj 0:8d62137f7ff4 172
benecsj 0:8d62137f7ff4 173 }
benecsj 0:8d62137f7ff4 174
benecsj 1:b26ab2467b1a 175 void SimpleHandler::onWriteable() { //Data has been written & buf is free
benecsj 1:b26ab2467b1a 176 printf("2-SIMPLE-SimpleHandler::onWriteable() event\r\n");
benecsj 1:b26ab2467b1a 177 close(); //Data written, we can close the connection
benecsj 0:8d62137f7ff4 178 }
benecsj 0:8d62137f7ff4 179
benecsj 1:b26ab2467b1a 180 void SimpleHandler::onClose() { //Connection is closing
benecsj 1:b26ab2467b1a 181 //Nothing to do
benecsj 0:8d62137f7ff4 182 }