AMAN.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python
  2. import glob
  3. import os
  4. import sys
  5. from aman.com.Euroscope import Euroscope
  6. from aman.config.AircraftPerformance import AircraftPerformance
  7. from aman.config.Airport import Airport
  8. from aman.config.System import System
  9. from aman.sys.Worker import Worker
  10. class AMAN:
  11. def findConfigPath():
  12. envvar = os.environ.get('AMAN_CONFIG_PATH')
  13. if None == envvar:
  14. print('No AMAN_CONFIG_PATH in environment variables found. Using execution directory.')
  15. path = os.getcwd()
  16. else:
  17. print('AMAN_CONFIG_PATH found.')
  18. path = envvar
  19. print('Config-path: ' + path)
  20. return path
  21. def __init__(self):
  22. # default initialization of members
  23. self.systemConfig = None
  24. self.aircraftPerformance = None
  25. self.receiver = None
  26. self.workers = []
  27. configPath = AMAN.findConfigPath()
  28. # read all system relevant configuration files
  29. self.systemConfig = System(os.path.join(configPath, 'System.ini'))
  30. print('Parsed System.ini')
  31. # read the aircraft performance data
  32. self.aircraftPerformance = AircraftPerformance(os.path.join(configPath, 'PerformanceData.ini'))
  33. if None == self.aircraftPerformance:
  34. sys.stderr.write('No aircraft performance data found!')
  35. sys.exit(-1)
  36. else:
  37. print('Parsed PerformanceData.ini. Extracted ' + str(len(self.aircraftPerformance.aircrafts)) + ' aircrafts')
  38. # find the airport configurations and create the workers
  39. airportsPath = os.path.join(os.path.join(configPath, 'airports'), '*.ini')
  40. for file in glob.glob(airportsPath):
  41. icao = os.path.splitext(os.path.basename(file))[0]
  42. print('Parsing planner configuration for ' + icao)
  43. airportConfig = Airport(file, icao)
  44. # initialize the worker thread
  45. worker = Worker(icao, airportConfig)
  46. worker.start()
  47. self.workers.append(worker)
  48. print('Starter worker for ' + icao)
  49. # create the EuroScope receiver
  50. self.receiver = Euroscope(configPath, self.systemConfig.Server)
  51. def __del__(self):
  52. if None != self.receiver:
  53. del self.receiver
  54. self.receiver = None
  55. for worker in self.workers:
  56. worker.stop()