#!/usr/bin/python

import dbus, flimflam, sys

if (len(sys.argv) < 4):
    print "Usage: %s <device-name> <property> <value>" % (sys.argv[0])
    sys.exit(1)

(_, name, property_key, value) = sys.argv

flim = flimflam.FlimFlam()
device = flim.FindElementByNameSubstring('Device', name)
if property_key in ["BgscanShortInterval", "RoamThreshold", "ScanInterval" ]:
    device.SetProperty(property_key, dbus.UInt16(value))
elif property_key in [ "BgscanSignalThreshold", ]:
    device.SetProperty(property_key, dbus.Int32(value))
elif property_key in ["Cellular.AllowRoaming", "Powered"]:
    device.SetProperty(property_key,
                       dbus.Boolean(value.lower() in ("true", "1")))
else:
    device.SetProperty(property_key, value)
