diff --git a/CHANGELOG.md b/CHANGELOG.md index 60acc630..ae7277f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ will consitute of a breaking change warranting a new major release: - Added `EXECUTE_SHELL_CMD` action command for `CoreController` to execute arbitrary Linux commands. - Add `PcduHandlerDummy` component. +- Added parameter for timeout until `MEKF_INVALID_MODE_VIOLATION` event is triggered. - Added NaN and Inf check for the `MEKF`. If these are detected, the `AcsController` will reset the `MEKF` on its own. @@ -30,6 +31,7 @@ will consitute of a breaking change warranting a new major release: - The Syrlinks task now has a proper name instead of `MAIN_SPI`. - Make whole EIVE system initial transition work for the EM. This was also made possible by always scheduling most EIVE components instead of tying the scheduling to preprocessor defines. +- Store more TCP und UDP packets. ## Changed diff --git a/common/config/eive/definitions.h b/common/config/eive/definitions.h index d6a1e757..74208e25 100644 --- a/common/config/eive/definitions.h +++ b/common/config/eive/definitions.h @@ -56,8 +56,8 @@ static constexpr uint32_t CFDP_STORE_QUEUE_SIZE = 300; static constexpr uint32_t MAX_PUS_FUNNEL_QUEUE_DEPTH = 100; static constexpr uint32_t MAX_CFDP_FUNNEL_QUEUE_DEPTH = 80; -static constexpr uint32_t MAX_STORED_CMDS_UDP = 120; -static constexpr uint32_t MAX_STORED_CMDS_TCP = 150; +static constexpr uint32_t MAX_STORED_CMDS_UDP = 150; +static constexpr uint32_t MAX_STORED_CMDS_TCP = 180; namespace spiSched { diff --git a/mission/controller/AcsController.cpp b/mission/controller/AcsController.cpp index d513d114..a23cfd74 100644 --- a/mission/controller/AcsController.cpp +++ b/mission/controller/AcsController.cpp @@ -274,7 +274,7 @@ void AcsController::performPointingCtrl() { if (result == MultiplicativeKalmanFilter::MEKF_NOT_FINITE) { navigation.resetMekf(&mekfData); } - if (mekfInvalidCounter == 5) { + if (mekfInvalidCounter > acsParameters.onBoardParams.mekfViolationTimer) { // Trigger this so STR FDIR can set the device faulty. EventManagerIF::triggerEvent(objects::STAR_TRACKER, acs::MEKF_INVALID_MODE_VIOLATION, 0, 0); } diff --git a/mission/controller/AcsController.h b/mission/controller/AcsController.h index c0376127..62bbf5a3 100644 --- a/mission/controller/AcsController.h +++ b/mission/controller/AcsController.h @@ -61,7 +61,7 @@ class AcsController : public ExtendedControllerBase, public ReceivesParameterMes uint8_t detumbleCounter = 0; uint8_t multipleRwUnavailableCounter = 0; bool mekfInvalidFlag = false; - uint8_t mekfInvalidCounter = 0; + uint16_t mekfInvalidCounter = 0; int32_t cmdSpeedRws[4] = {0, 0, 0, 0}; int16_t cmdDipolMtqs[3] = {0, 0, 0}; diff --git a/mission/controller/acs/AcsParameters.cpp b/mission/controller/acs/AcsParameters.cpp index 4abe0d7a..060e0aac 100644 --- a/mission/controller/acs/AcsParameters.cpp +++ b/mission/controller/acs/AcsParameters.cpp @@ -23,6 +23,9 @@ ReturnValue_t AcsParameters::getParameter(uint8_t domainId, uint8_t parameterId, case 0x0: parameterWrapper->set(onBoardParams.sampleTime); break; + case 0x1: + parameterWrapper->set(onBoardParams.mekfViolationTimer); + break; default: return INVALID_IDENTIFIER_ID; } diff --git a/mission/controller/acs/AcsParameters.h b/mission/controller/acs/AcsParameters.h index 822cfabc..fca8ed8e 100644 --- a/mission/controller/acs/AcsParameters.h +++ b/mission/controller/acs/AcsParameters.h @@ -18,6 +18,7 @@ class AcsParameters : public HasParametersIF { struct OnBoardParams { double sampleTime = 0.4; // [s] + uint16_t mekfViolationTimer = 750; } onBoardParams; struct InertiaEIVE {