#ifndef _DVLSIDESERVER_H
#define _DVLSIDESERVER_H

/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : DvlSideServer.h                                                   */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "DvlSideIF_SK.h"
#include "DvlSideOutput.h"
#include "SerialParameters.h"
#include "DvlSide.h"             //Make the list of #define's available

/*
CLASS
DvlSideServer

DESCRIPTION
Server Interface for DVL

AUTHOR
O'Reilly/McEwen

*/

class DvlSideServer : public DvlSideIF_SK {

public:

  DvlSideServer(const char *driverName, SerialParameters *serialParams);
  virtual ~DvlSideServer();

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();

  // Get the data
  virtual DeviceIF::Status get(DvlSideIF::Data *data, Boolean *newData);
  
  virtual int spawnAuxTasks();
  
  SerialParameters *_serialParams;

  DvlSideOutput *_output;

  const char *_driverName;

  double m_lastPingTime;
};


#endif

