#include "AcsParameters.h" #include #include 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.without0); break; case 0x3: parameterWrapper->set(rwMatrices.without1); break; case 0x4: parameterWrapper->set(rwMatrices.without2); break; case 0x5: parameterWrapper->set(rwMatrices.without3); 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; }