network: improve NetworkManager support

This commit is contained in:
alfrix
2022-11-23 21:09:39 -03:00
parent db48bb8a1f
commit c630178f0c
5 changed files with 125 additions and 154 deletions

View File

@@ -16,31 +16,25 @@ class WifiManager:
networks_in_supplicant = []
connected = False
_stop_loop = False
thread = None
def __init__(self, interface, *args, **kwargs):
super().__init__(*args, **kwargs)
self.loop = None
self._poll_task = None
self._scanning = False
self._callbacks = {
"connected": [],
"connecting_status": [],
"scan_results": []
"scan_results": [],
"popup": [],
}
self._stop_loop = False
self.connected = False
self.connected_ssid = None
self.connecting_info = []
self.event = threading.Event()
self.initialized = False
self.interface = interface
self.networks = {}
self.supplicant_networks = {}
self.queue = Queue()
self.tasks = []
self.timeout = None
self.scan_time = 0
ks_socket_file = "/tmp/.KS_wpa_supplicant"
if os.path.exists(ks_socket_file):
@@ -115,7 +109,7 @@ class WifiManager:
return False
logging.info(f"Attempting to connect to wifi: {netid}")
self.connecting_info = [f"Attempting to connect to {ssid}"]
self.callback("connecting_status", f"Attempting to connect to {ssid}")
self.wpa_cli(f"SELECT_NETWORK {id}")
self.save_wpa_conf()
@@ -195,7 +189,7 @@ class WifiManager:
for net in self.networks:
if mac == net['mac']:
return net
return None
return {}
def get_networks(self):
return list(self.networks)
@@ -203,12 +197,6 @@ class WifiManager:
def get_supplicant_networks(self):
return self.supplicant_networks
def is_connected(self):
return self.connected
def is_initialized(self):
return self.initialized
def read_wpa_supplicant(self):
results = self.wpa_cli("LIST_NETWORKS").split('\n')
results.pop(0)
@@ -222,13 +210,8 @@ class WifiManager:
}
self.networks_in_supplicant.append(self.supplicant_networks[net[0]])
def remove_callback(self, name, callback):
if name in self._callbacks and callback in self._callbacks[name]:
self._callbacks[name].remove(callback)
def rescan(self):
self.wpa_cli("SCAN", False)
return True
def save_wpa_conf(self):
logging.info("Saving WPA config")
@@ -340,9 +323,6 @@ class WpaSocket(Thread):
def skip_command(self):
self.skip_commands = self.skip_commands + 1
def stop(self):
self._stop_loop = True
class WifiChannels:
@staticmethod