#ifndef _panTilt_H
#define _panTilt_H
/****************************************************************************/
/* Copyright 1994 to 1997 MBARI                                             */
/****************************************************************************/
/* Summary  : Pan & Tilt Microcontroller Interface Module Defs for VxWorks  */
/* Filename : panTilt.h                                                     */
/* Author   : Andrew Pearce                                                 */
/* Project  : New ROV                                                       */
/* Version  : Version 1.0                                                   */
/* Created  : 04/21/94                                                      */
/* Modified : 02/27/97                                                      */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/* $Header:  $
 * $Log:     $
 *
 */
/****************************************************************************/

#define PAN_TILT_STACKSIZE    15000     /* Pan & Tilt Task Stack Size & TCB */
                                        /* Pan & Tilt Data Mgr Item Prefix  */

#define PAN_TILT_DM_PREFIX          "TIBURON.PAN_TILT."
#define PAN_TILT_PORT_DM_PREFIX     "TIBURON.PAN_TILT.PORT."
#define PAN_TILT_STBD_DM_PREFIX     "TIBURON.PAN_TILT.STBD."

#define LIGHT_PAN_DM                "LIGHT.PAN."
#define LIGHT_TILT_DM               "LIGHT.TILT."
#define CAMERA_PAN_DM               "CAMERA.PAN."
#define CAMERA_TILT_DM              "CAMERA.TILT."

                     /* Following 8 defines added for GUI, rah, 30nov95 */
#define PAN_TILT_PORT_LIGHT_PAN_DM_PREFIX   "TIBURON.PAN_TILT.PORT.LIGHT.PAN."
#define PAN_TILT_PORT_LIGHT_TILT_DM_PREFIX  "TIBURON.PAN_TILT.PORT.LIGHT.TILT."
#define PAN_TILT_PORT_CAMERA_PAN_DM_PREFIX  "TIBURON.PAN_TILT.PORT.CAMERA.PAN."
#define PAN_TILT_PORT_CAMERA_TILT_DM_PREFIX "TIBURON.PAN_TILT.PORT.CAMERA.TILT."
#define PAN_TILT_STBD_LIGHT_PAN_DM_PREFIX   "TIBURON.PAN_TILT.STBD.LIGHT.PAN."
#define PAN_TILT_STBD_LIGHT_TILT_DM_PREFIX  "TIBURON.PAN_TILT.STBD.LIGHT.TILT."
#define PAN_TILT_STBD_CAMERA_PAN_DM_PREFIX  "TIBURON.PAN_TILT.STBD.CAMERA.PAN."
#define PAN_TILT_STBD_CAMERA_TILT_DM_PREFIX "TIBURON.PAN_TILT.STBD.CAMERA.TILT."

#define PORT_PAN              0
#define PORT_TILT             1
#define STBD_PAN              2
#define STBD_TILT             3

#define PT_AXIS_COUNT         4         /* Lighting Pan & Tilt axis count   */
#define PT_POSITION_DELTA   3.0         /* 3.0 degres error is acceptable   */
#define CTRL_STRING_LEN      32

#define PT_CAL_DATA_DIRECTORY  "/usr/tiburon/config/panTilts"

/* Mike's addition 19.6.96 */
enum{
  MAPPING_LIGHTS,
  MAPPING_CAMERAS
};

typedef enum
{
    PAN_TILT_CAN0,
    PAN_TILT_CAN1
} panTiltCanId;

/********************** Data Manager Item Names *****************************/

#define INITIALIZING_DM                         "INITIALIZING"
#define HOUSING_WATER_ALARM_DM                  "HOUSING_WATER_ALARM"

#define LOCAL_GND_FLT_CURRENT_DM                "LOCAL_GROUND_FAULT_CURRENT"
#define EXT_GND_FLT_CURRENT_DM                  "EXT_GROUND_FAULT_CURRENT"
#define LOCAL_GND_FLT_ALARM_DM                  "LOCAL_GROUND_FAULT_ALARM"
#define EXT_GND_FLT_ALARM_DM                    "EXT_GROUND_FAULT_ALARM"
#define GND_FLT_TEST_DM                         "GROUND_FAULT_TEST"
#define GND_FLT_TEST_STATUS_DM                  "GROUND_FAULT_TEST_STATUS"

