/****************************************************************************/
/* Copyright (c) 2005 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : PA200LRServer.h                                                */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 01/27/2005                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <iostream.h>
#include "RangeFinderIF_SK.h"
#include "PA200LROutput.h"
#include "Attributes.h"
#include "AttributeParser.h"
#include "SerialParameters.h"

/*
CLASS
PA200LRServer

DESCRIPTION
Server Interface for Tritech PA200LR range-finder

AUTHOR
Tom O'Reilly

*/
class PA200LRServer : public RangeFinderIF_SK {

public:

  PA200LRServer(SerialParameters *serialParams, const char *configFile);
  ~PA200LRServer();
  

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 DeviceIF::Status enable();
  virtual DeviceIF::Status disable();

  virtual void xzAngle(double *radians);

  virtual void maxRange(double *meters);

  virtual DeviceIF::Status range(Boolean *echoReceived, double *meters,
				 TimeIF::TimeSpec *sampleTime);
  
  virtual int spawnAuxTasks();
  
  double _xzAngle;
  double _maxRange;

  PA200LROutput *_output;

  Attributes _attributes;

  SerialParameters *_serialParams;
};


