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

#include "data/ElementURI.h"

#ifndef SPEEDCONTROLIF_H_
#define SPEEDCONTROLIF_H_

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

// Include common ConfigURIs -- must be in namespace and follow definition of NAME
#include "component/HasLoadAtStartupIF.h"

/// Static consts for input settings
/// (Supplied so outputs can be directed to these inputs)
static const DataURI SPEED_CMD( NAME, "speedCmd", Units::METER_PER_SECOND );

/// Configuration
static const ConfigURI PROP_PITCH_CFG( NAME, "propPitch", Units::METER_PER_RADIAN );

/// Static consts for outputs to servos
static const DataURI PROP_OMEGA_ACTION( NAME, "propOmegaAction", Units::RADIAN_PER_SECOND );

/// Fast and slow speeds -- should probably be read from vehicle.config
static const float SPEED_SLOW( 0.5 ); // Nominal 0.5 m/s
static const float SPEED_FAST( 1.0 ); // Nominal 1.0 m/s

}

#endif /*SPEEDCONTROLIF_H_*/
