eive-obsw/mission/controller/acs/control/SafeCtrl.h

65 lines
1.5 KiB
C
Raw Normal View History

2022-09-20 13:46:42 +02:00
/*
* safeCtrl.h
*
* Created on: 19 Apr 2022
* Author: rooob
*/
#ifndef SAFECTRL_H_
#define SAFECTRL_H_
2022-09-27 11:06:11 +02:00
#include "../SensorValues.h"
#include "../OutputValues.h"
#include "../AcsParameters.h"
#include "../config/classIds.h"
2022-09-20 13:46:42 +02:00
#include <string.h>
#include <stdio.h>
#include <time.h>
2022-09-27 11:06:11 +02:00
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
2022-09-20 13:46:42 +02:00
2022-09-26 10:39:57 +02:00
class SafeCtrl{
2022-09-20 13:46:42 +02:00
public:
SafeCtrl(AcsParameters *acsParameters_);
virtual ~SafeCtrl();
static const uint8_t INTERFACE_ID = CLASS_ID::SAFE;
static const ReturnValue_t SAFECTRL_MEKF_INPUT_INVALID = MAKE_RETURN_CODE(0x01);
void loadAcsParameters(AcsParameters *acsParameters_);
ReturnValue_t safeMekf(timeval now, double *quatBJ, bool *quatBJValid,
double *magFieldModel, bool *magFieldModelValid,
double *sunDirModel, bool *sunDirModelValid,
double *satRateMekf, bool *rateMekfValid,
double *sunDirRef, double *satRatRef, // From Guidance (!)
double *outputMagMomB, bool *outputValid);
void safeNoMekf(timeval now, double *susDirB, bool *susDirBValid,
double *sunRateB, bool *sunRateBValid,
double *magFieldB, bool *magFieldBValid,
double *magRateB, bool *magRateBValid,
double *sunDirRef, double *satRateRef,
double *outputMagMomB, bool *outputValid);
void idleSunPointing(); // with reaction wheels
protected:
private:
AcsParameters::SafeModeControllerParameters* safeModeControllerParameters;
AcsParameters::InertiaEIVE* inertiaEIVE;
double gainMatrixInertia[3][3];
double magFieldBState[3];
timeval magFieldBStateTime;
};
#endif /* ACS_CONTROL_SAFECTRL_H_ */