_dto = false;
_fullLegMode = true;
_obsHeading = 215;
+
+ // User-settable configuration. Eventually this should be user-achivable in order that settings can be persistent between sessions.
+ _altUnits = GPS_ALT_UNITS_FT;
+ _baroUnits = GPS_PRES_UNITS_IN;
+ _velUnits = GPS_VEL_UNITS_KT;
+ _distUnits = GPS_DIST_UNITS_NM;
+ _suaAlertEnabled = false;
+ _altAlertEnabled = false;
+ _minDisplayBrightness = 4;
+ _defaultFirstChar = 'A';
if(_baroUnits == GPS_PRES_UNITS_IN) {
_userBaroSetting = 2992;
_mapScaleIndex = 7; // I think that the above is more accurate for no-flightplan default, but this is more sane for initial testing!
_mapScaleAuto = true;
- // Configuration. Eventually this may be user-achivable in order that settings can be persistent between sessions.
- _suaAlertEnabled = false;
- _altAlertEnabled = false;
- _minDisplayBrightness = 4;
- _defaultFirstChar = 'A';
-
// Mega-hack - hardwire airport town and state names for the FG base area since we don't have any data for these at the moment
// TODO - do this better one day!
_airportTowns["KSFO"] = "San Francisco";
*/
}
+void KLN89::SetBaroUnits(int n, bool wrap) {
+ if(n < 1) {
+ _baroUnits = (KLN89PressureUnits)(wrap ? 3 : 1);
+ } else if(n > 3) {
+ _baroUnits = (KLN89PressureUnits)(wrap ? 1 : 3);
+ } else {
+ _baroUnits = (KLN89PressureUnits)n;
+ }
+}
+
void KLN89::Knob1Right1() {
if(_mode == KLN89_MODE_DISP) {
_activePage->LooseFocus();
KLN89_MODE_CRSR
};
+enum KLN89DistanceUnits {
+ GPS_DIST_UNITS_NM = 0,
+ GPS_DIST_UNITS_KM
+};
+
+enum KLN89SpeedUnits {
+ GPS_VEL_UNITS_KT,
+ GPS_VEL_UNITS_KPH
+};
+
+enum KLN89AltitudeUnits {
+ GPS_ALT_UNITS_FT,
+ GPS_ALT_UNITS_M
+};
+
+enum KLN89PressureUnits {
+ GPS_PRES_UNITS_IN = 1,
+ GPS_PRES_UNITS_MB,
+ GPS_PRES_UNITS_HP
+};
+
/*
const char* KLN89TimeCodes[20] = { "UTC", "GST", "GDT", "ATS", "ATD", "EST", "EDT", "CST", "CDT", "MST",
"MDT", "PST", "PDT", "AKS", "AKD", "HAS", "HAD", "SST", "SDT", "LCL" };
void init();
void update(double dt);
+ // Set Units
+ // m if true, ft if false
+ inline void SetAltUnitsSI(bool b) { _altUnits = (b ? GPS_ALT_UNITS_M : GPS_ALT_UNITS_FT); }
+ // Returns true if alt units are SI (m), false if ft
+ inline bool GetAltUnitsSI() { return(_altUnits == GPS_ALT_UNITS_M ? true : false); }
+ // km and k/h if true, nm and kt if false
+ inline void SetDistVelUnitsSI(bool b) { _distUnits = (b ? GPS_DIST_UNITS_KM : GPS_DIST_UNITS_NM); _velUnits = (b ? GPS_VEL_UNITS_KPH : GPS_VEL_UNITS_KT); }
+ // Returns true if dist/vel units are SI
+ inline bool GetDistVelUnitsSI() { return(_distUnits == GPS_DIST_UNITS_KM && _velUnits == GPS_VEL_UNITS_KPH ? true : false); }
+ // Set baro units - 1 = in, 2 = mB, 3 = hP Wrapping if for the convienience of the GPS setter.
+ void SetBaroUnits(int n, bool wrap = false);
+ // Get baro units: 1 = in, 2 = mB, 3 = hP
+ inline int GetBaroUnits() { return((int)_baroUnits); }
+
inline void SetTurnAnticipation(bool b) { _turnAnticipationEnabled = b; }
inline bool GetTurnAnticipation() { return(_turnAnticipationEnabled); }
bool _dtoReview; // Set true when we a reviewing a waypoint for DTO operation.
// Configuration settings that the user can set via. the KLN89 SET pages.
+ KLN89SpeedUnits _velUnits;
+ KLN89DistanceUnits _distUnits;
+ KLN89PressureUnits _baroUnits;
+ KLN89AltitudeUnits _altUnits;
bool _suaAlertEnabled; // Alert user to potential SUA entry
bool _altAlertEnabled; // Alert user to min safe alt violation
int _minDisplayBrightness; // Minimum display brightness in low light.
_instrument = instrument;
_nFields = 1;
_maxFields = 2;
-
- // Units - lets default to US units - FG can set them to other units from config during startup if desired.
- _altUnits = GPS_ALT_UNITS_FT;
- _baroUnits = GPS_PRES_UNITS_IN;
- _velUnits = GPS_VEL_UNITS_KT;
- _distUnits = GPS_DIST_UNITS_NM;
_lon_node = fgGetNode("/instrumentation/gps/indicated-longitude-deg", true);
_lat_node = fgGetNode("/instrumentation/gps/indicated-latitude-deg", true);
void DCLGPS::DrawText(const string& s, int field, int px, int py, bool bold) {
}
-void DCLGPS::SetBaroUnits(int n, bool wrap) {
- if(n < 1) {
- _baroUnits = (GPSPressureUnits)(wrap ? 3 : 1);
- } else if(n > 3) {
- _baroUnits = (GPSPressureUnits)(wrap ? 1 : 3);
- } else {
- _baroUnits = (GPSPressureUnits)n;
- }
-}
-
void DCLGPS::CreateDefaultFlightPlans() {}
// Get the time to the active waypoint in seconds.
class FGAirport;
class FGFix;
-enum GPSDistanceUnits {
- GPS_DIST_UNITS_NM = 0,
- GPS_DIST_UNITS_KM
-};
-
-enum GPSSpeedUnits {
- GPS_VEL_UNITS_KT,
- GPS_VEL_UNITS_KPH
-};
-
-enum GPSAltitudeUnits {
- GPS_ALT_UNITS_FT,
- GPS_ALT_UNITS_M
-};
-
-enum GPSPressureUnits {
- GPS_PRES_UNITS_IN = 1,
- GPS_PRES_UNITS_MB,
- GPS_PRES_UNITS_HP
-};
-
// --------------------- Waypoint / Flightplan stuff -----------------------------
// This should be merged with other similar stuff in FG at some point.
// Set the number of fields
inline void SetNumFields(int n) { _nFields = (n > _maxFields ? _maxFields : (n < 1 ? 1 : n)); }
- // Set Units
- // m if true, ft if false
- inline void SetAltUnitsSI(bool b) { _altUnits = (b ? GPS_ALT_UNITS_M : GPS_ALT_UNITS_FT); }
- // Returns true if alt units are SI (m), false if ft
- inline bool GetAltUnitsSI() { return(_altUnits == GPS_ALT_UNITS_M ? true : false); }
- // km and k/h if true, nm and kt if false
- inline void SetDistVelUnitsSI(bool b) { _distUnits = (b ? GPS_DIST_UNITS_KM : GPS_DIST_UNITS_NM); _velUnits = (b ? GPS_VEL_UNITS_KPH : GPS_VEL_UNITS_KT); }
- // Returns true if dist/vel units are SI
- inline bool GetDistVelUnitsSI() { return(_distUnits == GPS_DIST_UNITS_KM && _velUnits == GPS_VEL_UNITS_KPH ? true : false); }
- // Set baro units - 1 = in, 2 = mB, 3 = hP Wrapping if for the convienience of the GPS setter.
- void SetBaroUnits(int n, bool wrap = false);
- // Get baro units: 1 = in, 2 = mB, 3 = hP
- inline int GetBaroUnits() { return((int)_baroUnits); }
-
// It is expected that specific GPS units will override these functions.
// Increase the CDI full-scale deflection (ie. increase the nm per dot) one (GPS unit dependent) increment. Wraps if necessary (GPS unit dependent).
virtual void CDIFSDIncrease();
// 2D rendering area
RenderArea2D* _instrument;
- // Units
- GPSSpeedUnits _velUnits;
- GPSDistanceUnits _distUnits;
- GPSPressureUnits _baroUnits;
- GPSAltitudeUnits _altUnits;
-
// CDI full-scale deflection, specified either as an index into a vector of values (standard values) or as a double precision float (intermediate values).
// This will influence how an externally driven CDI will display as well as the NAV1 page.
// Hence the variables are located here, not in the nav page class.