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

#ifndef CALIBRATEAHRS_M2_H_
#define CALIBRATEAHRS_M2_H_

#include "component/Behavior.h"


class CalibrateAHRS_M2 : public Behavior
{
public:

    CalibrateAHRS_M2( const Str& prefix, const Module* module );

    virtual ~CalibrateAHRS_M2();

    /// Starts compass in MANUAL cal mode
    virtual void initialize( void );

    /// Run just waits while the mission circles
    virtual void run();

    /// Kicks compass into AUTO cal mode
    virtual void preempted();

    /// Turns cal mode OFF, reports result.
    virtual void uninitialize( void );

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

protected:

    /// Have we started the calibration process?
    bool initialized_;

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

};

#endif /* CALIBRATEAHRS_M2_H_ */
