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

#ifndef VALUEDETECTIF_H_
#define VALUEDETECTIF_H_

#include "data/ElementURI.h"

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

/// Static consts for input settings
/// (Supplied so outputs can be directed to these inputs)
static const SettingURI DETECT_SETTING( "detect", "The variable that is "
                                        "being detected (dependent variable)", Units::NONE );
static const SettingURI VALUE_SETTING( "value", "value being sought", Units::NONE );
static const SettingURI DELTA_SETTING( "delta", "optional bounds around value that cause trigger", Units::NONE );
static const SettingURI UPPER_THRESHOLD_SETTING( "upperThreshold", "Triggered when variable falls in [lowerThreshold upperThreshold]. upperThreshold is ignored if NaN", Units::NONE );
static const SettingURI LOWER_THRESHOLD_SETTING( "lowerThreshold", "Triggered when variable falls in [lowerThreshold upperThreshold]. lowerThreshold is ignored if NaN", Units::NONE );
static const SettingURI NUM_PROFILES_THRESHOLD_SETTING( "numProfilesThreshold", "Triggered when variable falls in [lowerThreshold upperThreshold] on numProfilesThreshold consecutive profiles", Units::NONE );
static const StringSettingURI OUTPUT_SETTING( "output", "The variable that is read and written to outputValue when trigger occurs" );
static const OutputURI DEPTH_OUTPUT( "depth", Units::METER );
static const OutputURI LATITUDE_OUTPUT( "latitude", Units::DEGREE );
static const OutputURI LONGITUDE_OUTPUT( "longitude", Units::DEGREE );
static const OutputURI OUTPUT_VALUE_OUTPUT( "outputValue", Units::NONE );
static const OutputURI PITCH_OUTPUT( "pitch", Units::RADIAN );
static const OutputURI HEADING_OUTPUT( "heading", Units::RADIAN );
}

#endif /*VALUEDETECTIF_H_*/