#define TEMPERATURE_DM                          "MICRO_TEMP"
#define TEMPERATURE_ALARM_DM                    "TEMP_ALARM"
#define TEMP_WARN_THRESH_DM                     "TEMP_WARN_THRESHOLD"
#define TEMP_ALARM_THRESH_DM                    "TEMP_ALARM_THRESHOLD"

#define HUMIDITY_DM                             "MICRO_HUMIDITY"
#define HUMIDITY_ALARM_DM                       "HUMIDITY_ALARM"
#define HUMIDITY_WARN_THRESH_DM                 "HUMIDITY_WARN_THRESHOLD"
#define HUMIDITY_ALARM_THRESH_DM                "HUMIDITY_ALARM_THRESHOLD"

#define STEPPER_TEMP_DM                         "STEPPER_TEMPERATURE"
#define STEPPER_TEMP_ALARM_DM                   "STEPPER_TEMP_ALARM"
#define STEPPER_TEMP_WARN_THRESH_DM             "STEPPER_TEMP_WARN_THRESHOLD"
#define STEPPER_TEMP_ALARM_THRESH_DM            "STEPPER_TEMP_ALARM_THRESHOLD"

#define PT_VELOCITY_ALL_CMD_DM                  "VELOCITY_ALL_CMD"

#define PT_RESET_CTRL_DM                        "RESET_CONTROLLER"
#define PT_INITIALIZE_CTRL_DM                   "INITIALIZE_CTRL"
#define PT_HOME_TO_ZERO_DM                      "HOME_TO_ZERO"
#define PT_WRITE_CTRL_NVRAM_DM                  "WRITE_CTRL_NV_RAM"
#define PT_CTRL_STRING_DM                       "CONTROLLER_STRING"
#define PT_CTRL_FAULT_DM                        "CONTROLLER_FAULT"
#define PT_MOVE_ERROR_DM                        "MOVE_ERROR"
#define PT_ZERO_POS_ERROR_DM                    "ZERO_POS_ERROR"
#define PT_ANALOG_POS_DM                        "ANALOG_POSITION"
#define PT_STEPPER_POS_DM                       "STEPPER_POSITION"
#define PT_DELTA_POS_ALARM_DM                   "DELTA_POSITION_ALARM"
#define PT_ANALOG_POS_REQ_DM                    "ANALOG_POSITION_REQUEST"
#define PT_STEPPER_POS_REQ_DM                   "STEPPER_POSITION_REQUEST"

#define PT_HOLD_CURRENT_DM                      "HOLD_CURRENT"
#define PT_RUN_CURRENT_DM                       "RUN_CURRENT"
#define PT_ACCEL_SLOPE_DM                       "ACCEL_SLOPE"
#define PT_DECEL_SLOPE_DM                       "DECEL_SLOPE"
#define PT_INITIAL_VEL_DM                       "INITIAL_VELOCITY"
#define PT_SLEW_VEL_DM                          "SLEW_VELOCITY"
#define PT_SETTLING_TIME_DM                     "SETTLING_TIME"
#define PT_VELOCITY_CMD_DM                      "VELOCITY_CMD"
#define PT_POSITION_CMD_DM                      "POSITION_CMD"
#define PT_CW_LIMIT_DM                          "CW_LIMIT_SWITCH"
#define PT_CCW_LIMIT_DM                         "CCW_LIMIT_SWITCH"
#define PT_CW_LIMIT_POS_DM                      "CW_LIMIT_POSITION"
#define PT_CCW_LIMIT_POS_DM                     "CCW_LIMIT_POSITION"

#ifdef INCLUDE_PROTOTYPES

#ifdef __STDC__

STATUS panTiltTask( panTiltCanId can, Nat16 panTiltSerialChan );

#endif

#endif /* INCLUDE_PROTOTYPES */
#endif /* _panTilt_H */
