]> git.mxchange.org Git - flightgear.git/blob - src/Instrumentation/KLN89/kln89_page_apt.hxx
James Turner: Improved runway management code:
[flightgear.git] / src / Instrumentation / KLN89 / kln89_page_apt.hxx
1 // kln89_page_*.[ch]xx - this file is one of the "pages" that
2 //                       are used in the KLN89 GPS unit simulation. 
3 //
4 // Written by David Luff, started 2005.
5 //
6 // Copyright (C) 2005 - David C Luff - david.luff@nottingham.ac.uk
7 //
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as
10 // published by the Free Software Foundation; either version 2 of the
11 // License, or (at your option) any later version.
12 //
13 // This program is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 // General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 //
22 // $Id$
23
24 #ifndef _KLN89_PAGE_APT
25 #define _KLN89_PAGE_APT
26
27 #include "kln89.hxx"
28
29 #include <Airports/runways.hxx>
30
31 struct AptFreq {
32         string service;
33         unsigned short int freq;
34 };
35
36 class KLN89AptPage : public KLN89Page {
37
38 public:
39         KLN89AptPage(KLN89* parent);
40         ~KLN89AptPage();
41         
42         void Update(double dt);
43
44         void CrsrPressed();
45         void ClrPressed();
46         void EntPressed();
47         void Knob1Left1();
48         void Knob1Right1();
49         void Knob2Left1();
50         void Knob2Right1();
51         
52         void SetId(const string& s);
53         
54 private:
55         // Update the cached airport details
56         void UpdateAirport(const string& id);
57
58         string _apt_id;
59         string _last_apt_id;
60         string _save_apt_id;
61         const FGAirport* ap;
62         
63         vector<FGRunway> _aptRwys;
64         vector<AptFreq> _aptFreqs;
65         
66         iap_list_type _iaps;
67         unsigned int _curIap;   // The index into _iaps of the IAP we are currently selecting
68         vector<GPSWaypoint*> _IAF;      // The initial approach fix(es)
69         vector<GPSWaypoint*> _IAP;      // The compulsory waypoints of the approach procedure (may duplicate one of the above).
70                                                                 // _IAP includes the FAF and MAF.
71         vector<GPSWaypoint*> _MAP;      // The missed approach procedure (doesn't include the MAF).
72         unsigned int _curIaf;   // The index into _IAF of the IAF we are currently selecting, and then remembered as the one we selected
73         
74         // Position in rwy pages
75         unsigned int _curRwyPage;
76         unsigned int _nRwyPages;
77         
78         // Position in freq pages
79         unsigned int _curFreqPage;
80         unsigned int _nFreqPages;
81         
82         // Position in IAP list (0-based number of first IAP displayed)
83         unsigned int _iapStart;
84         // ditto for IAF list (can't test this since can't find an approach with > 3 IAF at the moment!)
85         unsigned int _iafStart;
86         // ditto for list of approach fixes when asking load confirmation
87         unsigned int _fStart;
88         
89         // Various IAP related dialog states that we might need to remember
90         bool _iafDialog;
91         bool _addDialog;
92         bool _replaceDialog;
93 };
94
95 #endif  // _KLN89_PAGE_APT