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

#ifndef AHRS_M2IF_H_
#define AHRS_M2IF_H_

#include "data/ElementURI.h"

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

// 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 DataURI COMPASS_CAL_STATE( NAME, "calibration_state", Units::COUNT );
static const DataURI COMPASS_ORIENTATION( NAME, "orientation", Units::RADIAN );
static const DataURI COMPASS_ORIENTATION_ERR( NAME, "orientation_error", Units::RADIAN );
static const DataURI COMPASS_TEMPERATURE( NAME, "temperature", Units::CELSIUS );

static const BlobURI MAGNETOMETER_READAING( NAME, "magnetic_field_along_xyz", Units::MILLIGAUSS, BLOB_FLOAT64LE, 3 );
static const BlobURI ACCELEROMETER_READAING( NAME, "acceleration_along_xyz", Units::METER_PER_SECOND_SQUARED, BLOB_FLOAT64LE, 3 );
static const BlobURI GYRO_READAING( NAME, "angular_velocity_along_xyz", Units::RADIAN_PER_SECOND, BLOB_FLOAT64LE, 3 );

static const DataURI NUM_POINTS_CAL( NAME, "number_of_calbration_points", Units::COUNT );

static const ConfigURI MAG_DEVIATION_CFG( NAME, "magDeviation", Units::DEGREE );
static const ConfigURI NUM_POINTS_CAL_CFG( NAME, "minNumPointsCal", Units::COUNT );
static const ConfigURI READ_ACCELERATIONS_CFG( NAME, "readAccelerations", Units::BOOL );
static const ConfigURI READ_ANGULAR_VELOCITIES_CFG( NAME, "readAngularVelocities", Units::BOOL );
static const ConfigURI READ_MAGNETICS_CFG( NAME, "readMagnetics", Units::BOOL );
static const ConfigURI VERBOSITY_CFG( NAME, "verbosity", Units::COUNT );
static const RestartConfigURI BORESIGHT_MATRIX_CFG( NAME, "boresightMatrix", Units::NONE, STRVALUE );

}

#endif /*AHRS_M2IF_H_*/
