/** \file
 *
 *  Contains the DeadReckonUsingSpeedCalculator class declaration.
 *
 *  DeadReckonUsingSpeedCalculator.h should only be included by DeadReckonUsingSpeedCalculator.cpp
 *  Other classes should include DeadReckonUsingSpeedCalculatorIF.h
 *
 *  Copyright (c) 2013 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
*/
#ifndef DEADRECKONUSINGSPEEDCALCULATOR_H_
#define DEADRECKONUSINGSPEEDCALCULATOR_H_

// include parent class
#include "navigationModule/DeadReckoner.h" // should include component/Component.h in turn

// forward declare classes for which this class includes a pointer
class DataReader;

/**
 * Dead Reckoning navigator using SpeedCalculator::PLATFORM_SPEED_WRT_SEA_WATER.
 *
 * DeadReckonUsingSpeedCalculator.h should only be included by DeadReckonUsingSpeedCalculator.cpp
 * Other classes should include DeadReckonUsingSpeedCalculator.h
 *
 * \ingroup modules_navigation
 */
class DeadReckonUsingSpeedCalculator : public DeadReckoner
{
public:
    DeadReckonUsingSpeedCalculator( const Module* module );
    virtual ~DeadReckonUsingSpeedCalculator();
    void initialize( void );

protected: // TODO: why private vs. protected?
    DataReader* speedReader_;

    // read in velocity required for dead reckoning calculation
    void readVehicleVelocity( void );

    // all other parameters and methods are inherited
};

#endif /* DEADRECKONUSINGSPEEDCALCULATOR_H_ */
