#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;
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)) {
/* 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);
}
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);
}