9dc5c9ca22
- the panel uses much, much less texture memory, and draws much faster, at least on my hardware - there is a wet (magnetic) compass at the top of the panel - the gyro compass shows true heading again, but don't get used to it: we're going to set it up to drift soon - there are TO/FROM flags on NAV1 and NAV2 (but no GS flag yet) - the ADF looks a little more realistic (if you can forgive the ugly needle) - when the HUD is not open, the framerate is moved to the right side of the screen so that it won't be obscured by the mag compass
204 lines
5.7 KiB
C++
204 lines
5.7 KiB
C++
// bfi.hxx - Big Flat Interface
|
|
//
|
|
// Written by David Megginson, started February, 2000.
|
|
//
|
|
// Copyright (C) 2000 David Megginson - david@megginson.com
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License as
|
|
// published by the Free Software Foundation; either version 2 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful, but
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
// General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
//
|
|
// $Id$
|
|
|
|
#include <time.h>
|
|
#include <string>
|
|
|
|
#include <simgear/compiler.h>
|
|
|
|
FG_USING_NAMESPACE(std);
|
|
|
|
|
|
/**
|
|
* Big Flat Interface
|
|
*
|
|
* This class implements the Facade design pattern (GOF p.185) to provide
|
|
* a single, (deceptively) simple flat interface for the FlightGear
|
|
* subsystems.
|
|
*
|
|
* To help cut down on interdependence, subsystems should
|
|
* use the BFI whenever possible for inter-system communication.
|
|
*
|
|
* TODO:
|
|
* - add selectors to switch the current plane, throttle, brake, etc.
|
|
* - add more autopilot settings
|
|
*/
|
|
class FGBFI
|
|
{
|
|
public:
|
|
|
|
// Reinit if necessary.
|
|
static void update ();
|
|
|
|
// Simulation
|
|
static int getFlightModel ();
|
|
static const string getAircraft ();
|
|
static const string getAircraftDir ();
|
|
static time_t getTimeGMT ();
|
|
static bool getHUDVisible ();
|
|
static bool getPanelVisible ();
|
|
|
|
static void setFlightModel (int flightModel);
|
|
static void setAircraft (const string &aircraft);
|
|
static void setAircraftDir (const string &aircraftDir);
|
|
static void setTimeGMT (time_t time);
|
|
static void setHUDVisible (bool hudVisible);
|
|
static void setPanelVisible (bool panelVisible);
|
|
|
|
|
|
// Position
|
|
static double getLatitude ();
|
|
static double getLongitude ();
|
|
static double getAltitude ();
|
|
static double getAGL ();
|
|
|
|
static void setLatitude (double latitude);
|
|
static void setLongitude (double longitude);
|
|
static void setAltitude (double altitude);
|
|
|
|
|
|
// Attitude
|
|
static double getHeading (); // true heading
|
|
static double getHeadingMag (); // exact magnetic heading
|
|
static double getPitch ();
|
|
static double getRoll ();
|
|
|
|
static void setHeading (double heading);
|
|
static void setPitch (double pitch);
|
|
static void setRoll (double roll);
|
|
|
|
|
|
// Velocities
|
|
static double getAirspeed ();
|
|
static double getSideSlip ();
|
|
static double getVerticalSpeed ();
|
|
static double getSpeedNorth ();
|
|
static double getSpeedEast ();
|
|
static double getSpeedDown ();
|
|
|
|
static void setSpeedNorth (double speed);
|
|
static void setSpeedEast (double speed);
|
|
static void setSpeedDown (double speed);
|
|
|
|
|
|
// Controls
|
|
static double getThrottle ();
|
|
static double getFlaps ();
|
|
static double getAileron ();
|
|
static double getRudder ();
|
|
static double getElevator ();
|
|
static double getElevatorTrim ();
|
|
static double getBrake ();
|
|
|
|
static void setThrottle (double throttle);
|
|
static void setFlaps (double flaps);
|
|
static void setAileron (double aileron);
|
|
static void setRudder (double rudder);
|
|
static void setElevator (double elevator);
|
|
static void setElevatorTrim (double trim);
|
|
static void setBrake (double brake);
|
|
|
|
|
|
// Autopilot
|
|
static bool getAPAltitudeLock ();
|
|
static double getAPAltitude ();
|
|
static bool getAPHeadingLock ();
|
|
static double getAPHeadingMag ();
|
|
|
|
static void setAPAltitudeLock (bool lock);
|
|
static void setAPAltitude (double altitude);
|
|
static void setAPHeadingLock (bool lock);
|
|
static void setAPHeadingMag (double heading);
|
|
|
|
static bool getAPNAV1Lock ();
|
|
static void setAPNAV1Lock (bool lock);
|
|
|
|
// Radio Navigation
|
|
static double getNAV1Freq ();
|
|
static double getNAV1AltFreq ();
|
|
static double getNAV1Radial ();
|
|
static double getNAV1SelRadial ();
|
|
static double getNAV1DistDME ();
|
|
static bool getNAV1InRange ();
|
|
static bool getNAV1DMEInRange ();
|
|
|
|
static double getNAV2Freq ();
|
|
static double getNAV2AltFreq ();
|
|
static double getNAV2Radial ();
|
|
static double getNAV2SelRadial ();
|
|
static double getNAV2DistDME ();
|
|
static bool getNAV2InRange ();
|
|
static bool getNAV2DMEInRange ();
|
|
|
|
static double getADFFreq ();
|
|
static double getADFAltFreq ();
|
|
static double getADFRotation ();
|
|
|
|
static void setNAV1Freq (double freq);
|
|
static void setNAV1AltFreq (double freq);
|
|
static void setNAV1SelRadial (double radial);
|
|
|
|
static void setNAV2Freq (double freq);
|
|
static void setNAV2AltFreq (double freq);
|
|
static void setNAV2SelRadial (double radial);
|
|
|
|
static void setADFFreq (double freq);
|
|
static void setADFAltFreq (double freq);
|
|
static void setADFRotation (double rot);
|
|
|
|
// GPS
|
|
static const string getTargetAirport ();
|
|
static bool getGPSLock ();
|
|
static double getGPSTargetLatitude ();
|
|
static double getGPSTargetLongitude ();
|
|
|
|
static void setTargetAirport (const string &targetAirport);
|
|
static void setGPSLock (bool lock);
|
|
static void setGPSTargetLatitude (double latitude);
|
|
static void setGPSTargetLongitude (double longitude);
|
|
|
|
|
|
// Weather
|
|
static double getVisibility ();
|
|
static bool getClouds ();
|
|
static double getCloudsASL ();
|
|
|
|
static void setVisibility (double visiblity);
|
|
static void setClouds (bool clouds);
|
|
static void setCloudsASL (double cloudsASL);
|
|
|
|
|
|
// Time (this varies with time) huh, huh
|
|
static double getMagVar ();
|
|
static double getMagDip ();
|
|
|
|
|
|
private:
|
|
// Will cause a linking error if invoked.
|
|
FGBFI ();
|
|
|
|
static void reinit ();
|
|
static void needReinit () { _needReinit = true; }
|
|
static bool _needReinit;
|
|
};
|
|
|
|
// end of bfi.hxx
|