#include "MetraByteIF_SK.h"
#include "SerialParameters.h"
#include "MetraByteOutput.h"


/*
CLASS 
MetraByteServer

DESCRIPTION
Keithley Metrabyte (Battery Subsystem) Server

AUTHOR
John Rieffel
*/

class MetraByteServer : public MetraByteIF_SK {

public:

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

protected:

  virtual void name(DeviceIF::Name name);
  virtual void serialNumber(DeviceIF::Name id);
  virtual DeviceIF::Status initialize();
  virtual DeviceIF::Status powerOn();
  virtual DeviceIF::Status status();
  virtual DeviceIF::Status powerOff();

  virtual long IandV(double *current, double *voltage, long *time);
  virtual long voltage(float *value, long *time);
  virtual long current(float *value, long *time);

  virtual int spawnAuxTasks();
  
  SerialParameters *_serialParams;
  MetraByteOutput *_output;
};


