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

#ifndef LBLIF_H_
#define LBLIF_H_

#include "data/ElementURI.h"

/**
 *  Specifies the interface details for the LBL component in the
 *  GuidanceModule.
 *
 *  LBL.h should only be included by LBL.cpp
 *  Other classes should include LBLIF.h
 *
 *  \ingroup modules_guidance
 */
namespace LBLIF
{
/// Static const for component name
/// (Can be used by other components)
static const NameURI NAME( "LBL", "Calculates vehicle position using Long BaseLine (LBL) positioning" );

/// Maximum number of Transponders (below)
static const int NUM_TRANS = 4;

/// Static consts for input settings
/// (Supplied so outputs can be directed to these inputs)
static const SettingURI TRANS1_LOCATION_SETTING( "trans1Location", "Location [latitude,longitude]"
        "of transponder#1", Units::DEGREE );
static const SettingURI TRANS1_DEPTH_SETTING( "trans1Depth", "Depth of transponder #1", Units::METER );

static const SettingURI TRANS2_LOCATION_SETTING( "trans2Location", "Location [latitude,longitude]"
        "of transponder#2", Units::DEGREE );
static const SettingURI TRANS2_DEPTH_SETTING( "trans2Depth", "Depth of transponder #2", Units::METER );
static const SettingURI TRANS2_CHANNEL_SETTING( "trans2Channel", "Acoustic channel of transponder #2", Units::ENUM );

static const SettingURI TRANS3_LOCATION_SETTING( "trans3Location", "Location [latitude,longitude]"
        "of transponder#3", Units::DEGREE );
static const SettingURI TRANS3_DEPTH_SETTING( "trans3Depth", "Depth of transponder #3", Units::METER );
static const SettingURI TRANS3_CHANNEL_SETTING( "trans3Channel", "Acoustic channel of transponder #3", Units::ENUM );

static const SettingURI TRANS4_LOCATION_SETTING( "trans4Location", "Location [latitude,longitude]"
        "of transponder#4", Units::DEGREE );
static const SettingURI TRANS4_DEPTH_SETTING( "trans4Depth", "Depth of transponder #4", Units::METER );
static const SettingURI TRANS4_CHANNEL_SETTING( "trans4Channel", "Acoustic channel of transponder #4", Units::ENUM );

// Arrays for convienent access to above transponder variables
static const SettingURI* TRANS_LOCATION_SETTINGS[LBLIF::NUM_TRANS] =
{
    &LBLIF::TRANS1_LOCATION_SETTING,
    &LBLIF::TRANS2_LOCATION_SETTING,
    &LBLIF::TRANS3_LOCATION_SETTING,
    &LBLIF::TRANS4_LOCATION_SETTING
};

static const SettingURI* TRANS_DEPTH_SETTINGS[LBLIF::NUM_TRANS] =
{
    &LBLIF::TRANS1_DEPTH_SETTING,
    &LBLIF::TRANS2_DEPTH_SETTING,
    &LBLIF::TRANS3_DEPTH_SETTING,
    &LBLIF::TRANS4_DEPTH_SETTING
};

}

#endif /*LBLIF_H_*/
