static char DconDm_id[] = "$Header: DconDm.cc,v 1.3 97/03/20 12:28:59 oreilly Exp $";


/*
$Log:	DconDm.cc,v $
Revision 1.3  97/03/20  12:28:59  12:28:59  oreilly (Thomas C. O'Reilly)
*** empty log message ***

Revision 1.2  96/10/28  09:11:54  09:11:54  oreilly (Thomas C. O'Reilly)
*** empty log message ***

Revision 1.1  96/07/22  10:41:52  10:41:52  oreilly (Thomas C. O'Reilly)
First external release

*/
#include <stdlib.h>
#include "DconDm.h"

DconDm::DconDm(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 *DconDm::dmPrefix()
{
  return _dmPrefix;
}


const char *DconDm::name()
{
  return _name;
}

