Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
Diff: web-server-base.c
- Revision:
- 109:3e82f62c7e1f
- Parent:
- 108:91bfb40e7487
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web-server-base.c Mon Apr 29 14:45:30 2019 +0000
@@ -0,0 +1,116 @@
+#include "web-base.h"
+#include "web-server-derived.h"
+#include "web-server-base.h"
+#include "http.h"
+#include "fault.h"
+#include "led.h"
+
+#define DO_FAVICON DO_BASE + 0
+#define DO_BASE_CSS DO_BASE + 1
+#define DO_NAV_CSS DO_BASE + 2
+#define DO_TRACE_HTML DO_BASE + 3
+#define DO_TRACE_AJAX DO_BASE + 4
+#define DO_TRACE_SCRIPT DO_BASE + 5
+#define DO_CLOCK_HTML DO_BASE + 6
+#define DO_CLOCK_AJAX DO_BASE + 7
+#define DO_CLOCK_SCRIPT DO_BASE + 8
+#define DO_NET_HTML DO_BASE + 9
+#define DO_NET4_HTML DO_BASE + 10
+#define DO_NET4_AJAX DO_BASE + 11
+#define DO_NET4_SCRIPT DO_BASE + 12
+#define DO_NET6_HTML DO_BASE + 13
+#define DO_NET6_AJAX DO_BASE + 14
+#define DO_NET6_SCRIPT DO_BASE + 15
+#define DO_LOG_HTML DO_BASE + 16
+#define DO_FAULT_HTML DO_BASE + 17
+#define DO_FIRMWARE_HTML DO_BASE + 18
+#define DO_FIRMWARE_AJAX DO_BASE + 19
+#define DO_FIRMWARE_SCRIPT DO_BASE + 20
+
+int WebServerBaseDecideWhatToDo(char *pPath, char* pLastModified)
+{
+ if (HttpSameStr(pPath, "/login" )) return DO_LOGIN;
+ if (HttpSameStr(pPath, "/clock" )) return DO_CLOCK_HTML;
+ if (HttpSameStr(pPath, "/clock-ajax" )) return DO_CLOCK_AJAX;
+ if (HttpSameStr(pPath, "/net" )) return DO_NET_HTML;
+ if (HttpSameStr(pPath, "/net4" )) return DO_NET4_HTML;
+ if (HttpSameStr(pPath, "/net4-ajax" )) return DO_NET4_AJAX;
+ if (HttpSameStr(pPath, "/net6" )) return DO_NET6_HTML;
+ if (HttpSameStr(pPath, "/net6-ajax" )) return DO_NET6_AJAX;
+ if (HttpSameStr(pPath, "/log" )) return DO_LOG_HTML;
+ if (HttpSameStr(pPath, "/trace" )) return DO_TRACE_HTML;
+ if (HttpSameStr(pPath, "/trace-ajax" )) return DO_TRACE_AJAX;
+ if (HttpSameStr(pPath, "/fault" )) return DO_FAULT_HTML;
+ if (HttpSameStr(pPath, "/firmware" )) return DO_FIRMWARE_HTML;
+ if (HttpSameStr(pPath, "/firmware-ajax")) return DO_FIRMWARE_AJAX;
+
+ if (HttpSameStr(pPath, "/favicon.ico" )) return HttpSameDate(WebFaviconDate, WebFaviconTime, pLastModified) ? DO_NOT_MODIFIED : DO_FAVICON;
+ if (HttpSameStr(pPath, "/base.css" )) return HttpSameDate(WebBaseCssDate, WebBaseCssTime, pLastModified) ? DO_NOT_MODIFIED : DO_BASE_CSS;
+ if (HttpSameStr(pPath, "/settings.css" )) return HttpSameDate(WebNavCssDate, WebNavCssTime, pLastModified) ? DO_NOT_MODIFIED : DO_NAV_CSS;
+ if (HttpSameStr(pPath, "/net4.js" )) return HttpSameDate(WebNet4ScriptDate, WebNet4ScriptTime, pLastModified) ? DO_NOT_MODIFIED : DO_NET4_SCRIPT;
+ if (HttpSameStr(pPath, "/net6.js" )) return HttpSameDate(WebNet6ScriptDate, WebNet6ScriptTime, pLastModified) ? DO_NOT_MODIFIED : DO_NET6_SCRIPT;
+ if (HttpSameStr(pPath, "/trace.js" )) return HttpSameDate(WebTraceScriptDate, WebTraceScriptTime, pLastModified) ? DO_NOT_MODIFIED : DO_TRACE_SCRIPT;
+ if (HttpSameStr(pPath, "/clock.js" )) return HttpSameDate(WebClockScriptDate, WebClockScriptTime, pLastModified) ? DO_NOT_MODIFIED : DO_CLOCK_SCRIPT;
+ if (HttpSameStr(pPath, "/firmware.js" )) return HttpSameDate(WebFirmwareScriptDate, WebFirmwareScriptTime, pLastModified) ? DO_NOT_MODIFIED : DO_FIRMWARE_SCRIPT;
+
+ return WebServerDerivedRequest(pPath, pLastModified);
+}
+void WebServerBaseHandleQuery(int todo, char* pQuery)
+{
+ switch (todo)
+ {
+ case DO_LOGIN: WebLoginQuery (pQuery); return;
+ case DO_TRACE_AJAX: WebTraceQuery (pQuery); return;
+ case DO_CLOCK_AJAX: WebClockQuery (pQuery); return;
+ case DO_CLOCK_HTML: WebClockQuery (pQuery); return;
+ case DO_LOG_HTML: WebLogQuery (pQuery); return;
+ case DO_FAULT_HTML: WebFaultQuery (pQuery); return;
+ case DO_FIRMWARE_HTML: WebFirmwareQuery(pQuery); return;
+ case DO_FIRMWARE_AJAX: WebFirmwareQuery(pQuery); return;
+ }
+ WebServerDerivedGet(todo, pQuery);
+}
+bool WebServerBaseHandlePost(int todo, int contentLength, int contentStart, int size, char* pRequestStream, uint32_t positionInRequestStream)
+{
+ switch (todo)
+ {
+ case DO_FIRMWARE_AJAX: return WebFirmwarePost(contentLength, contentStart, size, pRequestStream, positionInRequestStream);
+ }
+ return WebServerDerivedPost(todo, contentLength, size, pRequestStream, positionInRequestStream);
+}
+
+void WebServerBaseReply(int todo)
+{
+ //Try all the base modules
+ switch (todo)
+ {
+ case DO_NOT_FOUND: HttpNotFound (); return;
+ case DO_NOT_MODIFIED: HttpNotModified (); return;
+ case DO_LOGIN: WebLoginHtml (); return;
+ case DO_FAVICON: WebFavicon (); return;
+ case DO_BASE_CSS: WebBaseCss (); return;
+ case DO_NAV_CSS: WebNavCss (); return;
+ case DO_TRACE_HTML: WebTraceHtml (); return;
+ case DO_TRACE_AJAX: WebTraceAjax (); return;
+ case DO_TRACE_SCRIPT: WebTraceScript (); return;
+ case DO_CLOCK_HTML: WebClockHtml (); return;
+ case DO_CLOCK_AJAX: WebClockAjax (); return;
+ case DO_CLOCK_SCRIPT: WebClockScript (); return;
+ case DO_NET_HTML: WebNetHtml (); return;
+ case DO_NET4_HTML: WebNet4Html (); return;
+ case DO_NET4_AJAX: WebNet4Ajax (); return;
+ case DO_NET4_SCRIPT: WebNet4Script (); return;
+ case DO_NET6_HTML: WebNet6Html (); return;
+ case DO_NET6_AJAX: WebNet6Ajax (); return;
+ case DO_NET6_SCRIPT: WebNet6Script (); return;
+ case DO_LOG_HTML: WebLogHtml (); return;
+ case DO_FAULT_HTML: WebFaultHtml (); return;
+ case DO_FIRMWARE_HTML: WebFirmwareHtml (); return;
+ case DO_FIRMWARE_AJAX: WebFirmwareAjax (); return;
+ case DO_FIRMWARE_SCRIPT: WebFirmwareScript(); return;
+ }
+
+ //If not called then call the derived (child) module
+ WebServerDerivedReply(todo);
+}
+