diff --git a/src/sys/svc/hasp_http.cpp b/src/sys/svc/hasp_http.cpp index 64139f74..466c4f4b 100644 --- a/src/sys/svc/hasp_http.cpp +++ b/src/sys/svc/hasp_http.cpp @@ -1516,15 +1516,16 @@ void webHandleGpioConfig() if(webServer.hasArg(PSTR("save"))) { uint8_t id = webServer.arg(F("id")).toInt(); uint8_t pin = webServer.arg(F("pin")).toInt(); - uint8_t type = webServer.arg(F("type")).toInt() + webServer.arg(F("state")).toInt(); + uint8_t type = webServer.arg(F("type")).toInt(); uint8_t group = webServer.arg(F("group")).toInt(); uint8_t pinfunc = webServer.arg(F("func")).toInt(); - gpioSavePinConfig(id, pin, type, group, pinfunc); + bool inverted = webServer.arg(F("state")).toInt(); + gpioSavePinConfig(id, pin, type, group, pinfunc, inverted); } if(webServer.hasArg(PSTR("del"))) { uint8_t id = webServer.arg(F("id")).toInt(); uint8_t pin = webServer.arg(F("pin")).toInt(); - gpioSavePinConfig(id, pin, HASP_GPIO_FREE, 0, 0); + gpioSavePinConfig(id, pin, hasp_gpio_type_t::FREE, 0, 0, false); } { @@ -1546,54 +1547,72 @@ void webHandleGpioConfig() httpMessage += F(""); // httpMessage += halGpioName(gpio); httpMessage += haspDevice.gpio_name(gpio).c_str(); - httpMessage += F(""); + if(conf.type >= 0x80) { + httpMessage += F(""); switch(conf.type) { - case HASP_GPIO_SWITCH: + case hasp_gpio_type_t::SWITCH: httpMessage += F(D_GPIO_SWITCH); break; - case HASP_GPIO_BUTTON: + case hasp_gpio_type_t::BUTTON: httpMessage += F(D_GPIO_BUTTON); break; - case HASP_GPIO_TOUCH: + case hasp_gpio_type_t::TOUCH: httpMessage += F(D_GPIO_TOUCH); break; - case HASP_GPIO_LED: + case hasp_gpio_type_t::LED: httpMessage += F(D_GPIO_LED); break; - case HASP_GPIO_LED_R: + case hasp_gpio_type_t::LED_R: httpMessage += F(D_GPIO_LED_R); break; - case HASP_GPIO_LED_G: + case hasp_gpio_type_t::LED_G: httpMessage += F(D_GPIO_LED_G); break; - case HASP_GPIO_LED_B: + case hasp_gpio_type_t::LED_B: httpMessage += F(D_GPIO_LED_B); break; - case HASP_GPIO_RELAY: + case hasp_gpio_type_t::LIGHT_RELAY: + httpMessage += F("LIGHT_RELAY"); + break; + case hasp_gpio_type_t::POWER_RELAY: httpMessage += F(D_GPIO_RELAY); break; - case HASP_GPIO_PWM: + case hasp_gpio_type_t::SHUTTER_RELAY: + httpMessage += F("SHUTTER_RELAY"); + break; + case hasp_gpio_type_t::PWM: httpMessage += F(D_GPIO_PWM); break; - case HASP_GPIO_DAC: + case hasp_gpio_type_t::DAC: httpMessage += F(D_GPIO_DAC); break; - case HASP_GPIO_SERIAL_DIMMER: + case hasp_gpio_type_t::SERIAL_DIMMER: httpMessage += F(D_GPIO_SERIAL_DIMMER); break; +#if defined(LANBONL8) + case hasp_gpio_type_t::SERIAL_DIMMER_EU: + httpMessage += F("L8-HD (EU)"); + break; + case hasp_gpio_type_t::SERIAL_DIMMER_AU: + httpMessage += F("L8-HD (AU)"); + break; +#endif default: httpMessage += F(D_GPIO_UNKNOWN); } - httpMessage += F(""); + httpMessage += F(""); httpMessage += conf.group; httpMessage += F(""); httpMessage += (conf.inverted) ? F("Inverted") : F("Normal"); - httpMessage += F("Edit Type

"); @@ -1710,7 +1734,7 @@ void webHandleGpioOptions() } httpMessage += F("

"); - httpMessage += F("

Default State "); httpMessage += getOption(0, F("Normal"), !conf.inverted); httpMessage += getOption(1, F("Inverted"), conf.inverted); httpMessage += F("

"); @@ -1728,6 +1752,134 @@ void webHandleGpioOptions() // if(webServer.hasArg(F("action"))) dispatch_text_line(webServer.arg(F("action")).c_str()); // Security check } + +//////////////////////////////////////////////////////////////////////////////////////////////////// +void webHandleGpioInput() +{ // http://plate01/config/gpio/options + if(!httpIsAuthenticated(F("config/gpio/input"))) return; + { + StaticJsonDocument<256> settings; + guiGetConfig(settings.to()); + + uint8_t config_id = webServer.arg(F("id")).toInt(); + + String httpMessage((char*)0); + httpMessage.reserve(HTTP_PAGE_SIZE); + httpMessage += F("

"); + httpMessage += haspDevice.get_hostname(); + httpMessage += F("


"); + + httpMessage += F("
"); + httpMessage += F(""); + + httpMessage += F("

GPIO Options"); + httpMessage += config_id; + httpMessage += F(" Options

"); + + httpMessage += F("

" D_GPIO_PIN "

"); + + bool selected; + httpMessage += F("

Type

"); + + httpMessage += F("

" D_GPIO_GROUP "

"); + + httpMessage += F("

Default State

"); + + httpMessage += F("

Resistor

"); + + httpMessage += + F("

"); + + httpMessage += PSTR("

"); + + webSendPage(haspDevice.get_hostname(), httpMessage.length(), false); + webServer.sendContent(httpMessage); + } + webSendFooter(); + + // if(webServer.hasArg(F("action"))) dispatch_text_line(webServer.arg(F("action")).c_str()); // Security check +} #endif // HASP_USE_GPIO //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -2184,6 +2336,7 @@ void httpSetup() #if HASP_USE_GPIO > 0 webServer.on(F("/config/gpio"), webHandleGpioConfig); webServer.on(F("/config/gpio/options"), webHandleGpioOptions); + webServer.on(F("/config/gpio/input"), webHandleGpioInput); #endif webServer.on(F("/saveConfig"), webHandleSaveConfig); webServer.on(F("/resetConfig"), httpHandleResetConfig); @@ -2223,7 +2376,8 @@ void httpReconnect() //////////////////////////////////////////////////////////////////////////////////////////////////// IRAM_ATTR void httpLoop(void) { - if(http_config.enable) webServer.handleClient(); + // if(http_config.enable) + webServer.handleClient(); } ////////////////////////////////////////////////////////////////////////////////////////////////////