/** \file
 *
 *  Contains the NavigationModule class definition.
 *
 *  Copyright (c) 2013 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

/** \defgroup modules_navigation Loadable Module: Navigation
 *
 *  The NavigationModule provides components that take the
 *  outputs of navigation sensors and combine them to
 *  produce an estimate of the vehicle pose (i.e., location
 *  and orientation).
 */

#ifndef NAVIGATIONMODULE_H_
#define NAVIGATIONMODULE_H_

#include "module/Module.h"

/**
 *  The NavigationModule provides components that take the
 *  outputs of navigation sensors and combine them to
 *  produce an estimate of the vehicle pose (i.e., location
 *  and orientation).
 *
 *  \ingroup modules_navigation
 */
class NavigationModule : public Module
{
public:
    /// Constructor
    NavigationModule();

    /// Destructor
    virtual ~NavigationModule();

    void loadComponents( Logger& logger );

private:

};

/// Class factories

/// create_module must be implemented, following the
/// class implementation:
extern "C" Module* create_module()
{
    return new NavigationModule();
}

/// destroy_module must be implemented, following the
/// class implementation:
extern "C" void destroy_module( Module* module )
{
    delete module;
}

#endif /*NAVIGATIONMODULE_H_*/
