
class LpsCard: public SwitchCard
{
  public:
  
  LpsCard(const char *systemPrefix,
	  const char *appName,
	  const char *cardName,
	  Word cardAddr,
	  sio32Chan *channel,
	  Int16 cardNo,
	  SwitchCard *parent,         // NULL if no parent
	  systemBus bus,
	  loadDivision division,
	  LpsChannelParams *channelParams);


  ~LpsCard();

  // Initialize DM items and micro
  virtual STATUS initialize();
  
  // Connect application and power manager switch items
  virtual STATUS connectSwitchItems(switchEntry *swEntry);

  // Add DM items to monitored group
  virtual STATUS startMonitoring(DmMonitor *dmMonitor);

  // Process changes to DM items
  virtual STATUS processDmChanges(DmGroup *dmGroup);

  // Read micro and update DM items
  virtual STATUS sampleMicro();

  // Call after receiving SRQ
  virtual MBool handleSrq(Word requestCode, Byte *packet);

  // Call after receiving reset SRQ
  virtual STATUS handleResetSrq();

  // Return type
  virtual IBC_BoardType type();

  ibcLpsDmItems dmItems;

  protected:
  
  virtual switchEntry *channelParent();
  PowerSwitch _powerSwitch[NLpsChannels];
};


class VicorLpsCard : public LpsCard
{ 
  protected:

  virtual switchEntry *channelParent();
  
  PowerSwitch _vicor;
};

