Files
ESPEasy/src/StringProvider.ino
T
TD-er af480396c4 [Webserver] Reduce flash strings in build via String Provider class
This will allow to reduce code duplication, reduce strings used in binary and makes code better readable.

This is a project which may take some time to cover all code.
2019-03-13 17:25:39 +01:00

186 lines
10 KiB
Arduino

#include <StringProviderTypes.h>
String getInternalLabel(LabelType::Enum label) {
return to_internal_string(getLabel(label));
}
String getLabel(LabelType::Enum label) {
switch (label)
{
case LabelType::UNIT_NR: return F("Unit Number");
case LabelType::UNIT_NAME: return F("Unit Name");
case LabelType::HOST_NAME: return F("Hostname");
case LabelType::LOCAL_TIME: return F("Local Time");
case LabelType::UPTIME: return F("Uptime");
case LabelType::LOAD_PCT: return F("Load");
case LabelType::LOOP_COUNT: return F("Load LC");
case LabelType::CPU_ECO_MODE: return F("CPU Eco Mode");
case LabelType::FREE_MEM: return F("Free RAM");
case LabelType::FREE_STACK: return F("Free Stack");
#ifdef CORE_POST_2_5_0
case LabelType::HEAP_MAX_FREE_BLOCK: return F("Heap Max Free Block");
case LabelType::HEAP_FRAGMENTATION: return F("Heap Fragmentation");
#endif
case LabelType::BOOT_TYPE: return F("Last Boot Cause");
case LabelType::BOOT_COUNT: return F("Boot Count");
case LabelType::RESET_REASON: return F("Reset Reason");
case LabelType::WIFI_CONNECTION: return F("WiFi Connection");
case LabelType::WIFI_RSSI: return F("RSSI");
case LabelType::IP_CONFIG: return F("IP Config");
case LabelType::IP_CONFIG_STATIC: return F("Static");
case LabelType::IP_CONFIG_DYNAMIC: return F("DHCP");
case LabelType::IP_ADDRESS: return F("IP Address");
case LabelType::IP_SUBNET: return F("IP Subnet");
case LabelType::IP_ADDRESS_SUBNET: return F("IP / Subnet");
case LabelType::GATEWAY: return F("Gateway");
case LabelType::CLIENT_IP: return F("Client IP");
case LabelType::DNS: return F("DNS");
case LabelType::DNS_1: return F("DNS 1");
case LabelType::DNS_2: return F("DNS 2");
case LabelType::ALLOWED_IP_RANGE: return F("Allowed IP Range");
case LabelType::STA_MAC: return F("STA MAC");
case LabelType::AP_MAC: return F("AP MAC");
case LabelType::SSID: return F("SSID");
case LabelType::BSSID: return F("BSSID");
case LabelType::CHANNEL: return F("Channel");
case LabelType::CONNECTED: return F("Connected");
case LabelType::CONNECTED_MSEC: return F("Connected msec");
case LabelType::LAST_DISCONNECT_REASON: return F("Last Disconnect Reason");
case LabelType::LAST_DISC_REASON_STR: return F("Last Disconnect Reason str");
case LabelType::NUMBER_RECONNECTS: return F("Number Reconnects");
case LabelType::FORCE_WIFI_BG: return F("Force WiFi B/G");
case LabelType::RESTART_WIFI_LOST_CONN: return F("Restart WiFi Lost Conn");
case LabelType::FORCE_WIFI_NOSLEEP: return F("Force WiFi No Sleep");
case LabelType::PERIODICAL_GRAT_ARP: return F("Periodical send Gratuitous ARP");
case LabelType::CONNECTION_FAIL_THRESH: return F("Connection Failure Threshold");
case LabelType::BUILD_DESC: return F("Build");
case LabelType::GIT_BUILD: return F("Git Build");
case LabelType::SYSTEM_LIBRARIES: return F("System Libraries");
case LabelType::PLUGINS: return F("Plugins");
case LabelType::PLUGIN_DESCRIPTION: return F("Plugin description");
case LabelType::BUILD_TIME: return F("Build Time");
case LabelType::BINARY_FILENAME: return F("Binary Filename");
case LabelType::SYSLOG_LOG_LEVEL: return F("Syslog Log Level");
case LabelType::SERIAL_LOG_LEVEL: return F("Serial Log Level");
case LabelType::WEB_LOG_LEVEL: return F("Web Log Level");
#ifdef FEATURE_SD
case LabelType::SD_LOG_LEVEL: return F("SD Log Level");
#endif
case LabelType::ESP_CHIP_ID: return F("ESP Chip ID");
case LabelType::ESP_CHIP_FREQ: return F("ESP Chip Frequency");
case LabelType::ESP_BOARD_NAME: return F("ESP Board Name");
case LabelType::FLASH_CHIP_ID: return F("Flash Chip ID");
case LabelType::FLASH_CHIP_REAL_SIZE: return F("Flash Chip Real Size");
case LabelType::FLASH_IDE_SIZE: return F("Flash IDE Size");
case LabelType::FLASH_IDE_SPEED: return F("Flash IDE Speed");
case LabelType::FLASH_IDE_MODE: return F("Flash IDE Mode");
case LabelType::FLASH_WRITE_COUNT: return F("Flash Writes");
case LabelType::SKETCH_SIZE: return F("Sketch Size");
case LabelType::SKETCH_FREE: return F("Sketch Free");
case LabelType::SPIFFS_SIZE: return F("SPIFFS Size");
case LabelType::SPIFFS_FREE: return F("SPIFFS Free");
}
return F("MissingString");
}
String getValue(LabelType::Enum label) {
switch (label)
{
case LabelType::UNIT_NR: return String(Settings.Unit);
case LabelType::UNIT_NAME: return String(Settings.Name);
case LabelType::HOST_NAME: return WiFi.hostname();
case LabelType::LOCAL_TIME: return getDateTimeString('-',':',' ');
case LabelType::UPTIME: return String(wdcounter / 2);
case LabelType::LOAD_PCT: return String(getCPUload());
case LabelType::LOOP_COUNT: return String(getLoopCountPerSec());
case LabelType::CPU_ECO_MODE: return jsonBool(Settings.EcoPowerMode());
case LabelType::FREE_MEM: return String(ESP.getFreeHeap());
case LabelType::FREE_STACK: break;
#ifdef CORE_POST_2_5_0
case LabelType::HEAP_MAX_FREE_BLOCK: return String(ESP.getMaxFreeBlockSize());
case LabelType::HEAP_FRAGMENTATION: return String(ESP.getHeapFragmentation());
#endif
case LabelType::BOOT_TYPE: return getLastBootCauseString();
case LabelType::BOOT_COUNT: break;
case LabelType::RESET_REASON: return getResetReasonString();
case LabelType::WIFI_CONNECTION: break;
case LabelType::WIFI_RSSI: return String(WiFi.RSSI());
case LabelType::IP_CONFIG: return useStaticIP() ? getLabel(LabelType::IP_CONFIG_STATIC) : getLabel(LabelType::IP_CONFIG_DYNAMIC);
case LabelType::IP_CONFIG_STATIC: break;
case LabelType::IP_CONFIG_DYNAMIC: break;
case LabelType::IP_ADDRESS: return WiFi.localIP().toString();
case LabelType::IP_SUBNET: return WiFi.subnetMask().toString();
case LabelType::IP_ADDRESS_SUBNET: return String(getValue(LabelType::IP_ADDRESS) + F(" / ") + getValue(LabelType::IP_SUBNET));
case LabelType::GATEWAY: return WiFi.gatewayIP().toString();
case LabelType::CLIENT_IP: return formatIP(WebServer.client().remoteIP());
case LabelType::DNS: return String(getValue(LabelType::DNS_1) + F(" / ") + getValue(LabelType::DNS_2));
case LabelType::DNS_1: return WiFi.dnsIP(0).toString();
case LabelType::DNS_2: return WiFi.dnsIP(1).toString();
case LabelType::ALLOWED_IP_RANGE: return describeAllowedIPrange();
case LabelType::STA_MAC: return WiFi.macAddress();
case LabelType::AP_MAC: break;
case LabelType::SSID: return WiFi.SSID();
case LabelType::BSSID: return WiFi.BSSIDstr();
case LabelType::CHANNEL: return String(WiFi.channel());
case LabelType::CONNECTED: return format_msec_duration(timeDiff(lastConnectMoment, millis()));
case LabelType::CONNECTED_MSEC: return String(timeDiff(lastConnectMoment, millis()));
case LabelType::LAST_DISCONNECT_REASON: return String(lastDisconnectReason);
case LabelType::LAST_DISC_REASON_STR: return getLastDisconnectReason();
case LabelType::NUMBER_RECONNECTS: return String(wifi_reconnects);
case LabelType::FORCE_WIFI_BG: return jsonBool(Settings.ForceWiFi_bg_mode());
case LabelType::RESTART_WIFI_LOST_CONN: return jsonBool(Settings.WiFiRestart_connection_lost());
case LabelType::FORCE_WIFI_NOSLEEP: return jsonBool(Settings.WifiNoneSleep());
case LabelType::PERIODICAL_GRAT_ARP: return jsonBool(Settings.gratuitousARP());
case LabelType::CONNECTION_FAIL_THRESH: return String(Settings.ConnectionFailuresThreshold);
case LabelType::BUILD_DESC: return String(BUILD);
case LabelType::GIT_BUILD: return String(F(BUILD_GIT));
case LabelType::SYSTEM_LIBRARIES: return getSystemLibraryString();
case LabelType::PLUGINS: return String(deviceCount + 1);
case LabelType::PLUGIN_DESCRIPTION: return getPluginDescriptionString();
case LabelType::BUILD_TIME: break;
case LabelType::BINARY_FILENAME: break;
case LabelType::SYSLOG_LOG_LEVEL: return getLogLevelDisplayString(Settings.SyslogLevel);
case LabelType::SERIAL_LOG_LEVEL: return getLogLevelDisplayString(getSerialLogLevel());
case LabelType::WEB_LOG_LEVEL: return getLogLevelDisplayString(getWebLogLevel());
#ifdef FEATURE_SD
case LabelType::SD_LOG_LEVEL: return getLogLevelDisplayString(Settings.SDLogLevel);
#endif
case LabelType::ESP_CHIP_ID: break;
case LabelType::ESP_CHIP_FREQ: break;
case LabelType::ESP_BOARD_NAME: break;
case LabelType::FLASH_CHIP_ID: break;
case LabelType::FLASH_CHIP_REAL_SIZE: break;
case LabelType::FLASH_IDE_SIZE: break;
case LabelType::FLASH_IDE_SPEED: break;
case LabelType::FLASH_IDE_MODE: break;
case LabelType::FLASH_WRITE_COUNT: break;
case LabelType::SKETCH_SIZE: break;
case LabelType::SKETCH_FREE: break;
case LabelType::SPIFFS_SIZE: break;
case LabelType::SPIFFS_FREE: break;
}
return F("MissingString");
}