From 0ae55e07837f461e45ae8edc741fbb89de778008 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 11 Aug 2021 18:13:43 +0200 Subject: [PATCH] no ARCSEC lib for Raspberry Pi --- CMakeLists.txt | 16 +++++++++++----- bsp_linux_board/InitMission.cpp | 8 ++++++-- bsp_linux_board/ObjectFactory.cpp | 17 +++++++++++------ bsp_linux_board/main.cpp | 1 + linux/fsfwconfig/OBSWConfig.h.in | 2 +- .../pollingsequence/pollingSequenceFactory.cpp | 7 +++++++ 6 files changed, 37 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d057de50..9f1c6d05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,8 +153,6 @@ if(ADD_JSON_LIB) add_subdirectory(${LIB_JSON_PATH}) endif() - - if(NOT EIVE_BUILD_WATCHDOG) if(ADD_LINUX_FILES) add_subdirectory(${LINUX_PATH}) @@ -190,8 +188,13 @@ if((NOT BUILD_Q7S_SIMPLE_MODE) AND (NOT EIVE_BUILD_WATCHDOG)) ${LIB_FSFW_NAME} ${LIB_OS_NAME} ${LIB_LWGPS_NAME} - ${LIB_ARCSEC} ) + + if(TGT_BSP MATCHES "arm/q7s") + target_link_libraries(${TARGET_NAME} PRIVATE + ${LIB_ARCSEC} + ) + endif() endif() if(NOT EIVE_BUILD_WATCHDOG) @@ -214,8 +217,6 @@ if(ADD_JSON_LIB) ) endif() - - target_link_libraries(${TARGET_NAME} PRIVATE ${LIB_CXX_FS} ) @@ -228,6 +229,11 @@ target_include_directories(${TARGET_NAME} PRIVATE ${ARCSEC_LIB_PATH} ) +if(TGT_BSP MATCHES "arm/q7s") + target_include_directories(${TARGET_NAME} PRIVATE + ${ARCSEC_LIB_PATH} + ) +endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(WARNING_FLAGS diff --git a/bsp_linux_board/InitMission.cpp b/bsp_linux_board/InitMission.cpp index 68423216..febae2f3 100644 --- a/bsp_linux_board/InitMission.cpp +++ b/bsp_linux_board/InitMission.cpp @@ -134,12 +134,14 @@ void initmission::initTasks() { objects::INTERNAL_ERROR_REPORTER); } + bool startTestPst = true; #if OBSW_ADD_TEST_PST == 1 FixedTimeslotTaskIF* pstTestTask = factory->createFixedTimeslotTask("ACS_PST", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 2.0, missedDeadlineFunc); result = pst::pstTest(pstTestTask); if(result != HasReturnvaluesIF::RETURN_OK) { - sif::warning << "initmission::initTasks: ACS PST initialization failed!" << std::endl; + sif::info << "initmission::initTasks: ACS PST empty or invalid" << std::endl; + startTestPst = false; } #endif /* RPI_TEST_ACS_BOARD == 1 */ @@ -186,7 +188,9 @@ void initmission::initTasks() { #endif /* OBSW_ADD_TEST_CODE == 1 */ #if OBSW_ADD_TEST_PST == 1 - pstTestTask->startTask(); + if(startTestPst) { + pstTestTask->startTask(); + } #endif /* RPI_TEST_ACS_BOARD == 1 */ sif::info << "Tasks started.." << std::endl; } diff --git a/bsp_linux_board/ObjectFactory.cpp b/bsp_linux_board/ObjectFactory.cpp index b24b633f..aefe4919 100644 --- a/bsp_linux_board/ObjectFactory.cpp +++ b/bsp_linux_board/ObjectFactory.cpp @@ -65,6 +65,16 @@ void ObjectFactory::produce(void* args){ GpioIF* gpioIF = new LinuxLibgpioIF(objects::GPIO_IF); GpioCookie* gpioCookie = nullptr; static_cast(gpioCookie); + + new SpiComIF(objects::SPI_COM_IF, gpioIF); + + std::string spiDev; + SpiCookie* spiCookie = nullptr; + static_cast(spiCookie); + +#if OBSW_ADD_TEST_CODE == 1 + new TestTask(objects::TEST_TASK); + #if RPI_ADD_SPI_TEST == 1 new SpiTestClass(objects::SPI_TEST, gpioIF); #endif @@ -89,12 +99,6 @@ void ObjectFactory::produce(void* args){ new LibgpiodTest(objects::LIBGPIOD_TEST, objects::GPIO_IF, gpioCookieLoopback); #endif /* RPI_LOOPBACK_TEST_GPIO == 1 */ - new SpiComIF(objects::SPI_COM_IF, gpioIF); - - std::string spiDev; - SpiCookie* spiCookie = nullptr; - static_cast(spiCookie); - #if RPI_TEST_ACS_BOARD == 1 if(gpioCookie == nullptr) { gpioCookie = new GpioCookie(); @@ -162,4 +166,5 @@ void ObjectFactory::produce(void* args){ gpsHandler->setStartUpImmediately(); #endif +#endif /* OBSW_ADD_TEST_CODE == 1 */ } diff --git a/bsp_linux_board/main.cpp b/bsp_linux_board/main.cpp index 2e9ce8a4..a766f2a0 100644 --- a/bsp_linux_board/main.cpp +++ b/bsp_linux_board/main.cpp @@ -1,4 +1,5 @@ #include "InitMission.h" +#include "OBSWConfig.h" #include "OBSWVersion.h" #include "fsfw/FSFWVersion.h" diff --git a/linux/fsfwconfig/OBSWConfig.h.in b/linux/fsfwconfig/OBSWConfig.h.in index 36d1e638..e2693430 100644 --- a/linux/fsfwconfig/OBSWConfig.h.in +++ b/linux/fsfwconfig/OBSWConfig.h.in @@ -6,7 +6,7 @@ #ifndef FSFWCONFIG_OBSWCONFIG_H_ #define FSFWCONFIG_OBSWCONFIG_H_ -#cmakedefine RASPBERRY_Pi +#cmakedefine RASPBERRY_PI #cmakedefine XIPHOS_Q7S #cmakedefine BEAGLEBONEBLACK diff --git a/linux/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp b/linux/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp index a24c5393..7153ac81 100644 --- a/linux/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp +++ b/linux/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp @@ -606,7 +606,9 @@ ReturnValue_t pst::pstGompaceCan(FixedTimeslotTaskIF *thisSequence){ ReturnValue_t pst::pstTest(FixedTimeslotTaskIF* thisSequence) { /* Length of a communication cycle */ uint32_t length = thisSequence->getPeriodMs(); + bool notEmpty = false; #if OBSW_ADD_ACS_BOARD == 1 + notEmpty = true; thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION); thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.2, @@ -678,6 +680,7 @@ ReturnValue_t pst::pstTest(FixedTimeslotTaskIF* thisSequence) { #endif #if RPI_TEST_ADIS16507 == 1 + notEmpty = true; thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION); thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0.2, DeviceHandlerIF::SEND_WRITE); @@ -687,6 +690,7 @@ ReturnValue_t pst::pstTest(FixedTimeslotTaskIF* thisSequence) { #endif #if RPI_TEST_GPS_HANDLER == 1 + notEmpty = true; thisSequence->addSlot(objects::GPS0_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION); thisSequence->addSlot(objects::GPS0_HANDLER, length * 0, DeviceHandlerIF::SEND_READ); @@ -696,6 +700,9 @@ ReturnValue_t pst::pstTest(FixedTimeslotTaskIF* thisSequence) { thisSequence->addSlot(objects::GPS0_HANDLER, length * 0.5, DeviceHandlerIF::GET_READ); #endif static_cast(length); + if(not notEmpty) { + return HasReturnvaluesIF::RETURN_FAILED; + } if (thisSequence->checkSequence() != HasReturnvaluesIF::RETURN_OK) { sif::error << "Test PST initialization failed" << std::endl; return HasReturnvaluesIF::RETURN_FAILED;