/** \file
 *
 *  Contains the DeadReckonWithRespectToSeafloor class declaration.
 *
 *  DeadReckonWithRespectToSeafloor.h should only be included by DeadReckonWithRespectToSeafloor.cpp
 *  Other classes should include DeadReckonWithRespectToSeafloorIF.h
 *
 *  Copyright (c) 2013 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
*/
#ifndef DEADRECKONWITHRESPECTTOSEAFLOOR_H_
#define DEADRECKONWITHRESPECTTOSEAFLOOR_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 UniversalDataReader;

/**
 * Dead Reckoning navigator using: UniversalURI::PLATFORM_VELOCITY_WRT_GROUND
 *
 *  (UniversalURI::PLATFORM_SPEED_WRT_GROUND is only the x component with the current LinkQuest driver, and there is no UniversalURI::PLATFORM_DIRECTION_WRT_GROUND)
 *
 * DeadReckonWithRespectToSeafloor.h should only be included by DeadReckonWithRespectToSeafloor.cpp
 * Other classes should include DeadReckonWithRespectToSeafloor.h
 *
 * \ingroup modules_navigation
 */
class DeadReckonWithRespectToSeafloor : public DeadReckoner
{
public:
    DeadReckonWithRespectToSeafloor( const Module* module );
    virtual ~DeadReckonWithRespectToSeafloor();
    void initialize( void );

protected: // TODO: why private vs. protected?
    UniversalBlobReader* velocityReader_;

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

    // all other parameters and methods are inherited
};

#endif /* DEADRECKONWITHRESPECTTOSEAFLOOR_H_ */
