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

#include "data/ElementURI.h"

#ifndef THRUSTERSERVOIF_H_
#define THRUSTERSERVOIF_H_

/**
 *  Specifies the interface details for the ThrusterServo component in the
 *  ServoModule.
 *
 *  ThrusterServo.h should only be included by ThrusterServo.cpp
 *  Other classes should include ThrusterServoIF.h
 *
 *  \ingroup modules_controller
 */
namespace ThrusterServoIF
{
// Component name
static const Str NAME( "ThrusterServo" );

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

// Include parent URIs -- must be in namespace and follow definition of NAME
#include "EZServoAllIF.h"
#include "EZServoPIDIF.h"
#include "EZServoAccelOverloadIF.h"

static const ConfigURI ENCODER_TKS_CFG( NAME, "encoderTks", Units::COUNT );                  // encoder tick/second multiplier
static const ConfigURI TKS_PER_REV_CFG( NAME, "tksPerRev", Units::COUNT_PER_REVOLUTION );    // encoder ticks/revolution as seen by the controller from HALL A&B
static const ConfigURI DEVIATION_CFG( NAME, "deviation", Units::COUNT );                         // Number of encoder ticks deviation allowed between expected and actual
static const ConfigURI ALLOWABLE_BAD_VELOCITY_CFG( NAME, "allowableBadVelocity", Units::COUNT ); // Allowable Number of bad velocity reads
}

#endif /*THRUSTERSERVOIF_H_*/
