
#include "AhrsIF.idl"
#include "TimeIF.idl"

/*
CLASS
Ln250IF

DESCRIPTION
Task Interface to Ln250 device driver.

AUTHOR

*/

interface Ln250IF : AhrsIF {

  enum AlignMode {
  	DefaultAlign,
  	TransferAlign,
  	StationaryAlign
  };
  
  struct InsFix {
    /////////////////////////////////////////////////////////
    // Ins system timer (sec)
    double systemTimer;
    /////////////////////////////////////////////////////////
    // Data validity
    char validity;
    /////////////////////////////////////////////////////////
    // Latitude (radians)
    double latitude;
    /////////////////////////////////////////////////////////
    // Longitude (radians)
    double longitude;
    /////////////////////////////////////////////////////////
    // Altitude above mean sealevel (meters)
    double altitude;
    /////////////////////////////////////////////////////////
    // Northern Velocity (meters/sec)
    double northVel;
    /////////////////////////////////////////////////////////
    // Eastern Velocity (meters/sec)
    double eastVel;
    /////////////////////////////////////////////////////////
    // Vertical Velocity (meters/sec)
    double upVel;
    /////////////////////////////////////////////////////////
    // Heading (radians)
    double heading;
    /////////////////////////////////////////////////////////
    // Pitch (radians)
    double pitch;
    /////////////////////////////////////////////////////////
    // Roll (radians)
    double roll;
    /////////////////////////////////////////////////////////
    // Yaw (radians)
    double yaw;
    /////////////////////////////////////////////////////////
    // PitchRate (radians/sec)
    double pitchRate;
    /////////////////////////////////////////////////////////
    // RollRate (radians/sec)
    double rollRate;
    /////////////////////////////////////////////////////////
    // YawRate (radians/sec)
    double yawRate;
    /////////////////////////////////////////////////////////
    // Mode (from 30T message)
    short mode;
    /////////////////////////////////////////////////////////
    // Message Type (32 = Hybrid, 33 = INS Only)
    short type;

      long seconds;
      long nanoSeconds;

      double corrGyroBiasX;
      double corrGyroBiasY;
  };
  
  Status getInsOnlyFix( out InsFix fix);
  Status getHybridFix( out InsFix fix);
  
  Status getMessagesPerSecond( out short numMessages);
  Status getAlignComplete( out short alignComplete);
  Status getLn250InsNavStartSent( out short insNavStartSent );
  Status getLn250Mode ( out short ln250Mode );
  
  Status forceInsNavStart();
  
  Status startAlign(in AlignMode align);
};
