#ifndef _AHRS_H
#define _AHRS_H

#include "NavSensor.h"
#include "AhrsIF.h"
#include "NavigationIF.h"

/*
CLASS 
Ahrs

DESCRIPTION
Ahrs NavSensor

AUTHOR
Tom O'Reilly
*/
class Ahrs : public NavSensor {

public:

  Ahrs(const char *name, NavSensors *sensors, int maxBad = 3);

  ///////////////////////////////////////////////////////////////////
  // Latest attitude
  void attitude(NavigationIF::Attitude *attitude);

  ///////////////////////////////////////////////////////////////////
  // True if heading measurement is based on magnetic compass
  Boolean magneticCompass();


protected:

  virtual TaskInterface *createTaskIF(int timeout);

  virtual DeviceIF::Status readTaskIF(Boolean *valid, 
				      TimeIF::TimeSpec *sampleTime);

  AhrsIF *_ahrsIF;
  AhrsIF::Attitude _attitude;
  Boolean _magneticCompass;
};


#endif

