From 44dcd3104eae56157adee88e0ecbd8712fe86881 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Wed, 30 Dec 2020 22:01:11 +0100 Subject: [PATCH 1/5] device handler base update --- devicehandlers/DeviceHandlerBase.cpp | 19 +++++++++++-------- devicehandlers/DeviceHandlerBase.h | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/devicehandlers/DeviceHandlerBase.cpp b/devicehandlers/DeviceHandlerBase.cpp index d0630854..efee1462 100644 --- a/devicehandlers/DeviceHandlerBase.cpp +++ b/devicehandlers/DeviceHandlerBase.cpp @@ -16,8 +16,8 @@ #include -object_id_t DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT; -object_id_t DeviceHandlerBase::rawDataReceiverId = objects::NO_OBJECT; +object_id_t DeviceHandlerBase::defaultPowerSwitcherId = objects::NO_OBJECT; +object_id_t DeviceHandlerBase::defaultRawDataReceiverId = objects::NO_OBJECT; object_id_t DeviceHandlerBase::defaultFdirParentId = objects::NO_OBJECT; DeviceHandlerBase::DeviceHandlerBase(object_id_t setObjectId, @@ -151,9 +151,9 @@ ReturnValue_t DeviceHandlerBase::initialize() { return ObjectManagerIF::CHILD_INIT_FAILED; } - if(rawDataReceiverId != objects::NO_OBJECT) { + if(defaultRawDataReceiverId != objects::NO_OBJECT) { AcceptsDeviceResponsesIF *rawReceiver = objectManager->get< - AcceptsDeviceResponsesIF>(rawDataReceiverId); + AcceptsDeviceResponsesIF>(defaultRawDataReceiverId); if (rawReceiver == nullptr) { sif::error << "DeviceHandlerBase::initialize: Raw receiver object " @@ -165,8 +165,9 @@ ReturnValue_t DeviceHandlerBase::initialize() { defaultRawReceiver = rawReceiver->getDeviceQueue(); } - if(powerSwitcherId != objects::NO_OBJECT) { - powerSwitcher = objectManager->get(powerSwitcherId); + if(defaultPowerSwitcherId != objects::NO_OBJECT) { + powerSwitcher = objectManager->get( + defaultPowerSwitcherId); if (powerSwitcher == nullptr) { sif::error << "DeviceHandlerBase::initialize: Power switcher " << "object ID set but no valid object found." << std::endl; @@ -682,8 +683,10 @@ void DeviceHandlerBase::doGetRead() { replyRawData(receivedData, receivedDataLen, requestedRawTraffic); } - if (mode == MODE_RAW and defaultRawReceiver != MessageQueueIF::NO_QUEUE) { - replyRawReplyIfnotWiretapped(receivedData, receivedDataLen); + if (mode == MODE_RAW) { + if(defaultRawReceiver != MessageQueueIF::NO_QUEUE) { + replyRawReplyIfnotWiretapped(receivedData, receivedDataLen); + } } else { parseReply(receivedData, receivedDataLen); diff --git a/devicehandlers/DeviceHandlerBase.h b/devicehandlers/DeviceHandlerBase.h index 24ba0372..0d14bf4e 100644 --- a/devicehandlers/DeviceHandlerBase.h +++ b/devicehandlers/DeviceHandlerBase.h @@ -739,10 +739,10 @@ protected: PeriodicTaskIF* executingTask = nullptr; //!< Object which switches power on and off. - static object_id_t powerSwitcherId; + static object_id_t defaultPowerSwitcherId; //!< Object which receives RAW data by default. - static object_id_t rawDataReceiverId; + static object_id_t defaultRawDataReceiverId; //!< Object which may be the root cause of an identified fault. static object_id_t defaultFdirParentId; From 56eac4647265deb8b115eb1c970a0b81153a03cc Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Wed, 30 Dec 2020 22:17:08 +0100 Subject: [PATCH 2/5] Revert "device handler base update" This reverts commit 44dcd3104eae56157adee88e0ecbd8712fe86881. --- devicehandlers/DeviceHandlerBase.cpp | 19 ++++++++----------- devicehandlers/DeviceHandlerBase.h | 4 ++-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/devicehandlers/DeviceHandlerBase.cpp b/devicehandlers/DeviceHandlerBase.cpp index efee1462..d0630854 100644 --- a/devicehandlers/DeviceHandlerBase.cpp +++ b/devicehandlers/DeviceHandlerBase.cpp @@ -16,8 +16,8 @@ #include -object_id_t DeviceHandlerBase::defaultPowerSwitcherId = objects::NO_OBJECT; -object_id_t DeviceHandlerBase::defaultRawDataReceiverId = objects::NO_OBJECT; +object_id_t DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT; +object_id_t DeviceHandlerBase::rawDataReceiverId = objects::NO_OBJECT; object_id_t DeviceHandlerBase::defaultFdirParentId = objects::NO_OBJECT; DeviceHandlerBase::DeviceHandlerBase(object_id_t setObjectId, @@ -151,9 +151,9 @@ ReturnValue_t DeviceHandlerBase::initialize() { return ObjectManagerIF::CHILD_INIT_FAILED; } - if(defaultRawDataReceiverId != objects::NO_OBJECT) { + if(rawDataReceiverId != objects::NO_OBJECT) { AcceptsDeviceResponsesIF *rawReceiver = objectManager->get< - AcceptsDeviceResponsesIF>(defaultRawDataReceiverId); + AcceptsDeviceResponsesIF>(rawDataReceiverId); if (rawReceiver == nullptr) { sif::error << "DeviceHandlerBase::initialize: Raw receiver object " @@ -165,9 +165,8 @@ ReturnValue_t DeviceHandlerBase::initialize() { defaultRawReceiver = rawReceiver->getDeviceQueue(); } - if(defaultPowerSwitcherId != objects::NO_OBJECT) { - powerSwitcher = objectManager->get( - defaultPowerSwitcherId); + if(powerSwitcherId != objects::NO_OBJECT) { + powerSwitcher = objectManager->get(powerSwitcherId); if (powerSwitcher == nullptr) { sif::error << "DeviceHandlerBase::initialize: Power switcher " << "object ID set but no valid object found." << std::endl; @@ -683,10 +682,8 @@ void DeviceHandlerBase::doGetRead() { replyRawData(receivedData, receivedDataLen, requestedRawTraffic); } - if (mode == MODE_RAW) { - if(defaultRawReceiver != MessageQueueIF::NO_QUEUE) { - replyRawReplyIfnotWiretapped(receivedData, receivedDataLen); - } + if (mode == MODE_RAW and defaultRawReceiver != MessageQueueIF::NO_QUEUE) { + replyRawReplyIfnotWiretapped(receivedData, receivedDataLen); } else { parseReply(receivedData, receivedDataLen); diff --git a/devicehandlers/DeviceHandlerBase.h b/devicehandlers/DeviceHandlerBase.h index 0d14bf4e..24ba0372 100644 --- a/devicehandlers/DeviceHandlerBase.h +++ b/devicehandlers/DeviceHandlerBase.h @@ -739,10 +739,10 @@ protected: PeriodicTaskIF* executingTask = nullptr; //!< Object which switches power on and off. - static object_id_t defaultPowerSwitcherId; + static object_id_t powerSwitcherId; //!< Object which receives RAW data by default. - static object_id_t defaultRawDataReceiverId; + static object_id_t rawDataReceiverId; //!< Object which may be the root cause of an identified fault. static object_id_t defaultFdirParentId; From 0a4d0b593713e61b7ddf47ecb4b1657d8a0a8674 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Wed, 30 Dec 2020 22:34:40 +0100 Subject: [PATCH 3/5] bugfix --- devicehandlers/DeviceHandlerBase.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/devicehandlers/DeviceHandlerBase.cpp b/devicehandlers/DeviceHandlerBase.cpp index d0630854..251320cb 100644 --- a/devicehandlers/DeviceHandlerBase.cpp +++ b/devicehandlers/DeviceHandlerBase.cpp @@ -682,8 +682,10 @@ void DeviceHandlerBase::doGetRead() { replyRawData(receivedData, receivedDataLen, requestedRawTraffic); } - if (mode == MODE_RAW and defaultRawReceiver != MessageQueueIF::NO_QUEUE) { - replyRawReplyIfnotWiretapped(receivedData, receivedDataLen); + if (mode == MODE_RAW) { + if (defaultRawReceiver != MessageQueueIF::NO_QUEUE) { + replyRawReplyIfnotWiretapped(receivedData, receivedDataLen); + } } else { parseReply(receivedData, receivedDataLen); From c4fb1f49d813a97113099d4c6e257d5606955182 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Wed, 30 Dec 2020 22:56:46 +0100 Subject: [PATCH 4/5] updated defaultcfg --- defaultcfg/fsfwconfig/CMakeLists.txt | 21 +++++++------- .../fsfwconfig/devices/logicalAddresses.cpp | 5 ---- .../fsfwconfig/devices/logicalAddresses.h | 2 +- .../fsfwconfig/devices/powerSwitcherList.cpp | 4 --- .../objects/{Factory.cpp => FsfwFactory.cpp} | 29 +++++++++---------- .../objects/{Factory.h => FsfwFactory.h} | 2 +- 6 files changed, 26 insertions(+), 37 deletions(-) delete mode 100644 defaultcfg/fsfwconfig/devices/logicalAddresses.cpp delete mode 100644 defaultcfg/fsfwconfig/devices/powerSwitcherList.cpp rename defaultcfg/fsfwconfig/objects/{Factory.cpp => FsfwFactory.cpp} (60%) rename defaultcfg/fsfwconfig/objects/{Factory.h => FsfwFactory.h} (91%) diff --git a/defaultcfg/fsfwconfig/CMakeLists.txt b/defaultcfg/fsfwconfig/CMakeLists.txt index b8b41c93..4b8f4474 100644 --- a/defaultcfg/fsfwconfig/CMakeLists.txt +++ b/defaultcfg/fsfwconfig/CMakeLists.txt @@ -1,15 +1,14 @@ -target_sources(${TARGET_NAME} - PRIVATE +target_sources(${LIB_FSFW_NAME} PRIVATE + ipc/missionMessageTypes.cpp + objects/FsfwFactory.cpp + pollingsequence/PollingSequenceFactory.cpp ) -# Add include paths for the executable -target_include_directories(${TARGET_NAME} - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} +# Should be added to include path +target_include_directories(${TARGET_NAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} ) -# Add include paths for the FSFW library -target_include_directories(${LIB_FSFW_NAME} - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} -) \ No newline at end of file +if(NOT FSFW_CONFIG_PATH) + set(FSFW_CONFIG_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +endif() diff --git a/defaultcfg/fsfwconfig/devices/logicalAddresses.cpp b/defaultcfg/fsfwconfig/devices/logicalAddresses.cpp deleted file mode 100644 index c7ce314d..00000000 --- a/defaultcfg/fsfwconfig/devices/logicalAddresses.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "logicalAddresses.h" - - - - diff --git a/defaultcfg/fsfwconfig/devices/logicalAddresses.h b/defaultcfg/fsfwconfig/devices/logicalAddresses.h index e0827ba3..53edcd54 100644 --- a/defaultcfg/fsfwconfig/devices/logicalAddresses.h +++ b/defaultcfg/fsfwconfig/devices/logicalAddresses.h @@ -2,7 +2,7 @@ #define CONFIG_DEVICES_LOGICALADDRESSES_H_ #include -#include "../objects/systemObjectList.h" +#include #include /** diff --git a/defaultcfg/fsfwconfig/devices/powerSwitcherList.cpp b/defaultcfg/fsfwconfig/devices/powerSwitcherList.cpp deleted file mode 100644 index 343f78d0..00000000 --- a/defaultcfg/fsfwconfig/devices/powerSwitcherList.cpp +++ /dev/null @@ -1,4 +0,0 @@ -#include "powerSwitcherList.h" - - - diff --git a/defaultcfg/fsfwconfig/objects/Factory.cpp b/defaultcfg/fsfwconfig/objects/FsfwFactory.cpp similarity index 60% rename from defaultcfg/fsfwconfig/objects/Factory.cpp rename to defaultcfg/fsfwconfig/objects/FsfwFactory.cpp index 41333b1c..428adf1d 100644 --- a/defaultcfg/fsfwconfig/objects/Factory.cpp +++ b/defaultcfg/fsfwconfig/objects/FsfwFactory.cpp @@ -1,9 +1,5 @@ -#include "Factory.h" -#include "../tmtc/apid.h" -#include "../tmtc/pusIds.h" -#include "../objects/systemObjectList.h" -#include "../devices/logicalAddresses.h" -#include "../devices/powerSwitcherList.h" +#include "FsfwFactory.h" +#include #include #include @@ -11,24 +7,27 @@ #include #include #include -#include +#include #include /** - * This class should be used to create all system objects required for - * the on-board software, using the object ID list from the configuration - * folder. + * This function builds all system objects required for using + * the FSFW. It is recommended to build all other required objects + * in a function with an identical prototype, call this function in it and + * then pass the function to the object manager so it builds all system + * objects on software startup. * - * The objects are registered in the internal object manager automatically. - * This is used later to add objects to tasks. + * All system objects are registered in the internal object manager + * automatically. The objects should be added to tasks at a later stage, using + * their objects IDs. * - * This file also sets static framework IDs. + * This function also sets static framework IDs. * - * Framework objects are created first. + * Framework should be created first before creating mission system objects. * @ingroup init */ -void Factory::produce(void) { +void Factory::produceFsfwObjects(void) { setStaticFrameworkObjectIds(); new EventManager(objects::EVENT_MANAGER); new HealthTable(objects::HEALTH_TABLE); diff --git a/defaultcfg/fsfwconfig/objects/Factory.h b/defaultcfg/fsfwconfig/objects/FsfwFactory.h similarity index 91% rename from defaultcfg/fsfwconfig/objects/Factory.h rename to defaultcfg/fsfwconfig/objects/FsfwFactory.h index fe55deff..2724d2e3 100644 --- a/defaultcfg/fsfwconfig/objects/Factory.h +++ b/defaultcfg/fsfwconfig/objects/FsfwFactory.h @@ -9,7 +9,7 @@ namespace Factory { * @brief Creates all SystemObject elements which are persistent * during execution. */ - void produce(); + void produceFsfwObjects(); void setStaticFrameworkObjectIds(); } From 7b15a5a431b7a2b1c8d1cbdeffbf2431f0b37315 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Wed, 30 Dec 2020 22:57:52 +0100 Subject: [PATCH 5/5] moved includes --- defaultcfg/fsfwconfig/OBSWConfig.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/defaultcfg/fsfwconfig/OBSWConfig.h b/defaultcfg/fsfwconfig/OBSWConfig.h index 8ad2cb67..6ed8ea2c 100644 --- a/defaultcfg/fsfwconfig/OBSWConfig.h +++ b/defaultcfg/fsfwconfig/OBSWConfig.h @@ -3,11 +3,12 @@ #include "OBSWVersion.h" +#ifdef __cplusplus + #include "objects/systemObjectList.h" #include "events/subsystemIdRanges.h" #include "returnvalues/classIds.h" -#ifdef __cplusplus namespace config { #endif