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

#ifndef WAYPOINTIF_H_
#define WAYPOINTIF_H_

#include "data/ElementURI.h"

/**
 *  Specifies the interface details for the Waypoint component in the
 *  GuidanceModule.
 *
 *  Waypoint.h should only be included by Waypoint.cpp
 *  Other classes should include WaypointIF.h
 *
 *  \ingroup modules_guidance
 */
namespace WaypointIF
{
/// Static const for component name
/// (Can be used by other components)
static const NameURI NAME( "Waypoint", "Drives the vehicle to a waypoint by following a calculated bearing, using crosstrack error correction (unless waterframe is true)" );

/// Static consts for input settings
/// (Supplied so outputs can be directed to these inputs)
static const SettingURI CAPTURE_RADIUS_SETTING( "captureRadius", "Optional "
        "radius of the circle that defines that the vehicle has reached the "
        "waypoint", Units::METER );
static const SettingURI DISTANCE_DELTA_SETTING( "distanceDelta", "Distance from "
        "the nominal waypoint set by other settings. Must be combined with "
        "distanceDeltaBearing", Units::METER );
static const SettingURI DISTANCE_DELTA_BEARING_SETTING( "distanceDeltaBearing",
        "Bearing of distance from the nominal waypoint set by other settings. "
        "Must be combined with distanceDelta", Units::METER );
static const SettingURI EASTINGS_DELTA_SETTING( "eastingsDelta", "Desired "
        "change in longitude to achieve, expressed as a distance", Units::METER );
static const SettingURI LATITUDE_SETTING( "latitude", "Desired Latitude, "
        "defaults to current latitude", Units::DEGREE );
static const SettingURI LATITUDE_DELTA_SETTING( "latitudeDelta", "Desired "
        "waypoint latitude delta from the current latitude", Units::DEGREE );
static const SettingURI LONGITUDE_SETTING( "longitude", "Desired Longitude, "
        "defaults to current longitude", Units::DEGREE );
static const SettingURI LONGITUDE_DELTA_SETTING( "longitudeDelta", "Desired "
        "waypoint latitude delta from the current latitude", Units::DEGREE );
static const SettingURI NORTHINGS_DELTA_SETTING( "northingsDelta", "Desired "
        "change in latitude to achieve, expressed as a distance", Units::METER );
static const SettingURI WATER_FRAME_SETTING( "waterFrame", "If true, attempt to "
        "drive in water frame of reference (no attempt to fix for crosstrack "
        "errors, drive until calculated distance thru water is achieved). Can "
        "not be used with captureRadius", Units::BOOL );

}

#endif /*WAYPOINTIF_H_*/
