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

#ifndef GOBYMODEMIF_H_
#define GOBYMODEMIF_H_

#include "data/ElementURI.h"

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

// 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/HasPowerIF.h"
#include "component/HasUartIF.h"

// Other config URIs
static const RestartConfigURI MODEM_TYPE_CFG( NAME, "modemType", "Either benthos_atm900 or whoi_micromodem", Units::NONE, STRVALUE );
static const ConfigURI NETWORK_IDS_CFG( NAME, "networkIds", "Comma separated list of IDs of all deployed vehicles with modems", Units::NONE, STRVALUE );
static const ConfigURI MAX_DISTANCE_CFG( NAME, "maxDistance", "Maximum distance of transmission, used in simulation", Units::METER );
static const ConfigURI TRANS_BAUD_CFG( NAME, "transBaud", "Baud rate of transmission, used in simulation", Units::BIT_PER_SECOND );

// inputs from other components
static const DataURI DUSBL_PING_CODE_REQUESTED( NAME, "dusblPingCode", "Transponder code: 2 for DR1-A, 3 for DR1-B, etc", Units::ENUM );

}

#endif /*GOBYMODEMIF_H_*/
