/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : SimulatedKvh.h                                                */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
//////////////////////////////////////////////////////////////////////
//
// PURPOSE:  Simulate the Kvh Compass and Inclinometer
// AUTHOR:   Marsh, Following O'Reilly's Template
// DATE:     99/12/8
//
//////////////////////////////////////////////////////////////////////
//
#ifndef _SIMULATED_KVH_H
#define _SIMULATED_KVH_H

#include "AHRSIF_SK.h"
#include "SimulatorIF.h"

class SimulatedKvh : public AHRSIF_SK {

public:

  SimulatedKvh();
  ~SimulatedKvh();

protected:

  // These methods must be defined in subclass
  virtual long attitude(double *roll, double *pitch, double *heading, 
			long *time);
  virtual long roll(double *roll, double *rollRate, long *time);
  virtual long pitch(double *pitch, double *pitchRate, long *time);
  virtual long heading(double *heading, double *headingRate, long *time);
  virtual long angRates(double *rollRate, double *pitchRate, 
			double *headingRate, long *time);
  virtual long all(double *roll, double *pitch, double *heading, 
		   double *rollRate, double *pitchRate, double *headingRate, 
		   long *time);

  long getState();

  virtual int spawnAuxTasks();

  SimulatorIF *_simulator;
  
  //
       // Class variables:
       //
     SimulatorIF::Vector _position, _euler;
     SimulatorIF::Vector _velocity, _omega;


};

#endif
