X10 Server - IOT device to leverage a collection of old X10 devices for home automation and lighting control.

Dependencies:   IniManager mbed HTTPClient SWUpdate mbed-rtos Watchdog X10 SW_HTTPServer SW_String EthernetInterface TimeInterface SSDP

X10 Server

See the X10 Server Nodebook page

Committer:
WiredHome
Date:
Sun Mar 03 23:41:27 2019 +0000
Revision:
10:ca0c1db6d933
Parent:
8:a45fe77efcc5
Child:
11:f7a5b6c7305c
Updated WattEye that has SSDP Discovery.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:de1dfa2ab813 1
WiredHome 0:de1dfa2ab813 2 #include "mbed.h"
WiredHome 0:de1dfa2ab813 3
WiredHome 0:de1dfa2ab813 4 #include "EthernetInterface.h"
WiredHome 7:16129d213e6a 5 #include "SW_String.h"
WiredHome 0:de1dfa2ab813 6 #include "WebPages.h"
WiredHome 7:16129d213e6a 7 #include "IniManager.h" // v20
WiredHome 7:16129d213e6a 8
WiredHome 7:16129d213e6a 9 extern INI ini;
WiredHome 0:de1dfa2ab813 10
WiredHome 0:de1dfa2ab813 11 extern EthernetInterface eth;
WiredHome 0:de1dfa2ab813 12 extern const char * BUILD_DATE;
WiredHome 0:de1dfa2ab813 13 extern const char * PROG_NAME;
WiredHome 0:de1dfa2ab813 14 extern const char * My_Name;
WiredHome 0:de1dfa2ab813 15 extern const char * My_SerialNum;
WiredHome 4:5da66fab599c 16 extern int Server_Port;
WiredHome 0:de1dfa2ab813 17
WiredHome 7:16129d213e6a 18 extern bool swUpdateCheck;
WiredHome 0:de1dfa2ab813 19
WiredHome 8:a45fe77efcc5 20 extern DigitalOut linkdata;
WiredHome 8:a45fe77efcc5 21
WiredHome 8:a45fe77efcc5 22 extern "C" void mbed_reset();
WiredHome 8:a45fe77efcc5 23
WiredHome 0:de1dfa2ab813 24 // ##########################################
WiredHome 0:de1dfa2ab813 25 // This test version controls the LEDs
WiredHome 0:de1dfa2ab813 26 //
WiredHome 0:de1dfa2ab813 27 DigitalOut leds[4] = { LED1, LED2, LED3, LED4 };
WiredHome 0:de1dfa2ab813 28
WiredHome 0:de1dfa2ab813 29
WiredHome 0:de1dfa2ab813 30 static const char hdrTypeHTML_NoCache[] =
WiredHome 0:de1dfa2ab813 31 "Content-Type: text/html\r\n"
WiredHome 0:de1dfa2ab813 32 "Cache-Control: no-cache\r\n";
WiredHome 0:de1dfa2ab813 33
WiredHome 0:de1dfa2ab813 34
WiredHome 0:de1dfa2ab813 35
WiredHome 0:de1dfa2ab813 36
WiredHome 0:de1dfa2ab813 37 // The /setup.xml file
WiredHome 0:de1dfa2ab813 38 //
WiredHome 0:de1dfa2ab813 39 // sprintf(buf, SETUP_TEMPLATE, "FriendlyName", "udn_hexstring", "serialNum", "ip.ad.dr", portNum);
WiredHome 2:ca5d12560ff7 40 static const char SETUP_TEMPLATE[] =
WiredHome 0:de1dfa2ab813 41 "<?xml version=\"1.0\"?>\n"
WiredHome 0:de1dfa2ab813 42 "<root xmlns=\"urn:Belkin:device-1-0\">\n"
WiredHome 0:de1dfa2ab813 43 " <specVersion>\n"
WiredHome 0:de1dfa2ab813 44 " <major>1</major>\n"
WiredHome 0:de1dfa2ab813 45 " <minor>0</minor>\n"
WiredHome 0:de1dfa2ab813 46 " </specVersion>\n"
WiredHome 0:de1dfa2ab813 47 " <device>\n"
WiredHome 0:de1dfa2ab813 48 " <deviceType>urn:Belkin:device:controllee:1</deviceType>\n"
WiredHome 0:de1dfa2ab813 49 " <friendlyName>%s</friendlyName>\n"
WiredHome 0:de1dfa2ab813 50 " <manufacturer>Belkin International Inc.</manufacturer>\n" ///< must be "Belkin..." for Alexa discovery
WiredHome 0:de1dfa2ab813 51 " <manufacturerURL>http://www.smart-family.net</manufacturerURL>\n" ///<
WiredHome 10:ca0c1db6d933 52 " <modelDescription>WattEye</modelDescription>\n" ///<
WiredHome 10:ca0c1db6d933 53 " <modelName>WattEye</modelName>\n" ///<
WiredHome 0:de1dfa2ab813 54 " <modelNumber>1.0.0</modelNumber>\n"
WiredHome 7:16129d213e6a 55 #if 1
WiredHome 0:de1dfa2ab813 56 " <modelURL>http://www.smart-family.net</modelURL>\n" ///< This causes it to fail to send completely
WiredHome 0:de1dfa2ab813 57 #endif
WiredHome 0:de1dfa2ab813 58 " <UDN>uuid:Socket-1_0-%s</UDN>\n"
WiredHome 0:de1dfa2ab813 59 " <serialNumber>%s</serialNumber>\n"
WiredHome 0:de1dfa2ab813 60 " <iconList>\n"
WiredHome 0:de1dfa2ab813 61 " <mimetype>jpg</mimetype>\n"
WiredHome 0:de1dfa2ab813 62 " <width>100</width>\n"
WiredHome 0:de1dfa2ab813 63 " <height>100</height>\n"
WiredHome 0:de1dfa2ab813 64 " <depth>100</depth>\n"
WiredHome 0:de1dfa2ab813 65 " <url>icon.jpg</url>\n"
WiredHome 0:de1dfa2ab813 66 " </iconList>\n"
WiredHome 0:de1dfa2ab813 67 " <presentationURL>http://%s:%d</presentationURL>\n"
WiredHome 0:de1dfa2ab813 68 " </device>\n"
WiredHome 0:de1dfa2ab813 69 "</root>\n";
WiredHome 0:de1dfa2ab813 70
WiredHome 0:de1dfa2ab813 71
WiredHome 0:de1dfa2ab813 72 HTTPServer::CallBackResults Setup_xml(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 0:de1dfa2ab813 73 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 0:de1dfa2ab813 74 {
WiredHome 2:ca5d12560ff7 75 char BigBuffer[sizeof(SETUP_TEMPLATE) + 150];
WiredHome 0:de1dfa2ab813 76 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 8:a45fe77efcc5 77 linkdata = true;
WiredHome 0:de1dfa2ab813 78 switch (type) {
WiredHome 0:de1dfa2ab813 79 case HTTPServer::SEND_PAGE:
WiredHome 0:de1dfa2ab813 80 svr->header(HTTPServer::OK, "OK", hdrTypeHTML_NoCache);
WiredHome 0:de1dfa2ab813 81 sprintf(BigBuffer, SETUP_TEMPLATE,
WiredHome 0:de1dfa2ab813 82 My_Name, eth.getMACAddress(), My_SerialNum,
WiredHome 0:de1dfa2ab813 83 eth.getIPAddress(), Server_Port);
WiredHome 0:de1dfa2ab813 84 svr->send(BigBuffer);
WiredHome 0:de1dfa2ab813 85 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 86 break;
WiredHome 0:de1dfa2ab813 87 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 0:de1dfa2ab813 88 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 89 break;
WiredHome 0:de1dfa2ab813 90 case HTTPServer::DATA_TRANSFER:
WiredHome 0:de1dfa2ab813 91 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 92 break;
WiredHome 0:de1dfa2ab813 93 default:
WiredHome 0:de1dfa2ab813 94 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 95 break;
WiredHome 0:de1dfa2ab813 96 }
WiredHome 8:a45fe77efcc5 97 linkdata = false;
WiredHome 0:de1dfa2ab813 98 return ret;
WiredHome 0:de1dfa2ab813 99 }
WiredHome 0:de1dfa2ab813 100
WiredHome 0:de1dfa2ab813 101
WiredHome 0:de1dfa2ab813 102
WiredHome 0:de1dfa2ab813 103 HTTPServer::CallBackResults RootPage(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 0:de1dfa2ab813 104 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 0:de1dfa2ab813 105 {
WiredHome 10:ca0c1db6d933 106 //char smallBuf[100];
WiredHome 8:a45fe77efcc5 107 char bigBuf[3000] = ""; // sized by test and adjust, and then round up generously.
WiredHome 7:16129d213e6a 108 int count;
WiredHome 0:de1dfa2ab813 109 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 110
WiredHome 8:a45fe77efcc5 111 linkdata = true;
WiredHome 0:de1dfa2ab813 112 switch (type) {
WiredHome 0:de1dfa2ab813 113 case HTTPServer::SEND_PAGE:
WiredHome 7:16129d213e6a 114 if (0 == strcmp(svr->GetParameter("SWUpdate"),"CheckNow")) {
WiredHome 7:16129d213e6a 115 swUpdateCheck = true;
WiredHome 7:16129d213e6a 116 svr->header(HTTPServer::Found, "Found", "Location: /\r\n");
WiredHome 7:16129d213e6a 117 svr->send("\r\n");
WiredHome 7:16129d213e6a 118 break;
WiredHome 7:16129d213e6a 119 }
WiredHome 7:16129d213e6a 120 count = svr->GetParameterCount();
WiredHome 7:16129d213e6a 121 printf("Data Transfer: %d parameters\r\n", count);
WiredHome 7:16129d213e6a 122 if (count) {
WiredHome 8:a45fe77efcc5 123 //for (int i=0; i<count; i++) {
WiredHome 8:a45fe77efcc5 124 // const HTTPServer::namevalue * nv = svr->GetParameter(i);
WiredHome 8:a45fe77efcc5 125 // printf(" %d: %s => %s\r\n", i, nv->name, nv->value);
WiredHome 8:a45fe77efcc5 126 //}
WiredHome 7:16129d213e6a 127 const char * p = svr->GetParameter("House");
WiredHome 7:16129d213e6a 128 if (p && strlen(p) == 1) {
WiredHome 7:16129d213e6a 129 char cmdBuf[7]; // "HUU +6"
WiredHome 7:16129d213e6a 130 strcpy_s(cmdBuf, sizeof(cmdBuf), p);
WiredHome 7:16129d213e6a 131 p = svr->GetParameter("Unit");
WiredHome 7:16129d213e6a 132 if (p && strlen(p) >= 1 && strlen(p) <= 2) {
WiredHome 7:16129d213e6a 133 strcat_s(cmdBuf, sizeof(cmdBuf), p);
WiredHome 7:16129d213e6a 134 p = svr->GetParameter("Cmd");
WiredHome 7:16129d213e6a 135 if (p && strlen(p) >= 1 && strlen(p) <= 2) {
WiredHome 7:16129d213e6a 136 strcat_s(cmdBuf, sizeof(cmdBuf), " ");
WiredHome 7:16129d213e6a 137 strcat_s(cmdBuf, sizeof(cmdBuf), p);
WiredHome 7:16129d213e6a 138 printf("Web Command: '%s'\r\n", cmdBuf);
WiredHome 10:ca0c1db6d933 139 //cm17a.ParseCommand(cmdBuf);
WiredHome 7:16129d213e6a 140 svr->header(HTTPServer::Found, "Found", "Location: /\r\n");
WiredHome 7:16129d213e6a 141 svr->send("\r\n");
WiredHome 7:16129d213e6a 142 break;
WiredHome 7:16129d213e6a 143 }
WiredHome 7:16129d213e6a 144 }
WiredHome 7:16129d213e6a 145 }
WiredHome 7:16129d213e6a 146 }
WiredHome 7:16129d213e6a 147
WiredHome 7:16129d213e6a 148 svr->header(HTTPServer::OK, "OK", "Content-Type: text/html\r\n");
WiredHome 10:ca0c1db6d933 149 strcat_s(bigBuf, sizeof(bigBuf), "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<title>WattEye</title>\r\n");
WiredHome 8:a45fe77efcc5 150 strcat_s(bigBuf, sizeof(bigBuf), "<style>\n");
WiredHome 8:a45fe77efcc5 151 strcat_s(bigBuf, sizeof(bigBuf), "body {\n");
WiredHome 8:a45fe77efcc5 152 strcat_s(bigBuf, sizeof(bigBuf), " transform: scale(1.6);\n");
WiredHome 8:a45fe77efcc5 153 strcat_s(bigBuf, sizeof(bigBuf), " transform-origin: 0 0;\n");
WiredHome 8:a45fe77efcc5 154 strcat_s(bigBuf, sizeof(bigBuf), "}\n");
WiredHome 8:a45fe77efcc5 155 strcat_s(bigBuf, sizeof(bigBuf), "</style>\n");
WiredHome 8:a45fe77efcc5 156 strcat_s(bigBuf, sizeof(bigBuf), "</head>\r\n");
WiredHome 8:a45fe77efcc5 157 strcat_s(bigBuf, sizeof(bigBuf), "<body>\r\n");
WiredHome 10:ca0c1db6d933 158 strcat_s(bigBuf, sizeof(bigBuf), "<h1>WattEye</h1>\r\n");
WiredHome 8:a45fe77efcc5 159 strcat_s(bigBuf, sizeof(bigBuf), "<blockquote>\r\n");
WiredHome 8:a45fe77efcc5 160 strcat_s(bigBuf, sizeof(bigBuf), "<br/><br/><a href='/info'>info Page</a> | <a href='/setup.xml'>setup.xml</a>\r\n");
WiredHome 8:a45fe77efcc5 161 strcat_s(bigBuf, sizeof(bigBuf), "</blockquote>\r\n");
WiredHome 10:ca0c1db6d933 162 strcat_s(bigBuf, sizeof(bigBuf), "WattEye, Copyright &copy; 2019 by Smartware Computing, all rights reserved.");
WiredHome 8:a45fe77efcc5 163 strcat_s(bigBuf, sizeof(bigBuf), "</body></html>");
WiredHome 8:a45fe77efcc5 164 printf("bigBuf size is %d bytes\r\n", strlen(bigBuf));
WiredHome 8:a45fe77efcc5 165 svr->send(bigBuf);
WiredHome 0:de1dfa2ab813 166 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 167 break;
WiredHome 0:de1dfa2ab813 168 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 0:de1dfa2ab813 169 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 170 break;
WiredHome 0:de1dfa2ab813 171 case HTTPServer::DATA_TRANSFER:
WiredHome 0:de1dfa2ab813 172 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 173 break;
WiredHome 0:de1dfa2ab813 174 default:
WiredHome 0:de1dfa2ab813 175 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 176 break;
WiredHome 0:de1dfa2ab813 177 }
WiredHome 8:a45fe77efcc5 178 linkdata = false;
WiredHome 0:de1dfa2ab813 179 return ret;
WiredHome 0:de1dfa2ab813 180 }
WiredHome 7:16129d213e6a 181
WiredHome 7:16129d213e6a 182
WiredHome 7:16129d213e6a 183 HTTPServer::CallBackResults InfoPage(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 7:16129d213e6a 184 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 7:16129d213e6a 185 {
WiredHome 7:16129d213e6a 186 char lineBuf[60];
WiredHome 8:a45fe77efcc5 187 char bigBuf[1000] = ""; // sized by test and adjust, and then round up generously.
WiredHome 7:16129d213e6a 188 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 7:16129d213e6a 189 FILE * fh;
WiredHome 7:16129d213e6a 190
WiredHome 8:a45fe77efcc5 191 linkdata = true;
WiredHome 7:16129d213e6a 192 switch (type) {
WiredHome 7:16129d213e6a 193 case HTTPServer::SEND_PAGE:
WiredHome 7:16129d213e6a 194 svr->header(HTTPServer::OK, "OK", "Content-Type: text/html\r\n");
WiredHome 10:ca0c1db6d933 195 strcat_s(bigBuf, sizeof(bigBuf), "<!DOCTYPE html>\r\n<html><head><title>WattEye Info</title></head>\r\n");
WiredHome 8:a45fe77efcc5 196 strcat_s(bigBuf, sizeof(bigBuf), "<body>\r\n");
WiredHome 10:ca0c1db6d933 197 strcat_s(bigBuf, sizeof(bigBuf), "<h1>WattEye Info</h1>\r\n");
WiredHome 8:a45fe77efcc5 198 strcat_s(bigBuf, sizeof(bigBuf), "<table border='1' width='100%'>\r\n");
WiredHome 8:a45fe77efcc5 199 strcat_s(bigBuf, sizeof(bigBuf), "<tr><th>Configuration</th><th>Software</th></tr>\r\n");
WiredHome 8:a45fe77efcc5 200 strcat_s(bigBuf, sizeof(bigBuf), "<tr><td valign='top' width='50%'><pre>\r\n");
WiredHome 10:ca0c1db6d933 201 fh = fopen("/local/WattEye.ini", "rt");
WiredHome 7:16129d213e6a 202 if (fh) {
WiredHome 7:16129d213e6a 203 char fileBuf[60];
WiredHome 7:16129d213e6a 204 while(fgets(fileBuf, sizeof(fileBuf), fh)) {
WiredHome 8:a45fe77efcc5 205 strcat_s(bigBuf, sizeof(bigBuf), fileBuf);
WiredHome 7:16129d213e6a 206 }
WiredHome 7:16129d213e6a 207 fclose(fh);
WiredHome 7:16129d213e6a 208 }
WiredHome 8:a45fe77efcc5 209 strcat_s(bigBuf, sizeof(bigBuf), "</pre>\r\n");
WiredHome 8:a45fe77efcc5 210 strcat_s(bigBuf, sizeof(bigBuf), "</td>\r\n");
WiredHome 8:a45fe77efcc5 211 strcat_s(bigBuf, sizeof(bigBuf), "<td valign='top' width='50%'><pre>\r\n");
WiredHome 7:16129d213e6a 212 if (INI::INI_SUCCESS == ini.ReadString("SWUpdate", "name", lineBuf, sizeof(lineBuf))) {
WiredHome 8:a45fe77efcc5 213 strcat_s(bigBuf, sizeof(bigBuf), "name=");
WiredHome 8:a45fe77efcc5 214 strcat_s(bigBuf, sizeof(bigBuf), lineBuf);
WiredHome 8:a45fe77efcc5 215 strcat_s(bigBuf, sizeof(bigBuf), "\r\nversion=");
WiredHome 7:16129d213e6a 216 lineBuf[6] = '\0';
WiredHome 7:16129d213e6a 217 char fname[45];
WiredHome 7:16129d213e6a 218 snprintf(fname, sizeof(fname), "/local/%s.ver", lineBuf);
WiredHome 7:16129d213e6a 219 fh = fopen(fname, "rt");
WiredHome 7:16129d213e6a 220 if (fh) {
WiredHome 7:16129d213e6a 221 while(fgets(lineBuf, sizeof(lineBuf), fh)) {
WiredHome 8:a45fe77efcc5 222 strcat_s(bigBuf, sizeof(bigBuf), lineBuf);
WiredHome 7:16129d213e6a 223 }
WiredHome 7:16129d213e6a 224 fclose(fh);
WiredHome 7:16129d213e6a 225 }
WiredHome 7:16129d213e6a 226 }
WiredHome 8:a45fe77efcc5 227 strcat_s(bigBuf, sizeof(bigBuf), "</pre>\r\n");
WiredHome 8:a45fe77efcc5 228 strcat_s(bigBuf, sizeof(bigBuf), "<img src='/icon.png'>");
WiredHome 8:a45fe77efcc5 229 strcat_s(bigBuf, sizeof(bigBuf), "</td></tr>\r\n");
WiredHome 8:a45fe77efcc5 230 strcat_s(bigBuf, sizeof(bigBuf), "<tr>\r\n");
WiredHome 8:a45fe77efcc5 231 strcat_s(bigBuf, sizeof(bigBuf), "<td><a href='/'>Home Page</a> | <a href='/reboot'>Reboot</a></td>\r\n");
WiredHome 8:a45fe77efcc5 232 strcat_s(bigBuf, sizeof(bigBuf), "<td><a href='/software'>Software Update Check</a> | ");
WiredHome 8:a45fe77efcc5 233 strcat_s(bigBuf, sizeof(bigBuf), "<a href='/setup.xml' target='_xml'>view setup.xml</a>\r\n");
WiredHome 8:a45fe77efcc5 234 strcat_s(bigBuf, sizeof(bigBuf), "</td></tr></table>\r\n");
WiredHome 8:a45fe77efcc5 235 strcat_s(bigBuf, sizeof(bigBuf), "</body></html>");
WiredHome 8:a45fe77efcc5 236 printf("bigBuf size is %d bytes\r\n", strlen(bigBuf));
WiredHome 8:a45fe77efcc5 237 svr->send(bigBuf);
WiredHome 7:16129d213e6a 238 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 7:16129d213e6a 239 break;
WiredHome 7:16129d213e6a 240 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 7:16129d213e6a 241 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 7:16129d213e6a 242 break;
WiredHome 7:16129d213e6a 243 case HTTPServer::DATA_TRANSFER:
WiredHome 7:16129d213e6a 244 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 7:16129d213e6a 245 break;
WiredHome 7:16129d213e6a 246 default:
WiredHome 7:16129d213e6a 247 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 7:16129d213e6a 248 break;
WiredHome 7:16129d213e6a 249 }
WiredHome 8:a45fe77efcc5 250 linkdata = false;
WiredHome 7:16129d213e6a 251 return ret;
WiredHome 7:16129d213e6a 252 }
WiredHome 7:16129d213e6a 253
WiredHome 7:16129d213e6a 254
WiredHome 7:16129d213e6a 255 HTTPServer::CallBackResults SoftwarePage(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 7:16129d213e6a 256 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 7:16129d213e6a 257 {
WiredHome 7:16129d213e6a 258 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 7:16129d213e6a 259
WiredHome 8:a45fe77efcc5 260 linkdata = true;
WiredHome 7:16129d213e6a 261 switch (type) {
WiredHome 7:16129d213e6a 262 case HTTPServer::SEND_PAGE:
WiredHome 7:16129d213e6a 263 swUpdateCheck = true;
WiredHome 7:16129d213e6a 264 printf("SW Update Check scheduled.\r\n");
WiredHome 7:16129d213e6a 265 svr->header(HTTPServer::Found, "Found", "Location: /\r\n");
WiredHome 7:16129d213e6a 266 svr->send("\r\n");
WiredHome 7:16129d213e6a 267 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 7:16129d213e6a 268 break;
WiredHome 7:16129d213e6a 269 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 7:16129d213e6a 270 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 7:16129d213e6a 271 break;
WiredHome 7:16129d213e6a 272 case HTTPServer::DATA_TRANSFER:
WiredHome 7:16129d213e6a 273 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 7:16129d213e6a 274 break;
WiredHome 7:16129d213e6a 275 default:
WiredHome 7:16129d213e6a 276 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 7:16129d213e6a 277 break;
WiredHome 7:16129d213e6a 278 }
WiredHome 8:a45fe77efcc5 279 linkdata = false;
WiredHome 7:16129d213e6a 280 return ret;
WiredHome 7:16129d213e6a 281 }
WiredHome 8:a45fe77efcc5 282
WiredHome 8:a45fe77efcc5 283
WiredHome 8:a45fe77efcc5 284 HTTPServer::CallBackResults RebootPage(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 8:a45fe77efcc5 285 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 8:a45fe77efcc5 286 {
WiredHome 8:a45fe77efcc5 287 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 8:a45fe77efcc5 288
WiredHome 8:a45fe77efcc5 289 linkdata = true;
WiredHome 8:a45fe77efcc5 290 switch (type) {
WiredHome 8:a45fe77efcc5 291 case HTTPServer::SEND_PAGE:
WiredHome 8:a45fe77efcc5 292 swUpdateCheck = true;
WiredHome 8:a45fe77efcc5 293 printf("Reboot scheduled.\r\n");
WiredHome 8:a45fe77efcc5 294 svr->header(HTTPServer::Found, "Found", "Location: /\r\n");
WiredHome 8:a45fe77efcc5 295 svr->send("\r\n");
WiredHome 8:a45fe77efcc5 296 Thread::wait(500);
WiredHome 8:a45fe77efcc5 297 mbed_reset();
WiredHome 8:a45fe77efcc5 298 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 8:a45fe77efcc5 299 break;
WiredHome 8:a45fe77efcc5 300 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 8:a45fe77efcc5 301 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 8:a45fe77efcc5 302 break;
WiredHome 8:a45fe77efcc5 303 case HTTPServer::DATA_TRANSFER:
WiredHome 8:a45fe77efcc5 304 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 8:a45fe77efcc5 305 break;
WiredHome 8:a45fe77efcc5 306 default:
WiredHome 8:a45fe77efcc5 307 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 8:a45fe77efcc5 308 break;
WiredHome 8:a45fe77efcc5 309 }
WiredHome 8:a45fe77efcc5 310 linkdata = false;
WiredHome 8:a45fe77efcc5 311 return ret;
WiredHome 8:a45fe77efcc5 312 }