45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
import pytz
|
|
|
|
from datetime import datetime
|
|
|
|
from aman.com import AircraftReport_pb2
|
|
from aman.sys.WeatherModel import WeatherModel
|
|
from aman.types.PerformanceData import PerformanceData
|
|
|
|
class Inbound:
|
|
def __init__(self, report : AircraftReport_pb2.AircraftReport, performanceData : PerformanceData):
|
|
self.Report = report
|
|
self.Callsign = report.aircraft.callsign
|
|
self.CurrentPosition = report.position
|
|
self.ReportTime = datetime.strptime(report.reportTime + '+0000', '%Y%m%d%H%M%S%z').replace(tzinfo = pytz.UTC)
|
|
self.EnrouteArrivalTime = None
|
|
self.InitialArrivalTime = None
|
|
self.RequestedRunway = None
|
|
self.PlannedArrivalTime = None
|
|
self.PlannedRunway = None
|
|
self.PlannedStar = None
|
|
self.PlannedArrivalRoute = None
|
|
self.PlannedTrackmiles = None
|
|
self.FixedSequence = False
|
|
self.ExpectedRunway = None
|
|
self.AssignmentMode = None
|
|
self.HasValidSequence = False
|
|
self.WTC = None
|
|
|
|
# analyze the WTC
|
|
wtc = report.aircraft.wtc.upper()
|
|
if 'L' == wtc or 'M' == wtc or 'H' == wtc or 'J' == wtc:
|
|
self.WTC = wtc
|
|
|
|
# analyze the requested runway
|
|
if '' != report.requestedRunway:
|
|
self.RequestedRunway = report.requestedRunway
|
|
|
|
# search performance data -> fallback to A320
|
|
if self.Report.aircraft.type in performanceData.Aircrafts:
|
|
self.PerformanceData = performanceData.Aircrafts[self.Report.aircraft.type]
|
|
if None == self.PerformanceData:
|
|
self.PerformanceData = performanceData.Aircrafts['A320']
|