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

#include "data/ElementURI.h"

#ifndef MASSSERVOIF_H_
#define MASSSERVOIF_H_

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

// 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 "EZServoLimitsIF.h"
#include "EZServoAccelOverloadIF.h"
#include "EZServoVelocityIF.h"

static const ConfigURI TOTAL_TKS_CFG( NAME, "totalTks", Units::COUNT );                    // Total encoder ticks for full mass shift travel
static const ConfigURI TKS_PER_MM_CFG( NAME, "tksPerMM", Units::COUNT_PER_MILLIMETER );    // Number of ticks for one rotation (1 mm of travel)
static const ConfigURI DEVIATION_DISTANCE( NAME, "deviationDistance", Units::MILLIMETER ); // Deviation allowed between expected and actual
}

#endif /*MASSSERVOIF_H_*/
