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

#ifndef WETLABSBB2FLIF_H
#define WETLABSBB2FLIF_H

#include "data/ElementURI.h"

/**
 *  Specifies the interface details for the WetLabsBB2FL component in the
 *  SensorModule.
 *
 *  \ingroup modules_sensor
 */
namespace WetLabsBB2FLIF
{
/// Static const for component name
/// (Can be used by other components)
static const Str NAME( "WetLabsBB2FL" );

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

static const ConfigURI TIMEOUT( NAME, "timeout", Units::SECOND );
static const ConfigURI PERIOD( NAME, "period", Units::SECOND );
static const ConfigURI SERIAL( NAME, "serial", Units::NONE );
static const ConfigURI SCALE_FACTOR_470( NAME, "scaleFactor470", Units::RECIPROCAL_METER_PER_STERADIAN_PER_COUNT );
static const ConfigURI DARK_COUNTS_470( NAME, "darkCounts470", Units::COUNT );;
static const ConfigURI SCALE_FACTOR_650( NAME, "scaleFactor650", Units::RECIPROCAL_METER_PER_STERADIAN_PER_COUNT );
static const ConfigURI DARK_COUNTS_650( NAME, "darkCounts650", Units::COUNT );
static const ConfigURI SCALE_FACTOR_CHL( NAME, "scaleFactorChl", Units::MICROGRAM_PER_LITER_PER_COUNT );
static const ConfigURI DARK_COUNTS_CHL( NAME, "darkCountsChl", Units::COUNT );
static const ConfigURI CHL_ACCURACY( NAME, "chlAccuracy", Units::MICROGRAM_PER_LITER );
static const ConfigURI SCALE_FACTOR_CDOM( NAME, "scaleFactorCDOM", Units::PART_PER_BILLION_PER_COUNT );
static const ConfigURI DARK_COUNTS_CDOM( NAME, "darkCountsCDOM", Units:: COUNT );
static const ConfigURI CDOM_ACCURACY( NAME, "cdomAccuracy", Units::PART_PER_BILLION );

static const DataURI OUTPUT_470( NAME, "Output470", Units::COUNT );
static const DataURI OUTPUT_650( NAME, "Output650", Units::COUNT );
static const DataURI OUTPUT_CHL( NAME, "OutputChl", Units::COUNT );
static const DataURI OUTPUT_CDOM( NAME, "OutputCDOM", Units::COUNT );

static const DataURI VOLUME_SCAT_COEFF_117DEG_470NM( NAME, "VolumeScatCoeff117deg470nm", Units::RECIPROCAL_METER_PER_STERADIAN );
static const DataURI VOLUME_SCAT_COEFF_117DEG_650NM( NAME, "VolumeScatCoeff117deg650nm", Units::RECIPROCAL_METER_PER_STERADIAN );
static const DataURI  BACKSCATTERING_COEFF_470NM( NAME, "BackscatteringCoeff470nm", Units::RECIPROCAL_METER );
static const DataURI  BACKSCATTERING_COEFF_650NM( NAME, "BackscatteringCoeff650nm", Units::RECIPROCAL_METER );

static const DataURI BIN_MEDIAN_MASS_CONCENTRATION_OF_CHLOROPHYLL_IN_SEA_WATER( NAME,
        "bin_median_mass_concentration_of_chlorophyll_in_sea_water",
        Units::MICROGRAM_PER_LITER );
static const DataURI BIN_MEAN_MASS_CONCENTRATION_OF_CHLOROPHYLL_IN_SEA_WATER( NAME,
        "bin_mean_mass_concentration_of_chlorophyll_in_sea_water",
        Units::MICROGRAM_PER_LITER );
static const DataURI BIN_VARIANCE_MASS_CONCENTRATION_OF_CHLOROPHYLL_IN_SEA_WATER( NAME,
        "bin_variance_mass_concentration_of_chlorophyll_in_sea_water",
        Units::MICROGRAM_PER_LITER );
static const DataURI BIN_MEDIAN_CONCENTRATION_OF_CDOM_IN_SEA_WATER( NAME,
        "bin_median_concentration_of_cdom_in_sea_water",
        Units::PART_PER_BILLION );
static const DataURI BIN_MEAN_CONCENTRATION_OF_CDOM_IN_SEA_WATER( NAME,
        "bin_mean_concentration_of_cdom_in_sea_water",
        Units::PART_PER_BILLION );
static const DataURI BIN_VARIANCE_CONCENTRATION_OF_CDOM_IN_SEA_WATER( NAME,
        "bin_variance_concentration_of_cdom_in_sea_water",
        Units::PART_PER_BILLION );
}

#endif /*WETLABSBB2FLIF_H*/
