#include "CameraInterfaceDm.h"
#include "camera.h"

#define ZoomModeName               ZOOM_CONTROL_MODE_DM
#define ZoomPositionSetpointName   ZOOM_SET_POINT_DM
#define ZoomRateSetpointName       ZOOM_RATE_DM
#define ZoomName                   ZOOM_POSITION_DM
#define FocusSetpointName          INTEGRATED_FOCUS_SET_POINT_DM
#define FocusName                  FOCUS_POSITION_DM
#define IrisName                   IRIS_VALUE_DM
#define FieldWidthName             FIELD_WIDTH_DM
#define FocalDistanceName          FOCAL_DIST_DM
#define ZoomAngleName              ZOOM_ANGLE_DM

CameraInterfaceDm::CameraInterfaceDm(CameraZoomMode cameraZoomMode, 
				     const char *dmPrefix)
{
  char itemName[MaxDmNameLen];
  strcpy(itemName, dmPrefix);
  char *namePtr = itemName + strlen(itemName);

  strcpy(namePtr, ZoomModeName);
  zoomMode = new DmInt16Object(itemName);

  strcpy(namePtr, ZoomPositionSetpointName);
  zoomSetpoint = new DmInt16Object(itemName);

  strcpy(namePtr, ZoomName);
  zoom = new DmInt16Object(itemName);

  strcpy(namePtr, FocusSetpointName);
  focusSetpoint = new DmInt16Object(itemName);

  strcpy(namePtr, FocusName);
  focus = new DmInt16Object(itemName);

  strcpy(namePtr, IrisName);
  iris = new DmInt16Object(itemName);

  // Just one iris item
  irisSetpoint = iris;

  strcpy(namePtr, FieldWidthName);
  fieldWidth = new DmFlt64Object(itemName);

  strcpy(namePtr, FocalDistanceName);
  focalDistance = new DmFlt64Object(itemName);

  strcpy(namePtr, ZoomAngleName);
  zoomAngle = new DmFlt64Object(itemName);
}


CameraInterfaceDm::~CameraInterfaceDm()
{
  delete zoomMode;
  delete zoomSetpoint;
  delete zoom;
  delete focusSetpoint;
  delete focus;
  delete iris;

  // irisSetpoint points to iris
  // delete irisSetpoint;
}


