Design & API

Section author: Luke Frisken <l.frisken@gmail.com>

Java API (All Packages)

This contains the javadoc generated api documentation.

Flight Data

The :java:extdoc`com.atc.simulator.flightdata` package provides classes for dealing with flight information data.

The com.atc.simulator.prediction_service is the core component of this project. It functions as a standalone unit capable of taking input in the form of radar or ADSB tracks, then processing and creating predictions in order to output predictions to a display. It is designed such that the prediction service could run on a seperate machine on the network, with its inputs and outputs being network sockets/streams.

The com.atc.simulator.prediction_service.engine.algorithms.java package contains all of the java implementations for the different algorithm types.

The display is designed to be a high performance opengl application. It achieves this aim by using libgdx’s models api to create instances of the draw geometry to get stored in the gpu vertex buffers.

The com.atc.simulator.display package contains all the display functionality for this application.

Vectors Package

The com.atc.simulator.vectors package consists of various important base types used to represent and manipulate the vector data in this project which are not already supplied by the libraries it depends on.

This project uses Google’s Protocol Buffers to serialize data for inter-thread/inter-process/network communication between its modules.

Design Diagrams

../../_images/Class_Design.svg

Class Design

The class diagram is a simplified overview, take a look at the specific package documentation (all listed on this page) for detailed diagrams of each package.

../../_images/System_Design.svg

System Design

The system design diagram shows the thread/process/logic seperation of the project. The ATC Simulator process actually also contains the Prediction Service at this point, but for a real implementation (as shown on the diagram), this would be placed in its own own process, able to operate independently of the simulator (and headlessly) using external commercial grade Servers and Display for the data input and output pipes via network communication.