#!/usr/bin/python3

from gi.repository import GLib

import dbus
import dbus.mainloop.glib

def property_changed(name, value):
	print("Modem property %s changed to %s" % (name, value))

if __name__ == "__main__":
	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

	bus = dbus.SystemBus()

	manager = dbus.Interface(bus.get_object('org.ofono', '/'),
							'org.ofono.Manager')

	modems = manager.GetModems()
	modem = dbus.Interface(bus.get_object('org.ofono', modems[0][0]),
							'org.ofono.Modem')

	modem.connect_to_signal("PropertyChanged", property_changed)

	properties = modem.GetProperties()

	if 'Name' in properties:
		print("Name: %s" % (properties['Name']))

	if 'Manufacturer' in properties:
		print("Manufacturer: %s" % (properties['Manufacturer']))

	if 'Model' in properties:
		print("Model: %s" % (properties['Model']))

	if 'Revision' in properties:
		print("Revision: %s" % (properties['Revision']))

	if 'Serial' in properties:
		print("Serial: %s" % (properties['Serial']))

	if 'SoftwareVersionNumber' in properties:
		print("SoftwareVersionNumber: %s" % (properties['SoftwareVersionNumber']))

	if 'Powered' in properties:
		print("Powered: %s" % (properties['Powered']))

	if 'Online' in properties:
		print("Online: %s" % (properties['Online']))

	if 'Lockdown' in properties:
		print("Lockdown: %s" % (properties['Lockdown']))

	if 'Emergency' in properties:
		print("Emergency: %s" % (properties['Emergency']))

	if 'Features' in properties:
		print("Features:")
		for feature in properties["Features"]:
			print("    [ %s ]" % (feature))

	if 'Interfaces' in properties:
		print("Interfaces:")
		for interface in properties["Interfaces"]:
			print("    [ %s ]" % (interface))

	mainloop = GLib.MainLoop()
	mainloop.run()
