#ifndef NAVIGATION_H_
#define NAVIGATION_H_

#include "../controllerdefinitions/AcsCtrlDefinitions.h"
#include "AcsParameters.h"
#include "MultiplicativeKalmanFilter.h"
#include "SensorProcessing.h"
#include "SensorValues.h"

class Navigation {
 public:
  Navigation();
  virtual ~Navigation();

  ReturnValue_t useMekf(ACS::SensorValues *sensorValues,
                        acsctrl::GyrDataProcessed *gyrDataProcessed,
                        acsctrl::MgmDataProcessed *mgmDataProcessed,
                        acsctrl::SusDataProcessed *susDataProcessed, acsctrl::MekfData *mekfData,
                        AcsParameters *acsParameters);
  void resetMekf(acsctrl::MekfData *mekfData);

 protected:
 private:
  MultiplicativeKalmanFilter multiplicativeKalmanFilter;
  ReturnValue_t mekfStatus = MultiplicativeKalmanFilter::MEKF_UNINITIALIZED;
};

#endif /* ACS_NAVIGATION_H_ */