+from __future__ import with_statement
+
+import dbus, os
+
+from dbuscron.logger import Logger
+log = Logger(__name__)
+
+def dbus_to_str(value):
+ try:
+ if isinstance(value, dbus.Byte):
+ result = str(int(value))
+ elif isinstance(value, dbus.ByteArray):
+ result = ','.join(str(ord(v)) for v in value)
+ elif isinstance(value, dbus.Array):
+ result = ','.join(dbus_to_str(v) for v in value)
+ elif isinstance(value, dbus.Dictionary):
+ result = ','.join('%s:%s' % (k, dbus_to_str(v)) for k, v in value.iteritems())
+ elif isinstance(value, dbus.String):
+ result = value.encode('utf-8')
+ else:
+ result = str(value)
+ return result
+ except Exception, e:
+ log.error('convert exception', e)
+ raise e