diff --git a/CHANGELOG.md b/CHANGELOG.md index 464197bd..9b2a096f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,15 @@ will consitute of a breaking change warranting a new major release: # [unreleased] +## Changed + +- Telemetry relevant datasets for the RWs are now set invalid and partially reset on shotdown. + +# [v1.37.2] 2023-03-14 + +- Changed `PoolManager` bugfix implementation in the FSFW. +- Some tweaks for IPC and TM store configuration + # [v1.37.1] 2023-03-14 This version works on the EM as well. diff --git a/CMakeLists.txt b/CMakeLists.txt index 11836eda..9844510b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13) set(OBSW_VERSION_MAJOR 1) set(OBSW_VERSION_MINOR 37) -set(OBSW_VERSION_REVISION 1) +set(OBSW_VERSION_REVISION 2) # set(CMAKE_VERBOSE TRUE) diff --git a/fsfw b/fsfw index 5250423d..cf27954a 160000 --- a/fsfw +++ b/fsfw @@ -1 +1 @@ -Subproject commit 5250423d1d61c318110d4e111e141d5863546149 +Subproject commit cf27954a867a1c16b4e5b0fe72cd79df946ff903 diff --git a/mission/core/GenericFactory.cpp b/mission/core/GenericFactory.cpp index 3cbb727c..8bf4eff6 100644 --- a/mission/core/GenericFactory.cpp +++ b/mission/core/GenericFactory.cpp @@ -108,23 +108,23 @@ void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_, PusTmFun { PoolManager::LocalPoolConfig poolCfg = {{250, 16}, {250, 32}, {250, 64}, {150, 128}, {120, 1024}, {120, 2048}}; - tcStore = new PoolManager(objects::TC_STORE, poolCfg, true); + tcStore = new PoolManager(objects::TC_STORE, poolCfg); } { PoolManager::LocalPoolConfig poolCfg = {{600, 32}, {400, 64}, {400, 128}, {300, 512}, - {150, 1024}, {150, 1024}, {150, 2048}}; - *tmStore = new PoolManager(objects::TM_STORE, poolCfg, true); + {250, 1024}, {150, 2048}}; + *tmStore = new PoolManager(objects::TM_STORE, poolCfg); } { - PoolManager::LocalPoolConfig poolCfg = {{300, 16}, {200, 32}, {150, 64}, {150, 128}, + PoolManager::LocalPoolConfig poolCfg = {{300, 16}, {250, 32}, {150, 64}, {150, 128}, {100, 256}, {50, 512}, {50, 1024}, {10, 2048}}; - *ipcStore = new PoolManager(objects::IPC_STORE, poolCfg, true); + *ipcStore = new PoolManager(objects::IPC_STORE, poolCfg); } PoolManager::LocalPoolConfig poolCfg = {{300, 32}, {400, 64}, {250, 128}, {150, 512}, {150, 1024}, {150, 2048}}; - auto* ramToFileStore = new PoolManager(objects::DOWNLINK_RAM_STORE, poolCfg, true); + auto* ramToFileStore = new PoolManager(objects::DOWNLINK_RAM_STORE, poolCfg); #if OBSW_ADD_TCPIP_SERVERS == 1 #if OBSW_ADD_TMTC_UDP_SERVER == 1 diff --git a/mission/devices/RwHandler.cpp b/mission/devices/RwHandler.cpp index 7f82b202..e70152dd 100644 --- a/mission/devices/RwHandler.cpp +++ b/mission/devices/RwHandler.cpp @@ -24,7 +24,6 @@ RwHandler::RwHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCooki sif::error << "RwHandler: Invalid gpio communication interface" << std::endl; } } - RwHandler::~RwHandler() {} void RwHandler::doStartUp() { @@ -43,6 +42,17 @@ void RwHandler::doShutDown() { } internalState = InternalState::DEFAULT; updatePeriodicReply(false, rws::REPLY_ID); + { + PoolReadGuard pg(&statusSet); + statusSet.currSpeed = 0.0; + statusSet.referenceSpeed = 0.0; + statusSet.state = 0; + statusSet.setValidity(false, true); + } + { + PoolReadGuard pg(&tmDataset); + tmDataset.setValidity(false, true); + } // The power switch is handled by the assembly, so we can go off here directly. setMode(MODE_OFF); } diff --git a/unittest/testEnvironment.cpp b/unittest/testEnvironment.cpp index ec6adac9..72726f39 100644 --- a/unittest/testEnvironment.cpp +++ b/unittest/testEnvironment.cpp @@ -33,7 +33,7 @@ void factory(void* args) { { PoolManager::LocalPoolConfig poolCfg = {{300, 16}, {200, 32}, {150, 64}, {150, 128}, {100, 256}, {50, 512}, {50, 1024}, {10, 2048}}; - new PoolManager(objects::IPC_STORE, poolCfg, true); + new PoolManager(objects::IPC_STORE, poolCfg); } }