/** \file
 *
 *  Contains the UniversalFixResidualReporter class declaration.
 *
 *  UniversalFixResidualReporter.h should only be included by UniversalFixResidualReporter.cpp and children.
 *
 *  Copyright (c) 2013 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
*/
#ifndef UNIVERSALFIXRESIDUALREPORTER_H_
#define UNIVERSALFIXRESIDUALREPORTER_H_

// include parent class
#include "component/SyncComponent.h" // should include component/Component.h in turn
// forward declare classes for which this class includes a pointer
class ConfigReader;
class UniversalDataReader;

/**
 * UniversalFixResidualReporter class.
 *
 * UniversalFixResidualReporter.h should only be included by UniversalFixResidualReporter.cpp and children.
 *
 * \ingroup modules_navigation
 */
class UniversalFixResidualReporter : public SyncNavigationComponent
{
public:

    UniversalFixResidualReporter( const Module* module );

    virtual ~UniversalFixResidualReporter();

    void initialize( void );

    void run( void );

    void reportFixResidual( void );

protected:

    ConfigReader* verbosityLevelConfigReader_;

    UniversalDataReader* timeFixReader_;
    UniversalDataReader* latitudeFixReader_;
    UniversalDataReader* longitudeFixReader_;
    UniversalDataReader* fixHorizontalPathLengthSinceLastFixReader_;
    UniversalDataReader* fixDistanceMadeGoodReader_;
    UniversalDataReader* fixResidualDistanceReader_;
    UniversalDataReader* fixResidualBearingReader_;
    UniversalDataReader* fixResidualPercentDistanceTraveledReader_;

    int verbosity_;
};

#endif /* UNIVERSALFIXRESIDUALREPORTER_H_ */
