forked from CreatBot/CreatBotKlipperScreen
screen: move the wifi-manager to the network panel
moving the manager should increase startup times only load it when the user wants to manage networks network: add ip at the top (fixes #422) network: always reload the list of networks wifi: fix network list getting blank network: make the list more resilient to netinfo errors
This commit is contained in:
@@ -12,9 +12,6 @@ import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import GLib, Gdk
|
||||
|
||||
RESCAN_INTERVAL = 180
|
||||
KS_SOCKET_FILE = "/tmp/.KS_wpa_supplicant"
|
||||
|
||||
class WifiManager():
|
||||
networks_in_supplicant = []
|
||||
connected = False
|
||||
@@ -45,6 +42,7 @@ class WifiManager():
|
||||
self.timeout = None
|
||||
self.scan_time = 0
|
||||
|
||||
KS_SOCKET_FILE = "/tmp/.KS_wpa_supplicant"
|
||||
if os.path.exists(KS_SOCKET_FILE):
|
||||
os.remove(KS_SOCKET_FILE)
|
||||
|
||||
@@ -63,7 +61,7 @@ class WifiManager():
|
||||
self.wpa_cli("ATTACH", False)
|
||||
self.wpa_cli("SCAN", False)
|
||||
GLib.idle_add(self.read_wpa_supplicant)
|
||||
self.timeout = GLib.timeout_add_seconds(RESCAN_INTERVAL, self.rescan)
|
||||
self.timeout = GLib.timeout_add_seconds(180, self.rescan)
|
||||
|
||||
def add_callback(self, name, callback):
|
||||
if name in self._callbacks and callback not in self._callbacks[name]:
|
||||
@@ -145,14 +143,31 @@ class WifiManager():
|
||||
return self.connected_ssid
|
||||
|
||||
def get_current_wifi(self, interface="wlan0"):
|
||||
con_ssid = os.popen("sudo iwgetid -r").read().strip()
|
||||
con_bssid = os.popen("sudo iwgetid -r -a").read().strip()
|
||||
# wpa_cli status output is unstable use it as backup only
|
||||
status = self.wpa_cli("STATUS").split('\n')
|
||||
vars = {}
|
||||
for line in status:
|
||||
arr = line.split('=')
|
||||
vars[arr[0]] = "=".join(arr[1:])
|
||||
|
||||
prev_ssid = self.connected_ssid
|
||||
if "ssid" in vars and "bssid" in vars:
|
||||
|
||||
if con_ssid != "":
|
||||
self.connected = True
|
||||
self.connected_ssid = con_ssid
|
||||
for ssid, val in self.networks.items():
|
||||
if ssid == con_ssid:
|
||||
self.networks[ssid]['connected'] = True
|
||||
else:
|
||||
self.networks[ssid]['connected'] = False
|
||||
if prev_ssid != self.connected_ssid:
|
||||
for cb in self._callbacks['connected']:
|
||||
Gdk.threads_add_idle(
|
||||
GLib.PRIORITY_DEFAULT_IDLE,
|
||||
cb, self.connected_ssid, prev_ssid)
|
||||
return [con_ssid, con_bssid]
|
||||
elif "ssid" in vars and "bssid" in vars:
|
||||
self.connected = True
|
||||
self.connected_ssid = vars['ssid']
|
||||
for ssid, val in self.networks.items():
|
||||
|
Reference in New Issue
Block a user