mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 13:16:45 +00:00
Add gpio settings
This commit is contained in:
parent
2936147e50
commit
9ff231532c
@ -55,7 +55,8 @@ void dispatchOutput(int output, bool state)
|
|||||||
#elif defined(STM32F4xx)
|
#elif defined(STM32F4xx)
|
||||||
digitalWrite(HASP_OUTPUT_PIN, state);
|
digitalWrite(HASP_OUTPUT_PIN, state);
|
||||||
#else
|
#else
|
||||||
analogWrite(pin, state ? 1023 : 0);
|
digitalWrite(D1, state);
|
||||||
|
// analogWrite(pin, state ? 1023 : 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,10 +87,10 @@ void gpioAddButton(uint8_t pin, uint8_t input_mode, uint8_t default_state, uint8
|
|||||||
ButtonConfig * buttonConfig = button[i]->getButtonConfig();
|
ButtonConfig * buttonConfig = button[i]->getButtonConfig();
|
||||||
buttonConfig->setEventHandler(gpio_event_cb);
|
buttonConfig->setEventHandler(gpio_event_cb);
|
||||||
buttonConfig->setFeature(ButtonConfig::kFeatureClick);
|
buttonConfig->setFeature(ButtonConfig::kFeatureClick);
|
||||||
buttonConfig->setFeature(ButtonConfig::kFeatureDoubleClick);
|
buttonConfig->clearFeature(ButtonConfig::kFeatureDoubleClick);
|
||||||
buttonConfig->setFeature(ButtonConfig::kFeatureLongPress);
|
buttonConfig->setFeature(ButtonConfig::kFeatureLongPress);
|
||||||
buttonConfig->setFeature(ButtonConfig::kFeatureRepeatPress);
|
buttonConfig->clearFeature(ButtonConfig::kFeatureRepeatPress);
|
||||||
buttonConfig->setFeature(ButtonConfig::kFeatureSuppressClickBeforeDoubleClick);
|
buttonConfig->clearFeature(ButtonConfig::kFeatureSuppressClickBeforeDoubleClick); // Causes annoying pauses
|
||||||
|
|
||||||
Log.verbose(F("GPIO: Button%d created on pin %d (channel %d) mode %d default %d"), i, pin, channel, input_mode,default_state);
|
Log.verbose(F("GPIO: Button%d created on pin %d (channel %d) mode %d default %d"), i, pin, channel, input_mode,default_state);
|
||||||
gpioUsedInputCount = i + 1;
|
gpioUsedInputCount = i + 1;
|
||||||
@ -107,7 +107,10 @@ void gpioSetup()
|
|||||||
aceButtonSetup();
|
aceButtonSetup();
|
||||||
|
|
||||||
//gpioConfig[0] = PD15 * 256 + 5 + (INPUT << 3);
|
//gpioConfig[0] = PD15 * 256 + 5 + (INPUT << 3);
|
||||||
gpioAddButton(D1, INPUT_PULLUP, HIGH, 1);
|
#if defined(ARDUINO_ARCH_ESP8266)
|
||||||
|
gpioAddButton(D2, INPUT_PULLUP, HIGH, 1);
|
||||||
|
pinMode(D1, OUTPUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
for(uint8_t i = 0; i < HASP_NUM_GPIO_CONFIG; i++) {
|
for(uint8_t i = 0; i < HASP_NUM_GPIO_CONFIG; i++) {
|
||||||
uint8_t pin = (gpioConfig[i] >> 8) & 0xFF;
|
uint8_t pin = (gpioConfig[i] >> 8) & 0xFF;
|
||||||
|
@ -1278,6 +1278,11 @@ void webHandleConfig()
|
|||||||
httpMessage +=
|
httpMessage +=
|
||||||
F("<p><form method='get' action='/config/hasp'><button type='submit'>HASP Settings</button></form></p>");
|
F("<p><form method='get' action='/config/hasp'><button type='submit'>HASP Settings</button></form></p>");
|
||||||
|
|
||||||
|
#if HASP_USE_GPIO > 0
|
||||||
|
httpMessage +=
|
||||||
|
F("<p><form method='get' action='/config/gpio'><button type='submit'>GPIO Settings</button></form></p>");
|
||||||
|
#endif
|
||||||
|
|
||||||
httpMessage +=
|
httpMessage +=
|
||||||
F("<p><form method='get' action='/config/debug'><button type='submit'>Debug Settings</button></form></p>");
|
F("<p><form method='get' action='/config/debug'><button type='submit'>Debug Settings</button></form></p>");
|
||||||
|
|
||||||
@ -1489,9 +1494,69 @@ void webHandleHttpConfig()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
void webHandleGpioConfig()
|
||||||
|
{ // http://plate01/config/gpio
|
||||||
|
if(!httpIsAuthenticated(F("config/gpio"))) return;
|
||||||
|
|
||||||
|
DynamicJsonDocument settings(256);
|
||||||
|
debugGetConfig(settings.to<JsonObject>());
|
||||||
|
|
||||||
|
String httpMessage((char *)0);
|
||||||
|
httpMessage.reserve(HTTP_PAGE_SIZE);
|
||||||
|
httpMessage += F("<h1>");
|
||||||
|
httpMessage += httpGetNodename();
|
||||||
|
httpMessage += F("</h1><hr>");
|
||||||
|
|
||||||
|
httpMessage += F("<form method='POST' action='/config'>");
|
||||||
|
|
||||||
|
uint16_t baudrate = settings[FPSTR(F_CONFIG_BAUD)].as<uint16_t>();
|
||||||
|
httpMessage += F("<p><b>Serial Port</b> <select id='baud' name='baud'>");
|
||||||
|
httpMessage += getOption(1, F("Disabled"), baudrate == 1); // Don't use 0 here which is default 115200
|
||||||
|
httpMessage += getOption(960, F("9600"), baudrate == 960);
|
||||||
|
httpMessage += getOption(1920, F("19200"), baudrate == 1920);
|
||||||
|
httpMessage += getOption(3840, F("38400"), baudrate == 3840);
|
||||||
|
httpMessage += getOption(5760, F("57600"), baudrate == 5760);
|
||||||
|
httpMessage += getOption(7488, F("74880"), baudrate == 7488);
|
||||||
|
httpMessage += getOption(11520, F("115200"), baudrate == 11520);
|
||||||
|
httpMessage += F("</select></p><p><b>Telemetry Period</b> <i><small>(Seconds, 0=disable)</small></i> "
|
||||||
|
"<input id='teleperiod' required name='teleperiod' type='number' min='0' max='65535' value='");
|
||||||
|
httpMessage += settings[FPSTR(F_DEBUG_TELEPERIOD)].as<String>();
|
||||||
|
httpMessage += F("'></p>");
|
||||||
|
|
||||||
|
httpMessage += F("<b>Syslog Hostame</b> <i><small>(optional)</small></i><input id='host' "
|
||||||
|
"name='host' maxlength=31 placeholder='logserver' value='");
|
||||||
|
httpMessage += settings[FPSTR(F_CONFIG_HOST)].as<String>();
|
||||||
|
httpMessage += F("'><br/><b>Syslog Port</b> <i><small>(optional)</small></i> <input id='port' required "
|
||||||
|
"name='port' type='number' min='0' max='65535' value='");
|
||||||
|
httpMessage += settings[FPSTR(F_CONFIG_PORT)].as<String>();
|
||||||
|
|
||||||
|
httpMessage += F("'><b>Syslog Facility</b> <select id='log' name='log'>");
|
||||||
|
uint8_t logid = settings[FPSTR(F_CONFIG_LOG)].as<uint8_t>();
|
||||||
|
for(uint8_t i = 0; i < 8; i++) {
|
||||||
|
httpMessage += getOption(i, String(F("Local")) + i, i == logid);
|
||||||
|
}
|
||||||
|
|
||||||
|
httpMessage += F("</select></br><b>Syslog Protocol</b> <input id='proto' name='proto' type='radio' value='0'");
|
||||||
|
if(settings[FPSTR(F_CONFIG_PROTOCOL)].as<uint8_t>() == 0) httpMessage += F(" checked");
|
||||||
|
httpMessage += F(">IETF (RFC 5424) <input id='proto' name='proto' type='radio' value='1'");
|
||||||
|
if(settings[FPSTR(F_CONFIG_PROTOCOL)].as<uint8_t>() == 1) httpMessage += F(" checked");
|
||||||
|
httpMessage += F(">BSD (RFC 3164)");
|
||||||
|
|
||||||
|
httpMessage += F("</p><p><button type='submit' name='save' value='debug'>Save Settings</button></p></form>");
|
||||||
|
|
||||||
|
httpMessage +=
|
||||||
|
PSTR("<p><form method='get' action='/config'><button type='submit'>Configuration</button></form></p>");
|
||||||
|
|
||||||
|
webSendPage(httpGetNodename(), httpMessage.length(), false);
|
||||||
|
webServer.sendContent(httpMessage);
|
||||||
|
httpMessage.clear();
|
||||||
|
webSendFooter();
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
void webHandleDebugConfig()
|
void webHandleDebugConfig()
|
||||||
{ // http://plate01/config/http
|
{ // http://plate01/config/debug
|
||||||
if(!httpIsAuthenticated(F("config/debug"))) return;
|
if(!httpIsAuthenticated(F("config/debug"))) return;
|
||||||
|
|
||||||
DynamicJsonDocument settings(256);
|
DynamicJsonDocument settings(256);
|
||||||
@ -1851,6 +1916,9 @@ void httpSetup()
|
|||||||
#endif
|
#endif
|
||||||
#if HASP_USE_WIFI > 0
|
#if HASP_USE_WIFI > 0
|
||||||
webServer.on(F("/config/wifi"), webHandleWifiConfig);
|
webServer.on(F("/config/wifi"), webHandleWifiConfig);
|
||||||
|
#endif
|
||||||
|
#if HASP_USE_GPIO > 0
|
||||||
|
webServer.on(F("/config/gpio"), webHandleGpioConfig);
|
||||||
#endif
|
#endif
|
||||||
webServer.on(F("/screenshot"), webHandleScreenshot);
|
webServer.on(F("/screenshot"), webHandleScreenshot);
|
||||||
webServer.on(F("/saveConfig"), webHandleSaveConfig);
|
webServer.on(F("/saveConfig"), webHandleSaveConfig);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user