Hi,

On some kind of batteries, energy_now file is not available, but charge_now
instead. Please, find attached the patch to add support to read charge_now
file also.
 - energy_now exports value in uWh
 - charge_now exports value in uAh

Regards,

David Cohen
Index: powertop.c
===================================================================
--- a/powertop.c	(revision 298)
+++ b/powertop.c	(working copy)
@@ -587,9 +587,9 @@
 
 	while ((dirent = readdir(dir))) {
 		int dontcount = 0;
+		int energy = 1;
 		double voltage = 0.0;
 		double amperes_drawn = 0.0;
-		double watts_drawn = 0.0;
 		double watts_left = 0.0;
 		char line[1024];
 
@@ -630,11 +630,18 @@
 
 		sprintf(filename, "/sys/class/power_supply/%s/energy_now", dirent->d_name);
 		file = fopen(filename, "r");
-		if (!file)
-			continue;
+		if (!file) {
+			sprintf(filename, "/sys/class/power_supply/%s/charge_now", dirent->d_name);
+			file = fopen(filename, "r");
+			if (!file)
+				continue;
+			energy = 0;
+		}
 		memset(line, 0, 1024);
 		if (fgets(line, 1024, file) != NULL) {
 			watts_left = strtoull(line, NULL, 10) / 1000000.0;
+			if (!energy)
+				watts_left *= voltage;
 		}
 		fclose(file);
 
@@ -644,12 +651,12 @@
 			continue;
 		memset(line, 0, 1024);
 		if (fgets(line, 1024, file) != NULL) {
-			watts_drawn = strtoull(line, NULL, 10) / 1000000.0;
+			amperes_drawn = strtoull(line, NULL, 10) / 1000000.0;
 		}
 		fclose(file);
 	
 		if (!dontcount) {
-			rate += watts_drawn + voltage * amperes_drawn;
+			rate += voltage * amperes_drawn;
 		}
 		cap += watts_left;
 		
_______________________________________________
Power mailing list
[email protected]
http://www.bughost.org/mailman/listinfo/power

Reply via email to