//=========================================================================
// Summary  : 
// Filename : RacalGpsIF.idl
// Author   : Marsh
// Project  : 
// Version  : $Revision: #3 $
// Created  : 04/12/00
// Modified : 
// Archived : 
//=========================================================================
// Modification History:
//========================================================================= 


/*
CLASS 
RacalDgpsIF

DESCRIPTION
Task interface to GBX DGPS system from Communications Systems Int'l (RACAL).
System uses NMEA format.

AUTHOR
Marsh

*/

#include "DeviceIF.idl"
#include "GpsIF.idl"


interface RacalDgpsIF : GpsIF {
  
  enum MskBitRate {
    MskAuto = 0,
    Msk100bps = 100,
    Msk200bps = 200
  };
  
  enum NmeaMessage {
    AllNmeaMessages,
    GPGGA,
    GPVTG,
    GPRMC
  };

  enum VtgMode {
    Autonomous = 0,
    Differential,
    Estimated,
    Manual,
    Simulator,
    NotValid
  };
  
  struct DgpsInfo {
    float frequency;
    boolean autoTune;
    MskBitRate bitRate;
    boolean autoBitRate;
    short signalStrength;
    short signalToNoise;
  };
  
  struct Options {
    short positionUpdateRate;
    short rawUpdateRate;
    boolean rawOutput;
    boolean carrierPhase;
    boolean dgpsRemote;
    boolean dgpsBase;
    boolean raimAvail;
    boolean ppsAvail;
    boolean photogram;
    boolean geoidalHeight;
    boolean magVariation;
    boolean codeCorrelator;
  };
  
  ///////////////////////////////////////////////////////
  // Query DGPS state
  DeviceIF::Status requestDgpsInfo();
  DeviceIF::Status getDgpsInfo( out DgpsInfo info );
  
  ///////////////////////////////////////////////////////
  // 
  DeviceIF::Status groundSpeedKnots( out double groundSpeedKnots );
  DeviceIF::Status groundSpeedKph( out double groundSpeedKph );
  DeviceIF::Status courseOverGroundTrue(out double cogTrue );
  DeviceIF::Status courseOverGroundMagnetic (out double cogMagnetic );
  DeviceIF::Status vtgMode(out VtgMode mode);
  
};
