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

#ifndef __MetraByteIF_H
#define __MetraByteIF_H

#include "TaskInterface.h"

#include "DeviceIF.h"

#define MetraByteIFServerName "MetraByteIFServer"

class MetraByteIF : public DeviceIF {

  friend class MetraByteIF_SK;

  public:

  
  /*
  CLASS 
  MetraByteIF
  
  DESCRIPTION
  TaskInterface to MetraByte device driver 
  
  AUTHOR
  John O'Rieffel
  
  */
  enum Event {
    Online,
    Offline,
    CommsFailure
  };

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

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

  ~MetraByteIF();

  /////////////////////////////////////////////////////////
  // Get range value and time
  // [output] currentVal: current measured
  // [output] voltageVal: voltage measured
  // [output] time:  time of sample
  long IandV(double *currentVal, double *voltageVal, long *time);

  
  protected:

  // Message codes for each method
  enum MetraByteIFMsgCode {
    IandVMsgCode = 6
  };

  // Define message structure for each method
  struct IandVMsg : Request, Reply {
    long returnVal;
    double currentVal;
    double voltageVal;
    long time;
  
  } _IandVMsg;

};

#endif

