/** \file
 *
 *  Contains the HFRadarModel class declaration.
 *
 *  HFRadarModel.h should only be included by HFRadarModel.cpp
 *  Other classes should include HFRadarModelIF.h
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef HFRADARMODEL_H_
#define HFRADARMODEL_H_

#include "component/Behavior.h"
#include "data/Mtx.h"

class UniversalDataReader;
class UniversalDataWriter;

/**
 *  Over simplified HFRadarModel component
 *
 *  HFRadarModel.h should only be included by HFRadarModel.cpp
 *  Other classes should include HFRadarModelIF.h
 *
 *  Implements onboard models work.
 *
 *  \ingroup modules_derivation
 */
class HFRadarModel : public Behavior
{
public:
    HFRadarModel( const Str& prefix, const Module* module );
    virtual ~HFRadarModel();

    void initialize( void );

    /// The actual "payload" of the component
    void run();

    bool runIfUnsatisfied();

    /// Mission Component factory interface
    static Behavior* CreateBehavior( const Str& prefix, const Module* module );

protected:

    UniversalDataReader* latitudeReader_;
    UniversalDataReader* longitudeReader_;

    // Argument output variables
    DataWriter* uWriter_;
    DataWriter* vWriter_;

private:
    // Note that the copy constructor below is private and not given a body.
    // Any attempt to call it will return a compiler error.
    HFRadarModel( const HFRadarModel& old ); // disallow copy constructor


};

#endif /*RATECALCULATOR_H_*/
