/************************************************************************/
/* Copyright 1998 MBARI							*/
/************************************************************************/
#ifndef _SIO32MICRO_H
#define _SIO32MICRO_H

#include "Micro.h"
#include "Sio32Dm.h"
#include "GfSelfTest.h"

/*
CLASS 
Sio32Micro

DESCRIPTION
Contains information on Sio32 micro, methods for generating
GUIs.

AUTHOR
Tom O'Reilly
*/
class Sio32Micro : public Micro
{
  public:
  Sio32Micro(const char *name, const char *dmPrefix);
  ~Sio32Micro();
  
  virtual const char *className()
  {
    return "Sio32Micro";
  }
  
  virtual Type type()
  {
    return Sio32MicroType;
  }
 
  virtual MicroGui *gui(Widget parent, int period);
  virtual MicroH2OTemp *h2OTemp(Widget parent, int period); 
  virtual MicroGf *gf(Widget parent, int period); 

  Sio32Dm *sio32Dm;

  protected:
};


/*
CLASS 
Sio32H2OTemp

DESCRIPTION
Display temperature, humidity, water alarm status for Sio32Micro

AUTHOR
Tom O'Reilly
*/

class Sio32H2OTemp : public MicroH2OTemp
{
  public:
  Sio32H2OTemp(const char *name, Widget parent, Sio32Micro *micro,
		int period);
  
  ~Sio32H2OTemp();
  
  virtual const char *className()
  {
    return "Sio32H2OTemp";
  }

};


/*
CLASS 
Sio32Gf

DESCRIPTION
Display ground-fault status for Sio32Micro

AUTHOR
Tom O'Reilly
*/
class Sio32Gf : public MicroGf
{
  public:
  Sio32Gf(const char *name, Widget parent, Sio32Micro *micro, int period);
  
  ~Sio32Gf();
  

  virtual const char *className()
  {
    return "Sio32Gf";
  }
};


/*
CLASS 
Sio32MicroGui

DESCRIPTION
Display and control GUI for Sio32Micro

AUTHOR
Tom O'Reilly
*/
class Sio32MicroGui : public MbariMicroGui
{
  public:
  Sio32MicroGui(const char *name, Widget parent, Sio32Micro *micro, 
		 int period);

  ~Sio32MicroGui();

  virtual const char *className()
  {
    return "Sio32MicroGui";
  }
  
  virtual void updateGui(DM_Item handle = 0);

  protected:
  AlarmedInt16Text *_temp;
  AlarmedInt16Text *_localGf;
  GfSelfTest *_gfSelfTest;
};



#endif
