8#ifndef ATC_CONTROLLER_HXX
9#define ATC_CONTROLLER_HXX
16#include <osg/Geometry>
17#include <osg/MatrixTransform>
20#include <simgear/compiler.h>
21#include <simgear/constants.h>
22#include <simgear/debug/logstream.hxx>
23#include <simgear/structure/SGReferenced.hxx>
24#include <simgear/structure/SGSharedPtr.hxx>
147 double lat,
double lon,
148 double hdg,
double spd,
double alt,
double radius,
int leg,
151 double heading,
double speed,
double alt,
double dt) = 0;
155 SGSharedPtr<FGTrafficRecord>
getRecord(
int id)
const;
156 virtual void handover(SGSharedPtr<FGTrafficRecord> aiObject,
int leg);
std::default_random_engine generator
virtual void updateAircraftInformation(int id, SGGeod geod, double heading, double speed, double alt, double dt)=0
void clearTrafficControllers()
bool hasInstruction(int id)
TrafficVectorIterator searchActiveTraffic(int id) const
Search activeTraffic vector to find matching id.
TrafficVector & getActiveTraffic()
virtual void update(double)=0
bool isUserAircraft(FGAIAircraft *)
virtual void handover(SGSharedPtr< FGTrafficRecord > aiObject, int leg)
We share the traffic record much like real life.
virtual ~FGATCController()
virtual void signOff(int id)
Sign off the aircraft with the id from this controller.
FGAirportDynamics * parent
void setAirportGroundRadar(SGSharedPtr< AirportGroundRadar > groundRadar)
virtual void announcePosition(int id, FGAIFlightPlan *intendedRoute, int currentRoute, double lat, double lon, double hdg, double spd, double alt, double radius, int leg, FGAIAircraft *aircraft)=0
SGSharedPtr< FGTrafficRecord > getRecord(int id) const
FGATCInstruction getInstruction(int id)
SGSharedPtr< AirportGroundRadar > airportGroundRadar
TrafficVector activeTraffic
virtual int getFrequency()=0
Returns the frequency to be used.
virtual void render(bool)=0
virtual std::string getName() const =0
void transmit(FGTrafficRecord *rec, FGAirportDynamics *parent, AtcMsgId msgId, AtcMsgDir msgDir, bool audible)
std::string genTransponderCode(const std::string &fltRules)
@ MSG_ACKNOWLEDGE_CLEARED_TO_LAND
@ MSG_ANNOUNCE_ENGINE_START
@ MSG_HOLD_PUSHBACK_CLEARANCE
@ MSG_ACKNOWLEDGE_INITIATE_CONTACT
@ MSG_REQUEST_TAXI_CLEARANCE
@ MSG_ISSUE_TAXI_CLEARANCE
@ MSG_ACKNOWLEDGE_CLEARED_FOR_TAKEOFF
@ MSG_ACKNOWLEDGE_REPORT_RUNWAY_HOLD_SHORT
@ MSG_ACKNOWLEDGE_TAXI_PARK
@ MSG_SWITCH_TOWER_FREQUENCY
@ MSG_ACKNOWLEDGE_ARRIVAL
@ MSG_PERMIT_PUSHBACK_CLEARANCE
@ MSG_ACKNOWLEDGE_SWITCH_GROUND_FREQUENCY
@ MSG_REQUEST_PUSHBACK_CLEARANCE
@ MSG_ACKNOWLEDGE_ENGINE_START
@ MSG_ACKNOWLEDGE_HOLD_POSITION
@ MSG_ACKNOWLEDGE_RESUME_TAXI
@ MSG_ACKNOWLEDGE_SWITCH_TOWER_FREQUENCY
@ MSG_ACKNOWLEDGE_TAXI_CLEARANCE
@ MSG_PERMIT_ENGINE_START
@ MSG_CLEARED_FOR_TAKEOFF
@ MSG_REQUEST_ENGINE_START
@ MSG_REPORT_RUNWAY_HOLD_SHORT
std::string formatATCFrequency3_2(int)
bool checkTransmissionState(int minState, int MaxState, TrafficVectorIterator i, time_t now, AtcMsgId msgId, AtcMsgDir msgDir)
std::string getGateName(FGAIAircraft *aircraft)
@ ACK_SWITCH_GROUND_TOWER
std::list< SGSharedPtr< FGTrafficRecord > >::const_iterator TrafficVectorIterator
std::list< SGSharedPtr< FGTrafficRecord > > TrafficVector