X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FATC%2FATCmgr.hxx;h=d8546add39d4f4b49e732af441dc5a0eb93a4a5d;hb=0adae696aad246f2316e2d1dfea43d3291cec585;hp=483568f3a814b8f267118c2d90f0f93e54e70529;hpb=c70faa4c0de66e4d6cc23931ac7971f3a81b30f1;p=flightgear.git diff --git a/src/ATC/ATCmgr.hxx b/src/ATC/ATCmgr.hxx index 483568f3a..d8546add3 100644 --- a/src/ATC/ATCmgr.hxx +++ b/src/ATC/ATCmgr.hxx @@ -22,7 +22,8 @@ #ifndef _FG_ATCMGR_HXX #define _FG_ATCMGR_HXX -#include
+#include + #include
#include @@ -62,19 +63,23 @@ struct AirportATC { //bool approach_active; //float departure_freq; //bool departure_active; + + // NOTE - the *_active flags determine whether the service is active in atc_list, + // *NOT* whether the tower etc is closed or not!!!! // Flags to ensure the stations don't get wrongly deactivated bool set_by_AI; // true when the AI manager has activated this station - // Do we need to ref-count the number of AI planes setting this? - bool set_by_comm_search; // true when the comm_search has activated this station - // Do we need to distingiush comm1 and comm2? + unsigned int numAI; // Ref count of the number of AI planes registered + bool set_by_comm[2][ATC_NUM_TYPES]; // true when the relevant comm_freq has activated this station and type }; -class FGATCMgr : public FGSubsystem +class FGATCMgr : public SGSubsystem { private: + bool initDone; // Hack - guard against update getting called before init + // A map of airport ID vs frequencies and ATC provision typedef map < string, AirportATC* > airport_atc_map_type; typedef airport_atc_map_type::iterator airport_atc_map_iterator; @@ -159,6 +164,7 @@ public: bool GetAirportATCDetails(string icao, AirportATC* a); // Return a pointer to a given sort of ATC at a given airport and activate if necessary + // Returns NULL if service doesn't exist - calling function should check for this. FGATC* GetATCPointer(string icao, atc_type type); // Display a dialog box with options relevant to the currently tuned ATC service. @@ -178,6 +184,16 @@ public: atc_type GetComm2ATCType() { return(comm_type[1]); } FGATC* GetComm2ATCPointer() { return(comm_atc_ptr[1]); } + // Get the frequency of a given service at a given airport + // Returns zero if not found + unsigned short int GetFrequency(string ident, atc_type tp); + + // Register the fact that the AI system wants to activate an airport + bool AIRegisterAirport(string ident); + + // Register the fact that the comm radio is tuned to an airport + bool CommRegisterAirport(string ident, int chan, atc_type tp); + private: // Remove a class from the atc_list and delete it from memory