#pragma once // system includes #include #include namespace { struct StringSettings { struct ConfiguredWifi { std::string ssid; std::string key; }; std::array wifis; #ifdef FEATURE_CLOUD std::string cloudUrl; #endif #ifdef FEATURE_OTA std::string otaUrl; #endif #ifdef FEATURE_GARAGE std::string garageUrl; #endif #ifdef FEATURE_NTP std::string timeServer; #endif template void executeForEveryCommonSetting(T &&callable); template void executeForEveryProfileSetting(T &&callable); }; template void StringSettings::executeForEveryCommonSetting(T &&callable) { callable("ssid0", wifis[0].ssid); callable("key0", wifis[0].key); callable("ssid1", wifis[1].ssid); callable("key1", wifis[1].key); callable("ssid2", wifis[2].ssid); callable("key2", wifis[2].key); callable("ssid3", wifis[3].ssid); callable("key3", wifis[3].key); callable("ssid4", wifis[4].ssid); callable("key4", wifis[4].key); callable("ssid5", wifis[5].ssid); callable("key5", wifis[5].key); callable("ssid6", wifis[6].ssid); callable("key6", wifis[6].key); callable("ssid7", wifis[7].ssid); callable("key7", wifis[7].key); callable("ssid8", wifis[8].ssid); callable("key8", wifis[8].key); callable("ssid9", wifis[9].ssid); callable("key9", wifis[9].key); #ifdef FEATURE_CLOUD callable("cloudUrl", cloudUrl); #endif #ifdef FEATURE_OTA callable("otaUrl", otaUrl); #endif #ifdef FEATURE_GARAGE callable("garageUrl", garageUrl); #endif #ifdef FEATURE_NTP callable("timeServer", timeServer); #endif } template void StringSettings::executeForEveryProfileSetting(T &&callable) { } }