---
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