All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] monitor-ofono: deep pretty-print
@ 2010-08-25 11:57 Pekka.Pessi
  2010-08-25 11:57 ` [PATCH 2/2] test-monitor: monitor irregular signals Pekka.Pessi
  2010-08-25 16:48 ` [PATCH 1/2] monitor-ofono: deep pretty-print Denis Kenzior
  0 siblings, 2 replies; 4+ messages in thread
From: Pekka.Pessi @ 2010-08-25 11:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2101 bytes --]

From: Pekka Pessi <Pekka.Pessi@nokia.com>

---
 test/monitor-ofono |   60 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 46 insertions(+), 14 deletions(-)

diff --git a/test/monitor-ofono b/test/monitor-ofono
index a441d5d..94febac 100755
--- a/test/monitor-ofono
+++ b/test/monitor-ofono
@@ -5,22 +5,54 @@ import gobject
 import dbus
 import dbus.mainloop.glib
 
+_dbus2py = {
+	dbus.String : unicode,
+	dbus.UInt32 : int,
+	dbus.Int32 : int,
+	dbus.Int16 : int,
+	dbus.UInt16 : int,
+	dbus.UInt64 : int,
+	dbus.Int64 : int,
+	dbus.Byte : int,
+	dbus.Boolean : bool,
+	dbus.ByteArray : str,
+	dbus.ObjectPath : str
+    }
+
+def dbus2py(d):
+	t = type(d)
+	if t in _dbus2py:
+		return _dbus2py[t](d)
+	if t is dbus.Dictionary:
+		return dict([(dbus2py(k), dbus2py(v)) for k, v in d.items()])
+	if t is dbus.Array and d.signature == "y":
+		return "".join([chr(b) for b in d])
+	if t is dbus.Array or t is list:
+		return [dbus2py(v) for v in d]
+	if t is dbus.Struct or t is tuple:
+		return tuple([dbus2py(v) for v in d])
+	return d
+
+def pretty(d):
+	d = dbus2py(d)
+	t = type(d)
+
+	if t in (dict, tuple, list) and len(d) > 0:
+		if t is dict:
+			d = ", ".join(["%s = %s" % (k, pretty(v))
+					for k, v in d.items()])
+			return "{ %s }" % d
+
+		d = " ".join([pretty(e) for e in d])
+
+		if t is tuple:
+			return "( %s )" % d
+
+	return str(d)
+
 def property_changed(name, value, path, interface):
 	iface = interface[interface.rfind(".") + 1:]
-	if name in ["Modems", "Interfaces", "Features",
-				"Technologies",
-				"SubscriberNumbers",
-				"EmergencyNumbers",
-				"PreferredLanguages"]:
-		val = ""
-		for i in value:
-			val += i + " "
-	elif name in ["MobileNetworkCodeLength",
-				"VoicemailMessageCount"]:
-		val = int(value)
-	else:
-		val = str(value)
-	print "{%s} [%s] %s = %s" % (iface, path, name, val)
+	print "{%s} [%s] %s = %s" % (iface, path, name, pretty(value))
 
 if __name__ == '__main__':
 	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-08-25 16:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-25 11:57 [PATCH 1/2] monitor-ofono: deep pretty-print Pekka.Pessi
2010-08-25 11:57 ` [PATCH 2/2] test-monitor: monitor irregular signals Pekka.Pessi
2010-08-25 16:48   ` Denis Kenzior
2010-08-25 16:48 ` [PATCH 1/2] monitor-ofono: deep pretty-print Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.