No more RW commands during Safe Mode #573
@ -24,6 +24,8 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
- IMTQ assembly
|
- IMTQ assembly
|
||||||
- Syrlinks assembly
|
- Syrlinks assembly
|
||||||
- Dual Lane Assembly
|
- Dual Lane Assembly
|
||||||
|
- RWs are no longer commanded by the ACS Controller during safe mode. Instead the RW speed command
|
||||||
|
is set to 0 as part or the `doShutDown` of the RW handler.
|
||||||
|
|
||||||
# [v1.43.1] 2023-04-04
|
# [v1.43.1] 2023-04-04
|
||||||
|
|
||||||
|
@ -55,6 +55,10 @@ void RwHandler::doShutDown() {
|
|||||||
PoolReadGuard pg(&tmDataset);
|
PoolReadGuard pg(&tmDataset);
|
||||||
tmDataset.setValidity(false, true);
|
tmDataset.setValidity(false, true);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
PoolReadGuard pg(&rwSpeedActuationSet);
|
||||||
|
rwSpeedActuationSet.setRwSpeed(0, 10);
|
||||||
|
}
|
||||||
// The power switch is handled by the assembly, so we can go off here directly.
|
// The power switch is handled by the assembly, so we can go off here directly.
|
||||||
setMode(MODE_OFF);
|
setMode(MODE_OFF);
|
||||||
}
|
}
|
||||||
|
@ -222,8 +222,7 @@ void AcsController::performSafe() {
|
|||||||
updateCtrlValData(errAng);
|
updateCtrlValData(errAng);
|
||||||
updateActuatorCmdData(cmdDipolMtqs);
|
updateActuatorCmdData(cmdDipolMtqs);
|
||||||
// commandActuators(cmdDipolMtqs[0], cmdDipolMtqs[1], cmdDipolMtqs[2],
|
// commandActuators(cmdDipolMtqs[0], cmdDipolMtqs[1], cmdDipolMtqs[2],
|
||||||
// acsParameters.magnetorquesParameter.torqueDuration, 0, 0, 0, 0,
|
// acsParameters.magnetorquerParameter.torqueDuration);
|
||||||
// acsParameters.rwHandlingParameters.rampTime);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AcsController::performDetumble() {
|
void AcsController::performDetumble() {
|
||||||
@ -472,6 +471,18 @@ void AcsController::performPointingCtrl() {
|
|||||||
// acsParameters.rwHandlingParameters.rampTime);
|
// acsParameters.rwHandlingParameters.rampTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t AcsController::commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole,
|
||||||
|
uint16_t dipoleTorqueDuration) {
|
||||||
|
{
|
||||||
|
PoolReadGuard pg(&dipoleSet);
|
||||||
|
MutexGuard mg(torquer::lazyLock(), torquer::LOCK_TYPE, torquer::LOCK_TIMEOUT,
|
||||||
|
torquer::LOCK_CTX);
|
||||||
|
torquer::NEW_ACTUATION_FLAG = true;
|
||||||
|
dipoleSet.setDipoles(xDipole, yDipole, zDipole, dipoleTorqueDuration);
|
||||||
|
}
|
||||||
|
return returnvalue::OK;
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t AcsController::commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole,
|
ReturnValue_t AcsController::commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole,
|
||||||
uint16_t dipoleTorqueDuration, int32_t rw1Speed,
|
uint16_t dipoleTorqueDuration, int32_t rw1Speed,
|
||||||
int32_t rw2Speed, int32_t rw3Speed, int32_t rw4Speed,
|
int32_t rw2Speed, int32_t rw3Speed, int32_t rw4Speed,
|
||||||
|
@ -105,6 +105,8 @@ class AcsController : public ExtendedControllerBase, public ReceivesParameterMes
|
|||||||
void modeChanged(Mode_t mode, Submode_t submode);
|
void modeChanged(Mode_t mode, Submode_t submode);
|
||||||
void announceMode(bool recursive);
|
void announceMode(bool recursive);
|
||||||
|
|
||||||
|
ReturnValue_t commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole,
|
||||||
|
uint16_t dipoleTorqueDuration);
|
||||||
ReturnValue_t commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole,
|
ReturnValue_t commandActuators(int16_t xDipole, int16_t yDipole, int16_t zDipole,
|
||||||
uint16_t dipoleTorqueDuration, int32_t rw1Speed, int32_t rw2Speed,
|
uint16_t dipoleTorqueDuration, int32_t rw1Speed, int32_t rw2Speed,
|
||||||
int32_t rw3Speed, int32_t rw4Speed, uint16_t rampTime);
|
int32_t rw3Speed, int32_t rw4Speed, uint16_t rampTime);
|
||||||
|
Loading…
Reference in New Issue
Block a user