#ifndef _RANGEFINDER_H
#define _RANGEFINDER_H

#include "NavSensor.h"
#include "RangeFinderIF.h"

/*
CLASS 
RangeFinder

DESCRIPTION
RangeFinder NavSensor

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

public:

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

  ///////////////////////////////////////////////////////////////////
  // Mounting angle in x-z plane
  double xzMountAngle();

  ///////////////////////////////////////////////////////////////////
  // Maximum range measurable with this sensor
  double maxMeasurableRange();

  ///////////////////////////////////////////////////////////////////
  // Latest range
  double range();

  ///////////////////////////////////////////////////////////////////
  // True if echo received on latest reading
  Boolean echoReceived();

protected:

  virtual TaskInterface *createTaskIF(int timeout);

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

  double _xzMountAngle;

  double _maxMeasurableRange;
  
  RangeFinderIF *_rangeFinderIF;

  double _range;

  Boolean _echoReceived;
};


#endif

