/****************************************************************************/
/* Copyright (c) 2003 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : FastCatServer.h                                               */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 12/17/2003                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <iostream.h>
#include "FastCatIF_SK.h"
#include "DeviceInterface.h"
#include "SerialDevice.h"
#include "FastCatOutput.h"
#include "SerialParameters.h"

/*
CLASS
FastCatServer

DESCRIPTION
Server Interface for FastCat CTD

AUTHOR
Rich Henthorn

*/


class FastCatServer : public FastCatIF_SK {

public:

  FastCatServer(const char *name, SerialParameters *serialParams);
  ~FastCatServer();
  

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 get_CTD_data(float *conductivity, 
					float *temperature, 
					float *depth, 
					TimeIF::TimeSpec *conductivityTime, 
					TimeIF::TimeSpec *temperatureTime, 
					float *salinity, float *soundVelocity,
					long *tcounts, float *cfreq,
					long *pcounts, float *pvolts);

  virtual DeviceIF::Status conductivity(float *cond, float *cfreq, 
					TimeIF::TimeSpec *sampleTime);

  virtual DeviceIF::Status temperature(float *temp, long *tcounts, 
				       TimeIF::TimeSpec *sampleTime);

  virtual DeviceIF::Status salinity(float *salinity,
				    TimeIF::TimeSpec *sampleTime);

  virtual DeviceIF::Status soundVelocity(float *velocity,
					 TimeIF::TimeSpec *sampleTime);

  virtual Boolean ready(); // Return True is device is ready
    
  virtual int spawnAuxTasks();
  
  SerialParameters *_serialParams;
  FastCatOutput *_output;
};
