1 /* -*- Mode: C++ -*- *****************************************************
3 * Written by Durk Talsma. Started May 5, 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.
20 **************************************************************************/
22 /**************************************************************************
23 * ScheduledFlight is a class that is used by FlightGear's Traffic Manager
24 * A scheduled flight can be assigned to a schedule, which can be assigned
25 * to an aircraft. The traffic manager decides for each schedule which
26 * scheduled flight (if any) is currently active. I no scheduled flights
27 * are found active, it tries to position the aircraft associated with this
28 * schedule at departure airport of the next scheduled flight.
29 * The class ScheduledFlight is a software implimentation of this.
30 * In summary, this class stores arrival and departure information, as well
31 * as some administrative data, such as the callsign of this particular
32 * flight (used in future ATC scenarios), under which flight rules the
33 * flight is taking place, as well as a requested initial cruise altitude.
34 * Finally, the class contains a repeat period, wich indicates after how
35 * many seconds a flight should repeat in this schedule (which is usually
36 * after either a day or a week). If this value is zero, this flight won't
38 **************************************************************************/
40 #ifndef _FGSCHEDFLIGHT_HXX_
41 #define _FGSCHEDFLIGHT_HXX_
49 class FGScheduledFlight
54 FGAirport *departurePort;
55 FGAirport *arrivalPort;
58 string requiredAircraft;
71 FGScheduledFlight(const FGScheduledFlight &other);
72 // FGScheduledFlight(const string);
73 FGScheduledFlight(const string& cs,
78 const string& deptime,
79 const string& arrtime,
86 bool initializeAirports();
88 void adjustTime(time_t now);
90 time_t getDepartureTime() { return departureTime; };
91 time_t getArrivalTime () { return arrivalTime; };
93 void setDepartureAirport(string port) { depId = port; };
94 void setArrivalAirport (string port) { arrId = port; };
95 FGAirport *getDepartureAirport();
96 FGAirport *getArrivalAirport ();
98 int getCruiseAlt() { return cruiseAltitude; };
100 bool operator<(const FGScheduledFlight &other) const
102 return (departureTime < other.departureTime);
104 string& getFlightRules() { return fltRules; };
106 time_t processTimeString(const string& time);
107 const string& getCallSign() {return callsign; };
108 const string& getRequirement() { return requiredAircraft; }
110 void lock() { available = false; };
111 void release() { available = true; };
113 bool isAvailable() { return available; };
115 void setCallSign(string val) { callsign = val; };
116 void setFlightRules(string val) { fltRules = val; };
119 typedef vector<FGScheduledFlight*> FGScheduledFlightVec;
120 typedef vector<FGScheduledFlight*>::iterator FGScheduledFlightVecIterator;
122 typedef std::map < std::string, FGScheduledFlightVec > FGScheduledFlightMap;
124 bool compareScheduledFlights(FGScheduledFlight *a, FGScheduledFlight *b);