1#!/usr/bin/python
2
3import dbus, flimflam
4
5flim = flimflam.FlimFlam(dbus.SystemBus())
6
7strength = {}
8
9for device in flim.GetObjectList("Device"):
10    device_properties = device.GetProperties(utf8_strings = True)
11    try:
12        if device_properties["Type"] not in ["wifi", "wimax",
13            "bluetooth", "cellular"]:
14            continue
15    except Exception, e:
16        continue
17
18    for network in flim.GetObjectList("Network", device_properties):
19        network_properties = network.GetProperties(utf8_strings = True)
20
21        if "Name" not in network_properties:
22            continue
23        name = network_properties["Name"]
24
25        if "Strength" not in network_properties:
26            print "No strength for network %s" % name
27            continue
28
29        if strength.get(name, -1) < network_properties["Strength"]:
30            strength[name] = network_properties["Strength"]
31
32#        print "%-14s: strength %d network %d" % \
33#            (name,
34#             int(strength.get(name, -1)),
35#             int(network_properties.get("Strength", -1)))
36
37for service in flim.GetObjectList("Service"):
38    properties = service.GetProperties(utf8_strings = True)
39    if "Name" not in properties:
40        continue
41
42    name = properties["Name"]
43
44    print "%-14s: network %d service %d" % \
45        (name, int(strength.get(name, -1)), int(properties.get("Strength", -1)))
46