Measure system
Dependencies: EthernetNetIf mbed RF12B
server/impl/SimpleHandler.cpp@1:b26ab2467b1a, 2011-03-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |