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

#ifndef LOOPCONTROLIF_H_
#define LOOPCONTROLIF_H_

#include "data/ElementURI.h"

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

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

/// Static consts for configuration settings
static const ConfigURI NOMINAL_DT_CFG( NAME, "nominalDt", Units::SECOND );

/// Static consts for input settings
static const DataURI PERIOD_CMD( NAME, "periodCmd", Units::SECOND );

/// Fast and slow loops -- should probably be read from vehicle.config
static const float LOOP_FAST( 0.400 ); // Nominal mode 400 milliseconds/cycle
static const float LOOP_SLOW( 5.000 ); // Slow mode 5 seconds/cycle
static const float LOOP_DRIFT( 300.000 ); // Drift mode 5 minutes/cycle

}

#endif /*LOOPCONTROLIF_H_*/
