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

#ifndef PITCHIF_H_
#define PITCHIF_H_

#include "data/ElementURI.h"

/**
 *  Specifies the interface details for the Pitch component in the
 *  GuidanceModule.
 *
 *  Pitch.h should only be included by Pitch.cpp
 *  Other classes should include PitchIF.h
 *
 *  \ingroup modules_guidance
 */
namespace PitchIF
{
/// Static const for component name
/// (Can be used by other components)
static const Str NAME( "Pitch" );

/// Static consts for input settings
/// (Supplied so outputs can be directed to these inputs)

/// Desired depth to direct the vehicle to.
/// If specified with Pitch, only the absolute value of Pitch is used.
static const SettingURI DEPTH_SETTING( "depth", "Desired depth to direct the "
                                       "vehicle to. If specified with Pitch, only the absolute value of Pitch "
                                       "is used", Units::METER );

/// Desired depth rate for the vehicle.
/// Can be specified alone, or with Depth.
/// Overrides Pitch and PitchRate settings
static const SettingURI DEPTH_RATE_SETTING( "depthRate", "Desired depth rate "
        "for the vehicle. Can be specified alone, or with Depth. Overrides "
        "Pitch and PitchRate settings", Units::METER_PER_SECOND );

/// Desired elevator angle for the vehicle.
/// Overrides all other settings except massPosition
static const SettingURI ELEVATOR_ANGLE_SETTING( "elevatorAngle", "Desired "
        "elevator angle for the vehicle. Overrides all other settings "
        "except massPosition", Units::RADIAN );

/// Desired massPosition for the vehicle.
/// Overrides all other settings except ElevatorAngle
static const SettingURI MASS_POSITION_SETTING( "massPosition", "Desired "
        "massPosition for the vehicle. Overrides all other settings except "
        "ElevatorAngle", Units::METER );

/// Desired pitch of the vehicle.
/// If specified with PitchRate only the absolute value of PitchRate is used.
/// If specified with Depth, only the absolute value of Pitch is used.
/// Overriden by DepthRate setting"
static const SettingURI PITCH_SETTING( "pitch", "Desired pitch of the vehicle. "
                                       "If specified with PitchRate only the absolute value of PitchRate is "
                                       "used. If specified with Depth, only the absolute value of Pitch is "
                                       "used. Overriden by DepthRate setting", Units::RADIAN );

/// Desired pitch rate of the vehicle.
/// Valid until the vehicle reaches its maximum pitch
/// If specified with Pitch, only the absolute value of PitchRate is used.
/// Overriden by DepthRate setting
static const SettingURI PITCH_RATE_SETTING( "pitchRate", "Desired pitch rate "
        "of the vehicle. Valid until the vehicle reaches its maximum pitch. "
        "If specified with Pitch, only the absolute value of PitchRate is "
        "used. Overriden by DepthRate setting", Units::RADIAN_PER_SECOND );

}

#endif /*PITCHIF_H_*/
