/** \file
 *
 *  Specifies the interface details for the MultiRay component in the
 *  SensorModule.
 *
 *  MultiRay.h should only be included by MultiRay.cpp
 *  Other classes should include MultiRay.h
 *
 *  \ingroup modules_science
 *  Copyright (c) 2022 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef MULTIRAYIF_H_
#define MULTIRAYIF_H_

#include "utils/Str.h"
#include "data/ElementURI.h"

namespace MultiRayIF
{

/// Static const for component name
/// (Can be used by other components)
static const Str NAME( "MultiRay" );

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

// this component controls two uart ports. both are instantiated here manually for readability,
// instead of using component/HasUartIF.h (option: create a component/HasUart2IF to match HasLoadControl2IF?)
static const RestartConfigURI UART( NAME, "uart", "logical device "
                                    "name of UART", Units::NONE, STRVALUE );

static const RestartConfigURI UART2( NAME, "uart2", "logical device "
                                     "name of UART", Units::NONE, STRVALUE );

static const RestartConfigURI BAUD( NAME, "baud", "baud rate of both UART ports", Units::BIT_PER_SECOND );

static const ConfigURI BRIGHTNESS_WHITE( NAME, "brightnessWhite", Units::NONE_INT );
static const ConfigURI BRIGHTNESS_RED( NAME, "brightnessRed", Units::NONE_INT );
static const DataURI LIGHT_MODE_COMMAND( NAME, "lightModeCommand", Units::COUNT );
static const DataURI LIGHT_MODE_LOG( NAME, "lightModeLog", Units::COUNT );

}


#endif
