#include "DrillSledDm.h"
#include "drillSledNames.h"
#include "ibcItemNames.h"

const int DrillSledDm::minRpm = 0;
const int DrillSledDm::maxRpm = 500;
const int DrillSledDm::minWOB = -800;
const int DrillSledDm::maxWOB = 800;
const int DrillSledDm::minCutterVolts = 0;
const int DrillSledDm::maxCutterVolts = 15;
const int DrillSledDm::minTorque = -3000;
const int DrillSledDm::maxTorque = 3000;

DrillSledDm::DrillSledDm(const char *platformName)
{
  char itemName[MaxDmNameLen];

  DmObject::buildPrefix(itemName, platformName, DrillSledAppName, 0);

  char *namePtr = itemName + strlen(itemName);

  strcpy(namePtr, BitRpmCmdName);
  bitRpmCmd = new DmInt16Object(itemName);

  strcpy(namePtr, BitRotationSenseName);
  bitRotationSense = new DmEnumObject(itemName);

  strcpy(namePtr, SSPumpSpeedName);
  pumpSpeed = new DmInt16Object(itemName);

  strcpy(namePtr, SSPumpDirName);
  pumpDirection = new DmEnumObject(itemName);

  strcpy(namePtr, "VALVE_5A_SWITCH");
  highTorqueCmd = new DmBooleanObject(itemName);

  strcpy(namePtr, ArmedStatusName);
  armedStatus = new DmBooleanObject(itemName);

  strcpy(namePtr, FiredStatusName);
  firedStatus = new DmBooleanObject(itemName);

  strcpy(namePtr, SlowFireStatusName);
  slowFireStatus = new DmBooleanObject(itemName);

  strcpy(namePtr, FastFireStatusName);
  fastFireStatus = new DmBooleanObject(itemName);

  sprintf(namePtr, "%s.%s", QuadAtoDName, WOBName);
  weightOnBit = new DmFlt32Object(itemName);

  sprintf(namePtr, "%s.%s", QuadAtoDName, MotorDiffPressName);
  motorDeltaP = new DmFlt32Object(itemName);

  sprintf(namePtr, "%s.%s", QuadAtoDName, DrillRPMName);
  rpm = new DmFlt32Object(itemName);

  sprintf(namePtr, "%s.%s", QuadAtoDName, CutterVoltageName);
  cutterVoltage = new DmFlt32Object(itemName);


  fireControl = new FireControlDm(platformName, DrillSledAppName);
}


DrillSledDm::~DrillSledDm()
{
  delete fireControl;
}
