diff --git a/esp3d/config.cpp b/esp3d/config.cpp index 3f0f3eef..2ef3c7cb 100644 --- a/esp3d/config.cpp +++ b/esp3d/config.cpp @@ -266,7 +266,7 @@ void CONFIG::print_config() if (byte(bbuf) == CLIENT_MODE) { Serial.println(F("Station")); Serial.print(F("Signal: ")); - Serial.print(100+WiFi.RSSI()); + Serial.print(wifi_config.getSignal(WiFi.RSSI())); Serial.println(F("%")); } else if (byte(bbuf)==AP_MODE) { Serial.println(F("Access Point")); diff --git a/esp3d/webinterface.cpp b/esp3d/webinterface.cpp index 4898acdb..d6be607b 100644 --- a/esp3d/webinterface.cpp +++ b/esp3d/webinterface.cpp @@ -1020,7 +1020,7 @@ void handle_web_interface_home() } //Signal strength KeysList.add(FPSTR(KEY_STA_SIGNAL)); - ValuesList.add(intTostr(100+WiFi.RSSI())); + ValuesList.add(intTostr(wifi_config.getSignal(WiFi.RSSI()))); //DHCP Client status GetDHCPStatus(KeysList, ValuesList); //IP address @@ -1955,7 +1955,7 @@ void handle_web_interface_configSTA() //signal strength stmp = "$AP_SIGNAL["+String(i)+"]$"; KeysList.add(stmp); - stmp = intTostr(100+WiFi.RSSI(i)) ; + stmp = intTostr(wifi_config.getSignal(WiFi.RSSI(i))) ; stmp += "%"; ValuesList.add(stmp); //is protected diff --git a/esp3d/wifi.cpp b/esp3d/wifi.cpp index 6c8fb276..0f8ba82f 100644 --- a/esp3d/wifi.cpp +++ b/esp3d/wifi.cpp @@ -41,6 +41,13 @@ WIFI_CONFIG::WIFI_CONFIG() _hostname[0]=0; } +int32_t WIFI_CONFIG::getSignal(int32_t RSSI) +{ + if (RSSI <= -100) return 0; + if (RSSI >= -50) return 100; + return (2* (RSSI+100)); +} + const char * WIFI_CONFIG::get_hostname() { if (WiFi.hostname().length()==0) { diff --git a/esp3d/wifi.h b/esp3d/wifi.h index 38ea51c3..7aa7a7c5 100644 --- a/esp3d/wifi.h +++ b/esp3d/wifi.h @@ -41,6 +41,7 @@ public: int idata_port; long baud_rate; int sleep_mode; + int32_t getSignal(int32_t RSSI); bool Setup(); void Safe_Setup(); char * mac2str(uint8_t mac [WL_MAC_ADDR_LENGTH]);