/****************************************************************************/
/* Copyright (c) 2012 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : DeltaTServer.h                                           */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 09/17/2012                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <iostream.h>
#include "DeltaTInput.h"
#include "DeltaTOutput.h"
#include "Attributes.h"
#include "AttributeParser.h"
#include "TimeP.h"
#include "FastCatIF.h"
#include "DeviceIF.h"
#include "DeltaTIF_SK.h"

/*
CLASS
DeltaTServer

DESCRIPTION
Server Interface for Multibeam Sonar

AUTHOR
Henthorn

*/

#include "DeltaTMessage.h"

class DeltaTServer : public DeltaTIF_SK {

public:

  DeltaTServer(const char *configFile);
  ~DeltaTServer();

  virtual DeviceIF::Status set_averaging(short avg);
  virtual DeviceIF::Status set_beam_width(short width);
  virtual DeviceIF::Status set_sector_size(short size);
  virtual DeviceIF::Status set_nbeams(short nb);
  virtual DeviceIF::Status set_sos(float sos);
  virtual DeviceIF::Status set_range(short range);
  virtual DeviceIF::Status set_gain_eq(Boolean on);
  virtual DeviceIF::Status set_idt_logging(Boolean on);
  virtual DeviceIF::Status set_gain(short gain);
  virtual double range();
  virtual Boolean enabled();
  virtual unsigned short  nbeams();
  virtual unsigned short  interval();
  virtual void   update_time(TimeIF::TimeSpec *timestamp);
  virtual void   get(DeltaTIF::Data *data);
  virtual void   start();
  virtual void   stop();
  virtual int spawnAuxTasks();

protected:

  virtual void name(DeviceIF::Name name);

  void set_timer();
  void attach_ctd_server();
  static void get_ctd_data(int);

  DeltaTInput *_input;  
  DeltaTOutput *_output;

  DeltaTMessage *_msgQ;

  Attributes _attributes;

};


