diff --git a/naxalnet/iwd.py b/naxalnet/iwd.py index c173b07..7c2ab12 100644 --- a/naxalnet/iwd.py +++ b/naxalnet/iwd.py @@ -2,20 +2,47 @@ """Manage wifi adapter via iwd D-Bus api""" +from dasbus.connection import SystemMessageBus + +IWD_BUS = "net.connman.iwd" +IWD_ROOT_PATH = "/" + +# If you are new to D-Bus, you might want to use a program +# such as D-Feet (https://wiki.gnome.org/Apps/DFeet) for reference. + class IWD: """Manage iwd via dbus""" - def __init__(self): - pass + def __init__(self, bus=SystemMessageBus()): + self._bus = bus + self._proxy = self._bus.get_proxy(IWD_BUS, IWD_ROOT_PATH) - def get_devices(self): + def get_name_from_path(self, path: str) -> str: + """returns device name when d-bus path is given as arg""" + + def get_device_path_from_name(self, name: str) -> str: + """returns path of device as str""" + + def get_adapter_path_from_name(self, name: str) -> str: + """returns path of adapter as str""" + + def get_all_object_paths(self) -> list: + """returns a list of path names of all objects""" + + def get_all_device_paths(self) -> list: + """returns list of paths of all devices""" + + def get_all_adapter_paths(self) -> list: + """returns list of paths of all adapters""" + + def get_devices(self) -> list: """ returns list of device names as str example: ["wlan0", "wlan1"] """ - def get_adapters(self): + def get_adapters(self) -> list: """ returns list of adapters example: ["phy0","phy1"] @@ -25,5 +52,19 @@ class IWD: class Device: """control devices with iwd""" - def __init__(self, name: str): - pass + def __init__(self, name: str, bus=SystemMessageBus()): + self._iwd = IWD(bus) + self._bus = self._iwd._bus + self._path = self._iwd.get_path_from_name(name) + self._proxy = self._bus.get_proxy(IWD_BUS, self._path) + self.name = self._proxy.Name + + def get_mode(self) -> str: + """ + returns the mode in which the device is in + example: "ap" + """ + return self._proxy.Mode + + def get_adapter_name(self) -> str: + """returns the name of the adapter as str""" diff --git a/systemd-networkd/05-wireless-ap.network b/systemd-networkd/05-wireless-ap.network index b00b1f2..0b35dae 100644 --- a/systemd-networkd/05-wireless-ap.network +++ b/systemd-networkd/05-wireless-ap.network @@ -1,5 +1,7 @@ # This file links any interface in ap mode -# to the bridge we created earlier +# to the bridge we created earlier. +# To start an AP, connect two adapters to the computer +# before starting naxalnet.service # This file won't do anything if an ap interface is not found. [Match] diff --git a/systemd-networkd/06-eth.network b/systemd-networkd/06-eth.network index dad405a..0c81f21 100644 --- a/systemd-networkd/06-eth.network +++ b/systemd-networkd/06-eth.network @@ -2,6 +2,7 @@ # to the bridge made in 02-bridge.netdev [Match] Name=en* +Name=eth* [Network] Bridge=bridge0