print "Usage: %s <command>" % (sys.argv[0])
print ""
print " state"
- print " scan [ <interface> ]"
+ print " services"
+ print " apn <service> [apn]"
+ print " passphrase <service> [passphrase]"
+ print " autoconnect <service> [autoconnect]"
+ print " connect <service>"
+ print " disconnect <service>"
+ print " remove <service>"
+ print ""
+ print " scan [type]"
+ print " enable <type>"
+ print " disable <type>"
+ print " offlinemode [on|off]"
+ print ""
print " dev <interface>"
print " dev <interface> scan"
+ print " dev <interface> scan_interval <period>"
print " dev <interface> networks"
print " dev <interface> connect <network>"
- print " dev <interface> remember <network>"
print " dev <interface> disconnect [network]"
- print " dev <interface> policy [ignore|off|auto|manual]"
print " dev <interface> powered [on|off]"
- print " dev <interface> priority [0-255]"
sys.exit(1)
def print_properties(path, properties):
else:
connected = " "
- name = properties["Name"]
+ if "Name" in properties.keys():
+ name = properties["Name"]
+ else:
+ name = ""
+
strength = int(properties["Strength"])
details = ""
if properties["WiFi.Passphrase"] != "":
details += "{passphrase present}"
- print "%s %-20s %3d%% %s" % (connected,
+ print "%s %-26s %3d%% %s" % (connected,
name, strength, details)
def select_network(networks, name):
network.Connect()
-def remember_network(networks, name):
- for path in networks:
- network = dbus.Interface(bus.get_object("org.moblin.connman", path),
- "org.moblin.connman.Network")
-
- properties = network.GetProperties()
-
- if properties["Name"] != name:
- continue
-
- if properties["Remember"] == dbus.Boolean(1):
- print "Already a known network %s" % (name)
- break
-
- print "Remembering network %s" % (name)
-
- network.SetProperty("Remember", dbus.Boolean(1))
-
def disconnect_network(networks, name):
for path in networks:
network = dbus.Interface(bus.get_object("org.moblin.connman", path),
print "Disconnecting from network %s" % (name)
network.Disconnect()
-if sys.argv[1] == "state":
- properties = manager.GetProperties()
+def print_services(services):
+ for path in services:
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
- print "System is %s" % (properties["State"])
+ properties = service.GetProperties()
-elif sys.argv[1] == "scan":
- properties = manager.GetProperties()
+ identifier = path[path.rfind("/") + 1:]
- interface = ""
- found = 0
+ if properties["Favorite"] == dbus.Boolean(1):
+ favorite = "*"
+ else:
+ favorite = " "
- if len(sys.argv) > 2:
- interface = sys.argv[2]
+ if "Name" in properties.keys():
+ name = properties["Name"]
+ else:
+ name = "{" + properties["Type"] + "}"
+
+ print "%s %-26s { %s }" % (favorite, name, identifier)
- for path in properties["Devices"]:
+def device_handle(devices, interface):
+ for path in devices:
device = dbus.Interface(bus.get_object("org.moblin.connman", path),
"org.moblin.connman.Device")
properties = device.GetProperties()
- if interface != "" and properties["Interface"] != interface:
+ if "Interface" not in properties.keys():
continue
- if properties["Type"] in ["wifi", "wimax"]:
- interface = properties["Interface"]
- print "Propose scanning for device %s" % (interface)
- device.ProposeScan()
- found = 1
- elif interface != "":
- print "No scanning support for device %s" % (interface)
- found = 1
-
- if found == 0:
- print "No such device"
-
-elif sys.argv[1] == "dev":
- properties = manager.GetProperties()
-
- interface = ""
- command = ""
- value = ""
- found = 0
-
- if len(sys.argv) > 2:
- interface = sys.argv[2]
- if len(sys.argv) > 3:
- command = sys.argv[3]
- if len(sys.argv) > 4:
- value = sys.argv[4]
-
- for path in properties["Devices"]:
- device = dbus.Interface(bus.get_object("org.moblin.connman", path),
- "org.moblin.connman.Device")
-
- properties = device.GetProperties()
-
if interface != "" and properties["Interface"] != interface:
continue
device.ProposeScan()
else:
print "No scanning for device %s" % (interface)
+ elif command == "scan_interval" and value != "":
+ device.SetProperty("ScanInterval", dbus.UInt16(value))
elif command in ["networks", "net"]:
if "Networks" in properties.keys():
print_networks(properties["Networks"])
print "Device can't connect networks"
elif command in ["connect", "conn"]:
print "Need to specify network"
- elif command in ["remember", "known"] and value != "":
- if "Networks" in properties.keys():
- remember_network(properties["Networks"], value)
- else:
- print "Device has no networks"
- elif command in ["remember", "known"]:
- print "Need to specify network"
elif command in ["disconnect", "disc"] and value != "":
if "Networks" in properties.keys():
disconnect_network(properties["Networks"], value)
disconnect_network(properties["Networks"], "")
else:
print "Device has no networks"
- elif command == "policy" and value != "":
- policy = value
- device.SetProperty("Policy", policy)
- elif command == "policy":
- interface = properties["Interface"]
- policy = properties["Policy"]
- print "Policy of device %s is %s" % (interface, policy)
elif command == "powered" and value != "":
if value == "on":
powered = dbus.Boolean(1)
else:
powered = "off"
print "Device %s is powered %s" % (interface, powered)
- elif command == "priority" and value != "":
- priority = int(value)
- device.SetProperty("Priority", priority)
- elif command == "priority":
- interface = properties["Interface"]
- priority = properties["Priority"]
- print "Device %s has priority of %d" % (interface, priority)
elif command == "list" or command == "":
print_properties(path, properties)
else:
print "Unknown command"
+
+
+if sys.argv[1] == "state":
+ properties = manager.GetProperties()
+
+ print "System is %s" % (properties["State"])
+
+elif sys.argv[1] in ["services", "list", "show"]:
+ properties = manager.GetProperties()
+
+ print_services(properties["Services"])
+
+elif sys.argv[1] in ["apn"]:
+ if (len(sys.argv) < 3):
+ print "Need at least service parameter"
+ sys.exit(1)
+
+ path = "/profile/default/" + sys.argv[2]
+
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
+
+ if (len(sys.argv) > 3):
+ apn = sys.argv[3]
+
+ service.SetProperty("APN", apn);
+
+ print "APN %s set for %s" % (apn, sys.argv[2])
+ else:
+ properties = service.GetProperties()
+
+ if "Name" in properties.keys():
+ name = properties["Name"]
+ else:
+ name = "{" + properties["Type"] + "}"
+
+ if "APN" in properties.keys():
+ apn = properties["APN"]
+ else:
+ apn = "not set"
+
+ print "APN for %s is %s" % (name, apn)
+
+elif sys.argv[1] in ["passphrase", "pass"]:
+ if (len(sys.argv) < 3):
+ print "Need at least service parameter"
+ sys.exit(1)
+
+ path = "/profile/default/" + sys.argv[2]
+
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
+
+ if (len(sys.argv) > 3):
+ passphrase = sys.argv[3]
+
+ service.SetProperty("Passphrase", passphrase);
+
+ print "Passphrase %s set for %s" % (passphrase, sys.argv[2])
+ else:
+ properties = service.GetProperties()
+
+ if "Name" in properties.keys():
+ name = properties["Name"]
+ else:
+ name = "{" + properties["Type"] + "}"
+
+ if "Passphrase" in properties.keys():
+ passphrase = properties["Passphrase"]
+ else:
+ passphrase = "not set"
+
+ print "Passphrase for %s is %s" % (name, passphrase)
+
+elif sys.argv[1] in ["autoconnect", "autoconn"]:
+ if (len(sys.argv) < 3):
+ print "Need at least service parameter"
+ sys.exit(1)
+
+ path = "/profile/default/" + sys.argv[2]
+
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
+
+ if (len(sys.argv) > 3):
+ flag = sys.argv[3].strip().lower()
+ autoconnect = dbus.Boolean(flag not in ['false', 'f', 'n', '0'])
+
+ service.SetProperty("AutoConnect", autoconnect);
+
+ print "Auto connect %s for %s" % (autoconnect, sys.argv[2])
+ else:
+ properties = service.GetProperties()
+
+ if "Name" in properties.keys():
+ name = properties["Name"]
+ else:
+ name = "{" + properties["Type"] + "}"
+
+ if "AutoConnect" in properties.keys():
+ autoconnect = properties["AutoConnect"]
+ else:
+ autoconnect = dbus.Boolean(0)
+
+ print "Auto connect %s for %s" % (autoconnect, name)
+
+elif sys.argv[1] in ["connect", "conn"]:
+ if (len(sys.argv) < 3):
+ print "Need at least service parameter"
+ sys.exit(1)
+
+ path = "/profile/default/" + sys.argv[2]
+
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
+
+ try:
+ service.Connect(timeout=60000)
+ except dbus.DBusException, error:
+ print "%s: %s" % (error._dbus_error_name, error.message)
+
+elif sys.argv[1] in ["disconnect", "disc"]:
+ if (len(sys.argv) < 3):
+ print "Need at least service parameter"
+ sys.exit(1)
+
+ path = "/profile/default/" + sys.argv[2]
+
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
+
+ try:
+ service.Disconnect()
+ except dbus.DBusException, error:
+ print "%s: %s" % (error._dbus_error_name, error.message)
+
+elif sys.argv[1] in ["remove"]:
+ if (len(sys.argv) < 3):
+ print "Need at least service parameter"
+ sys.exit(1)
+
+ path = "/profile/default/" + sys.argv[2]
+
+ service = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Service")
+
+ properties = service.GetProperties()
+
+ if properties["Favorite"] == dbus.Boolean(0):
+ print "Only favorite services can be removed"
+ sys.exit(1)
+
+ try:
+ service.Remove()
+ except dbus.DBusException, error:
+ print "%s: %s" % (error._dbus_error_name, error.message)
+
+elif sys.argv[1] == "scan":
+ if len(sys.argv) > 2:
+ manager.RequestScan(sys.argv[2])
+ else:
+ manager.RequestScan("")
+
+elif sys.argv[1] == "enable":
+ if len(sys.argv) > 2:
+ manager.EnableTechnology(sys.argv[2])
+ else:
+ manager.EnableTechnology("")
+
+elif sys.argv[1] == "disable":
+ if len(sys.argv) > 2:
+ manager.DisableTechnology(sys.argv[2])
+ else:
+ manager.DisableTechnology("")
+
+elif sys.argv[1] in ["offlinemode", "flightmode"]:
+ if len(sys.argv) > 2:
+ if sys.argv[2] == "on":
+ active = dbus.Boolean(1)
+ elif sys.argv[2] == "off":
+ active = dbus.Boolean(0)
+ else:
+ active = dbus.Boolean(sys.argv[2])
+ manager.SetProperty("OfflineMode", active)
+ else:
+ properties = manager.GetProperties()
+ print "Offline mode is %s" % (properties["OfflineMode"])
+
+elif sys.argv[1] == "dev":
+ properties = manager.GetProperties()
+
+ interface = ""
+ command = ""
+ value = ""
+ found = 0
+
+ if len(sys.argv) > 2:
+ interface = sys.argv[2]
+ if len(sys.argv) > 3:
+ command = sys.argv[3]
+ if len(sys.argv) > 4:
+ value = sys.argv[4]
+
+ for path in properties["Technologies"]:
+ technology = dbus.Interface(bus.get_object("org.moblin.connman", path),
+ "org.moblin.connman.Technology")
+
+ properties = technology.GetProperties()
+
+ device_handle(properties["Devices"], interface)
+
else:
print "Unknown command"