From 39022ce2f67a9b1433223fa0883b1f2dc4384b9d Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 13 Jul 2023 16:52:33 +0200 Subject: [PATCH] different max missed reply thresholds for STR FDIR --- bsp_q7s/em/emObjectFactory.cpp | 4 +++- bsp_q7s/fmObjectFactory.cpp | 2 +- bsp_q7s/objectFactory.cpp | 5 +++-- bsp_q7s/objectFactory.h | 2 +- mission/acs/str/StarTrackerHandler.cpp | 2 +- mission/system/acs/StrFdir.cpp | 4 ++-- mission/system/acs/StrFdir.h | 2 +- 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/bsp_q7s/em/emObjectFactory.cpp b/bsp_q7s/em/emObjectFactory.cpp index e5d6abc2..0bafa52f 100644 --- a/bsp_q7s/em/emObjectFactory.cpp +++ b/bsp_q7s/em/emObjectFactory.cpp @@ -138,7 +138,9 @@ void ObjectFactory::produce(void* args) { #endif #if OBSW_ADD_STAR_TRACKER == 1 - createStrComponents(pwrSwitcher); + // Missed reply threshold is higher on EM than default value because the ground STR received + // from the Swedes is going weird things. + createStrComponents(pwrSwitcher, 30); #endif /* OBSW_ADD_STAR_TRACKER == 1 */ createPayloadComponents(gpioComIF, *pwrSwitcher); diff --git a/bsp_q7s/fmObjectFactory.cpp b/bsp_q7s/fmObjectFactory.cpp index e43e3551..6eca9a9d 100644 --- a/bsp_q7s/fmObjectFactory.cpp +++ b/bsp_q7s/fmObjectFactory.cpp @@ -102,7 +102,7 @@ void ObjectFactory::produce(void* args) { #endif #if OBSW_ADD_STAR_TRACKER == 1 - createStrComponents(pwrSwitcher); + createStrComponents(pwrSwitcher, 5); #endif /* OBSW_ADD_STAR_TRACKER == 1 */ #if OBSW_ADD_CCSDS_IP_CORES == 1 diff --git a/bsp_q7s/objectFactory.cpp b/bsp_q7s/objectFactory.cpp index 326ba8ef..a27fa94e 100644 --- a/bsp_q7s/objectFactory.cpp +++ b/bsp_q7s/objectFactory.cpp @@ -928,7 +928,8 @@ void ObjectFactory::createTestComponents(LinuxLibgpioIF* gpioComIF) { #endif } -void ObjectFactory::createStrComponents(PowerSwitchIF* pwrSwitcher) { +void ObjectFactory::createStrComponents(PowerSwitchIF* pwrSwitcher, + uint32_t missedReplyCountThreshold) { auto* strAssy = new StrAssembly(objects::STR_ASSY); strAssy->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM); auto* starTrackerCookie = @@ -941,7 +942,7 @@ void ObjectFactory::createStrComponents(PowerSwitchIF* pwrSwitcher) { if (paramJsonFile == nullptr) { sif::error << "No valid Star Tracker parameter JSON file" << std::endl; } - auto strFdir = new StrFdir(objects::STAR_TRACKER); + auto strFdir = new StrFdir(objects::STAR_TRACKER, missedReplyCountThreshold); auto starTracker = new StarTrackerHandler(objects::STAR_TRACKER, objects::STR_COM_IF, starTrackerCookie, paramJsonFile, strComIF, power::PDU1_CH2_STAR_TRACKER_5V); diff --git a/bsp_q7s/objectFactory.h b/bsp_q7s/objectFactory.h index 491720ac..1e6e5461 100644 --- a/bsp_q7s/objectFactory.h +++ b/bsp_q7s/objectFactory.h @@ -69,7 +69,7 @@ void createHeaterComponents(GpioIF* gpioIF, PowerSwitchIF* pwrSwitcher, HealthTa HeaterHandler*& heaterHandler); void createImtqComponents(PowerSwitchIF* pwrSwitcher, bool enableHkSets, const char* i2cDev); void createBpxBatteryComponent(bool enableHkSets, const char* i2cDev); -void createStrComponents(PowerSwitchIF* pwrSwitcher); +void createStrComponents(PowerSwitchIF* pwrSwitcher, uint32_t missedReplyCountThreshold); void createSolarArrayDeploymentComponents(PowerSwitchIF& pwrSwitcher, GpioIF& gpioIF); void createSyrlinksComponents(PowerSwitchIF* pwrSwitcher); void createPayloadComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF& pwrSwitcher); diff --git a/mission/acs/str/StarTrackerHandler.cpp b/mission/acs/str/StarTrackerHandler.cpp index 151410b2..a6e601a7 100644 --- a/mission/acs/str/StarTrackerHandler.cpp +++ b/mission/acs/str/StarTrackerHandler.cpp @@ -2001,7 +2001,7 @@ ReturnValue_t StarTrackerHandler::checkProgram() { startupState = StartupState::BOOT_BOOTLOADER; } if (bootState == FwBootState::VERIFY_BOOT) { - bootState = FwBootState::LOGLEVEL; + bootState = FwBootState::SET_TIME; } else if (internalState == InternalState::BOOTLOADER_CHECK) { triggerEvent(BOOTING_BOOTLOADER_FAILED_EVENT); internalState = InternalState::FAILED_BOOTLOADER_BOOT; diff --git a/mission/system/acs/StrFdir.cpp b/mission/system/acs/StrFdir.cpp index 74284d55..5d53586b 100644 --- a/mission/system/acs/StrFdir.cpp +++ b/mission/system/acs/StrFdir.cpp @@ -2,9 +2,9 @@ #include "mission/acs/defs.h" -StrFdir::StrFdir(object_id_t strObject) +StrFdir::StrFdir(object_id_t strObject, uint32_t missedReplyThreshold) : DeviceHandlerFailureIsolation(strObject, objects::NO_OBJECT) { - missedReplyCount.setFailureThreshold(30); + missedReplyCount.setFailureThreshold(missedReplyThreshold); } ReturnValue_t StrFdir::eventReceived(EventMessage* event) { diff --git a/mission/system/acs/StrFdir.h b/mission/system/acs/StrFdir.h index 20476e1a..2a33afc3 100644 --- a/mission/system/acs/StrFdir.h +++ b/mission/system/acs/StrFdir.h @@ -5,7 +5,7 @@ class StrFdir : public DeviceHandlerFailureIsolation { public: - StrFdir(object_id_t strObject); + StrFdir(object_id_t strObject, uint32_t missedReplyThreshold); ReturnValue_t eventReceived(EventMessage* event) override; };