/*
********************************************************
Copyright 2000 MBARI.
MBARI Proprietary Information. All rights reserved.
NOTE: This file is automatically generated.
DO NOT MODIFY.
********************************************************
*/

#ifndef __Seabird25pIF_H
#define __Seabird25pIF_H

#include "TaskInterface.h"

#include "CtdIF.h"
#include "TimeIF.h"

#define Seabird25pIFServerName "Seabird25pIFServer"

class Seabird25pIF : public CtdIF {

  friend class Seabird25pIF_SK;

  public:

  
  
  
  Seabird25pIF(const char *name, int timeout = 10);

  Seabird25pIF(const char *name, const char *serverName, int timeout = 10);

  ~Seabird25pIF();

  /////////////////////////////////////////////////////////
  // Return true if device is ready to go, otherwise false
  // boolean ready();
  /////////////////////////////////////////////////////////
  // Get all Data from CTD Simultaneously
  //   Status get_CTD_data(out float conductivity, out float temperature,
  //        	      out float depth, out float tfreq, out float cfreq,
  //                      out TimeIF::TimeSpec conductivityTime,
  //                      out TimeIF::TimeSpec temperatureTime,
  //		      out float v1, out float v2, out float v3, out float v4,
  //                      out float v5, out float v6);
  //
  DeviceIF::Status get_CTD_data(float *conductivity, float *temperature, float *depth, float *tfreq, float *cfreq, TimeIF::TimeSpec *conductivityTime, TimeIF::TimeSpec *temperatureTime, float *v1, float *v2, float *v3, float *v4, float *v5, float *v6, float *v7, float *v8);

  ////////////////////////////////////////////////////////
  // Get Conductivity Data
  //  Status conductivity(out float cond, out float cfreq,
  //                      out TimeIF::TimeSpec sampleTime);
  ///////////////////////////////////////////////////////////////////
  // Get Temperature
  //  Status temperature(out float temp, out float tfreq,
  //                      out TimeIF::TimeSpec sampleTime);
  ///////////////////////////////////////////////////////////////////
  // Get Salinity
  //  Status salinity(out float salinity);
  ///////////////////////////////////////////////////////////////////
  // Get external Voltages
  //  Status voltages(out float v1,
  //		  out float v2,
  //		  out float v3,
  //		  out float v4,
  //		  out float v5,
  //		  out float v6);
  DeviceIF::Status voltages(float *v1, float *v2, float *v3, float *v4, float *v5, float *v6, float *v7, float *v8);

  
  protected:

  // Message codes for each method
  enum Seabird25pIFMsgCode {
    Get_CTD_dataMsgCode = 14,
    VoltagesMsgCode
  };

  // Define message structure for each method
  struct Get_CTD_dataMsg : Request, Reply {
    DeviceIF::Status returnVal;
    float conductivity;
    float temperature;
    float depth;
    float tfreq;
    float cfreq;
    TimeIF::TimeSpec conductivityTime;
    TimeIF::TimeSpec temperatureTime;
    float v1;
    float v2;
    float v3;
    float v4;
    float v5;
    float v6;
    float v7;
    float v8;
  
  } _get_CTD_dataMsg;

  struct VoltagesMsg : Request, Reply {
    DeviceIF::Status returnVal;
    float v1;
    float v2;
    float v3;
    float v4;
    float v5;
    float v6;
    float v7;
    float v8;
  
  } _voltagesMsg;

};

#endif

