meggert
4b8f5992b5
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
620 lines
20 KiB
C++
620 lines
20 KiB
C++
#include "AcsParameters.h"
|
|
|
|
#include <fsfw/src/fsfw/globalfunctions/constants.h>
|
|
#include <stddef.h>
|
|
|
|
AcsParameters::AcsParameters() {}
|
|
|
|
AcsParameters::~AcsParameters() {}
|
|
|
|
ReturnValue_t AcsParameters::getParameter(uint8_t domainId, uint8_t parameterId,
|
|
ParameterWrapper* parameterWrapper,
|
|
const ParameterWrapper* newValues,
|
|
uint16_t startAtIndex) {
|
|
switch (domainId) {
|
|
case 0x0: // direct members
|
|
switch (parameterId) {
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case 0x1: // OnBoardParams
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(onBoardParams.sampleTime);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case 0x2: // InertiaEIVE
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(inertiaEIVE.inertiaMatrix);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(inertiaEIVE.inertiaMatrixDeployed);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(inertiaEIVE.inertiaMatrixUndeployed);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(inertiaEIVE.inertiaMatrixPanel1);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(inertiaEIVE.inertiaMatrixPanel3);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case 0x3: // MgmHandlingParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm0orientationMatrix);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm1orientationMatrix);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm2orientationMatrix);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm3orientationMatrix);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm4orientationMatrix);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm0hardIronOffset);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm1hardIronOffset);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm2hardIronOffset);
|
|
break;
|
|
case 0x8:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm3hardIronOffset);
|
|
break;
|
|
case 0x9:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm4hardIronOffset);
|
|
break;
|
|
case 0xA:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm0softIronInverse);
|
|
break;
|
|
case 0xB:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm1softIronInverse);
|
|
break;
|
|
case 0xC:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm2softIronInverse);
|
|
break;
|
|
case 0xD:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm3softIronInverse);
|
|
break;
|
|
case 0xE:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm4softIronInverse);
|
|
break;
|
|
case 0xF:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm02variance);
|
|
break;
|
|
case 0x10:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm13variance);
|
|
break;
|
|
case 0x11:
|
|
parameterWrapper->set(mgmHandlingParameters.mgm4variance);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case 0x4: // SusHandlingParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(susHandlingParameters.sus0orientationMatrix);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(susHandlingParameters.sus1orientationMatrix);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(susHandlingParameters.sus2orientationMatrix);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(susHandlingParameters.sus3orientationMatrix);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(susHandlingParameters.sus4orientationMatrix);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(susHandlingParameters.sus5orientationMatrix);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(susHandlingParameters.sus6orientationMatrix);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(susHandlingParameters.sus7orientationMatrix);
|
|
break;
|
|
case 0x8:
|
|
parameterWrapper->set(susHandlingParameters.sus8orientationMatrix);
|
|
break;
|
|
case 0x9:
|
|
parameterWrapper->set(susHandlingParameters.sus9orientationMatrix);
|
|
break;
|
|
case 0xA:
|
|
parameterWrapper->set(susHandlingParameters.sus10orientationMatrix);
|
|
break;
|
|
case 0xB:
|
|
parameterWrapper->set(susHandlingParameters.sus11orientationMatrix);
|
|
break;
|
|
case 0xC:
|
|
parameterWrapper->set(susHandlingParameters.sus0coeffAlpha);
|
|
break;
|
|
case 0xD:
|
|
parameterWrapper->set(susHandlingParameters.sus0coeffBeta);
|
|
break;
|
|
case 0xE:
|
|
parameterWrapper->set(susHandlingParameters.sus1coeffAlpha);
|
|
break;
|
|
case 0xF:
|
|
parameterWrapper->set(susHandlingParameters.sus1coeffBeta);
|
|
break;
|
|
case 0x10:
|
|
parameterWrapper->set(susHandlingParameters.sus2coeffAlpha);
|
|
break;
|
|
case 0x11:
|
|
parameterWrapper->set(susHandlingParameters.sus2coeffBeta);
|
|
break;
|
|
case 0x12:
|
|
parameterWrapper->set(susHandlingParameters.sus3coeffAlpha);
|
|
break;
|
|
case 0x13:
|
|
parameterWrapper->set(susHandlingParameters.sus3coeffBeta);
|
|
break;
|
|
case 0x14:
|
|
parameterWrapper->set(susHandlingParameters.sus4coeffAlpha);
|
|
break;
|
|
case 0x15:
|
|
parameterWrapper->set(susHandlingParameters.sus4coeffBeta);
|
|
break;
|
|
case 0x16:
|
|
parameterWrapper->set(susHandlingParameters.sus5coeffAlpha);
|
|
break;
|
|
case 0x17:
|
|
parameterWrapper->set(susHandlingParameters.sus5coeffBeta);
|
|
break;
|
|
case 0x18:
|
|
parameterWrapper->set(susHandlingParameters.sus6coeffAlpha);
|
|
break;
|
|
case 0x19:
|
|
parameterWrapper->set(susHandlingParameters.sus6coeffBeta);
|
|
break;
|
|
case 0x1A:
|
|
parameterWrapper->set(susHandlingParameters.sus7coeffAlpha);
|
|
break;
|
|
case 0x1B:
|
|
parameterWrapper->set(susHandlingParameters.sus7coeffBeta);
|
|
break;
|
|
case 0x1C:
|
|
parameterWrapper->set(susHandlingParameters.sus8coeffAlpha);
|
|
break;
|
|
case 0x1D:
|
|
parameterWrapper->set(susHandlingParameters.sus8coeffBeta);
|
|
break;
|
|
case 0x1E:
|
|
parameterWrapper->set(susHandlingParameters.sus9coeffAlpha);
|
|
break;
|
|
case 0x1F:
|
|
parameterWrapper->set(susHandlingParameters.sus9coeffBeta);
|
|
break;
|
|
case 0x20:
|
|
parameterWrapper->set(susHandlingParameters.sus10coeffAlpha);
|
|
break;
|
|
case 0x21:
|
|
parameterWrapper->set(susHandlingParameters.sus10coeffBeta);
|
|
break;
|
|
case 0x22:
|
|
parameterWrapper->set(susHandlingParameters.sus11coeffAlpha);
|
|
break;
|
|
case 0x23:
|
|
parameterWrapper->set(susHandlingParameters.sus11coeffBeta);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x5): // GyrHandlingParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr0orientationMatrix);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr1orientationMatrix);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr2orientationMatrix);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr3orientationMatrix);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr0bias);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr1bias);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr2bias);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr3bias);
|
|
break;
|
|
case 0x8:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr02variance);
|
|
break;
|
|
case 0x9:
|
|
parameterWrapper->set(gyrHandlingParameters.gyr13variance);
|
|
break;
|
|
case 0xA:
|
|
parameterWrapper->set(gyrHandlingParameters.preferAdis);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x6): // RwHandlingParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(rwHandlingParameters.inertiaWheel);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(rwHandlingParameters.maxTrq);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(rwHandlingParameters.stictionSpeed);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(rwHandlingParameters.stictionReleaseSpeed);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(rwHandlingParameters.stictionTorque);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(rwHandlingParameters.rampTime);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x7): // RwMatrices
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(rwMatrices.alignmentMatrix);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(rwMatrices.pseudoInverse);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(rwMatrices.without1);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(rwMatrices.without2);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(rwMatrices.without3);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(rwMatrices.without4);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(rwMatrices.nullspace);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x8): // SafeModeControllerParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(safeModeControllerParameters.k_rate_mekf);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(safeModeControllerParameters.k_align_mekf);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(safeModeControllerParameters.k_rate_no_mekf);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(safeModeControllerParameters.k_align_no_mekf);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(safeModeControllerParameters.sunMagAngleMin);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(safeModeControllerParameters.sunTargetDirLeop);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(safeModeControllerParameters.sunTargetDir);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(safeModeControllerParameters.satRateRef);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x9): // TargetModeControllerParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(targetModeControllerParameters.zeta);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(targetModeControllerParameters.om);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(targetModeControllerParameters.omMax);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(targetModeControllerParameters.qiMin);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(targetModeControllerParameters.gainNullspace);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(targetModeControllerParameters.desatMomentumRef);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(targetModeControllerParameters.deSatGainFactor);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(targetModeControllerParameters.desatOn);
|
|
break;
|
|
case 0x8:
|
|
parameterWrapper->set(targetModeControllerParameters.enableAntiStiction);
|
|
break;
|
|
case 0x9:
|
|
parameterWrapper->set(targetModeControllerParameters.refDirection);
|
|
break;
|
|
case 0xA:
|
|
parameterWrapper->set(targetModeControllerParameters.refRotRate);
|
|
break;
|
|
case 0xB:
|
|
parameterWrapper->set(targetModeControllerParameters.quatRef);
|
|
break;
|
|
case 0xC:
|
|
parameterWrapper->set(targetModeControllerParameters.timeElapsedMax);
|
|
break;
|
|
case 0xD:
|
|
parameterWrapper->set(targetModeControllerParameters.latitudeTgt);
|
|
break;
|
|
case 0xE:
|
|
parameterWrapper->set(targetModeControllerParameters.longitudeTgt);
|
|
break;
|
|
case 0xF:
|
|
parameterWrapper->set(targetModeControllerParameters.altitudeTgt);
|
|
break;
|
|
case 0x10:
|
|
parameterWrapper->set(targetModeControllerParameters.avoidBlindStr);
|
|
break;
|
|
case 0x11:
|
|
parameterWrapper->set(targetModeControllerParameters.blindAvoidStart);
|
|
break;
|
|
case 0x12:
|
|
parameterWrapper->set(targetModeControllerParameters.blindAvoidStop);
|
|
break;
|
|
case 0x13:
|
|
parameterWrapper->set(targetModeControllerParameters.blindRotRate);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0xA): // NadirModeControllerParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(nadirModeControllerParameters.zeta);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(nadirModeControllerParameters.om);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(nadirModeControllerParameters.omMax);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(nadirModeControllerParameters.qiMin);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(nadirModeControllerParameters.gainNullspace);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(nadirModeControllerParameters.desatMomentumRef);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(nadirModeControllerParameters.deSatGainFactor);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(nadirModeControllerParameters.desatOn);
|
|
break;
|
|
case 0x8:
|
|
parameterWrapper->set(nadirModeControllerParameters.enableAntiStiction);
|
|
break;
|
|
case 0x9:
|
|
parameterWrapper->set(nadirModeControllerParameters.refDirection);
|
|
break;
|
|
case 0xA:
|
|
parameterWrapper->set(nadirModeControllerParameters.quatRef);
|
|
break;
|
|
case 0xC:
|
|
parameterWrapper->set(nadirModeControllerParameters.timeElapsedMax);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0xB): // InertialModeControllerParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(inertialModeControllerParameters.zeta);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(inertialModeControllerParameters.om);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(inertialModeControllerParameters.omMax);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(inertialModeControllerParameters.qiMin);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(inertialModeControllerParameters.gainNullspace);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(inertialModeControllerParameters.desatMomentumRef);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(inertialModeControllerParameters.deSatGainFactor);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(inertialModeControllerParameters.desatOn);
|
|
break;
|
|
case 0x8:
|
|
parameterWrapper->set(inertialModeControllerParameters.enableAntiStiction);
|
|
break;
|
|
case 0x9:
|
|
parameterWrapper->set(inertialModeControllerParameters.tgtQuat);
|
|
break;
|
|
case 0xA:
|
|
parameterWrapper->set(inertialModeControllerParameters.refRotRate);
|
|
break;
|
|
case 0xC:
|
|
parameterWrapper->set(inertialModeControllerParameters.quatRef);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0xC): // StrParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(strParameters.exclusionAngle);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(strParameters.boresightAxis);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0xD): // GpsParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(gpsParameters.timeDiffVelocityMax);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0xE): // SunModelParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(sunModelParameters.domega);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(sunModelParameters.omega_0);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(sunModelParameters.m_0);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(sunModelParameters.dm);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(sunModelParameters.e);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(sunModelParameters.e1);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(sunModelParameters.p1);
|
|
break;
|
|
case 0x7:
|
|
parameterWrapper->set(sunModelParameters.p2);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0xF): // KalmanFilterParameters
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(kalmanFilterParameters.sensorNoiseSTR);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(kalmanFilterParameters.sensorNoiseSS);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(kalmanFilterParameters.sensorNoiseMAG);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(kalmanFilterParameters.sensorNoiseGYR);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(kalmanFilterParameters.sensorNoiseArwGYR);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(kalmanFilterParameters.sensorNoiseBsGYR);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x10): // MagnetorquesParameter
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(magnetorquesParameter.mtq0orientationMatrix);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(magnetorquesParameter.mtq1orientationMatrix);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(magnetorquesParameter.mtq2orientationMatrix);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(magnetorquesParameter.alignmentMatrixMtq);
|
|
break;
|
|
case 0x4:
|
|
parameterWrapper->set(magnetorquesParameter.inverseAlignment);
|
|
break;
|
|
case 0x5:
|
|
parameterWrapper->set(magnetorquesParameter.DipolMax);
|
|
break;
|
|
case 0x6:
|
|
parameterWrapper->set(magnetorquesParameter.torqueDuration);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
case (0x11): // DetumbleParameter
|
|
switch (parameterId) {
|
|
case 0x0:
|
|
parameterWrapper->set(detumbleParameter.detumblecounter);
|
|
break;
|
|
case 0x1:
|
|
parameterWrapper->set(detumbleParameter.omegaDetumbleStart);
|
|
break;
|
|
case 0x2:
|
|
parameterWrapper->set(detumbleParameter.omegaDetumbleEnd);
|
|
break;
|
|
case 0x3:
|
|
parameterWrapper->set(detumbleParameter.gainD);
|
|
break;
|
|
default:
|
|
return INVALID_IDENTIFIER_ID;
|
|
}
|
|
break;
|
|
default:
|
|
return INVALID_DOMAIN_ID;
|
|
}
|
|
return returnvalue::OK;
|
|
}
|