merged latest from develop

This commit is contained in:
Blake Harnden 2020-03-22 13:52:26 -07:00
commit c264634b5f
10 changed files with 78 additions and 62 deletions

View file

@ -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

View file

@ -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:
"""

View file

@ -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]:
"""

View file

@ -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:
"""