static char IbcDm_id[] = "$Header: /usr/tiburon/unix/gui/tmacs/RCS/IbcDm.cc,v 1.1 1997/03/20 12:29:39 oreilly Exp $";

/*
$Log: IbcDm.cc,v $
Revision 1.1  1997/03/20 12:29:39  oreilly
Initial revision

*/
#include <stdlib.h>
#include "IbcDm.h"

IbcDm::IbcDm(const char *name, const char *dmPrefix)
{
  _hasJbox = TRUE;
  
  if (name) 
    _name = strdup(name);
  else
  {
    setError("Null name specified");
    return;
  }
  
  if (dmPrefix) 
    _dmPrefix = strdup(dmPrefix);
  else
  {
    setError("Null dmPrefix specified");
    return;
  }
  
  char dmItemName[MaxDmNameLen];
  char errorBuf[errorMsgSize];
  
  strcpy(dmItemName, _dmPrefix);
  char *namePtr = dmItemName + strlen(dmItemName);
  
  strcpy(namePtr, MICRO_RESET_CMD_DM);
  resetCmd = new DmEmptyObject(dmItemName);
  if (resetCmd->error())
  {
    resetCmd->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, MICRO_RESET_EVENT_DM);
  resetEvent = new DmEmptyObject(dmItemName);
  if (resetEvent->error())
  {
    resetEvent->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }  

  strcpy(namePtr, HUMIDITY_DM);
  humidity = new DmNat16Object(dmItemName);
  if (humidity->error())
  {
    humidity->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, HUMIDITY_WARN_THRESH_DM);
  humidityWarnThresh = new DmNat16Object(dmItemName);
  if (humidityWarnThresh->error())
  {
    humidityWarnThresh->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, HUMIDITY_ALARM_THRESH_DM);
  humidityAlarmThresh = new DmNat16Object(dmItemName);
  if (humidityAlarmThresh->error())
  {
    humidityAlarmThresh->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, GF_5V_TEMPERATURE_DM);
  temp = new DmInt16Object(dmItemName);
  if (temp->error())
  {
    temp->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, GF_5V_TEMP_WARN_THRESH_DM);
  tempWarnThresh = new DmInt16Object(dmItemName);
  if (tempWarnThresh->error())
  {
    tempWarnThresh->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  } 

  strcpy(namePtr, GF_5V_TEMP_ALARM_THRESH_DM);
  tempAlarmThresh = new DmInt16Object(dmItemName);
  if (tempAlarmThresh->error())
  {
    tempAlarmThresh->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  } 

  strcpy(namePtr, GF_5V_VICOR_VOLTAGE_DM);
  vicorVoltage = new DmInt16Object(dmItemName);
  if (vicorVoltage->error())
  {
    vicorVoltage->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }

  strcpy(namePtr, GF_5V_OFFSET_CURRENT_DM);
  offsetCurrent = new DmInt16Object(dmItemName);
  if (offsetCurrent->error())
  {
    offsetCurrent->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, GF_5V_CHAN0_FAULT_CURRENT_DM);
  chan0Current = new DmInt16Object(dmItemName);
  if (chan0Current->error())
  {
    chan0Current->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }

  strcpy(namePtr, GF_5V_CHAN1_FAULT_CURRENT_DM);
  chan1Current = new DmInt16Object(dmItemName);
  if (chan1Current->error())
  {
    chan1Current->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
  
  strcpy(namePtr, GF_5V_CHAN2_FAULT_CURRENT_DM);
  chan2Current = new DmInt16Object(dmItemName);
  if (chan2Current->error())
  {
    chan2Current->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }

  strcpy(namePtr, GF_5V_CHAN3_FAULT_CURRENT_DM);
  chan3Current = new DmInt16Object(dmItemName);
  if (chan3Current->error())
  {
    chan3Current->errorMsg(errorBuf);
    setError(errorBuf);
    return;
  }
}


const char *IbcDm::dmPrefix()
{
  return _dmPrefix;
}


const char *IbcDm::name()
{
  return _name;
}

