mirror of https://github.com/arendst/Tasmota.git
Merge pull request #9590 from s-hadinger/web_optim2
Webserver->on() optimization phase 2
This commit is contained in:
commit
bc00e251f8
|
@ -874,6 +874,10 @@ const WebServerDispatch_t WebServerDispatch[] PROGMEM = {
|
|||
#endif // Not FIRMWARE_MINIMAL
|
||||
};
|
||||
|
||||
void WebServer_on(const char * prefix, void (*func)(void), uint8_t method = HTTP_ANY) {
|
||||
Webserver->on((const __FlashStringHelper *) prefix, (HTTPMethod) method, func);
|
||||
}
|
||||
|
||||
void StartWebserver(int type, IPAddress ipweb)
|
||||
{
|
||||
if (!Settings.web_refresh) { Settings.web_refresh = HTTP_REFRESH_TIME; }
|
||||
|
@ -883,13 +887,14 @@ void StartWebserver(int type, IPAddress ipweb)
|
|||
// call `Webserver->on()` on each entry
|
||||
for (uint32_t i=0; i<ARRAY_SIZE(WebServerDispatch); i++) {
|
||||
const WebServerDispatch_t & line = WebServerDispatch[i];
|
||||
uint8_t method = pgm_read_byte(&line.method);
|
||||
// copy uri in RAM and prefix with '/'
|
||||
char uri[4];
|
||||
uri[0] = '/';
|
||||
strcpy_P(&uri[1], line.uri);
|
||||
uri[1] = pgm_read_byte(&line.uri[0]);
|
||||
uri[2] = pgm_read_byte(&line.uri[1]);
|
||||
uri[3] = '\0';
|
||||
// register
|
||||
Webserver->on(uri, (HTTPMethod) method, line.handler);
|
||||
WebServer_on(uri, line.handler, pgm_read_byte(&line.method));
|
||||
}
|
||||
Webserver->onNotFound(HandleNotFound);
|
||||
Webserver->on("/u2", HTTP_POST, HandleUploadDone, HandleUploadLoop); // this call requires 2 functions so we keep a direct call
|
||||
|
|
|
@ -1398,7 +1398,7 @@ bool Xdrv02(uint8_t function)
|
|||
WSContentSend_P(HTTP_BTN_MENU_MQTT);
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_MQTT, HandleMqttConfiguration);
|
||||
WebServer_on(PSTR("/" WEB_HANDLE_MQTT), HandleMqttConfiguration);
|
||||
break;
|
||||
#endif // USE_WEBSERVER
|
||||
case FUNC_COMMAND:
|
||||
|
|
|
@ -638,7 +638,7 @@ bool Xdrv07(uint8_t function) {
|
|||
WSContentSend_P(HTTP_BTN_MENU_DOMOTICZ);
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_DOMOTICZ, HandleDomoticzConfiguration);
|
||||
WebServer_on(PSTR("/" WEB_HANDLE_DOMOTICZ), HandleDomoticzConfiguration);
|
||||
break;
|
||||
#endif // USE_WEBSERVER
|
||||
case FUNC_MQTT_SUBSCRIBE:
|
||||
|
|
|
@ -928,7 +928,7 @@ bool Xdrv09(uint8_t function)
|
|||
#endif // USE_RULES
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_TIMER, HandleTimerConfiguration);
|
||||
WebServer_on(PSTR("/" WEB_HANDLE_TIMER), HandleTimerConfiguration);
|
||||
break;
|
||||
#endif // USE_TIMERS_WEB
|
||||
#endif // USE_WEBSERVER
|
||||
|
|
|
@ -1271,7 +1271,7 @@ bool Xdrv11(uint8_t function)
|
|||
WSContentSend_P(HTTP_BTN_MENU_KNX);
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/kn", HandleKNXConfiguration);
|
||||
WebServer_on(PSTR("/kn"), HandleKNXConfiguration);
|
||||
break;
|
||||
#endif // USE_KNX_WEB_MENU
|
||||
#endif // USE_WEBSERVER
|
||||
|
|
|
@ -897,7 +897,7 @@ bool Xdrv20(uint8_t function)
|
|||
#endif
|
||||
switch (function) {
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on(F("/description.xml"), HandleUpnpSetupHue);
|
||||
WebServer_on(PSTR("/description.xml"), HandleUpnpSetupHue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -353,10 +353,10 @@ bool Xdrv21(uint8_t function)
|
|||
if (devices_present && (EMUL_WEMO == Settings.flag2.emulation)) {
|
||||
switch (function) {
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on(F("/upnp/control/basicevent1"), HTTP_POST, HandleUpnpEvent);
|
||||
Webserver->on(F("/eventservice.xml"), HandleUpnpService);
|
||||
Webserver->on(F("/metainfoservice.xml"), HandleUpnpMetaService);
|
||||
Webserver->on(F("/setup.xml"), HandleUpnpSetupWemo);
|
||||
WebServer_on(PSTR("/upnp/control/basicevent1"), HandleUpnpEvent, HTTP_POST);
|
||||
WebServer_on(PSTR("/eventservice.xml"), HandleUpnpService);
|
||||
WebServer_on(PSTR("/metainfoservice.xml"), HandleUpnpMetaService);
|
||||
WebServer_on(PSTR("/setup.xml"), HandleUpnpSetupWemo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1848,7 +1848,7 @@ bool Xdrv23(uint8_t function)
|
|||
#ifdef USE_ZIGBEE_EZSP
|
||||
// GUI xmodem
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_ZIGBEE_XFER, HandleZigbeeXfer);
|
||||
WebServer_on(PSTR("/" WEB_HANDLE_ZIGBEE_XFER), HandleZigbeeXfer);
|
||||
break;
|
||||
#endif // USE_ZIGBEE_EZSP
|
||||
#endif // USE_WEBSERVER
|
||||
|
|
|
@ -248,7 +248,7 @@ bool Xdrv28(uint8_t function)
|
|||
WSContentSend_P(HTTP_BTN_MENU_PCF8574);
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_PCF8574, HandlePcf8574);
|
||||
WebServer_on(PSTR("/" WEB_HANDLE_PCF8574), HandlePcf8574);
|
||||
break;
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
|
|
|
@ -611,7 +611,7 @@ bool Xdrv43(uint8_t function)
|
|||
WSContentSend_P(HTTP_BTN_MENU_MLX90640);
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/mlx", MLX90640HandleWebGui);
|
||||
WebServer_on(PSTR("/mlx"), MLX90640HandleWebGui);
|
||||
break;
|
||||
#endif // USE_WEBSERVER
|
||||
case FUNC_COMMAND:
|
||||
|
|
|
@ -814,10 +814,10 @@ uint32_t WcSetStreamserver(uint32_t flag) {
|
|||
if (flag) {
|
||||
if (!CamServer) {
|
||||
CamServer = new ESP8266WebServer(81);
|
||||
CamServer->on("/", HandleWebcamRoot);
|
||||
CamServer->on("/cam.mjpeg", HandleWebcamMjpeg);
|
||||
CamServer->on("/cam.jpg", HandleWebcamMjpeg);
|
||||
CamServer->on("/stream", HandleWebcamMjpeg);
|
||||
WebServer_on(PSTR("/"), HandleWebcamRoot);
|
||||
WebServer_on(PSTR("/cam.mjpeg"), HandleWebcamMjpeg);
|
||||
WebServer_on(PSTR("/cam.jpg"), HandleWebcamMjpeg);
|
||||
WebServer_on(PSTR("/stream"), HandleWebcamMjpeg);
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Stream init"));
|
||||
CamServer->begin();
|
||||
}
|
||||
|
@ -896,9 +896,9 @@ void WcLoop(void) {
|
|||
}
|
||||
|
||||
void WcPicSetup(void) {
|
||||
Webserver->on("/wc.jpg", HandleImage);
|
||||
Webserver->on("/wc.mjpeg", HandleImage);
|
||||
Webserver->on("/snapshot.jpg", HandleImageBasic);
|
||||
WebServer_on(PSTR("/wc.jpg"), HandleImage);
|
||||
WebServer_on(PSTR("/wc.mjpeg"), HandleImage);
|
||||
WebServer_on(PSTR("/snapshot.jpg"), HandleImage);
|
||||
}
|
||||
|
||||
void WcShowStream(void) {
|
||||
|
|
|
@ -593,7 +593,7 @@ bool Xsns34(uint8_t function)
|
|||
WSContentSend_P(HTTP_BTN_MENU_HX711);
|
||||
break;
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_HX711, HandleHxAction);
|
||||
WebServer_on(PSTR("/" WEB_HANDLE_HX711), HandleHxAction);
|
||||
break;
|
||||
#endif // USE_HX711_GUI
|
||||
#endif // USE_WEBSERVER
|
||||
|
|
|
@ -912,7 +912,7 @@ bool Xsns60(uint8_t function)
|
|||
break;
|
||||
#ifdef USE_FLOG
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/UBX", UBXsendFile);
|
||||
WebServer_on(PSTR("/UBX"), UBXsendFile);
|
||||
break;
|
||||
#endif //USE_FLOG
|
||||
case FUNC_JSON_APPEND:
|
||||
|
|
|
@ -102,7 +102,7 @@ bool Xsns75(uint8_t function)
|
|||
|
||||
switch (function) {
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/metrics", HandleMetrics);
|
||||
WebServer_on(PSTR("/metrics"), HandleMetrics);
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
|
|
Loading…
Reference in New Issue