--- /dev/null
+#!/usr/bin/python
+
+# Ainda continua sendo o codigo do cara, apenas retirei as partes que nao nos interessa.
+# Ainda tem que ver se pode usar o codigo, ou seja, olhar a licensa.
+# Deve ser istalado no dispositivo
+# Otacilio Lacerda
+
+import dbus
+import dbus.service
+import dbus.glib
+import gobject
+
+percent_left = -1
+charging = False
+
+loop = gobject.MainLoop()
+
+class Request(dbus.service.Object):
+ def __init__(self, bus_name):
+ dbus.service.Object.__init__(self, bus_name, '/com/nokia/bme/request')
+
+ @dbus.service.signal('com.nokia.bme.request')
+ def timeleft_info_req(self):
+ pass
+
+ @dbus.service.signal('com.nokia.bme.request')
+ def status_info_req(self):
+ pass
+
+def timeleft_handler(idle_time, active_time):
+ global percent_left
+ percent_left = min(100, 100.0 * idle_time / 15000)
+ loop.quit()
+
+def charging_on_handler():
+ global charging
+ charging = True
+ loop.quit()
+
+def charging_off_handler():
+ global charging
+ charging = False
+ loop.quit()
+
+def getBatteryState(request):
+ global percent_left
+ global charging
+
+ request.status_info_req()
+ loop.run()
+
+ if charging:
+ return -1
+ request.timeleft_info_req()
+ loop.run()
+ return percent_left
+
+if __name__ == "__main__":
+
+ bus = dbus.SystemBus(private = True)
+ bus.add_signal_receiver(timeleft_handler, 'battery_timeleft')
+ bus.add_signal_receiver(charging_on_handler, 'charger_charging_on')
+ bus.add_signal_receiver(charging_on_handler, 'battery_full')
+ bus.add_signal_receiver(charging_off_handler, 'charger_charging_off')
+ bus_name = dbus.service.BusName('com.nokia.bme.request', bus)
+ request = Request(bus_name)
+
+ percent = getBatteryState(request)
+ if percent < 0:
+ print '-1'
+ else:
+ print '%.1f' % (percent)
+