merged latest from develop
This commit is contained in:
commit
c264634b5f
10 changed files with 78 additions and 62 deletions
|
@ -422,7 +422,7 @@ class CoreNodeBase(NodeBase):
|
|||
changed = super().setposition(x, y, z)
|
||||
if changed:
|
||||
for netif in self.netifs(sort=True):
|
||||
netif.setposition(x, y, z)
|
||||
netif.setposition()
|
||||
|
||||
def commonnets(
|
||||
self, obj: "CoreNodeBase", want_ctrl: bool = False
|
||||
|
@ -1173,11 +1173,13 @@ class Position:
|
|||
:param x: x position
|
||||
:param y: y position
|
||||
:param z: z position
|
||||
:return:
|
||||
"""
|
||||
self.x = x
|
||||
self.y = y
|
||||
self.z = z
|
||||
self.lon = None
|
||||
self.lat = None
|
||||
self.alt = None
|
||||
|
||||
def set(self, x: float = None, y: float = None, z: float = None) -> bool:
|
||||
"""
|
||||
|
@ -1202,3 +1204,24 @@ class Position:
|
|||
:return: x,y,z position tuple
|
||||
"""
|
||||
return self.x, self.y, self.z
|
||||
|
||||
def set_geo(self, lon: float, lat: float, alt: float) -> None:
|
||||
"""
|
||||
Set geo position lon, lat, alt.
|
||||
|
||||
:param lon: longitude value
|
||||
:param lat: latitude value
|
||||
:param alt: altitude value
|
||||
:return: nothing
|
||||
"""
|
||||
self.lon = lon
|
||||
self.lat = lat
|
||||
self.alt = alt
|
||||
|
||||
def get_geo(self) -> Tuple[float, float, float]:
|
||||
"""
|
||||
Retrieve current geo position lon, lat, alt.
|
||||
|
||||
:return: lon, lat, alt position tuple
|
||||
"""
|
||||
return self.lon, self.lat, self.alt
|
||||
|
|
|
@ -51,7 +51,7 @@ class CoreInterface:
|
|||
self.addrlist = []
|
||||
self.hwaddr = None
|
||||
# placeholder position hook
|
||||
self.poshook = lambda a, b, c, d: None
|
||||
self.poshook = lambda x: None
|
||||
# used with EMANE
|
||||
self.transport_type = None
|
||||
# node interface index
|
||||
|
@ -210,16 +210,14 @@ class CoreInterface:
|
|||
self._params = getattr(self, name)
|
||||
setattr(self, name, tmp)
|
||||
|
||||
def setposition(self, x: float, y: float, z: float) -> None:
|
||||
def setposition(self) -> None:
|
||||
"""
|
||||
Dispatch position hook handler.
|
||||
Dispatch position hook handler when possible.
|
||||
|
||||
:param x: x position
|
||||
:param y: y position
|
||||
:param z: z position
|
||||
:return: nothing
|
||||
"""
|
||||
self.poshook(self, x, y, z)
|
||||
if self.poshook and self.node:
|
||||
self.poshook(self)
|
||||
|
||||
def __lt__(self, other: "CoreInterface") -> bool:
|
||||
"""
|
||||
|
|
|
@ -1067,6 +1067,7 @@ class WlanNode(CoreNetwork):
|
|||
"""
|
||||
super().startup()
|
||||
self.net_client.disable_mac_learning(self.brname)
|
||||
ebq.ebchange(self)
|
||||
|
||||
def attach(self, netif: CoreInterface) -> None:
|
||||
"""
|
||||
|
@ -1078,11 +1079,7 @@ class WlanNode(CoreNetwork):
|
|||
super().attach(netif)
|
||||
if self.model:
|
||||
netif.poshook = self.model.position_callback
|
||||
if netif.node is None:
|
||||
return
|
||||
x, y, z = netif.node.position.get()
|
||||
# invokes any netif.poshook
|
||||
netif.setposition(x, y, z)
|
||||
netif.setposition()
|
||||
|
||||
def setmodel(self, model: "WirelessModelType", config: Dict[str, str]):
|
||||
"""
|
||||
|
@ -1097,9 +1094,7 @@ class WlanNode(CoreNetwork):
|
|||
self.model = model(session=self.session, _id=self.id)
|
||||
for netif in self.netifs():
|
||||
netif.poshook = self.model.position_callback
|
||||
if netif.poshook and netif.node:
|
||||
x, y, z = netif.node.position.get()
|
||||
netif.poshook(netif, x, y, z)
|
||||
netif.setposition()
|
||||
self.updatemodel(config)
|
||||
elif model.config_type == RegisterTlvs.MOBILITY.value:
|
||||
self.mobility = model(session=self.session, _id=self.id)
|
||||
|
@ -1118,9 +1113,7 @@ class WlanNode(CoreNetwork):
|
|||
)
|
||||
self.model.update_config(config)
|
||||
for netif in self.netifs():
|
||||
if netif.poshook and netif.node:
|
||||
x, y, z = netif.node.position.get()
|
||||
netif.poshook(netif, x, y, z)
|
||||
netif.setposition()
|
||||
|
||||
def all_link_data(self, flags: MessageFlags = MessageFlags.NONE) -> List[LinkData]:
|
||||
"""
|
||||
|
|
|
@ -517,7 +517,7 @@ class Rj45Node(CoreNodeBase, CoreInterface):
|
|||
if self.old_up:
|
||||
self.net_client.device_up(self.localname)
|
||||
|
||||
def setposition(self, x: float = None, y: float = None, z: float = None) -> bool:
|
||||
def setposition(self, x: float = None, y: float = None, z: float = None) -> None:
|
||||
"""
|
||||
Uses setposition from both parent classes.
|
||||
|
||||
|
@ -526,9 +526,8 @@ class Rj45Node(CoreNodeBase, CoreInterface):
|
|||
:param z: z position
|
||||
:return: True if position changed, False otherwise
|
||||
"""
|
||||
result = CoreNodeBase.setposition(self, x, y, z)
|
||||
CoreInterface.setposition(self, x, y, z)
|
||||
return result
|
||||
CoreNodeBase.setposition(self, x, y, z)
|
||||
CoreInterface.setposition(self)
|
||||
|
||||
def termcmdstring(self, sh: str) -> str:
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue