import pango
import time
import suspend
+import glob
capfile = "/sys/class/power_supply/bq27000-battery/capacity"
fullfile = "/sys/class/power_supply/bq27000-battery/time_to_full_now"
statusfile = "/sys/class/power_supply/bq27000-battery/status"
status2file = "/sys/class/power_supply/twl4030_usb/status"
onlinefile = "/sys/class/power_supply/twl4030_usb/online"
+# in 3.7 battery volts is here..
+bvoltfile = "/sys/devices/platform/twl4030_madc_hwmon/in12_input"
+# in 4.0 it is here, which is not reliable and nearly unusable.
+# "/sys/devices/platform/68000000.ocp/48070000.i2c/i2c-0/0-0048/48070000.i2c:twl@48:madc/iio:device2/in_voltage12_input"
+# so use glob.glob("/sys/bus/iio/devices/iio:device*/in_voltage12_input")
+bvoltglob = "/sys/bus/iio/devices/iio:device*/in_voltage12_input"
ccfile = "/sys/class/power_supply/bq27000-battery/cycle_count"
cffile = "/sys/class/power_supply/bq27000-battery/charge_full"
cfdfile = "/sys/class/power_supply/bq27000-battery/charge_full_design"
filename = "/usr/local/pixmaps/battery_%03d.png"
filename_charging = "/usr/local/pixmaps/battery_%03d_charging_%d.png"
-def file_text(name):
+def file_text(name, globname = None):
try:
f = open(name)
except:
- return ""
- t = f.read()
+ if not globname:
+ return ""
+ names = glob.glob(globname)
+ if not names:
+ return ""
+ name = names[0]
+ try:
+ f = open(name)
+ except:
+ return ""
+ try:
+ t = f.read()
+ except:
+ t = "NO-DEVICE"
return t.strip()
+
def file_num(name):
try:
i = int(file_text(name))
return i
prevfile = ""
+
+def voltcap():
+ v = file_text(bvoltfile, bvoltglob)
+ if v == "NO-DEVICE":
+ return 0
+ vi = int(v)
+ return (vi-3200) * 100 / (4200-3200)
+
+def getcap():
+ cap = file_text(capfile)
+ if cap != "NO-DEVICE":
+ return int(cap)
+ return voltcap()
+
def setfile(icon):
- cap = file_num(capfile)
+ cap = getcap()
capr = int((cap+5)/10)*10
curr = file_num(currfile)
status = file_text(chgfile)
if f == prevfile:
return
icon.set_from_file(f)
-
+
def update():
global icon
global configwindow
if now < self.period_start + 5:
return "-"
cur = (self.chg_start - chg) * 3600 / (now - self.period_start)
- if cur <= 0:
- cur = 1
- sec = chg * 3600 / cur
+ if cur:
+ sec = chg * 3600 / cur
+ else:
+ sec = 0
min = sec/60
hr = int(min / 60)
min -= hr*60
if configwindow == self:
configwindow = None
self.destroy()
-
+
def create_ui(self):
# two columns of name/value
self.addlabel('Capacity', fd)
self.addlabel('Status', fd)
self.addlabel('Status2', fd)
+ self.addlabel('Batt-Volts', fd)
self.addlabel('Online', fd)
self.addlabel('Current', fd)
self.addlabel('Avg Current', fd)
def shutdown(self, widget):
os.system("sync")
os.system("poweroff -f")
-
+
def update_labels(self, *a):
- self.labels['Capacity'].set_text(to_percent(file_num(capfile), 100))
+ self.labels['Capacity'].set_text(to_percent(getcap(), 100))
self.labels['Status'].set_text(file_text(statusfile))
self.labels['Status2'].set_text(file_text(status2file))
+ self.labels['Batt-Volts'].set_text("%s (%s%%)"%(file_text(bvoltfile, bvoltglob),voltcap()))
self.labels['Online'].set_text(file_text(onlinefile))
self.labels['Current'].set_text(file_text(currfile))
self.labels['Avg Current'].set_text(self.m.avg_curr())