#!/usr/bin/python

import dbus

bus = dbus.SystemBus()

object = dbus.Interface(bus.get_object("net.connman", '/'),
				"org.freedesktop.DBus.Introspectable")

print object.Introspect()

manager = dbus.Interface(bus.get_object("net.connman", "/"),
					"net.connman.Manager")

technologies = manager.GetTechnologies()

for path, properties in technologies:
	object = dbus.Interface(bus.get_object("net.connman", path),
					"org.freedesktop.DBus.Introspectable")

	print object.Introspect()
