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:
Mon Mar 04 00:00:33 2019 +0000
Revision:
11:f7a5b6c7305c
Parent:
10:ca0c1db6d933
Get the SignOfLife LED running.

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