1
0
Fork 0

KLN89: Move units configuration out of dclgps and into KLN89

This commit is contained in:
Dave Luff 2010-12-09 23:32:55 +00:00
parent 2102c3c9ff
commit d73a3cd207
4 changed files with 59 additions and 63 deletions

View file

@ -199,6 +199,16 @@ KLN89::KLN89(RenderArea2D* instrument)
_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;
@ -232,12 +242,6 @@ KLN89::KLN89(RenderArea2D* instrument)
_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";
@ -462,6 +466,16 @@ void KLN89::CreateDefaultFlightPlans() {
*/
}
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();

View file

@ -41,6 +41,27 @@ enum KLN89Mode {
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" };
@ -80,6 +101,20 @@ public:
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); }
@ -302,6 +337,10 @@ private:
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.

View file

@ -152,12 +152,6 @@ DCLGPS::DCLGPS(RenderArea2D* instrument) {
_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);
@ -1098,16 +1092,6 @@ void DCLGPS::DrawChar(char c, int field, int px, int py, bool bold) {
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.

View file

@ -43,27 +43,6 @@ class FGNavRecord;
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.
@ -216,20 +195,6 @@ public:
// 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();
@ -317,12 +282,6 @@ protected:
// 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.