#ifndef _DMMONITORUTILS_H
#define _DMMONITORUTILS_H

#define LPS_MAX_CHANS 4
#define GF_MAX_CHANS 4

#define INCLUDE_PROTOTYPES

#include "DmMonitor.h"

extern "C" 
{
# include "msgQLib.h"
# include "sio32.h"
# include "sio32Server.h"
# include "sio32Client.h"
# include "gf_5vDm.h"
# include "hpsDm.h"
# include "lpsDm.h"
# include "vicorDm.h"
# include "vspDm.h"
};


/*
DmMonitorUtils contains various functions that provide an interface
between DmMonitor class and the "older" C data structures and 
utility functions.
*/
class DmMonitorUtils
{
  public:
  
  static void addGf5vItems(ibcGf5vDmItems *dmItems, 
			   DmMonitor *dmMonitor);

  static void addHpsItems(ibcHpsDmItems *dmItems, 
			  DmMonitor *dmMonitor);

  static void addLpsItems(ibcLpsDmItems *dmItems, 
			  DmMonitor *dmMonitor);

  static void addVicorItems(vicorDmItems *dmItems, 
			    DmMonitor *dmMonitor);

  static void addVspItems(ibcVspDmItems *dmItems, 
			  DmMonitor *dmMonitor);

  static void processGf5vChanges(ibcGf5vDmItems *dmItems, 
				 DmMonitor *dmMonitor,
				 sio32Chan *dataChan, 
				 Word boardAddr);

  static void processHpsChanges(ibcHpsDmItems *dmItems, 
				DmMonitor *dmMonitor,
				sio32Chan *dataChan, 
				Word boardAddr);

  static void processLpsChanges(ibcLpsDmItems *dmItems, 
				DmMonitor *dmMonitor,
				sio32Chan *dataChan, 
				Word boardAddr);

  static void processVicorChanges(vicorDmItems *dmItems, 
				  DmMonitor *dmMonitor,
				  sio32Chan *dataChan, 
				  Word boardAddr);

  static void processVspChanges(ibcVspDmItems *dmItems, 
				DmMonitor *dmMonitor,
				sio32Chan *dataChan, 
				Word vspChannel,
				Word boardAddr);
};


#endif

