/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : SimulatedRangeFinder.h                                        */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
//////////////////////////////////////////////////////////////////////
//
// PURPOSE:  Simulate the Range Finder.  
// AUTHOR:   McEwen, Following O'Reilly's Template
// DATE:     99/12/8
//
//////////////////////////////////////////////////////////////////////
//
#ifndef _SimulatedRangeFinder_H
#define _SimulatedRangeFinder_H
#include "RangeFinderIF_SK.h"
#include "SimulatorIF.h"

class SimulatedRangeFinder : public RangeFinderIF_SK {

public:

  SimulatedRangeFinder();
  ~SimulatedRangeFinder();

protected:

  virtual void name(DeviceIF::Name name);
  virtual void serialNumber(DeviceIF::Name id);
  virtual DeviceIF::Status initialize();
  virtual DeviceIF::Status powerOn();
  virtual DeviceIF::Status powerOff();
  virtual DeviceIF::Status status();
  virtual DeviceIF::Status dataLoggingOn();
  virtual DeviceIF::Status dataLoggingOff();

  virtual void xzAngle(double *radians);

  virtual void maxRange(double *meters);

  virtual DeviceIF::Status range(Boolean *echoReceived, double *value, 
				 TimeIF::TimeSpec *sampleTime);

  virtual DeviceIF::Status enable();

  virtual DeviceIF::Status disable();

  virtual int spawnAuxTasks();

  SimulatorIF *_simulator;
  //
  // Class variables:
  //

  // Pointing angle of rangefinder      
  double pointingAngle;

  // Maximum measurable range
  double _maxRange;

  double zMax;

};

#endif
