---
 components/wifi.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/components/wifi.c b/components/wifi.c
index 4543d32..dffb0df 100644
--- a/components/wifi.c
+++ b/components/wifi.c
@@ -9,10 +9,13 @@
 #include "../slstatus.h"
 #include "../util.h"
 
-#define RSSI_TO_PERC(rssi) \
-                       rssi >= -50 ? 100 : \
-                       (rssi <= -100 ? 0 : \
-                       (2 * (rssi + 100)))
+static inline int
+RSSI_TO_PERC(int rssi)
+{
+       static const int best = -20, worst = -85, delta = best-worst, square = 
delta*delta;
+       int q = (100*square-(best-rssi)*(15*delta+62*(best-rssi)))/square;
+       return q > 100 ? 100 : (q < 0 ? 0 : q);
+}
 
 #if defined(__linux__)
        #include <limits.h>
-- 
2.44.2


Reply via email to