|
@@ -143,3 +143,22 @@ class RunwayManager:
|
|
|
eta = candidate
|
|
|
|
|
|
return selectedRunway, eta, lostTime
|
|
|
+
|
|
|
+ def registerNode(self, node : Node, runway : str):
|
|
|
+ self.RunwayInbounds[runway] = node
|
|
|
+
|
|
|
+ # find the corresponding IAF
|
|
|
+ iaf = node.ArrivalCandidates[runway].ArrivalRoute[0].Waypoint.Name
|
|
|
+ if iaf in self.IafInbounds:
|
|
|
+ delta = 100000.0
|
|
|
+ targetLevel = None
|
|
|
+
|
|
|
+ # find the planned level
|
|
|
+ for level in self.IafInbounds[iaf]:
|
|
|
+ difference = abs(level - node.ArrivalCandidates[runway].ArrivalRoute[0].Altitude)
|
|
|
+ if difference < delta:
|
|
|
+ delta = difference
|
|
|
+ targetLevel = level
|
|
|
+
|
|
|
+ if targetLevel in self.IafInbounds[iaf]:
|
|
|
+ self.IafInbounds[iaf][targetLevel] = node
|