#!/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 '' class Counter(dbus.service.Object): @dbus.service.method("org.moblin.connman.Counter", in_signature='', out_signature='') def Release(self): print("Release") mainloop.quit() @dbus.service.method("org.moblin.connman.Counter", in_signature='oa{sv}', out_signature='') def Usage(self, path, stats): print "%s" % (path) 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 if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object('org.moblin.connman', "/"), 'org.moblin.connman.Manager') interval = 2 if len(sys.argv) > 1: interval = sys.argv[1] path = "/test/counter%s" % interval object = Counter(bus, path) manager.RegisterCounter(path, dbus.UInt32(interval)) mainloop = gobject.MainLoop() mainloop.run() #manager.UnregisterCounter(path)