diff --git a/src/displays/menus/wifisettingsmenu.h b/src/displays/menus/wifisettingsmenu.h index 717c0b1..3ad3ccd 100644 --- a/src/displays/menus/wifisettingsmenu.h +++ b/src/displays/menus/wifisettingsmenu.h @@ -1,12 +1,16 @@ #pragma once +#include "changevaluedisplay.h" #include "menudisplay.h" #include "staticmenudefinition.h" #include "utils.h" #include "actions/switchscreenaction.h" +#include "actions/toggleboolaction.h" +#include "checkboxicon.h" #include "icons/scan.h" #include "icons/back.h" #include "texts.h" +#include "settingsaccessors.h" namespace { class GenericWifiSettingsMenu; @@ -17,11 +21,23 @@ class SettingsMenu; } namespace { +class WifiSettingsMenu; + +using AutoWifiModeChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + AutoWifiModeAccessor, + BackActionInterface>, + SwitchScreenAction +>; + class WifiSettingsMenu : public MenuDisplay, public StaticText, public BackActionInterface>, public StaticMenuDefinition< + makeComponent, SwitchScreenAction>, + makeComponent, ToggleBoolAction, CheckboxIcon, AutoEnableApAccessor>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::scan>>, diff --git a/src/main.cpp b/src/main.cpp index b1e59c1..3b56f55 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -90,10 +90,11 @@ void setup() if (!WiFi.softAPsetHostname(deviceName)) Serial.println("Could not softAPsetHostname"); - if (!WiFi.mode(WIFI_AP_STA)) + if (!WiFi.mode(settings.wifiSettings.autoWifiMode)) Serial.println("Could not set mode to WIFI_AP_STA"); - WifiSoftApAction{}.triggered(); + if (settings.wifiSettings.autoEnableAp) + WifiSoftApAction{}.triggered(); if (!WiFi.begin("realraum", "r3alraum")) Serial.println("Could not begin WiFi"); diff --git a/src/screens.h b/src/screens.h index 914f642..2f01cea 100644 --- a/src/screens.h +++ b/src/screens.h @@ -122,6 +122,8 @@ union X { UpdateDisplay updateDisplay; #endif + AutoWifiModeChangeDisplay autoWifiModeChangeDisplay; + AutoBluetoothModeChangeDisplay autoBluetoothModeChangeDisplay; FrontFreqChangeScreen changeFrontFreq; @@ -265,6 +267,8 @@ template<> decltype(displays.statusDisplay) & template<> decltype(displays.updateDisplay) &getRefByType() { return displays.updateDisplay; } #endif +template<> decltype(displays.autoWifiModeChangeDisplay) &getRefByType() { return displays.autoWifiModeChangeDisplay; } + template<> decltype(displays.autoBluetoothModeChangeDisplay) &getRefByType() { return displays.autoBluetoothModeChangeDisplay; } template<> decltype(displays.changeFrontFreq) &getRefByType() { return displays.changeFrontFreq; } diff --git a/src/texts.h b/src/texts.h index f185c96..5858ce7 100644 --- a/src/texts.h +++ b/src/texts.h @@ -92,6 +92,8 @@ constexpr char TEXT_SWAPFRONTBACK[] = "Swap front/back"; //StationWifiSettingsMenu constexpr char TEXT_STATIONWIFISETTINGS[] = "Station WiFi settings"; +constexpr char TEXT_AUTOWIFIMODE[] = "Auto wifi mode"; +constexpr char TEXT_AUTOENABLEAP[] = "Auto enable AP"; constexpr char TEXT_WIFIRECONNECT[] = "reconnect()"; constexpr char TEXT_WIFIDISCONNECT[] = "disconnect()"; constexpr char TEXT_WIFICHANGEAUTOCONNECT[] = "Change auto connect";