auto-t: iwd.py: remove StationDebug out of Device init

Since a Device class can represent multiple modes (AP, AdHoc, station)
move StationDebug out of the init and only create this class when it
is used (presumably only when the device is in station mode).

The StationDebug class is now created in a property method consistent
with 'station_if'. If Device is not in station mode it is automatically
switched if the test tries any StationDebug methods.

If the Device mode is changed from 'station' the StationDebug class
instance is destroyed.
This commit is contained in:
James Prestwood 2022-01-04 09:37:34 -08:00 committed by Denis Kenzior
parent 04fccea63b
commit 4ee44ee0ea
1 changed files with 17 additions and 7 deletions

View File

@ -280,17 +280,13 @@ class Device(IWDDBusAbstract):
'''
_iface_name = IWD_DEVICE_INTERFACE
def __init__(self, object_path = None, properties = None,
service=IWD_SERVICE, namespace=ctx):
def __init__(self, *args, **kwargs):
self._wps_manager_if = None
self._station_if = None
self._station_props = None
self._station_debug_obj = None
IWDDBusAbstract.__init__(self, object_path, properties, service,
namespace)
self._station_debug = StationDebug(object_path=object_path,
namespace=namespace)
IWDDBusAbstract.__init__(self, *args, **kwargs)
@property
def _wps_manager(self):
@ -309,6 +305,17 @@ class Device(IWDDBusAbstract):
IWD_STATION_INTERFACE)
return self._station_if
@property
def _station_debug(self):
if self._properties['Mode'] != 'station':
self._prop_proxy.Set(IWD_DEVICE_INTERFACE, 'Mode', 'station')
if self._station_debug_obj is None:
self._station_debug_obj = StationDebug(object_path=self._object_path,
namespace=self._namespace)
return self._station_debug_obj
def _station_properties(self):
if self._station_props is not None:
return self._station_props
@ -335,6 +342,9 @@ class Device(IWDDBusAbstract):
for name, value in changed.items():
self._station_props[name] = value
if name == 'Mode' and value != 'station':
self._station_debug_obj = None
@property
def device_path(self):
'''