//====================================================
// Button States
//====================================================
typedef enum HSIButtonStates
{
HSI_STA_CRS_STATE,
HSI_STA_HDG_STATE,
HSI_STA_TOTAL_STATES
};
//====================================================
// Horizontal Situaton Geometry
//====================================================
typedef enum HSIValues
{
HSI_VAL_CRS_DEVIATION,
HSI_VAL_DESIRED_CRS,
HSI_VAL_DISTANCE_TO_BEACON,
HSI_VAL_BEARING_TO_BEACON,
HSI_VAL_CURRENT_HEADING,
HSI_VAL_DESIRED_HEADING,
HSI_VAL_DEV_LIMIT,
HSI_VAL_HALF_DEV_LIMIT,
HSI_VAL_LOCALIZER_CRS,
HSI_VAL_AIRBASE_X,
HSI_VAL_AIRBASE_Y,
HSI_VAL_TOTAL_VALUES
};
//====================================================
// Control Flags
//====================================================
typedef enum HSIFlags
{
HSI_FLAG_TO_TRUE,
HSI_FLAG_ILS_WARN,
HSI_FLAG_CRS_WARN,
HSI_FLAG_INIT,
HSI_FLAG_TOTAL_FLAGS
};
//====================================================
// Constructors and Destructors
//====================================================
CPHsi();
//====================================================
// Runtime Public Member Functions
//====================================================
void Exec(void);
//====================================================
// Access Functions
//====================================================
void IncState(HSIButtonStates);
void DecState(HSIButtonStates);
int GetState(HSIButtonStates);
float GetValue(HSIValues);
BOOL GetFlag(HSIFlags);
long mColor[2][8];
private:
//====================================================
// Internal Data
//====================================================
CockpitManager *mpCPManager;
int mpHsiStates[HSI_STA_TOTAL_STATES];
float mpHsiValues[HSI_VAL_TOTAL_VALUES];
BOOL mpHsiFlags[HSI_FLAG_TOTAL_FLAGS];
NavigationSystem::Instrument_Mode
mLastMode;
WayPointClass*
mLastWaypoint;
//====================================================
// Calculation Routines
//====================================================
void ExecNav(void);
void ExecTacan(void);
void ExecILSNav(void);
void ExecILSTacan(void);
void ExecBeaconProximity(float, float, float, float);
void CalcTCNCrsDev(float);
void CalcILSCrsDev(float);
};
};