123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- # -*- coding: utf-8 -*-
- import dbus
- import dbus.service
- import sys
- from wicd import misc
- ##misc.to_bool
- ##misc.misc.noneToString
- ##misc.to_unicode
- ##misc.Noneify
- from wicd.translations import _
- from wicd import wpath
- from wicd import dbusmanager
- from wicd import misc
- import time
- import gobject
- if getattr(dbus, 'version', (0, 0, 0)) < (0, 80, 0):
- import dbus.glib
- else:
- from dbus.mainloop.glib import DBusGMainLoop
- DBusGMainLoop(set_as_default=True)
- bus = daemon = wireless = wired = None
- manager = objects = adapter = None
- devices = {}
- def setup_dbus(force=True):
- global bus,daemon,wireless,wired
- global manager,objects,adapter,devices
-
- try:
- dbusmanager.connect_to_dbus()
- except dbus.DBusException:
- print >> sys.stderr,\
- _("Can't connect to wicd daemon,trying to start it automatically...")
- else:
- bus = dbusmanager.get_bus()
- dbus_ifaces = dbusmanager.get_dbus_ifaces()
- daemon = dbus_ifaces["daemon"] ## @dbus.service.method('org.wicd.daemon')
- wireless = dbus_ifaces["wireless"] ## @dbus.service.method('org.wicd.daemon.wireless')
- wired = dbus_ifaces["wired"] ## @
-
-
- ### BlueZ
- try:
- proxy_obj = bus.get_object("org.bluez", "/")
- manager = dbus.Interface(proxy_obj,"org.freedesktop.DBus.ObjectManager")
- objects = manager.GetManagedObjects()
-
- for path, interfaces in objects.iteritems():
- if "org.bluez.Device1" in interfaces:
- devices[path] = interfaces["org.bluez.Device1"] ## like /org/bluez/hci0/dev_xx_xx_xx_yy_yy_yy
-
- proxy_obj = bus.get_object("org.bluez", "/org/bluez/hci0")
- adapter = dbus.Interface(proxy_obj, "org.bluez.Adapter1")
- except Exception as e:
- print(str(e))
-
- if not daemon:
- print("Error connecting to wicd via D-Bus")
-
-
-
- return True
- def wifi_strength():
- fast = not daemon.NeedsExternalCalls()
- if not fast:
- iwconfig = wireless.GetIwconfig()
- else:
- iwconfig = ''
-
- if daemon.GetSignalDisplayType() == 0:
- strength = wireless.GetCurrentSignalStrength(iwconfig)
- else:
- strength = wireless.GetCurrentDBMStrength(iwconfig)
- return strength
- def get_wifi_ip():
- if wireless == None:
- return None
- return wireless.GetWirelessIP('')
- def is_wifi_connected_now():
- if wireless == None:
- return False
-
- wireless_connecting = wireless.CheckIfWirelessConnecting()
- fast = not daemon.NeedsExternalCalls()
- if wireless_connecting:
- return False
- else:
- if not fast:
- iwconfig = wireless.GetIwconfig()
- else:
- iwconfig = ''
- if check_for_wireless(iwconfig,wireless.GetWirelessIP(''),None):
- return True
- else:
- return False
- def check_for_wireless(iwconfig,wireless_ip,set_status):
- if not wireless_ip:
- return False
- network = wireless.GetCurrentNetwork(iwconfig)
- if not network:
- return False
- network = misc.to_unicode(network)
- if daemon.GetSignalDisplayType() == 0:
- strength = wireless.GetCurrentSignalStrength(iwconfig)
- else:
- strength = wireless.GetCurrentDBMStrength(iwconfig)
- if strength is None:
- return False
-
- strength = misc.to_unicode(daemon.FormatSignalForPrinting(strength))
- ip = misc.to_unicode(wireless_ip)
- """
- print(_('dbus Connected to $A at $B (IP: $C)').replace
- ('$A', network).replace
- ('$B', strength).replace
- ('$C', ip))
- """
- return True
|