/** \file
 *
 *  Specifies the interface details for the Dynamic Docking Module (DDM) component in the
 *  SensorModule.
 *
 *  DDM.h should only be included by DDM.cpp
 *  Other classes should include DDMIF.h
 *
 *  Copyright (c) 2007,2008,2009-2019 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef DDMIF_H
#define DDMIF_H

#include "data/ElementURI.h"

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

// 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"

// Other config URIs
static const ConfigURI VERBOSITY_CFG( NAME, "verbosity", "0=concise to 3=most verbose", Units::ENUM );
static const ConfigURI PWM_LIMIT_CFG( NAME, "PWMLimit", "Adjut the motor speed [clip the PWM signal]", Units::COUNT );
static const ConfigURI CURRENT_LIMIT_CFG( NAME, "currentLimit", "Adjust the max torque", Units::COUNT );

// slate outputs direct from instrument
static const DataURI WHISKER_STATE_READING( NAME, "whiskerState", Units::COUNT );
static const DataURI LATCH_STATE_READING( NAME, "latchState", Units::COUNT );
static const DataURI CABLE_VALUE_READING( NAME, "cableValue", Units::COUNT );

}

#endif /*DDMIF_H*/
