Obviously, radio communications are at the heart of this sim, so here is an example of how a transmission from an aircraft object, makes it to an air traffic controller object:
The Aircraft queries the Frequency Manager to see if it is clear to transmit on the frequency currently tuned to by its Radio. It also passes the message, so the Frequency Manager can determine the context. For example, if NWA123 has not yet contacted the controller, the Frequency Manager will check if the controller or any other vehicle is waiting for a reply. If not, it will pass on the message and return a “transmitted” notification back to the aircraft.
If the frequency is clear, the Frequency Manager dispatches the message to the ATC Collection.
The ATC Collection then attempts to find the controller that the message is intended for, and passes the message to it.
The Frequency Manager object was created to keep track of all the logistics associated with each frequency in use. Without it, you could simply pass a message directly, say from a human controller to a particular aircraft, but then you wouldn’t have any entitly tracking things like: is someone currently talking on this frequency?, is someone waiting for a reply? The Frequency Manager becomes the object that all other objects implementing the Radio interface can talk to, without knowing about the other types of objects capable of receiving the transmission. Another example where this setup makes sense: a controller transmits to an emergency vehicle without having to know how to get it’s message to an “emergency vehicle” object. It just has to transmit to the Frequency Manager.