89 lines
4.1 KiB
C++
89 lines
4.1 KiB
C++
/*******************************
|
|
* EIVE Flight Software Framework (FSFW)
|
|
* (c) 2022 IRS, Uni Stuttgart
|
|
*******************************/
|
|
#ifndef SENSORPROCESSING_H_
|
|
#define SENSORPROCESSING_H_
|
|
|
|
#include <fsfw/returnvalues/returnvalue.h>
|
|
#include <stdint.h> //uint8_t
|
|
#include <time.h> /*purpose, timeval ?*/
|
|
|
|
#include "../controllerdefinitions/AcsCtrlDefinitions.h"
|
|
#include "AcsParameters.h"
|
|
#include "OutputValues.h"
|
|
#include "SensorValues.h"
|
|
#include "SusConverter.h"
|
|
#include "config/classIds.h"
|
|
|
|
class SensorProcessing {
|
|
public:
|
|
void reset();
|
|
|
|
SensorProcessing(AcsParameters *acsParameters_);
|
|
virtual ~SensorProcessing();
|
|
|
|
void process(timeval now, ACS::SensorValues *sensorValues, ACS::OutputValues *outputValues,
|
|
const AcsParameters *acsParameters); // Will call protected functions
|
|
private:
|
|
protected:
|
|
// short description needed for every function
|
|
bool processMgm(const float *mgm0Value, bool mgm0valid, const float *mgm1Value, bool mgm1valid,
|
|
const float *mgm2Value, bool mgm2valid, const float *mgm3Value, bool mgm3valid,
|
|
const float *mgm4Value, bool mgm4valid, timeval timeOfMgmMeasurement,
|
|
const AcsParameters::MgmHandlingParameters *mgmParameters,
|
|
const double gpsLatitude, const double gpsLongitude, const double gpsAltitude,
|
|
bool gpsValid, double *magFieldEst, bool *outputValid, double *magFieldModel,
|
|
bool *magFieldModelValid, double *magneticFieldVectorDerivative,
|
|
bool *magneticFieldVectorDerivativeValid); // Output
|
|
|
|
void processSus(const uint16_t *sus0Value, bool sus0valid, const uint16_t *sus1Value,
|
|
bool sus1valid, const uint16_t *sus2Value, bool sus2valid,
|
|
const uint16_t *sus3Value, bool sus3valid, const uint16_t *sus4Value,
|
|
bool sus4valid, const uint16_t *sus5Value, bool sus5valid,
|
|
const uint16_t *sus6Value, bool sus6valid, const uint16_t *sus7Value,
|
|
bool sus7valid, const uint16_t *sus8Value, bool sus8valid,
|
|
const uint16_t *sus9Value, bool sus9valid, const uint16_t *sus10Value,
|
|
bool sus10valid, const uint16_t *sus11Value, bool sus11valid,
|
|
timeval timeOfSusMeasurement,
|
|
const AcsParameters::SusHandlingParameters *susParameters,
|
|
const AcsParameters::SunModelParameters *sunModelParameters, double *sunDirEst,
|
|
bool *sunDirEstValid, double *sunVectorInertial, bool *sunVectorInertialValid,
|
|
double *sunVectorDerivative, bool *sunVectorDerivativeValid);
|
|
|
|
void processGyr(const double gyr0axXvalue, bool gyr0axXvalid, const double gyr0axYvalue,
|
|
bool gyr0axYvalid, const double gyr0axZvalue, bool gyr0axZvalid,
|
|
const double gyr1axXvalue, bool gyr1axXvalid, const double gyr1axYvalue,
|
|
bool gyr1axYvalid, const double gyr1axZvalue, bool gyr1axZvalid,
|
|
const double gyr2axXvalue, bool gyr2axXvalid, const double gyr2axYvalue,
|
|
bool gyr2axYvalid, const double gyr2axZvalue, bool gyr2axZvalid,
|
|
const double gyr3axXvalue, bool gyr3axXvalid, const double gyr3axYvalue,
|
|
bool gyr3axYvalid, const double gyr3axZvalue, bool gyr3axZvalid,
|
|
timeval timeOfGyrMeasurement,
|
|
const AcsParameters::GyrHandlingParameters *gyrParameters, double *satRatEst,
|
|
bool *satRateEstValid);
|
|
|
|
void processStr();
|
|
|
|
void processGps(const double gps0latitude, const double gps0longitude,
|
|
const double gps0altitude, const uint32_t gps0UnixSeconds,
|
|
const bool validGps, const AcsParameters::GpsParameters *gpsParameters,
|
|
double *gcLatitude, double *gdLongitude, double *gpsVelocityE);
|
|
|
|
double savedMagFieldEst[3];
|
|
timeval timeOfSavedMagFieldEst;
|
|
double savedSunVector[3];
|
|
timeval timeOfSavedSusDirEst;
|
|
bool validMagField;
|
|
bool validGcLatitude;
|
|
|
|
double savedPosSatE[3];
|
|
uint32_t timeOfSavedPosSatE;
|
|
bool validSavedPosSatE;
|
|
|
|
SusConverter susConverter;
|
|
AcsParameters acsParameters;
|
|
};
|
|
|
|
#endif /*SENSORPROCESSING_H_*/
|