]> git.mxchange.org Git - flightgear.git/blobdiff - src/Airports/dynamics.hxx
Compilation error fixes following merge with next.
[flightgear.git] / src / Airports / dynamics.hxx
index 3c787a9345fb186657ed11aab8ec1d5b12e48a8e..d3dbedaa27b50256e600b5215632e7bf0cf1f1a3 100644 (file)
@@ -14,7 +14,7 @@
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 // $Id$
 
 #ifndef _AIRPORT_DYNAMICS_HXX_
 #define _AIRPORT_DYNAMICS_HXX_
 
+#include <ATC/trafficcontrol.hxx>
+#include "parking.hxx"
+#include "groundnetwork.hxx"
+#include "runwayprefs.hxx"
+#include "sidstar.hxx"
 
-#ifndef __cplusplus                                                          
-# error This library requires C++
-#endif                        
+// forward decls
+class FGAirport;
+class FGEnvironment;
 
-  
+class FGAirportDynamics {
 
-class FGAirportDynamics : public XMLVisitor {
-  
 private:
-  double _longitude;    // degrees
-  double _latitude;     // degrees
-  double _elevation;    // ft
-  string _id;
+  FGAirport* _ap;
 
-  FGParkingVec parkings;
-  FGRunwayPreference rwyPrefs;
-  FGGroundNetwork groundNetwork;
+  FGParkingVec         parkings;
+  FGRunwayPreference   rwyPrefs;
+  FGSidStar            SIDs;
+  FGStartupController  startupController;
+  FGGroundNetwork      groundNetwork;
+  FGTowerController    towerController;
+  FGApproachController approachController;
 
   time_t lastUpdate;
-  string prevTrafficType;
+  std::string prevTrafficType;
   stringVec landing;
   stringVec takeoff;
+  stringVec milActive, comActive, genActive, ulActive;
+  stringVec *currentlyActive;
+  intVec freqAwos;     // </AWOS>
+  intVec freqUnicom;   // </UNICOM>
+  intVec freqClearance;// </CLEARANCE>
+  intVec freqGround;   // </GROUND>
+  intVec freqTower;    // </TOWER>
+  intVec freqApproach; // </APPROACH>
+
+  int atisSequenceIndex;
+  double atisSequenceTimeStamp;
+  
+  std::string chooseRunwayFallback();
+  bool innerGetActiveRunway(const std::string &trafficType, int action, std::string &runway, double heading);
+  std::string chooseRwyByHeading(stringVec rwys, double heading);
 
-  // Experimental keep a running average of wind dir and speed to prevent
-  // Erratic runway changes. 
-  // Note: I should add these to the copy constructor and assigment operator to be
-  // constistent
-  double avWindHeading [10];
-  double avWindSpeed   [10];
-
-  string chooseRunwayFallback();
+  double elevation;
 
 public:
-  FGAirportDynamics(double, double, double, string);
-  FGAirportDynamics(const FGAirportDynamics &other);
+  FGAirportDynamics(FGAirport* ap);
   ~FGAirportDynamics();
 
+  void addAwosFreq     (int val) { freqAwos.push_back(val);      };
+  void addUnicomFreq   (int val) { freqUnicom.push_back(val);    };
+  void addClearanceFreq(int val) { freqClearance.push_back(val); };
+  void addGroundFreq   (int val) { freqGround.push_back(val);    };
+  void addTowerFreq    (int val) { freqTower.push_back(val);     };
+  void addApproachFreq (int val) { freqApproach.push_back(val);  };
 
   void init();
-  double getLongitude() const { return _longitude;};
+  double getLongitude() const
   // Returns degrees
-  double getLatitude()  const { return _latitude; };
+  double getLatitude()  const
   // Returns ft
-  double getElevation() const { return _elevation;};
+  double getElevation() const; 
+  const string& getId() const; 
   
-  void getActiveRunway(const string& trafficType, int action, string& runway);
+  void getActiveRunway(const string& trafficType, int action, string& runway, double heading);
+
+  void addParking(FGParking& park);
   bool getAvailableParking(double *lat, double *lon, 
                           double *heading, int *gate, double rad, const string& fltype, 
                           const string& acType, const string& airline);
@@ -76,24 +96,32 @@ public:
   FGParking *getParking(int i);
   void releaseParking(int id);
   string getParkingName(int i); 
+  int getNrOfParkings() { return parkings.size(); };
   //FGAirport *getAddress() { return this; };
   //const string &getName() const { return _name;};
   // Returns degrees
 
- FGGroundNetwork* getGroundNetwork() { return &groundNetwork; };
+  // Departure / Arrival procedures
+  FGSidStar * getSIDs() { return &SIDs; };
+  FGAIFlightPlan * getSID(string activeRunway, double heading);
+
+
+  // ATC related functions. 
+  FGStartupController    *getStartupController()    { return &startupController; };
+  FGGroundNetwork        *getGroundNetwork()        { return &groundNetwork; };
+  FGTowerController      *getTowerController()      { return &towerController; };
+  FGApproachController   *getApproachController()   { return &approachController; };
+
+  int getGroundFrequency(unsigned leg);
+  int getTowerFrequency  (unsigned nr);
   
+  /// get current ATIS sequence letter
+  const std::string getAtisSequence();
 
-  void setRwyUse(const FGRunwayPreference& ref);
+  /// get the current ATIS sequence number, updating it if necessary
+  int updateAtisSequence(int interval, bool forceUpdate);
 
- // Some overloaded virtual XMLVisitor members
-  virtual void startXML (); 
-  virtual void endXML   ();
-  virtual void startElement (const char * name, const XMLAttributes &atts);
-  virtual void endElement (const char * name);
-  virtual void data (const char * s, int len);
-  virtual void pi (const char * target, const char * data);
-  virtual void warning (const char * message, int line, int column);
-  virtual void error (const char * message, int line, int column);
+  void setRwyUse(const FGRunwayPreference& ref);
 };