/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : CrossbowIF.idl                                                */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
/*------------------------------------------------------------------------*
  CLASS: CrossbowIF

  DESCRIPTION : TaskInterface to Crossbow DMU-AHRS Attitude Heading Reference 
       System

  AUTHOR: Aaron Marsh / Tom O'Reilly

  $Id: CrossbowIF.idl,v 1.3 2000/03/14 18:20:19 oreilly Exp $
*-------------------------------------------------------------------------
*/

#include "AhrsIF.idl"

interface CrossbowIF : AhrsIF {

  enum Mode {
    Voltage, Scaled, Angle
  };

  ////////////////////////////////////////////////////////////
  // Gets all three axes of acceleration (G)
  // [output] accelX: X acceleration
  // [output] accelY: Y acceleration
  // [output] accelZ: Z acceleration
  Status acceleration( out double accelX,
                       out double accelY,
                       out double accelZ,
                       out TimeIF::TimeSpec sampleTime );

  ////////////////////////////////////////////////////////////
  // Gets all three axes of magnetic vector (gauss)
  // [output] magX: mag vector in the X axis
  // [output] magY: mag vector in the Y axis
  // [output] magZ: mag vector in the Z axis
  Status magneticVector( out double magX,
                         out double magY,
                         out double magZ ,
                         out TimeIF::TimeSpec sampleTime);

     
  ////////////////////////////////////////////////////////////
  // Get everything
  // [output] roll, pitch, heading
  // [output] rollRate, pitchRate, headingRate
  // [output] accelX, accelY, accelZ
  // [output] magX, magY, magZ,
  // [output] temp (deg C)
  Status all( out Attitude attitude,
              out double accelX, out double accelY, out double accelZ,
	      out double magX, out double magY, out double magZ,
	      out double temperature,
              out TimeIF::TimeSpec sampleTime );
	       
};
