#!/usr/bin/python3

import dbus, sys

bus = dbus.SystemBus()

if len(sys.argv) == 2:
	path = sys.argv[1]
else:
	manager = dbus.Interface(bus.get_object('org.ofono', '/'),
						'org.ofono.Manager')
	modems = manager.GetModems()
	path = modems[0][0]

radiosettings = dbus.Interface(bus.get_object('org.ofono', path),
						'org.ofono.RadioSettings')

properties = radiosettings.GetProperties()

print("Technology preference: %s" % (properties["TechnologyPreference"]))
