diff --git a/main/ble_bobby.cpp b/main/ble_bobby.cpp index 3e9ebd3..cd4f452 100644 --- a/main/ble_bobby.cpp +++ b/main/ble_bobby.cpp @@ -283,7 +283,6 @@ void WirelessSettingsCallbacks::onWrite(NimBLECharacteristic* pCharacteristic) ESP_LOGI(TAG, "[ble_config]: Set wifi%i: WiFi-SSID: %s, WiFi-Password: ***", doc["wifi_index"].as(), doc["wifi_ssid"].as()); configs.write_config(configs.wifi_configs[index].ssid, doc["wifi_ssid"].as()); configs.write_config(configs.wifi_configs[index].key, doc["wifi_pass"].as()); - saveSettings(); } else { const auto deserialized = deserializeJson(doc, val); ESP_LOGW(TAG, "Unkown type %s -> json: %.*s %s", doc["type"].as(), val.size(), val.data(), deserialized.c_str()); diff --git a/main/displays/menus/garagenmenu.cpp b/main/displays/menus/garagenmenu.cpp index 3c4a32a..23d2719 100644 --- a/main/displays/menus/garagenmenu.cpp +++ b/main/displays/menus/garagenmenu.cpp @@ -13,13 +13,13 @@ using namespace espgui; GarageMenu::GarageMenu() { - for (uint8_t index = 0; index < stringSettings.wirelessDoors.size(); index++) + for (uint8_t index = 0; index < configs.wireless_door_configs.size(); index++) { - const auto &wirelessDoor = stringSettings.wirelessDoors[index]; - if (wirelessDoor.doorId.empty() || wirelessDoor.doorToken.empty()) + const auto &wirelessDoor = configs.wireless_door_configs[index]; + if (wirelessDoor.doorId.value.empty() || wirelessDoor.doorToken.value.empty()) continue; auto &menuitem = constructMenuItem>(index); - menuitem.setTitle(wirelessDoor.doorId); + menuitem.setTitle(wirelessDoor.doorId.value); } constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); diff --git a/main/displays/menus/garagenmenu.h b/main/displays/menus/garagenmenu.h index 8125b12..2785da9 100644 --- a/main/displays/menus/garagenmenu.h +++ b/main/displays/menus/garagenmenu.h @@ -10,6 +10,7 @@ #include "espnowfunctions.h" #include "texts.h" #include "globals.h" +#include "newsettings.h" namespace garagenmenu { class SendEspNowMessageAction : public virtual espgui::ActionInterface @@ -18,7 +19,7 @@ public: SendEspNowMessageAction(uint8_t index) : m_index{index} {} void triggered() override { - if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:{}:{}", stringSettings.wirelessDoors[m_index].doorId, stringSettings.wirelessDoors[m_index].doorToken)); error != ESP_OK) + if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:{}:{}", configs.wireless_door_configs[m_index].doorId.value, configs.wireless_door_configs[m_index].doorToken.value)); error != ESP_OK) { ESP_LOGE("BOBBY", "send_espnow_message() failed with: %s", esp_err_to_name(error)); return; diff --git a/main/newsettings.h b/main/newsettings.h index bbca50f..2f6700a 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -49,6 +49,18 @@ public: ConfigWrapper staticDns2; }; +class WirelessDoorsConfig +{ +public: + WirelessDoorsConfig(const char *doorIdKey, const char *doorTokenKey) : + doorId {std::string{}, DoReset, StringMaxSize<24>, doorIdKey }, + doorToken {std::string{}, DoReset, StringMaxSize<24>, doorTokenKey } + {} + + ConfigWrapper doorId; + ConfigWrapper doorToken; +}; + class ConfigContainer { using mac_t = wifi_stack::mac_t; @@ -80,6 +92,14 @@ public: ConfigWrapper canBusResetOnError {false, DoReset, {}, "canBusRstErr" }; + std::array wireless_door_configs { + WirelessDoorsConfig { "door_id0", "door_token0" }, + WirelessDoorsConfig { "door_id1", "door_token1" }, + WirelessDoorsConfig { "door_id2", "door_token2" }, + WirelessDoorsConfig { "door_id3", "door_token3" }, + WirelessDoorsConfig { "door_id4", "door_token4" } + }; + ConfigWrapper bluetoothName {defaultHostname, DoReset, StringMinMaxSize<4, 32>, "bluetoothName" }; ConfigWrapper reverseBeep {false, DoReset, {}, "reverseBeep" }; @@ -204,6 +224,17 @@ public: \ x(canBusResetOnError) \ \ + x(wireless_door_configs[0].doorId) \ + x(wireless_door_configs[0].doorToken) \ + x(wireless_door_configs[1].doorId) \ + x(wireless_door_configs[1].doorToken) \ + x(wireless_door_configs[2].doorId) \ + x(wireless_door_configs[2].doorToken) \ + x(wireless_door_configs[3].doorId) \ + x(wireless_door_configs[3].doorToken) \ + x(wireless_door_configs[4].doorId) \ + x(wireless_door_configs[4].doorToken) \ + \ x(bluetoothName) \ \ x(reverseBeep) \ diff --git a/main/stringsettings.h b/main/stringsettings.h index c2ceb65..ae33d57 100644 --- a/main/stringsettings.h +++ b/main/stringsettings.h @@ -48,15 +48,6 @@ struct StringSettings std::string otaServerBranch; #endif std::string webserver_password; - -#ifdef FEATURE_ESPNOW - struct ConfiguredWirelessDoors { - std::string doorId; - std::string doorToken; - }; - - std::array wirelessDoors; -#endif }; template @@ -109,19 +100,6 @@ void StringSettings::executeForEveryCommonSetting(T &&callable) callable("dnskey", dns_key); #endif callable("webpw", webserver_password); - -#ifdef FEATURE_ESPNOW - callable("doorId0", wirelessDoors[0].doorId); - callable("doorToken0", wirelessDoors[0].doorToken); - callable("doorId1", wirelessDoors[1].doorId); - callable("doorToken1", wirelessDoors[1].doorToken); - callable("doorId2", wirelessDoors[2].doorId); - callable("doorToken2", wirelessDoors[2].doorToken); - callable("doorId3", wirelessDoors[3].doorId); - callable("doorToken3", wirelessDoors[3].doorToken); - callable("doorId4", wirelessDoors[4].doorId); - callable("doorToken4", wirelessDoors[4].doorToken); -#endif } template