#!/usr/bin/python

import dbus, flimflam

flim = flimflam.FlimFlam(dbus.SystemBus())

strength = {}

for device in flim.GetObjectList("Device"):
    device_properties = device.GetProperties(utf8_strings = True)
    try:
        if device_properties["Type"] not in ["wifi", "wimax",
            "bluetooth", "cellular"]:
            continue
    except Exception, e:
        continue

    for network in flim.GetObjectList("Network", device_properties):
        network_properties = network.GetProperties(utf8_strings = True)

        if "Name" not in network_properties:
            continue
        name = network_properties["Name"]

        if "Strength" not in network_properties:
            print "No strength for network %s" % name
            continue

        if strength.get(name, -1) < network_properties["Strength"]:
            strength[name] = network_properties["Strength"]

#        print "%-14s: strength %d network %d" % \
#            (name,
#             int(strength.get(name, -1)),
#             int(network_properties.get("Strength", -1)))

for service in flim.GetObjectList("Service"):
    properties = service.GetProperties(utf8_strings = True)
    if "Name" not in properties:
        continue

    name = properties["Name"]

    print "%-14s: network %d service %d" % \
        (name, int(strength.get(name, -1)), int(properties.get("Strength", -1)))