CPHsi

#ifdef USE_SH_POOLS
 public:
  // Overload new/delete to use a SmartHeap pool
  void *operator new(size_t size) { return MemAllocPtr(gCockMemPool,size,FALSE); };
  void operator delete(void *mem) { if (mem) MemFreePtr(mem); };
#endif
public:

 //====================================================
 // 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);

};
 
 
 

};