proper fault/ext ctrl handling for dual side #529

Merged
muellerr merged 3 commits from improve_duallane_fdir into develop 2023-03-28 22:09:22 +02:00
11 changed files with 16 additions and 40 deletions
Showing only changes of commit c83afa4e10 - Show all commits

View File

@ -16,6 +16,12 @@ will consitute of a breaking change warranting a new major release:
# [unreleased]
## Fixed
- Proper Faulty/External Control handling for the dual lane assemblies.
- ACS board devices: Go to ON mode instead of going to NORMAL mode directly.
- SUS device handlers: Go to ON mode on startup instead of NORMAL mode.
## Changed
- Enabled periodic hosuekeeping generation for release images.

View File

@ -28,11 +28,7 @@ void GyrAdis1650XHandler::doStartUp() {
}
if (breakCountdown.hasTimedOut()) {
updatePeriodicReply(true, adis1650x::REPLY);
if (goToNormalMode) {
setMode(MODE_NORMAL);
} else {
setMode(MODE_ON);
}
internalState = InternalState::NONE;
}
}
@ -208,8 +204,6 @@ adis1650x::BurstModes GyrAdis1650XHandler::getBurstMode() {
return adis1650x::burstModeFromMscCtrl(currentCtrlReg);
}
void GyrAdis1650XHandler::setToGoToNormalModeImmediately() { goToNormalMode = true; }
void GyrAdis1650XHandler::enablePeriodicPrintouts(bool enable, uint8_t divider) {
periodicPrintout = enable;
debugDivider.setDivider(divider);

View File

@ -21,7 +21,6 @@ class GyrAdis1650XHandler : public DeviceHandlerBase {
adis1650x::Type type);
void enablePeriodicPrintouts(bool enable, uint8_t divider);
void setToGoToNormalModeImmediately();
// DeviceHandlerBase abstract function implementation
void doStartUp() override;
@ -47,7 +46,6 @@ class GyrAdis1650XHandler : public DeviceHandlerBase {
AdisGyroConfigDataset configDataset;
double sensitivity = adis1650x::SENSITIVITY_UNSET;
bool goToNormalMode = false;
bool warningSwitch = true;
enum class InternalState { NONE, STARTUP, SHUTDOWN };

View File

@ -23,11 +23,7 @@ void GyrL3gCustomHandler::doStartUp() {
if (internalState == InternalState::STARTUP) {
if (commandExecuted) {
if (goNormalModeImmediately) {
setMode(MODE_NORMAL);
} else {
setMode(_MODE_TO_ON);
}
setMode(MODE_ON);
internalState = InternalState::NONE;
commandExecuted = false;
}
@ -145,8 +141,6 @@ uint32_t GyrL3gCustomHandler::getTransitionDelayMs(Mode_t from, Mode_t to) {
return this->transitionDelayMs;
}
void GyrL3gCustomHandler::setToGoToNormalMode(bool enable) { this->goNormalModeImmediately = true; }
ReturnValue_t GyrL3gCustomHandler::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
LocalDataPoolManager &poolManager) {
localDataPoolMap.emplace(l3gd20h::ANG_VELOC_X, new PoolEntry<float>({0.0}));

View File

@ -32,11 +32,6 @@ class GyrL3gCustomHandler : public DeviceHandlerBase {
*/
void setAbsoluteLimits(float limitX, float limitY, float limitZ);
/**
* @brief Configure device handler to go to normal mode immediately
*/
void setToGoToNormalMode(bool enable);
protected:
/* DeviceHandlerBase overrides */
ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t *id) override;
@ -69,7 +64,6 @@ class GyrL3gCustomHandler : public DeviceHandlerBase {
bool commandExecuted = false;
uint8_t statusReg = 0;
bool goNormalModeImmediately = false;
uint8_t ctrlReg1Value = l3gd20h::CTRL_REG_1_VAL;
uint8_t ctrlReg2Value = l3gd20h::CTRL_REG_2_VAL;

View File

@ -20,7 +20,7 @@ void MgmLis3CustomHandler::doStartUp() {
}
if (internalState == InternalState::STARTUP) {
if (commandExecuted) {
setMode(MODE_NORMAL);
setMode(MODE_ON);
internalState = InternalState::NONE;
commandExecuted = false;
}

View File

@ -25,7 +25,7 @@ void MgmRm3100CustomHandler::doStartUp() {
if (commandExecuted) {
commandExecuted = false;
internalState = InternalState::NONE;
setMode(MODE_NORMAL);
setMode(MODE_ON);
}
}
}

View File

@ -20,7 +20,7 @@ void SusHandler::doStartUp() {
}
if (internalState == InternalState::STARTUP) {
if (commandExecuted) {
setMode(MODE_NORMAL);
setMode(MODE_ON);
internalState = InternalState::NONE;
commandExecuted = false;
}

View File

@ -33,12 +33,8 @@ ReturnValue_t PersistentLogTmStoreTask::performOperation(uint8_t opCode) {
stateHandlingForStore(handleOneStore(stores.miscStore, miscStoreContext));
if (not someonesBusy) {
TaskFactory::delayTask(100);
} else /* and graceDelayDuringDumping.hasTimedOut()*/ {
if (someFileWasSwapped) {
TaskFactory::delayTask(20);
}
// TaskFactory::delayTask(2);
// graceDelayDuringDumping.resetTimer();
} else if (someFileWasSwapped) {
TaskFactory::delayTask(10);
}
}
}

View File

@ -18,14 +18,8 @@ ReturnValue_t PersistentSingleTmStoreTask::performOperation(uint8_t opCode) {
bool busy = handleOneStore(storeWithQueue, dumpContext);
if (not busy) {
TaskFactory::delayTask(100);
} else {
if (fileHasSwapped) {
TaskFactory::delayTask(20);
}
// if (fileHasSwapped and graceDelayDuringDumping.hasTimedOut()) {
// TaskFactory::delayTask(2);
// graceDelayDuringDumping.resetTimer();
// }
} else if (fileHasSwapped) {
TaskFactory::delayTask(10);
}
}
}

2
tmtc

@ -1 +1 @@
Subproject commit 333faaa5f70646bfde1101f8e0538505574d1d7e
Subproject commit 3f3523465a141bc2a2c36cbc9cbbf6ab7b3a9d70