/** \file
 *
 *  Specifies the interface details for the DepthEnvelope component in the
 *  GuidanceModule.
 *
 *  DepthEnvelope.h should only be included by DepthEnvelope.cpp
 *  Other classes should include DepthEnvelopeIF.h
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef DEPTHENVELOPEIF_H_
#define DEPTHENVELOPEIF_H_

#include "data/ElementURI.h"

/**
 *  Specifies the interface details for the DepthEnvelope component in the
 *  GuidanceModule.
 *
 *  DepthEnvelope.h should only be included by DepthEnvelope.cpp
 *  Other classes should include DepthEnvelopeIF.h
 *
 *  \ingroup modules_guidance
 */
namespace DepthEnvelopeIF
{
/// Static const for component name
/// (Can be used by other components)
static const NameURI NAME( "DepthEnvelope",  "If the vehicle's depth is within "
                           "the specified max/min envelope, the command is satisfied. Otherwise "
                           "the vehicle is sent to a depth within the specified max/min envelope.  "
                           "Via the DepthSurrogate string setting, a variable other than depth "
                           "may be used to control the depth bounds. If so, then the min and max "
                           "variables should be specified in units compatible with the specified "
                           "surrogate." );

/// Static consts for input settings
/// (Supplied so outputs can be directed to these inputs)
static const SettingURI MIN_DEPTH_SETTING( "minDepth", "Desired minimum distance "
        "below sea surface for the vehicle", Units::METER );
static const SettingURI MAX_DEPTH_SETTING( "maxDepth", "Desired maximum distance "
        "below sea surface for the vehicle", Units::METER );
static const SettingURI DEPTH_SURROGATE_SETTING( "depthSurrogate", "Surrogate "
        "values to use instead of depth", Units::NONE );

static const SettingURI DEPTH_RATE_SETTING( "depthRate", "Desired up/down "
        "depthRate of the vehicle", Units::METER_PER_SECOND );
static const SettingURI DOWN_DEPTH_RATE_SETTING( "downDepthRate", "Desired "
        "downward depthRate of the vehicle", Units::METER_PER_SECOND );
static const SettingURI UP_DEPTH_RATE_SETTING( "upDepthRate", "Desired downward "
        "depthRate of the vehicle", Units::METER_PER_SECOND );

static const SettingURI PITCH_SETTING( "pitch", "Desired up/down pitch of the "
                                       "vehicle", Units::RADIAN );
static const SettingURI DOWN_PITCH_SETTING( "downPitch", "Desired downward pitch "
        "of the vehicle", Units::RADIAN );
static const SettingURI UP_PITCH_SETTING( "upPitch", "Desired upward pitch of "
        "the vehicle", Units::RADIAN );
}

#endif /*DEPTHENVELOPEIF_H_*/
