From 59b80807baa3f2236399744361c48f24136510d6 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 23 Feb 2023 18:34:28 +0100 Subject: [PATCH] possible fix but not sure --- mission/controller/AcsController.cpp | 30 +++++++++++++-------------- mission/controller/AcsController.h | 12 ++++++----- mission/system/objects/ComSubsystem.h | 4 ++-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/mission/controller/AcsController.cpp b/mission/controller/AcsController.cpp index 81e5b1ca..7643edaa 100644 --- a/mission/controller/AcsController.cpp +++ b/mission/controller/AcsController.cpp @@ -432,14 +432,15 @@ ReturnValue_t AcsController::commandActuators(int16_t xDipole, int16_t yDipole, return returnvalue::OK; } -void AcsController::updateActuatorCmdData(int16_t mtqTargetDipole[3]) { +void AcsController::updateActuatorCmdData(const int16_t *mtqTargetDipole) { double rwTargetTorque[4] = {0.0, 0.0, 0.0, 0.0}; int32_t rwTargetSpeed[4] = {0, 0, 0, 0}; updateActuatorCmdData(rwTargetTorque, rwTargetSpeed, mtqTargetDipole); } -void AcsController::updateActuatorCmdData(double rwTargetTorque[4], int32_t rwTargetSpeed[4], - int16_t mtqTargetDipole[3]) { +void AcsController::updateActuatorCmdData(const double *rwTargetTorque, + const int32_t *rwTargetSpeed, + const int16_t *mtqTargetDipole) { { PoolReadGuard pg(&actuatorCmdData); if (pg.getReadResult() == returnvalue::OK) { @@ -452,22 +453,19 @@ void AcsController::updateActuatorCmdData(double rwTargetTorque[4], int32_t rwTa } void AcsController::updateCtrlValData(double errAng) { - double unitQuat[4] = {0, 0, 0, 1}; - { - PoolReadGuard pg(&ctrlValData); - if (pg.getReadResult() == returnvalue::OK) { - std::memcpy(ctrlValData.tgtQuat.value, unitQuat, 4 * sizeof(double)); - ctrlValData.tgtQuat.setValid(false); - std::memcpy(ctrlValData.errQuat.value, unitQuat, 4 * sizeof(double)); - ctrlValData.errQuat.setValid(false); - ctrlValData.errAng.value = errAng; - ctrlValData.errAng.setValid(true); - ctrlValData.setValidity(true, false); - } + PoolReadGuard pg(&ctrlValData); + if (pg.getReadResult() == returnvalue::OK) { + std::memcpy(ctrlValData.tgtQuat.value, UNIT_QUAT, 4 * sizeof(double)); + ctrlValData.tgtQuat.setValid(false); + std::memcpy(ctrlValData.errQuat.value, UNIT_QUAT, 4 * sizeof(double)); + ctrlValData.errQuat.setValid(false); + ctrlValData.errAng.value = errAng; + ctrlValData.errAng.setValid(true); + ctrlValData.setValidity(true, false); } } -void AcsController::updateCtrlValData(double tgtQuat[4], double errQuat[4], double errAng) { +void AcsController::updateCtrlValData(const double *tgtQuat, const double *errQuat, double errAng) { { PoolReadGuard pg(&ctrlValData); if (pg.getReadResult() == returnvalue::OK) { diff --git a/mission/controller/AcsController.h b/mission/controller/AcsController.h index a36f99ee..eaf80a23 100644 --- a/mission/controller/AcsController.h +++ b/mission/controller/AcsController.h @@ -40,6 +40,8 @@ class AcsController : public ExtendedControllerBase, public ReceivesParameterMes void performPointingCtrl(); private: + static constexpr double UNIT_QUAT[4] = {0, 0, 0, 1}; + AcsParameters acsParameters; SensorProcessing sensorProcessing; Navigation navigation; @@ -84,11 +86,11 @@ class AcsController : public ExtendedControllerBase, public ReceivesParameterMes ReturnValue_t commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole, uint16_t dipoleTorqueDuration, int32_t rw1Speed, int32_t rw2Speed, int32_t rw3Speed, int32_t rw4Speed, uint16_t rampTime); - void updateActuatorCmdData(int16_t mtqTargetDipole[3]); - void updateActuatorCmdData(double rwTargetTorque[4], int32_t rwTargetSpeed[4], - int16_t mtqTargetDipole[3]); + void updateActuatorCmdData(const int16_t* mtqTargetDipole); + void updateActuatorCmdData(const double* rwTargetTorque, const int32_t* rwTargetSpeed, + const int16_t* mtqTargetDipole); void updateCtrlValData(double errAng); - void updateCtrlValData(double tgtQuat[4], double errQuat[4], double errAng); + void updateCtrlValData(const double* tgtQuat, const double* errQuat, double errAng); void disableCtrlValData(); /* ACS Sensor Values */ @@ -187,7 +189,7 @@ class AcsController : public ExtendedControllerBase, public ReceivesParameterMes PoolEntry tgtQuat = PoolEntry(4); PoolEntry errQuat = PoolEntry(4); PoolEntry errAng = PoolEntry(); - PoolEntry tgtRotRate = PoolEntry(4); + PoolEntry tgtRotRate = PoolEntry(3); // Actuator CMD acsctrl::ActuatorCmdData actuatorCmdData; diff --git a/mission/system/objects/ComSubsystem.h b/mission/system/objects/ComSubsystem.h index 50f34b0d..ca09a434 100644 --- a/mission/system/objects/ComSubsystem.h +++ b/mission/system/objects/ComSubsystem.h @@ -17,8 +17,8 @@ class ComSubsystem : public Subsystem, public ReceivesParameterMessagesIF { * @param maxNumberOfSequences * @param maxNumberOfTables * @param transmitterTimeout Maximum time the transmitter of the syrlinks - * will be - * enabled + * will + * be enabled */ ComSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables, uint32_t transmitterTimeout);