blob: ce8358020f891b1f42b92e515dd28d7e8c129d4f [file] [log] [blame]
#!/usr/bin/python
import sys
import gobject
import dbus
import dbus.service
import dbus.mainloop.glib
def make_bytes_readable(bytes):
SUFFIXES = [ 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB' ]
size = 1024
if bytes < size:
return ''
for suffix in SUFFIXES:
if bytes > size * 1024:
size = size * 1024
continue
return '%.1f %s' % (bytes / float(size), suffix)
return ''
def print_stats(stats):
keys = stats.keys()
keys.sort()
for key in keys:
val = int(stats[key])
str = " %s = %s" % (key, val)
if key in ["RX.Bytes", "TX.Bytes"]:
hstr = make_bytes_readable(val)
if hstr:
str = "%s (%s)" % (str, hstr)
print str
class Counter(dbus.service.Object):
@dbus.service.method("net.connman.Counter",
in_signature='', out_signature='')
def Release(self):
print("Release")
mainloop.quit()
@dbus.service.method("net.connman.Counter",
in_signature='oa{sv}a{sv}', out_signature='')
def Usage(self, path, home, roaming):
print "%s" % (path)
if len(home) > 0:
print " Home"
print_stats(home)
if len(roaming) > 0:
print " Roaming"
print_stats(roaming)
if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object('net.connman', "/"),
'net.connman.Manager')
period = 2
if len(sys.argv) > 1:
period = sys.argv[1]
path = "/test/counter%s" % period
object = Counter(bus, path)
manager.RegisterCounter(path, dbus.UInt32(10), dbus.UInt32(period))
mainloop = gobject.MainLoop()
mainloop.run()
#manager.UnregisterCounter(path)