Return actual percentage for wifi_perc()
authorparazyd <parazyd@dyne.org>
Tue, 24 Oct 2017 09:03:17 +0000 (11:03 +0200)
committerAaron Marcher <me@drkhsh.at>
Tue, 24 Oct 2017 09:16:54 +0000 (11:16 +0200)
Implement basic percentage calculation for wifi_perc. With this
commit, the function returns correct percentage, since the max
of what /proc/net/wireless returns is 70.

components/wifi.c

index 30b57ab190f64b1600a6bfd84af971fd49c5cfed..9ecb8e15f3310217a1e3e13152a5eb82613754e7 100644 (file)
@@ -14,7 +14,9 @@
 const char *
 wifi_perc(const char *iface)
 {
-       int i, perc;
+       int i, cur;
+       float perc;
+       int total = 70; /* the max of /proc/net/wireless */
        char *p, *datastart;
        char path[PATH_MAX];
        char status[5];
@@ -50,9 +52,11 @@ wifi_perc(const char *iface)
                return NULL;
 
        datastart = (datastart+(strlen(iface)+1));
-       sscanf(datastart + 1, " %*d   %d  %*d  %*d                %*d      %*d          %*d              %*d      %*d            %*d", &perc);
+       sscanf(datastart + 1, " %*d   %d  %*d  %*d                %*d      %*d          %*d              %*d      %*d            %*d", &cur);
 
-       return bprintf("%d", perc);
+       perc = (float)cur / total * 100.0;
+
+       return bprintf("%.0f", perc);
 }
 
 const char *