def _listen_for_wifi_state_changes(self):
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
def print_status(status, nm_state):
if status in (WifiConnectionState.CONNECTING, WifiConnectionState.CONNECTED):
logger.info("Wifi status changed: %s (%d) to %s" % (status, nm_state, self._current_ssid))
else:
logger.info("Wifi status changed: %s (%d)" % (status, nm_state))
def on_state_changed(nm_instance, nm_state, **kwargs):
if nm_state >= NetworkManager.NM_STATE_CONNECTED_GLOBAL:
new_status = WifiConnectionState.CONNECTED
elif nm_state > NetworkManager.NM_STATE_DISCONNECTING:
new_status = WifiConnectionState.CONNECTING
else:
new_status = WifiConnectionState.DISCONNECTED
self._update_current_ssid()
if new_status == self._wifi_status:
return
print_status(new_status, nm_state)
self._wifi_status = new_status
self._on_wifi_status_changed()
# check initial status:
initial_state = NetworkManager.NetworkManager.State
on_state_changed(None, initial_state)
# listen for changes:
NetworkManager.NetworkManager.OnStateChanged(on_state_changed)
logger.debug("Start listening to network status changes")
# Attention: a GObject.MainLoop() is required for this to work
# in this case it is started by the BLE Peripheral object
评论列表
文章目录