proper fault/ext ctrl handling for dual side #529
@ -16,6 +16,12 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
# [unreleased]
|
# [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
|
## Changed
|
||||||
|
|
||||||
- Enabled periodic hosuekeeping generation for release images.
|
- Enabled periodic hosuekeeping generation for release images.
|
||||||
|
@ -28,11 +28,7 @@ void GyrAdis1650XHandler::doStartUp() {
|
|||||||
}
|
}
|
||||||
if (breakCountdown.hasTimedOut()) {
|
if (breakCountdown.hasTimedOut()) {
|
||||||
updatePeriodicReply(true, adis1650x::REPLY);
|
updatePeriodicReply(true, adis1650x::REPLY);
|
||||||
if (goToNormalMode) {
|
|
||||||
setMode(MODE_NORMAL);
|
|
||||||
} else {
|
|
||||||
setMode(MODE_ON);
|
setMode(MODE_ON);
|
||||||
}
|
|
||||||
internalState = InternalState::NONE;
|
internalState = InternalState::NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -208,8 +204,6 @@ adis1650x::BurstModes GyrAdis1650XHandler::getBurstMode() {
|
|||||||
return adis1650x::burstModeFromMscCtrl(currentCtrlReg);
|
return adis1650x::burstModeFromMscCtrl(currentCtrlReg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GyrAdis1650XHandler::setToGoToNormalModeImmediately() { goToNormalMode = true; }
|
|
||||||
|
|
||||||
void GyrAdis1650XHandler::enablePeriodicPrintouts(bool enable, uint8_t divider) {
|
void GyrAdis1650XHandler::enablePeriodicPrintouts(bool enable, uint8_t divider) {
|
||||||
periodicPrintout = enable;
|
periodicPrintout = enable;
|
||||||
debugDivider.setDivider(divider);
|
debugDivider.setDivider(divider);
|
||||||
|
@ -21,7 +21,6 @@ class GyrAdis1650XHandler : public DeviceHandlerBase {
|
|||||||
adis1650x::Type type);
|
adis1650x::Type type);
|
||||||
|
|
||||||
void enablePeriodicPrintouts(bool enable, uint8_t divider);
|
void enablePeriodicPrintouts(bool enable, uint8_t divider);
|
||||||
void setToGoToNormalModeImmediately();
|
|
||||||
|
|
||||||
// DeviceHandlerBase abstract function implementation
|
// DeviceHandlerBase abstract function implementation
|
||||||
void doStartUp() override;
|
void doStartUp() override;
|
||||||
@ -47,7 +46,6 @@ class GyrAdis1650XHandler : public DeviceHandlerBase {
|
|||||||
AdisGyroConfigDataset configDataset;
|
AdisGyroConfigDataset configDataset;
|
||||||
double sensitivity = adis1650x::SENSITIVITY_UNSET;
|
double sensitivity = adis1650x::SENSITIVITY_UNSET;
|
||||||
|
|
||||||
bool goToNormalMode = false;
|
|
||||||
bool warningSwitch = true;
|
bool warningSwitch = true;
|
||||||
|
|
||||||
enum class InternalState { NONE, STARTUP, SHUTDOWN };
|
enum class InternalState { NONE, STARTUP, SHUTDOWN };
|
||||||
|
@ -23,11 +23,7 @@ void GyrL3gCustomHandler::doStartUp() {
|
|||||||
|
|
||||||
if (internalState == InternalState::STARTUP) {
|
if (internalState == InternalState::STARTUP) {
|
||||||
if (commandExecuted) {
|
if (commandExecuted) {
|
||||||
if (goNormalModeImmediately) {
|
setMode(MODE_ON);
|
||||||
setMode(MODE_NORMAL);
|
|
||||||
} else {
|
|
||||||
setMode(_MODE_TO_ON);
|
|
||||||
}
|
|
||||||
internalState = InternalState::NONE;
|
internalState = InternalState::NONE;
|
||||||
commandExecuted = false;
|
commandExecuted = false;
|
||||||
}
|
}
|
||||||
@ -145,8 +141,6 @@ uint32_t GyrL3gCustomHandler::getTransitionDelayMs(Mode_t from, Mode_t to) {
|
|||||||
return this->transitionDelayMs;
|
return this->transitionDelayMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GyrL3gCustomHandler::setToGoToNormalMode(bool enable) { this->goNormalModeImmediately = true; }
|
|
||||||
|
|
||||||
ReturnValue_t GyrL3gCustomHandler::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
|
ReturnValue_t GyrL3gCustomHandler::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
|
||||||
LocalDataPoolManager &poolManager) {
|
LocalDataPoolManager &poolManager) {
|
||||||
localDataPoolMap.emplace(l3gd20h::ANG_VELOC_X, new PoolEntry<float>({0.0}));
|
localDataPoolMap.emplace(l3gd20h::ANG_VELOC_X, new PoolEntry<float>({0.0}));
|
||||||
|
@ -32,11 +32,6 @@ class GyrL3gCustomHandler : public DeviceHandlerBase {
|
|||||||
*/
|
*/
|
||||||
void setAbsoluteLimits(float limitX, float limitY, float limitZ);
|
void setAbsoluteLimits(float limitX, float limitY, float limitZ);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Configure device handler to go to normal mode immediately
|
|
||||||
*/
|
|
||||||
void setToGoToNormalMode(bool enable);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/* DeviceHandlerBase overrides */
|
/* DeviceHandlerBase overrides */
|
||||||
ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t *id) override;
|
ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t *id) override;
|
||||||
@ -69,7 +64,6 @@ class GyrL3gCustomHandler : public DeviceHandlerBase {
|
|||||||
bool commandExecuted = false;
|
bool commandExecuted = false;
|
||||||
|
|
||||||
uint8_t statusReg = 0;
|
uint8_t statusReg = 0;
|
||||||
bool goNormalModeImmediately = false;
|
|
||||||
|
|
||||||
uint8_t ctrlReg1Value = l3gd20h::CTRL_REG_1_VAL;
|
uint8_t ctrlReg1Value = l3gd20h::CTRL_REG_1_VAL;
|
||||||
uint8_t ctrlReg2Value = l3gd20h::CTRL_REG_2_VAL;
|
uint8_t ctrlReg2Value = l3gd20h::CTRL_REG_2_VAL;
|
||||||
|
@ -20,7 +20,7 @@ void MgmLis3CustomHandler::doStartUp() {
|
|||||||
}
|
}
|
||||||
if (internalState == InternalState::STARTUP) {
|
if (internalState == InternalState::STARTUP) {
|
||||||
if (commandExecuted) {
|
if (commandExecuted) {
|
||||||
setMode(MODE_NORMAL);
|
setMode(MODE_ON);
|
||||||
internalState = InternalState::NONE;
|
internalState = InternalState::NONE;
|
||||||
commandExecuted = false;
|
commandExecuted = false;
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ void MgmRm3100CustomHandler::doStartUp() {
|
|||||||
if (commandExecuted) {
|
if (commandExecuted) {
|
||||||
commandExecuted = false;
|
commandExecuted = false;
|
||||||
internalState = InternalState::NONE;
|
internalState = InternalState::NONE;
|
||||||
setMode(MODE_NORMAL);
|
setMode(MODE_ON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ void SusHandler::doStartUp() {
|
|||||||
}
|
}
|
||||||
if (internalState == InternalState::STARTUP) {
|
if (internalState == InternalState::STARTUP) {
|
||||||
if (commandExecuted) {
|
if (commandExecuted) {
|
||||||
setMode(MODE_NORMAL);
|
setMode(MODE_ON);
|
||||||
internalState = InternalState::NONE;
|
internalState = InternalState::NONE;
|
||||||
commandExecuted = false;
|
commandExecuted = false;
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,8 @@ ReturnValue_t PersistentLogTmStoreTask::performOperation(uint8_t opCode) {
|
|||||||
stateHandlingForStore(handleOneStore(stores.miscStore, miscStoreContext));
|
stateHandlingForStore(handleOneStore(stores.miscStore, miscStoreContext));
|
||||||
if (not someonesBusy) {
|
if (not someonesBusy) {
|
||||||
TaskFactory::delayTask(100);
|
TaskFactory::delayTask(100);
|
||||||
} else /* and graceDelayDuringDumping.hasTimedOut()*/ {
|
} else if (someFileWasSwapped) {
|
||||||
if (someFileWasSwapped) {
|
TaskFactory::delayTask(10);
|
||||||
TaskFactory::delayTask(20);
|
|
||||||
}
|
|
||||||
// TaskFactory::delayTask(2);
|
|
||||||
// graceDelayDuringDumping.resetTimer();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,14 +18,8 @@ ReturnValue_t PersistentSingleTmStoreTask::performOperation(uint8_t opCode) {
|
|||||||
bool busy = handleOneStore(storeWithQueue, dumpContext);
|
bool busy = handleOneStore(storeWithQueue, dumpContext);
|
||||||
if (not busy) {
|
if (not busy) {
|
||||||
TaskFactory::delayTask(100);
|
TaskFactory::delayTask(100);
|
||||||
} else {
|
} else if (fileHasSwapped) {
|
||||||
if (fileHasSwapped) {
|
TaskFactory::delayTask(10);
|
||||||
TaskFactory::delayTask(20);
|
|
||||||
}
|
|
||||||
// if (fileHasSwapped and graceDelayDuringDumping.hasTimedOut()) {
|
|
||||||
// TaskFactory::delayTask(2);
|
|
||||||
// graceDelayDuringDumping.resetTimer();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit 333faaa5f70646bfde1101f8e0538505574d1d7e
|
Subproject commit 3f3523465a141bc2a2c36cbc9cbbf6ab7b3a9d70
|
Loading…
Reference in New Issue
Block a user