1 // dynamics.hxx - a class to manage the higher order airport ground activities
2 // Written by Durk Talsma, started December 2004.
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License as
7 // published by the Free Software Foundation; either version 2 of the
8 // License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful, but
11 // WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 #ifndef _AIRPORT_DYNAMICS_HXX_
23 #define _AIRPORT_DYNAMICS_HXX_
27 # error This library requires C++
32 class FGAirportDynamics : public XMLVisitor {
35 double _longitude; // degrees
36 double _latitude; // degrees
37 double _elevation; // ft
40 FGParkingVec parkings;
41 FGRunwayPreference rwyPrefs;
42 FGGroundNetwork groundNetwork;
45 string prevTrafficType;
48 stringVec currentlyActive;
50 // Experimental keep a running average of wind dir and speed to prevent
51 // Erratic runway changes.
52 // Note: I should add these to the copy constructor and assigment operator to be
54 double avWindHeading [10];
55 double avWindSpeed [10];
57 string chooseRunwayFallback();
60 FGAirportDynamics(double, double, double, string);
61 FGAirportDynamics(const FGAirportDynamics &other);
66 double getLongitude() const { return _longitude;};
68 double getLatitude() const { return _latitude; };
70 double getElevation() const { return _elevation;};
72 void getActiveRunway(const string& trafficType, int action, string& runway);
73 bool getAvailableParking(double *lat, double *lon,
74 double *heading, int *gate, double rad, const string& fltype,
75 const string& acType, const string& airline);
76 void getParking (int id, double *lat, double* lon, double *heading);
77 FGParking *getParking(int i);
78 void releaseParking(int id);
79 string getParkingName(int i);
80 //FGAirport *getAddress() { return this; };
81 //const string &getName() const { return _name;};
84 FGGroundNetwork* getGroundNetwork() { return &groundNetwork; };
87 void setRwyUse(const FGRunwayPreference& ref);
89 // Some overloaded virtual XMLVisitor members
90 virtual void startXML ();
91 virtual void endXML ();
92 virtual void startElement (const char * name, const XMLAttributes &atts);
93 virtual void endElement (const char * name);
94 virtual void data (const char * s, int len);
95 virtual void pi (const char * target, const char * data);
96 virtual void warning (const char * message, int line, int column);
97 virtual void error (const char * message, int line, int column);