/*
 * Navigation.h
 *
 *  Created on: 19 Apr 2022
 *      Author: Robin Marquardt
 */

#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(AcsParameters *acsParameters_);  // Input mode ?
  virtual ~Navigation();

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

 protected:
 private:
  MultiplicativeKalmanFilter multiplicativeKalmanFilter;
  AcsParameters acsParameters;
  bool kalmanInit = false;
};

#endif /* ACS_NAVIGATION_H_ */