/****************************************************************************/
/* Copyright (c) 2004 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : SimulatedBenthosModem.h                                       */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 06/06/2014                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
/*
CLASS
BenthosModemServer

DESCRIPTION
Server Interface for Benthos Acoustic Modem

*/

#ifndef _BENTHOSMODEM_SERVER_H
#define _BENTHOSMODEM_SERVER_H

#include <iostream.h>
#include "AcousticModemIF_SK.h"

#define BENTHOSSERVERNAME "BenthosModemServer"

class BenthosModemServer : public AcousticModemIF_SK {

public:

  BenthosModemServer(const char *name);
  ~BenthosModemServer();
  

protected:

  // DeviceIF overrides
  //
  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();

  // AcousticModemIF overrides
  //
  virtual DeviceIF::Status setRegister(short reg, short value);
  virtual DeviceIF::Status power(short powerLevel);
  virtual DeviceIF::Status transpond(short tenths_of_khz);  //frequency
  virtual DeviceIF::Status range(short remoteModemNumber, float *range_in_meters);
  virtual DeviceIF::Status dopplerCorrection(Boolean on_off); // true = on
  virtual DeviceIF::Status writeString(AcousticModemIF::modemString str);
  DeviceIF::Status sendStatus();
  DeviceIF::Status getSANFix(AcousticModemIF::SMAC_SAN_RECORD *fix, Boolean *newData);
  DeviceIF::Status BenthosModemServer::getSMACCmd(AcousticModemIF::SMAC_CMD_TYPE *cmd, 
						  Boolean *newCmd);
  virtual int spawnAuxTasks();

public:  
};

#endif
