battery: Add divider for voltage_now
[sysstatus.git] / src / status / battery.c
index 34bfcc0be62e4feb37f85ee0381de0af5bbf6fb6..79d65da49e13cbd631c24679b1876d502e450068 100644 (file)
@@ -3,7 +3,7 @@
 #include <unistd.h>
 #include <string.h>
 
-#include "status/battery.h"
+#include "common.h"
 #include "tools.h"
 
 #ifndef POWER_BASEDIR
 #endif
 
 
-void status_battery(char *batname)
+void status_battery(GlobalData *g, char *batname)
 {
+  StatusItem s;
+  char text[32] = { 0 };
+
   char batpath[256];
   int batpathlen;
 
@@ -22,10 +25,14 @@ void status_battery(char *batname)
   int chargeNow = 0;
   int chargeFull = -1;
   int chargePercent = -1;
-  int battW = 1;
+  int currentNow = 1;
+  int voltageNow = 0;
   float battTime = -1;
 
 
+  statusitem_init(&s);
+  s.text = text;
+
   /* Prepare path */
   batpathlen = sizeof(POWER_BASEDIR) - 1 + strlen(batname);
   if (batpathlen + 1 + sizeof("/energy_full") >= sizeof(batpath)) {
@@ -46,22 +53,28 @@ void status_battery(char *batname)
 
 
   /* Get info */
-  strcpy(&batpath[batpathlen], "/energy_now");
+  strcpy(&batpath[batpathlen], "/charge_now");
   stlen = fileRead(stline, sizeof(stline), batpath);
   if (stlen > 0) {
     chargeNow = atoi(stline);
   }
 
-  strcpy(&batpath[batpathlen], "/energy_full");
+  strcpy(&batpath[batpathlen], "/charge_full");
   stlen = fileRead(stline, sizeof(stline), batpath);
   if (stlen > 0) {
     chargeFull = atoi(stline);
   }
 
-  strcpy(&batpath[batpathlen], "/power_now");
+  strcpy(&batpath[batpathlen], "/current_now");
   stlen = fileRead(stline, sizeof(stline), batpath);
   if (stlen > 0) {
-    battW = atoi(stline);
+    currentNow = atoi(stline);
+  }
+
+  strcpy(&batpath[batpathlen], "/voltage_now");
+  stlen = fileRead(stline, sizeof(stline), batpath);
+  if (stlen > 0) {
+    voltageNow = atoi(stline);
   }
 
 
@@ -73,32 +86,34 @@ void status_battery(char *batname)
   if (chargePercent <= 40) {
     if (chargePercent <= 25) {
       if (chargePercent <= 10) {
-        fputs("^fg(red)", stdout);
+        s.color = "#FF0000";  // red
       } else {
         // 11-25%
-        fputs("^fg(orange)", stdout);
+        s.color = "#FFA500";  // orange
       }
     } else {
       // 26-40%
-      fputs("^fg(yellow)", stdout);
+      s.color = "#FFFF00";  // yellow
     }
   } else {
     if (chargePercent > 70) {
-      fputs("^fg(white)", stdout);
+      s.color = "#FFFFFF";  // white
     } else {
       // 41-70%
-      fputs("^fg(green)", stdout);
+      s.color = "#22FF22";  // green
     }
   }
 
-  battTime = (float)chargeNow / (float)battW;
+  battTime = (float)chargeNow / (float)currentNow;
 
-  if (battW == 0) {
+  if (currentNow == 0) {
     // fully charged and not in use
-    printf(" %s: %d%% _ _ ",
-            batname, chargePercent);
+    snprintf(text, sizeof(text), "%s: %d%% _ _",
+              batname, chargePercent);
   } else {
-    printf(" %s: %d%% %.1fh %.1fW ",
-            batname, chargePercent, battTime, (float)battW / 1000000.0);
+    snprintf(text, sizeof(text), "%s: %d%% %.1fh %.1fW",
+              batname, chargePercent, battTime, (float)voltageNow / 1000000.0 * (float)currentNow / 1000000.0);
   }
+
+  line_append_item(g, &s);
 }