Compare commits

..

31 Commits

Author SHA1 Message Date
af7ebd3564 Merge branch 'development' into mueller/refactor-logging-with-fmt 2022-07-18 15:12:55 +02:00
a6ff3bb328 Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-07-18 08:53:35 +02:00
42a1e784c0 logging fixes 2022-06-21 11:15:00 +02:00
67b67de753 remove fsfw-test run files 2022-06-21 11:03:36 +02:00
059e60cada Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-06-21 10:47:16 +02:00
9f83894d4c Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-05-27 15:26:37 +02:00
adcb646c9b Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-05-18 13:15:54 +02:00
16f8262a79 starting a bit with event manage replacements 2022-05-18 11:35:17 +02:00
1a41d37f20 Merge branch 'mueller/tc-packet-pus-improvement' into mueller/refactor-logging-with-fmt 2022-05-18 10:52:50 +02:00
a3b9937f32 freertos and dll replacements 2022-05-18 10:51:38 +02:00
618f76ae78 improved TcPacketPus API 2022-05-17 10:14:34 +02:00
ee2f8d6956 Merge pull request 'Update FSFW from Upstream' () from mueller/update-from-upstream into develop
Reviewed-on: 
2022-05-17 10:06:58 +02:00
b11ae1c11d Merge remote-tracking branch 'upstream/development' into mueller/refactor-logging-with-fmt 2022-05-16 14:59:58 +02:00
aea4e5d42c resolve merge conflict 2022-05-16 14:47:15 +02:00
8d966de735 Merge remote-tracking branch 'upstream/development' into mueller/refactor-logging-with-fmt 2022-05-16 14:41:19 +02:00
842f1b22af Merge branch 'development' into mueller/refactor-logging-with-fmt 2022-05-13 13:21:17 +02:00
cb9c1806ef Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-05-13 13:17:05 +02:00
cdc431ebc5 Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-05-12 19:05:52 +02:00
7ab617accb rudimentary clion support 2022-05-12 18:59:39 +02:00
e2d3158506 remove v prefix from fmt version 2022-05-12 17:40:34 +02:00
23c6145971 Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-05-12 17:38:01 +02:00
eafbab9c65 Merge remote-tracking branch 'origin/mueller/add-lto-support' into mueller/refactor-logging-with-fmt 2022-05-10 10:15:05 +02:00
16bbc0f597 Merge remote-tracking branch 'origin/development' into mueller/refactor-logging-with-fmt 2022-05-10 10:10:56 +02:00
8d85da66f2 remove double added source files 2022-05-09 02:20:19 +02:00
fb1d775b52 fmt is publicly linked now, enable lto by default 2022-05-09 02:02:13 +02:00
e8a5f1e095 some format fixes 2022-05-09 01:28:26 +02:00
f518bc53db moved old loggers to archive 2022-05-09 01:14:23 +02:00
b45b6b3758 replace FLOG with LOG variants 2022-05-09 00:25:48 +02:00
83a2882f9d it compiles again 2022-05-09 00:09:13 +02:00
1b34b90ae0 init changing all printout types 2022-05-08 21:45:51 +02:00
77055a1579 first working version with fmt lib 2022-05-08 18:19:44 +02:00
696 changed files with 8946 additions and 13480 deletions
CHANGELOG.mdCMakeLists.txtREADME.md
automation
docs
misc
scripts
src
fsfw
action
cfdp
container
controller
coordinates
datalinklayer
datapool
datapoollocal
devicehandlers
events
fdir
globalfunctions
health
housekeeping
internalerror
ipc
memory
modes
monitoring
objectmanager
osal
parameters
power
pus
returnvalues
retval.h
rmap
serialize.h
serialize
serviceinterface.h
serviceinterface
storagemanager
subsystem
tasks
tcdistribution
thermal
timemanager
tmstorage
tmtcpacket
tmtcservices
util
fsfw_hal
fsfw_tests
unittests
CMakeLists.txtCatchDefinitions.cppCatchDefinitions.hCatchFactory.cppCatchRunner.cppCatchSetup.cpp
action
cfdp
container
datapoollocal
devicehandler
globalfunctions
hal
internalerror
mocks
osal
power
serialize
storagemanager
testVersion.cpp
testcfg
timemanager
tmtcpacket
tmtcservices
util

@ -8,32 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
# [unreleased] # [unreleased]
# [v6.0.0] # [v5.0.0]
## Added
- DHB TM handler `handleDeviceTM` renamed to `handleDeviceTm` and now takes
`util::DataWrapper` as the data input argument. This allows more flexibility in the possible
types of telemetry.
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/669
- Add `util::DataWrapper` class inside the `util` module. This is a tagged union which allows
to specify raw data either as a classic C-style raw pointer and size or as a `SerializeIF`
pointer.
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/668
- Add new `UnsignedByteField` class
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/660
## Changes
- Removed `HasReturnvaluesIF` class in favor of `returnvalue` namespace with `OK` and `FAILED`
constants.
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/659
- Overhaul of the TMTC stack, including various changes and improvements
for other modules
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/655
which also includes a migration guide
# [v5.0.0] 25.07.2022
## Changes ## Changes
@ -48,9 +23,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/572 PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/572
- HAL Devicehandlers: Periodic printout is run-time configurable now - HAL Devicehandlers: Periodic printout is run-time configurable now
- `oneShotAction` flag in the `TestTask` class is not static anymore - `oneShotAction` flag in the `TestTask` class is not static anymore
- `SimpleRingBuffer::writeData` now checks if the amount is larger than the total size of the
Buffer and rejects such writeData calls with `returnvalue::FAILED`
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/586
- Major update for version handling, using `git describe` to fetch version information with git. - Major update for version handling, using `git describe` to fetch version information with git.
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/601 PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/601
- Add helper functions provided by [`cmake-modules`](https://github.com/bilke/cmake-modules) - Add helper functions provided by [`cmake-modules`](https://github.com/bilke/cmake-modules)
@ -166,6 +138,7 @@ https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/593
- https://gitlab.kitware.com/cmake/cmake/-/issues/21696 - https://gitlab.kitware.com/cmake/cmake/-/issues/21696
Easiest solution for now: Keep this option OFF by default. Easiest solution for now: Keep this option OFF by default.
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/616 PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/616
- Linux HAL: Add wiretapping option for I2C. Enabled with `FSFW_HAL_I2C_WIRETAPPING` defined to 1
- Dedicated Version class and constant `fsfw::FSFW_VERSION` containing version information - Dedicated Version class and constant `fsfw::FSFW_VERSION` containing version information
inside `fsfw/version.h` inside `fsfw/version.h`
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/559 PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/559
@ -180,17 +153,6 @@ https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/593
PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/590 PR: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/590
- `Subsystem`: New API to add table and sequence entries - `Subsystem`: New API to add table and sequence entries
## HAL
- SPI: Cache the SPI device in the communication interface. Architecturally, this makes a
lot more sense because each ComIF should be responsible for one SPI bus.
- SPI: Move the empty transfer to update the line polarity to separate function. This means
it is not automatically called when calling the setter function for SPI speed and mode.
The user should call this function after locking the CS mutex if multiple SPI devices with
differing speeds and modes are attached to one bus.
- SPI: Getter functions for SPI speed and mode.
- I2C: Add wiretapping option for I2C. Enabled with `FSFW_HAL_I2C_WIRETAPPING` defined to 1.
## Fixed ## Fixed
- TCP TMTC Server: `MutexGuard` was not created properly in - TCP TMTC Server: `MutexGuard` was not created properly in

@ -13,7 +13,7 @@ list(APPEND CMAKE_MODULE_PATH
# Version file handling # # Version file handling #
# ############################################################################## # ##############################################################################
set(FSFW_VERSION_IF_GIT_FAILS 5) set(FSFW_VERSION_IF_GIT_FAILS 4)
set(FSFW_SUBVERSION_IF_GIT_FAILS 0) set(FSFW_SUBVERSION_IF_GIT_FAILS 0)
set(FSFW_REVISION_IF_GIT_FAILS 0) set(FSFW_REVISION_IF_GIT_FAILS 0)
@ -74,7 +74,6 @@ set(FSFW_ETL_LIB_MAJOR_VERSION
set(FSFW_ETL_LIB_VERSION set(FSFW_ETL_LIB_VERSION
${FSFW_ETL_LIB_MAJOR_VERSION}.28.0 ${FSFW_ETL_LIB_MAJOR_VERSION}.28.0
CACHE STRING "ETL library exact version requirement") CACHE STRING "ETL library exact version requirement")
set(FSFW_ETL_LINK_TARGET etl::etl)
set(FSFW_CATCH2_LIB_MAJOR_VERSION set(FSFW_CATCH2_LIB_MAJOR_VERSION
3 3
@ -83,6 +82,15 @@ set(FSFW_CATCH2_LIB_VERSION
v${FSFW_CATCH2_LIB_MAJOR_VERSION}.0.0-preview5 v${FSFW_CATCH2_LIB_MAJOR_VERSION}.0.0-preview5
CACHE STRING "Catch2 library exact version requirement") CACHE STRING "Catch2 library exact version requirement")
set(FSFW_FMT_LIB_NAME fmt)
set(FSFW_FMT_LINK_TARGET fmt::fmt)
set(FSFW_FMT_LIB_MAJOR_VERSION
8
CACHE STRING "{fmt} library major version requirement")
set(FSFW_FMT_LIB_VERSION
${FSFW_FMT_LIB_MAJOR_VERSION}.1.1
CACHE STRING "{fmt} library exact version requirement")
# Keep this off by default for now. See PR: # Keep this off by default for now. See PR:
# https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/616 for information which # https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/616 for information which
# keeping this on by default is problematic # keeping this on by default is problematic
@ -104,8 +112,8 @@ if(FSFW_GENERATE_SECTIONS)
option(FSFW_REMOVE_UNUSED_CODE "Remove unused code" ON) option(FSFW_REMOVE_UNUSED_CODE "Remove unused code" ON)
endif() endif()
option(FSFW_BUILD_TESTS "Build unittest binary in addition to static library" option(FSFW_BUILD_TESTS
OFF) "Build unittest binary in addition to static library" OFF)
option(FSFW_CICD_BUILD "Build for CI/CD. This can disable problematic test" OFF) option(FSFW_CICD_BUILD "Build for CI/CD. This can disable problematic test" OFF)
option(FSFW_BUILD_DOCS "Build documentation with Sphinx and Doxygen" OFF) option(FSFW_BUILD_DOCS "Build documentation with Sphinx and Doxygen" OFF)
if(FSFW_BUILD_TESTS) if(FSFW_BUILD_TESTS)
@ -118,12 +126,6 @@ option(FSFW_ADD_INTERNAL_TESTS "Add internal unit tests" ON)
option(FSFW_ADD_UNITTESTS "Add regular unittests. Requires Catch2" OFF) option(FSFW_ADD_UNITTESTS "Add regular unittests. Requires Catch2" OFF)
option(FSFW_ADD_HAL "Add Hardware Abstraction Layer" ON) option(FSFW_ADD_HAL "Add Hardware Abstraction Layer" ON)
if(UNIX)
option(FSFW_HAL_LINUX_ADD_PERIPHERAL_DRIVERS "Add Linux peripheral drivers"
OFF)
option(FSFW_HAL_LINUX_ADD_LIBGPIOD "Attempt to add Linux GPIOD drivers" OFF)
endif()
# Optional sources # Optional sources
option(FSFW_ADD_PUS "Compile with PUS sources" ON) option(FSFW_ADD_PUS "Compile with PUS sources" ON)
option(FSFW_ADD_MONITORING "Compile with monitoring components" ON) option(FSFW_ADD_MONITORING "Compile with monitoring components" ON)
@ -175,11 +177,11 @@ if(FSFW_BUILD_TESTS)
project(${FSFW_TEST_TGT} CXX C) project(${FSFW_TEST_TGT} CXX C)
add_executable(${FSFW_TEST_TGT}) add_executable(${FSFW_TEST_TGT})
if(IPO_SUPPORTED AND FSFW_ENABLE_IPO) if(IPO_SUPPORTED AND FSFW_ENABLE_IPO)
set_property(TARGET ${FSFW_TEST_TGT} PROPERTY INTERPROCEDURAL_OPTIMIZATION set_property(TARGET ${FSFW_TEST_TGT} PROPERTY INTERPROCEDURAL_OPTIMIZATION
TRUE) TRUE)
endif() endif()
if(FSFW_TESTS_GEN_COV) if(FSFW_TESTS_GEN_COV)
message(STATUS "${MSG_PREFIX} Generating coverage data for the library") message(STATUS "${MSG_PREFIX} Generating coverage data for the library")
message(STATUS "${MSG_PREFIX} Targets linking against ${LIB_FSFW_NAME} " message(STATUS "${MSG_PREFIX} Targets linking against ${LIB_FSFW_NAME} "
@ -189,18 +191,15 @@ if(FSFW_BUILD_TESTS)
endif() endif()
endif() endif()
message( message(STATUS "${MSG_PREFIX} Finding and/or etl (Embedded Template Library)")
STATUS
"${MSG_PREFIX} Finding and/or providing etl library with version ${FSFW_ETL_LIB_MAJOR_VERSION}"
)
# Check whether the user has already installed ETL first # Check whether the user has already installed ETL first
find_package(${FSFW_ETL_LIB_NAME} ${FSFW_ETL_LIB_MAJOR_VERSION} CONFIG QUIET) find_package(${FSFW_ETL_LIB_NAME} ${FSFW_ETL_LIB_MAJOR_VERSION} QUIET)
# Not installed, so use FetchContent to download and provide etl # Not installed, so use FetchContent to download and provide etl
if(NOT ${FSFW_ETL_LIB_NAME}_FOUND) if(NOT ${FSFW_ETL_LIB_NAME}_FOUND)
message( message(
STATUS STATUS
"${MSG_PREFIX} No ETL installation was found with find_package. Installing and providing " "No ETL installation was found with find_package. Installing and providing "
"etl with FindPackage") "etl with FindPackage")
include(FetchContent) include(FetchContent)
@ -212,6 +211,26 @@ if(NOT ${FSFW_ETL_LIB_NAME}_FOUND)
list(APPEND FSFW_FETCH_CONTENT_TARGETS ${FSFW_ETL_LIB_NAME}) list(APPEND FSFW_FETCH_CONTENT_TARGETS ${FSFW_ETL_LIB_NAME})
endif() endif()
message(STATUS "Finding and/or providing {fmt} formatting library")
# Check whether the user has already installed ETL first
find_package(fmt ${FSFW_FMT_LIB_MAJOR_VERSION} QUIET)
# Not installed, so use FetchContent to download and provide etl
if(NOT ${FSFW_FMT_LIB_NAME}_FOUND)
message(
STATUS
"No {fmt} installation was found with find_package. Installing and providing "
"{fmt} with FindPackage")
include(FetchContent)
FetchContent_Declare(
${FSFW_FMT_LIB_NAME}
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG ${FSFW_FMT_LIB_VERSION})
list(APPEND FSFW_FETCH_CONTENT_TARGETS ${FSFW_FMT_LIB_NAME})
endif()
# The documentation for FetchContent recommends declaring all the dependencies # The documentation for FetchContent recommends declaring all the dependencies
# before making them available. We make all declared dependency available here # before making them available. We make all declared dependency available here
# after their declaration # after their declaration
@ -221,7 +240,7 @@ if(FSFW_FETCH_CONTENT_TARGETS)
add_library(${FSFW_ETL_LINK_TARGET} ALIAS ${FSFW_ETL_LIB_NAME}) add_library(${FSFW_ETL_LINK_TARGET} ALIAS ${FSFW_ETL_LIB_NAME})
endif() endif()
if(TARGET Catch2) if(TARGET Catch2)
# Fixes regression -preview4, to be confirmed in later releases Related # Fixes regression -preview4, to be confirmed in later releases. Related
# GitHub issue: https://github.com/catchorg/Catch2/issues/2417 # GitHub issue: https://github.com/catchorg/Catch2/issues/2417
set_target_properties(Catch2 PROPERTIES DEBUG_POSTFIX "") set_target_properties(Catch2 PROPERTIES DEBUG_POSTFIX "")
endif() endif()
@ -454,9 +473,8 @@ target_include_directories(
target_compile_options(${LIB_FSFW_NAME} PRIVATE ${FSFW_WARNING_FLAGS} target_compile_options(${LIB_FSFW_NAME} PRIVATE ${FSFW_WARNING_FLAGS}
${COMPILER_FLAGS}) ${COMPILER_FLAGS})
target_link_libraries(${LIB_FSFW_NAME} PRIVATE ${FSFW_ADDITIONAL_LINK_LIBS}) target_link_libraries(${LIB_FSFW_NAME} PRIVATE ${FSFW_ADDITIONAL_LINK_LIBS})
target_link_libraries(${LIB_FSFW_NAME} PUBLIC ${FSFW_ETL_LINK_TARGET}) target_link_libraries(${LIB_FSFW_NAME} PUBLIC ${FSFW_ETL_LINK_TARGET} ${FSFW_FMT_LINK_TARGET})
string( string(
CONCAT CONCAT
@ -466,6 +484,13 @@ string(
"Target OSAL: ${FSFW_OS_NAME}\n" "Target OSAL: ${FSFW_OS_NAME}\n"
"######################################################################\n") "######################################################################\n")
# The additional / is important to remove the last character from the path. Note
# that it does not matter if the OS uses / or \, because we are only saving the
# path size.
string(LENGTH "${CMAKE_SOURCE_DIR}/" FSFW_SOURCE_PATH_SIZE)
target_compile_definitions(
${LIB_FSFW_NAME} PRIVATE "-DFSFW_SOURCE_PATH_SIZE=${FSFW_SOURCE_PATH_SIZE}")
add_custom_command( add_custom_command(
TARGET ${LIB_FSFW_NAME} TARGET ${LIB_FSFW_NAME}
POST_BUILD POST_BUILD

@ -132,7 +132,7 @@ You can use the following commands inside the `fsfw` folder to set up the build
```sh ```sh
mkdir build-tests && cd build-tests mkdir build-tests && cd build-tests
cmake -DFSFW_BUILD_TESTS=ON -DFSFW_OSAL=host -DCMAKE_BUILD_TYPE=Debug .. cmake -DFSFW_BUILD_UNITTESTS=ON -DFSFW_OSAL=host -DCMAKE_BUILD_TYPE=Debug ..
``` ```
You can also use `-DFSFW_OSAL=linux` on Linux systems. You can also use `-DFSFW_OSAL=linux` on Linux systems.

@ -1,6 +1,6 @@
pipeline { pipeline {
environment { environment {
BUILDDIR = 'cmake-build-tests' BUILDDIR = 'build-tests'
} }
agent { agent {
docker { image 'fsfw-ci:d3'} docker { image 'fsfw-ci:d3'}

@ -14,7 +14,7 @@ FSFW to achieve that. The fsfw uses run-time type information but exceptions are
# Failure Handling # Failure Handling
Functions should return a defined `ReturnValue_t` to signal to the caller that something has Functions should return a defined `ReturnValue_t` to signal to the caller that something has
gone wrong. Returnvalues must be unique. For this the function `returnvalue::makeCode` gone wrong. Returnvalues must be unique. For this the function `HasReturnvaluesIF::makeReturnCode`
or the macro `MAKE_RETURN` can be used. The `CLASS_ID` is a unique id for that type of object. or the macro `MAKE_RETURN` can be used. The `CLASS_ID` is a unique id for that type of object.
See `returnvalues/FwClassIds` folder. The user can add custom `CLASS_ID`s via the See `returnvalues/FwClassIds` folder. The user can add custom `CLASS_ID`s via the
`fsfwconfig` folder. `fsfwconfig` folder.

@ -144,7 +144,7 @@ ReturnValue_t GyroHandler::initializeLocalDataPool(localpool::DataPool &localDat
new PoolEntry<uint8_t>({0})); new PoolEntry<uint8_t>({0}));
poolManager.subscribeForPeriodicPacket(gyroData.getSid(), false, 4.0, false); poolManager.subscribeForPeriodicPacket(gyroData.getSid(), false, 4.0, false);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
``` ```
@ -154,7 +154,7 @@ in any case:
```cpp ```cpp
PoolReadGuard readHelper(&gyroData); PoolReadGuard readHelper(&gyroData);
if(readHelper.getReadResult() == returnvalue::OK) { if(readHelper.getReadResult() == HasReturnvaluesIF::RETURN_OK) {
if(not gyroData.isValid()) { if(not gyroData.isValid()) {
gyroData.setValidity(true, true); gyroData.setValidity(true, true);
} }

@ -3,7 +3,7 @@
Returnvalue API Returnvalue API
================== ==================
.. doxygenfile:: returnvalue.h .. doxygenfile:: HasReturnvaluesIF.h
.. _fwclassids: .. _fwclassids:

@ -75,11 +75,11 @@ and the respective source file with sensible default return values:
void TestDeviceHandler::doShutDown() {} void TestDeviceHandler::doShutDown() {}
ReturnValue_t TestDeviceHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) { ReturnValue_t TestDeviceHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t TestDeviceHandler::buildTransitionDeviceCommand(DeviceCommandId_t* id) { ReturnValue_t TestDeviceHandler::buildTransitionDeviceCommand(DeviceCommandId_t* id) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
void TestDeviceHandler::fillCommandAndReplyMap() {} void TestDeviceHandler::fillCommandAndReplyMap() {}
@ -87,17 +87,17 @@ and the respective source file with sensible default return values:
ReturnValue_t TestDeviceHandler::buildCommandFromCommand(DeviceCommandId_t deviceCommand, ReturnValue_t TestDeviceHandler::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
const uint8_t* commandData, const uint8_t* commandData,
size_t commandDataLen) { size_t commandDataLen) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t TestDeviceHandler::scanForReply(const uint8_t* start, size_t remainingSize, ReturnValue_t TestDeviceHandler::scanForReply(const uint8_t* start, size_t remainingSize,
DeviceCommandId_t* foundId, size_t* foundLen) { DeviceCommandId_t* foundId, size_t* foundLen) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t TestDeviceHandler::interpretDeviceReply(DeviceCommandId_t id, ReturnValue_t TestDeviceHandler::interpretDeviceReply(DeviceCommandId_t id,
const uint8_t* packet) { const uint8_t* packet) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
uint32_t TestDeviceHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { uint32_t TestDeviceHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) {
@ -106,5 +106,5 @@ and the respective source file with sensible default return values:
ReturnValue_t TestDeviceHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap, ReturnValue_t TestDeviceHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
LocalDataPoolManager& poolManager) { LocalDataPoolManager& poolManager) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }

@ -106,7 +106,7 @@ You can use the following commands inside the ``fsfw`` folder to set up the buil
.. code-block:: console .. code-block:: console
mkdir build-tests && cd build-tests mkdir build-tests && cd build-tests
cmake -DFSFW_BUILD_TESTS=ON -DFSFW_OSAL=host .. cmake -DFSFW_BUILD_UNITTESTS=ON -DFSFW_OSAL=host ..
You can also use ``-DFSFW_OSAL=linux`` on Linux systems. You can also use ``-DFSFW_OSAL=linux`` on Linux systems.

@ -18,7 +18,7 @@ Failure Handling
----------------- -----------------
Functions should return a defined :cpp:type:`ReturnValue_t` to signal to the caller that something has Functions should return a defined :cpp:type:`ReturnValue_t` to signal to the caller that something has
gone wrong. Returnvalues must be unique. For this the function :cpp:func:`returnvalue::makeCode` gone wrong. Returnvalues must be unique. For this the function :cpp:func:`HasReturnvaluesIF::makeReturnCode`
or the :ref:`macro MAKE_RETURN_CODE <retvalapi>` can be used. The ``CLASS_ID`` is a unique ID for that type of object. or the :ref:`macro MAKE_RETURN_CODE <retvalapi>` can be used. The ``CLASS_ID`` is a unique ID for that type of object.
See the :ref:`FSFW Class IDs file <fwclassids>`. The user can add custom ``CLASS_ID``\s via the See the :ref:`FSFW Class IDs file <fwclassids>`. The user can add custom ``CLASS_ID``\s via the
``fsfwconfig`` folder. ``fsfwconfig`` folder.

@ -150,7 +150,7 @@ with a housekeeping service command.
new PoolEntry<uint8_t>({0})); new PoolEntry<uint8_t>({0}));
poolManager.subscribeForPeriodicPacket(gyroData.getSid(), false, 4.0, false); poolManager.subscribeForPeriodicPacket(gyroData.getSid(), false, 4.0, false);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
Now, if we receive some sensor data and converted them into the right format, Now, if we receive some sensor data and converted them into the right format,
@ -160,7 +160,7 @@ in any case:
.. code-block:: cpp .. code-block:: cpp
PoolReadGuard readHelper(&gyroData); PoolReadGuard readHelper(&gyroData);
if(readHelper.getReadResult() == returnvalue::OK) { if(readHelper.getReadResult() == HasReturnvaluesIF::RETURN_OK) {
if(not gyroData.isValid()) { if(not gyroData.isValid()) {
gyroData.setValidity(true, true); gyroData.setValidity(true, true);
} }

@ -3,7 +3,7 @@
#include <FSFWConfig.h> #include <FSFWConfig.h>
#include "../returnvalues/returnvalue.h" #include "../returnvalues/HasReturnvaluesIF.h"
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1

@ -57,10 +57,10 @@ class ServiceInterfaceStream : public std::ostream {
// Forward declaration of interface streams. These should be instantiated in // Forward declaration of interface streams. These should be instantiated in
// main. They can then be used like std::cout or std::cerr. // main. They can then be used like std::cout or std::cerr.
namespace sif { namespace sif {
extern ServiceInterfaceStream debug; // extern ServiceInterfaceStream debug;
extern ServiceInterfaceStream info; // extern ServiceInterfaceStream info;
extern ServiceInterfaceStream warning; // extern ServiceInterfaceStream warning;
extern ServiceInterfaceStream error; // extern ServiceInterfaceStream error;
} // namespace sif } // namespace sif
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */ #endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */

@ -35,8 +35,8 @@ void Factory::produceFsfwObjects(void) {
} }
void Factory::setStaticFrameworkObjectIds() { void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::PUS_DISTRIBUTOR = objects::NO_OBJECT; PusServiceBase::packetSource = objects::NO_OBJECT;
PusServiceBase::PACKET_DESTINATION = objects::NO_OBJECT; PusServiceBase::packetDestination = objects::NO_OBJECT;
CommandingServiceBase::defaultPacketSource = objects::NO_OBJECT; CommandingServiceBase::defaultPacketSource = objects::NO_OBJECT;
CommandingServiceBase::defaultPacketDestination = objects::NO_OBJECT; CommandingServiceBase::defaultPacketDestination = objects::NO_OBJECT;

@ -11,15 +11,15 @@ ReturnValue_t pst::pollingSequenceInitDefault(
/* Add polling sequence table here */ /* Add polling sequence table here */
if (thisSequence->checkSequence() == returnvalue::OK) { if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
else { else {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "pst::pollingSequenceInitDefault: Sequence invalid!" sif::error << "pst::pollingSequenceInitDefault: Sequence invalid!"
<< std::endl; << std::endl;
#endif #endif
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }

@ -1,7 +1,7 @@
#ifndef POLLINGSEQUENCEFACTORY_H_ #ifndef POLLINGSEQUENCEFACTORY_H_
#define POLLINGSEQUENCEFACTORY_H_ #define POLLINGSEQUENCEFACTORY_H_
#include <fsfw/returnvalues/returnvalue.h> #include <fsfw/returnvalues/HasReturnvaluesIF.h>
class FixedTimeslotTaskIF; class FixedTimeslotTaskIF;

@ -3,11 +3,6 @@ if [[ ! -f README.md ]]; then
cd .. cd ..
fi fi
folder_list=(
"./src"
"./unittests"
)
cmake_fmt="cmake-format" cmake_fmt="cmake-format"
file_selectors="-iname CMakeLists.txt" file_selectors="-iname CMakeLists.txt"
if command -v ${cmake_fmt} &> /dev/null; then if command -v ${cmake_fmt} &> /dev/null; then
@ -20,10 +15,9 @@ fi
cpp_format="clang-format" cpp_format="clang-format"
file_selectors="-iname *.h -o -iname *.cpp -o -iname *.c -o -iname *.tpp" file_selectors="-iname *.h -o -iname *.cpp -o -iname *.c -o -iname *.tpp"
if command -v ${cpp_format} &> /dev/null; then if command -v ${cpp_format} &> /dev/null; then
for dir in ${folder_list[@]}; do find ./src ${file_selectors} | xargs ${cpp_format} --style=file -i
echo "Auto-formatting ${dir} recursively" find ./hal ${file_selectors} | xargs ${cpp_format} --style=file -i
find ${dir} ${file_selectors} | xargs clang-format --style=file -i find ./tests ${file_selectors} | xargs ${cpp_format} --style=file -i
done
else else
echo "No ${cpp_format} tool found, not formatting C++/C files" echo "No ${cpp_format} tool found, not formatting C++/C files"
fi fi

@ -13,7 +13,7 @@ from shutil import which
from typing import List from typing import List
UNITTEST_FOLDER_NAME = "cmake-build-tests" UNITTEST_FOLDER_NAME = "build-tests"
DOCS_FOLDER_NAME = "build-docs" DOCS_FOLDER_NAME = "build-docs"

@ -1,7 +1,7 @@
#include "fsfw/action.h" #include "fsfw/action.h"
#include "fsfw/ipc/MessageQueueSenderIF.h" #include "fsfw/ipc/MessageQueueSenderIF.h"
#include "fsfw/objectmanager/ObjectManager.h" #include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface.h"
ActionHelper::ActionHelper(HasActionsIF* setOwner, MessageQueueIF* useThisQueue) ActionHelper::ActionHelper(HasActionsIF* setOwner, MessageQueueIF* useThisQueue)
: owner(setOwner), queueToUse(useThisQueue) {} : owner(setOwner), queueToUse(useThisQueue) {}
@ -12,7 +12,7 @@ ReturnValue_t ActionHelper::handleActionMessage(CommandMessage* command) {
if (command->getCommand() == ActionMessage::EXECUTE_ACTION) { if (command->getCommand() == ActionMessage::EXECUTE_ACTION) {
ActionId_t currentAction = ActionMessage::getActionId(command); ActionId_t currentAction = ActionMessage::getActionId(command);
prepareExecution(command->getSender(), currentAction, ActionMessage::getStoreId(command)); prepareExecution(command->getSender(), currentAction, ActionMessage::getStoreId(command));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} else { } else {
return CommandMessage::UNKNOWN_COMMAND; return CommandMessage::UNKNOWN_COMMAND;
} }
@ -21,24 +21,18 @@ ReturnValue_t ActionHelper::handleActionMessage(CommandMessage* command) {
ReturnValue_t ActionHelper::initialize(MessageQueueIF* queueToUse_) { ReturnValue_t ActionHelper::initialize(MessageQueueIF* queueToUse_) {
ipcStore = ObjectManager::instance()->get<StorageManagerIF>(objects::IPC_STORE); ipcStore = ObjectManager::instance()->get<StorageManagerIF>(objects::IPC_STORE);
if (ipcStore == nullptr) { if (ipcStore == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (queueToUse_ != nullptr) { if (queueToUse_ != nullptr) {
setQueueToUse(queueToUse_); setQueueToUse(queueToUse_);
} }
if (queueToUse == nullptr) { if (queueToUse == nullptr) {
#if FSFW_VERBOSE_LEVEL >= 1 FSFW_LOGW("{}", "initialize: No queue set\n");
#if FSFW_CPP_OSTREAM_ENABLED == 1 return HasReturnvaluesIF::RETURN_FAILED;
sif::warning << "ActionHelper::initialize: No queue set" << std::endl;
#else
sif::printWarning("ActionHelper::initialize: No queue set\n");
#endif
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
return returnvalue::FAILED;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
void ActionHelper::step(uint8_t step, MessageQueueId_t reportTo, ActionId_t commandId, void ActionHelper::step(uint8_t step, MessageQueueId_t reportTo, ActionId_t commandId,
@ -62,7 +56,7 @@ void ActionHelper::prepareExecution(MessageQueueId_t commandedBy, ActionId_t act
const uint8_t* dataPtr = nullptr; const uint8_t* dataPtr = nullptr;
size_t size = 0; size_t size = 0;
ReturnValue_t result = ipcStore->getData(dataAddress, &dataPtr, &size); ReturnValue_t result = ipcStore->getData(dataAddress, &dataPtr, &size);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
CommandMessage reply; CommandMessage reply;
ActionMessage::setStepReply(&reply, actionId, 0, result); ActionMessage::setStepReply(&reply, actionId, 0, result);
queueToUse->sendMessage(commandedBy, &reply); queueToUse->sendMessage(commandedBy, &reply);
@ -75,7 +69,7 @@ void ActionHelper::prepareExecution(MessageQueueId_t commandedBy, ActionId_t act
ActionMessage::setCompletionReply(&reply, actionId, true, result); ActionMessage::setCompletionReply(&reply, actionId, true, result);
queueToUse->sendMessage(commandedBy, &reply); queueToUse->sendMessage(commandedBy, &reply);
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
CommandMessage reply; CommandMessage reply;
ActionMessage::setStepReply(&reply, actionId, 0, result); ActionMessage::setStepReply(&reply, actionId, 0, result);
queueToUse->sendMessage(commandedBy, &reply); queueToUse->sendMessage(commandedBy, &reply);
@ -91,23 +85,16 @@ ReturnValue_t ActionHelper::reportData(MessageQueueId_t reportTo, ActionId_t rep
size_t maxSize = data->getSerializedSize(); size_t maxSize = data->getSerializedSize();
if (maxSize == 0) { if (maxSize == 0) {
/* No error, there's simply nothing to report. */ /* No error, there's simply nothing to report. */
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t size = 0; size_t size = 0;
ReturnValue_t result = ipcStore->getFreeElement(&storeAddress, maxSize, &dataPtr); ReturnValue_t result = ipcStore->getFreeElement(&storeAddress, maxSize, &dataPtr);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
#if FSFW_CPP_OSTREAM_ENABLED == 1 FSFW_LOGWT("{}", "reportData: Getting free element from IPC store failed\n");
sif::warning << "ActionHelper::reportData: Getting free element from IPC store failed!"
<< std::endl;
#else
sif::printWarning(
"ActionHelper::reportData: Getting free element from IPC "
"store failed!\n");
#endif
return result; return result;
} }
result = data->serialize(&dataPtr, &size, maxSize, SerializeIF::Endianness::BIG); result = data->serialize(&dataPtr, &size, maxSize, SerializeIF::Endianness::BIG);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
ipcStore->deleteData(storeAddress); ipcStore->deleteData(storeAddress);
return result; return result;
} }
@ -124,7 +111,7 @@ ReturnValue_t ActionHelper::reportData(MessageQueueId_t reportTo, ActionId_t rep
result = queueToUse->sendMessage(reportTo, &reply); result = queueToUse->sendMessage(reportTo, &reply);
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
ipcStore->deleteData(storeAddress); ipcStore->deleteData(storeAddress);
} }
return result; return result;
@ -137,12 +124,8 @@ ReturnValue_t ActionHelper::reportData(MessageQueueId_t reportTo, ActionId_t rep
CommandMessage reply; CommandMessage reply;
store_address_t storeAddress; store_address_t storeAddress;
ReturnValue_t result = ipcStore->addData(&storeAddress, data, dataSize); ReturnValue_t result = ipcStore->addData(&storeAddress, data, dataSize);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
#if FSFW_CPP_OSTREAM_ENABLED == 1 FSFW_LOGWT("{}", "reportData: Adding data to IPC store failed\n");
sif::warning << "ActionHelper::reportData: Adding data to IPC store failed!" << std::endl;
#else
sif::printWarning("ActionHelper::reportData: Adding data to IPC store failed!\n");
#endif
return result; return result;
} }
@ -158,7 +141,7 @@ ReturnValue_t ActionHelper::reportData(MessageQueueId_t reportTo, ActionId_t rep
result = queueToUse->sendMessage(reportTo, &reply); result = queueToUse->sendMessage(reportTo, &reply);
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
ipcStore->deleteData(storeAddress); ipcStore->deleteData(storeAddress);
} }
return result; return result;

@ -36,7 +36,7 @@ class ActionHelper {
* send to the sender of the message automatically. * send to the sender of the message automatically.
* *
* @param command Pointer to a command message received by the owner * @param command Pointer to a command message received by the owner
* @return returnvalue::OK if the message is a action message, * @return HasReturnvaluesIF::RETURN_OK if the message is a action message,
* CommandMessage::UNKNOW_COMMAND if this message ID is unkown * CommandMessage::UNKNOW_COMMAND if this message ID is unkown
*/ */
ReturnValue_t handleActionMessage(CommandMessage* command); ReturnValue_t handleActionMessage(CommandMessage* command);
@ -45,7 +45,7 @@ class ActionHelper {
* helper function * helper function
* @param queueToUse_ Pointer to the messageQueue to be used, optional * @param queueToUse_ Pointer to the messageQueue to be used, optional
* if queue was set in constructor * if queue was set in constructor
* @return Returns returnvalue::OK if successful * @return Returns RETURN_OK if successful
*/ */
ReturnValue_t initialize(MessageQueueIF* queueToUse_ = nullptr); ReturnValue_t initialize(MessageQueueIF* queueToUse_ = nullptr);
/** /**
@ -58,7 +58,7 @@ class ActionHelper {
* @param result Result of the execution * @param result Result of the execution
*/ */
void step(uint8_t step, MessageQueueId_t reportTo, ActionId_t commandId, void step(uint8_t step, MessageQueueId_t reportTo, ActionId_t commandId,
ReturnValue_t result = returnvalue::OK); ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
/** /**
* Function to be called by the owner to send a action completion message * Function to be called by the owner to send a action completion message
* @param success Specify whether action was completed successfully or not. * @param success Specify whether action was completed successfully or not.
@ -67,7 +67,7 @@ class ActionHelper {
* @param result Result of the execution * @param result Result of the execution
*/ */
void finish(bool success, MessageQueueId_t reportTo, ActionId_t commandId, void finish(bool success, MessageQueueId_t reportTo, ActionId_t commandId,
ReturnValue_t result = returnvalue::OK); ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
/** /**
* Function to be called by the owner if an action does report data. * Function to be called by the owner if an action does report data.
* Takes a SerializeIF* pointer and serializes it into the IPC store. * Takes a SerializeIF* pointer and serializes it into the IPC store.
@ -75,7 +75,7 @@ class ActionHelper {
* message to * message to
* @param replyId ID of the executed command * @param replyId ID of the executed command
* @param data Pointer to the data * @param data Pointer to the data
* @return Returns returnvalue::OK if successful, otherwise failure code * @return Returns RETURN_OK if successful, otherwise failure code
*/ */
ReturnValue_t reportData(MessageQueueId_t reportTo, ActionId_t replyId, SerializeIF* data, ReturnValue_t reportData(MessageQueueId_t reportTo, ActionId_t replyId, SerializeIF* data,
bool hideSender = false); bool hideSender = false);
@ -86,7 +86,7 @@ class ActionHelper {
* message to * message to
* @param replyId ID of the executed command * @param replyId ID of the executed command
* @param data Pointer to the data * @param data Pointer to the data
* @return Returns returnvalue::OK if successful, otherwise failure code * @return Returns RETURN_OK if successful, otherwise failure code
*/ */
ReturnValue_t reportData(MessageQueueId_t reportTo, ActionId_t replyId, const uint8_t* data, ReturnValue_t reportData(MessageQueueId_t reportTo, ActionId_t replyId, const uint8_t* data,
size_t dataSize, bool hideSender = false); size_t dataSize, bool hideSender = false);

@ -25,7 +25,7 @@ store_address_t ActionMessage::getStoreId(const CommandMessage* message) {
void ActionMessage::setStepReply(CommandMessage* message, ActionId_t fid, uint8_t step, void ActionMessage::setStepReply(CommandMessage* message, ActionId_t fid, uint8_t step,
ReturnValue_t result) { ReturnValue_t result) {
if (result == returnvalue::OK) { if (result == HasReturnvaluesIF::RETURN_OK) {
message->setCommand(STEP_SUCCESS); message->setCommand(STEP_SUCCESS);
} else { } else {
message->setCommand(STEP_FAILED); message->setCommand(STEP_FAILED);

@ -33,12 +33,12 @@ class ActionMessage {
static store_address_t getStoreId(const CommandMessage* message); static store_address_t getStoreId(const CommandMessage* message);
static void setStepReply(CommandMessage* message, ActionId_t fid, uint8_t step, static void setStepReply(CommandMessage* message, ActionId_t fid, uint8_t step,
ReturnValue_t result = returnvalue::OK); ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
static uint8_t getStep(const CommandMessage* message); static uint8_t getStep(const CommandMessage* message);
static ReturnValue_t getReturnCode(const CommandMessage* message); static ReturnValue_t getReturnCode(const CommandMessage* message);
static void setDataReply(CommandMessage* message, ActionId_t actionId, store_address_t data); static void setDataReply(CommandMessage* message, ActionId_t actionId, store_address_t data);
static void setCompletionReply(CommandMessage* message, ActionId_t fid, bool success, static void setCompletionReply(CommandMessage* message, ActionId_t fid, bool success,
ReturnValue_t result = returnvalue::OK); ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
static void clear(CommandMessage* message); static void clear(CommandMessage* message);
}; };

@ -16,12 +16,12 @@ ReturnValue_t CommandActionHelper::commandAction(object_id_t commandTo, ActionId
uint8_t *storePointer; uint8_t *storePointer;
size_t maxSize = data->getSerializedSize(); size_t maxSize = data->getSerializedSize();
ReturnValue_t result = ipcStore->getFreeElement(&storeId, maxSize, &storePointer); ReturnValue_t result = ipcStore->getFreeElement(&storeId, maxSize, &storePointer);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t size = 0; size_t size = 0;
result = data->serialize(&storePointer, &size, maxSize, SerializeIF::Endianness::BIG); result = data->serialize(&storePointer, &size, maxSize, SerializeIF::Endianness::BIG);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return sendCommand(receiver->getCommandQueue(), actionId, storeId); return sendCommand(receiver->getCommandQueue(), actionId, storeId);
@ -35,7 +35,7 @@ ReturnValue_t CommandActionHelper::commandAction(object_id_t commandTo, ActionId
} }
store_address_t storeId; store_address_t storeId;
ReturnValue_t result = ipcStore->addData(&storeId, data, size); ReturnValue_t result = ipcStore->addData(&storeId, data, size);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return sendCommand(receiver->getCommandQueue(), actionId, storeId); return sendCommand(receiver->getCommandQueue(), actionId, storeId);
@ -46,7 +46,7 @@ ReturnValue_t CommandActionHelper::sendCommand(MessageQueueId_t queueId, ActionI
CommandMessage command; CommandMessage command;
ActionMessage::setCommand(&command, actionId, storeId); ActionMessage::setCommand(&command, actionId, storeId);
ReturnValue_t result = queueToUse->sendMessage(queueId, &command); ReturnValue_t result = queueToUse->sendMessage(queueId, &command);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
ipcStore->deleteData(storeId); ipcStore->deleteData(storeId);
} }
lastTarget = queueId; lastTarget = queueId;
@ -57,44 +57,44 @@ ReturnValue_t CommandActionHelper::sendCommand(MessageQueueId_t queueId, ActionI
ReturnValue_t CommandActionHelper::initialize() { ReturnValue_t CommandActionHelper::initialize() {
ipcStore = ObjectManager::instance()->get<StorageManagerIF>(objects::IPC_STORE); ipcStore = ObjectManager::instance()->get<StorageManagerIF>(objects::IPC_STORE);
if (ipcStore == nullptr) { if (ipcStore == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
queueToUse = owner->getCommandQueuePtr(); queueToUse = owner->getCommandQueuePtr();
if (queueToUse == nullptr) { if (queueToUse == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t CommandActionHelper::handleReply(CommandMessage *reply) { ReturnValue_t CommandActionHelper::handleReply(CommandMessage *reply) {
if (reply->getSender() != lastTarget) { if (reply->getSender() != lastTarget) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
switch (reply->getCommand()) { switch (reply->getCommand()) {
case ActionMessage::COMPLETION_SUCCESS: case ActionMessage::COMPLETION_SUCCESS:
commandCount--; commandCount--;
owner->completionSuccessfulReceived(ActionMessage::getActionId(reply)); owner->completionSuccessfulReceived(ActionMessage::getActionId(reply));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
case ActionMessage::COMPLETION_FAILED: case ActionMessage::COMPLETION_FAILED:
commandCount--; commandCount--;
owner->completionFailedReceived(ActionMessage::getActionId(reply), owner->completionFailedReceived(ActionMessage::getActionId(reply),
ActionMessage::getReturnCode(reply)); ActionMessage::getReturnCode(reply));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
case ActionMessage::STEP_SUCCESS: case ActionMessage::STEP_SUCCESS:
owner->stepSuccessfulReceived(ActionMessage::getActionId(reply), owner->stepSuccessfulReceived(ActionMessage::getActionId(reply),
ActionMessage::getStep(reply)); ActionMessage::getStep(reply));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
case ActionMessage::STEP_FAILED: case ActionMessage::STEP_FAILED:
commandCount--; commandCount--;
owner->stepFailedReceived(ActionMessage::getActionId(reply), ActionMessage::getStep(reply), owner->stepFailedReceived(ActionMessage::getActionId(reply), ActionMessage::getStep(reply),
ActionMessage::getReturnCode(reply)); ActionMessage::getReturnCode(reply));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
case ActionMessage::DATA_REPLY: case ActionMessage::DATA_REPLY:
extractDataForOwner(ActionMessage::getActionId(reply), ActionMessage::getStoreId(reply)); extractDataForOwner(ActionMessage::getActionId(reply), ActionMessage::getStoreId(reply));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
default: default:
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
@ -104,7 +104,7 @@ void CommandActionHelper::extractDataForOwner(ActionId_t actionId, store_address
const uint8_t *data = nullptr; const uint8_t *data = nullptr;
size_t size = 0; size_t size = 0;
ReturnValue_t result = ipcStore->getData(storeId, &data, &size); ReturnValue_t result = ipcStore->getData(storeId, &data, &size);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return; return;
} }
owner->dataReceived(actionId, data, size); owner->dataReceived(actionId, data, size);

@ -4,7 +4,7 @@
#include "ActionMessage.h" #include "ActionMessage.h"
#include "fsfw/ipc/MessageQueueIF.h" #include "fsfw/ipc/MessageQueueIF.h"
#include "fsfw/objectmanager/ObjectManagerIF.h" #include "fsfw/objectmanager/ObjectManagerIF.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/serialize/SerializeIF.h" #include "fsfw/serialize/SerializeIF.h"
#include "fsfw/storagemanager/StorageManagerIF.h" #include "fsfw/storagemanager/StorageManagerIF.h"
@ -16,8 +16,8 @@ class CommandActionHelper {
public: public:
explicit CommandActionHelper(CommandsActionsIF* owner); explicit CommandActionHelper(CommandsActionsIF* owner);
virtual ~CommandActionHelper(); virtual ~CommandActionHelper();
ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId, ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId, const uint8_t* data,
const uint8_t* data = nullptr, uint32_t size = 0); uint32_t size);
ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId, SerializeIF* data); ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId, SerializeIF* data);
ReturnValue_t initialize(); ReturnValue_t initialize();
ReturnValue_t handleReply(CommandMessage* reply); ReturnValue_t handleReply(CommandMessage* reply);

@ -3,7 +3,7 @@
#include "CommandActionHelper.h" #include "CommandActionHelper.h"
#include "fsfw/ipc/MessageQueueIF.h" #include "fsfw/ipc/MessageQueueIF.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
/** /**
* Interface to separate commanding actions of other objects. * Interface to separate commanding actions of other objects.

@ -5,7 +5,7 @@
#include "ActionMessage.h" #include "ActionMessage.h"
#include "SimpleActionHelper.h" #include "SimpleActionHelper.h"
#include "fsfw/ipc/MessageQueueIF.h" #include "fsfw/ipc/MessageQueueIF.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
/** /**
* @brief * @brief
@ -53,7 +53,7 @@ class HasActionsIF {
* *
* @return * @return
* -@c EXECUTION_FINISHED Finish reply will be generated * -@c EXECUTION_FINISHED Finish reply will be generated
* -@c Not returnvalue::OK Step failure reply will be generated * -@c Not RETURN_OK Step failure reply will be generated
*/ */
virtual ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy, virtual ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
const uint8_t* data, size_t size) = 0; const uint8_t* data, size_t size) = 0;

@ -9,7 +9,7 @@ void SimpleActionHelper::step(ReturnValue_t result) {
// STEP_OFFESET is subtracted to compensate for adding offset in base // STEP_OFFESET is subtracted to compensate for adding offset in base
// method, which is not necessary here. // method, which is not necessary here.
ActionHelper::step(stepCount - STEP_OFFSET, lastCommander, lastAction, result); ActionHelper::step(stepCount - STEP_OFFSET, lastCommander, lastAction, result);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
resetHelper(); resetHelper();
} }
} }
@ -41,7 +41,7 @@ void SimpleActionHelper::prepareExecution(MessageQueueId_t commandedBy, ActionId
const uint8_t* dataPtr = nullptr; const uint8_t* dataPtr = nullptr;
size_t size = 0; size_t size = 0;
ReturnValue_t result = ipcStore->getData(dataAddress, &dataPtr, &size); ReturnValue_t result = ipcStore->getData(dataAddress, &dataPtr, &size);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
ActionMessage::setStepReply(&reply, actionId, 0, result); ActionMessage::setStepReply(&reply, actionId, 0, result);
queueToUse->sendMessage(commandedBy, &reply); queueToUse->sendMessage(commandedBy, &reply);
return; return;
@ -51,12 +51,12 @@ void SimpleActionHelper::prepareExecution(MessageQueueId_t commandedBy, ActionId
result = owner->executeAction(actionId, commandedBy, dataPtr, size); result = owner->executeAction(actionId, commandedBy, dataPtr, size);
ipcStore->deleteData(dataAddress); ipcStore->deleteData(dataAddress);
switch (result) { switch (result) {
case returnvalue::OK: case HasReturnvaluesIF::RETURN_OK:
isExecuting = true; isExecuting = true;
stepCount++; stepCount++;
break; break;
case HasActionsIF::EXECUTION_FINISHED: case HasActionsIF::EXECUTION_FINISHED:
ActionMessage::setCompletionReply(&reply, actionId, true, returnvalue::OK); ActionMessage::setCompletionReply(&reply, actionId, true, HasReturnvaluesIF::RETURN_OK);
queueToUse->sendMessage(commandedBy, &reply); queueToUse->sendMessage(commandedBy, &reply);
break; break;
default: default:

@ -12,8 +12,8 @@ class SimpleActionHelper : public ActionHelper {
public: public:
SimpleActionHelper(HasActionsIF* setOwner, MessageQueueIF* useThisQueue); SimpleActionHelper(HasActionsIF* setOwner, MessageQueueIF* useThisQueue);
~SimpleActionHelper() override; ~SimpleActionHelper() override;
void step(ReturnValue_t result = returnvalue::OK); void step(ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
void finish(ReturnValue_t result = returnvalue::OK); void finish(ReturnValue_t result = HasReturnvaluesIF::RETURN_OK);
ReturnValue_t reportData(SerializeIF* data); ReturnValue_t reportData(SerializeIF* data);
protected: protected:

@ -0,0 +1,52 @@
#include "fsfw/cfdp/CFDPHandler.h"
#include "fsfw/cfdp/CFDPMessage.h"
#include "fsfw/ipc/CommandMessage.h"
#include "fsfw/ipc/QueueFactory.h"
#include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/serviceinterface.h"
#include "fsfw/storagemanager/storeAddress.h"
#include "fsfw/tmtcservices/AcceptsTelemetryIF.h"
object_id_t CFDPHandler::packetSource = 0;
object_id_t CFDPHandler::packetDestination = 0;
CFDPHandler::CFDPHandler(object_id_t setObjectId, CFDPDistributor* dist)
: SystemObject(setObjectId) {
requestQueue = QueueFactory::instance()->createMessageQueue(CFDP_HANDLER_MAX_RECEPTION);
distributor = dist;
}
CFDPHandler::~CFDPHandler() {}
ReturnValue_t CFDPHandler::initialize() {
ReturnValue_t result = SystemObject::initialize();
if (result != RETURN_OK) {
return result;
}
this->distributor->registerHandler(this);
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t CFDPHandler::handleRequest(store_address_t storeId) {
FSFW_LOGDT("{}", "CFDPHandler::handleRequest\n");
// TODO read out packet from store using storeId
return RETURN_OK;
}
ReturnValue_t CFDPHandler::performOperation(uint8_t opCode) {
ReturnValue_t status = RETURN_OK;
CommandMessage currentMessage;
for (status = this->requestQueue->receiveMessage(&currentMessage); status == RETURN_OK;
status = this->requestQueue->receiveMessage(&currentMessage)) {
store_address_t storeId = CFDPMessage::getStoreId(&currentMessage);
this->handleRequest(storeId);
}
return RETURN_OK;
}
uint16_t CFDPHandler::getIdentifier() { return 0; }
MessageQueueId_t CFDPHandler::getRequestQueue() { return this->requestQueue->getId(); }

@ -3,7 +3,7 @@
#include "fsfw/ipc/MessageQueueIF.h" #include "fsfw/ipc/MessageQueueIF.h"
#include "fsfw/objectmanager/SystemObject.h" #include "fsfw/objectmanager/SystemObject.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/tasks/ExecutableObjectIF.h" #include "fsfw/tasks/ExecutableObjectIF.h"
#include "fsfw/tcdistribution/CFDPDistributor.h" #include "fsfw/tcdistribution/CFDPDistributor.h"
#include "fsfw/tmtcservices/AcceptsTelecommandsIF.h" #include "fsfw/tmtcservices/AcceptsTelecommandsIF.h"
@ -12,15 +12,18 @@ namespace Factory {
void setStaticFrameworkObjectIds(); void setStaticFrameworkObjectIds();
} }
class CfdpHandler : public ExecutableObjectIF, public AcceptsTelecommandsIF, public SystemObject { class CFDPHandler : public ExecutableObjectIF,
public AcceptsTelecommandsIF,
public SystemObject,
public HasReturnvaluesIF {
friend void(Factory::setStaticFrameworkObjectIds)(); friend void(Factory::setStaticFrameworkObjectIds)();
public: public:
CfdpHandler(object_id_t setObjectId, CFDPDistributor* distributor); CFDPHandler(object_id_t setObjectId, CFDPDistributor* distributor);
/** /**
* The destructor is empty. * The destructor is empty.
*/ */
virtual ~CfdpHandler(); virtual ~CFDPHandler();
virtual ReturnValue_t handleRequest(store_address_t storeId); virtual ReturnValue_t handleRequest(store_address_t storeId);
@ -42,7 +45,7 @@ class CfdpHandler : public ExecutableObjectIF, public AcceptsTelecommandsIF, pub
* The current CFDP packet to be processed. * The current CFDP packet to be processed.
* It is deleted after handleRequest was executed. * It is deleted after handleRequest was executed.
*/ */
CfdpPacketStored currentPacket; CFDPPacketStored currentPacket;
static object_id_t packetSource; static object_id_t packetSource;

@ -0,0 +1,17 @@
#include "CFDPMessage.h"
CFDPMessage::CFDPMessage() {}
CFDPMessage::~CFDPMessage() {}
void CFDPMessage::setCommand(CommandMessage *message, store_address_t cfdpPacket) {
message->setParameter(cfdpPacket.raw);
}
store_address_t CFDPMessage::getStoreId(const CommandMessage *message) {
store_address_t storeAddressCFDPPacket;
storeAddressCFDPPacket = message->getParameter();
return storeAddressCFDPPacket;
}
void CFDPMessage::clear(CommandMessage *message) {}

@ -5,14 +5,14 @@
#include "fsfw/objectmanager/ObjectManagerIF.h" #include "fsfw/objectmanager/ObjectManagerIF.h"
#include "fsfw/storagemanager/StorageManagerIF.h" #include "fsfw/storagemanager/StorageManagerIF.h"
class CfdpMessage { class CFDPMessage {
private: private:
CfdpMessage(); CFDPMessage();
public: public:
static const uint8_t MESSAGE_ID = messagetypes::CFDP; static const uint8_t MESSAGE_ID = messagetypes::CFDP;
virtual ~CfdpMessage(); virtual ~CFDPMessage();
static void setCommand(CommandMessage* message, store_address_t cfdpPacket); static void setCommand(CommandMessage* message, store_address_t cfdpPacket);
static store_address_t getStoreId(const CommandMessage* message); static store_address_t getStoreId(const CommandMessage* message);

@ -1,4 +1,4 @@
target_sources(${LIB_FSFW_NAME} PRIVATE CfdpHandler.cpp CfdpMessage.cpp) target_sources(${LIB_FSFW_NAME} PRIVATE CFDPHandler.cpp CFDPMessage.cpp)
add_subdirectory(pdu) add_subdirectory(pdu)
add_subdirectory(tlv) add_subdirectory(tlv)

@ -1,58 +0,0 @@
#include "fsfw/cfdp/CfdpHandler.h"
#include "fsfw/cfdp/CfdpMessage.h"
#include "fsfw/ipc/CommandMessage.h"
#include "fsfw/ipc/QueueFactory.h"
#include "fsfw/storagemanager/storeAddress.h"
#include "fsfw/tmtcservices/AcceptsTelemetryIF.h"
object_id_t CfdpHandler::packetSource = 0;
object_id_t CfdpHandler::packetDestination = 0;
CfdpHandler::CfdpHandler(object_id_t setObjectId, CFDPDistributor* dist)
: SystemObject(setObjectId) {
auto mqArgs = MqArgs(setObjectId, static_cast<void*>(this));
requestQueue = QueueFactory::instance()->createMessageQueue(
CFDP_HANDLER_MAX_RECEPTION, MessageQueueMessage::MAX_MESSAGE_SIZE, &mqArgs);
distributor = dist;
}
CfdpHandler::~CfdpHandler() = default;
ReturnValue_t CfdpHandler::initialize() {
ReturnValue_t result = SystemObject::initialize();
if (result != returnvalue::OK) {
return result;
}
this->distributor->registerHandler(this);
return returnvalue::OK;
}
ReturnValue_t CfdpHandler::handleRequest(store_address_t storeId) {
#if FSFW_VERBOSE_LEVEL >= 1
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::debug << "CFDPHandler::handleRequest" << std::endl;
#else
sif::printDebug("CFDPHandler::handleRequest\n");
#endif /* !FSFW_CPP_OSTREAM_ENABLED == 1 */
#endif
// TODO read out packet from store using storeId
return returnvalue::OK;
}
ReturnValue_t CfdpHandler::performOperation(uint8_t opCode) {
ReturnValue_t status = returnvalue::OK;
CommandMessage currentMessage;
for (status = this->requestQueue->receiveMessage(&currentMessage); status == returnvalue::OK;
status = this->requestQueue->receiveMessage(&currentMessage)) {
store_address_t storeId = CfdpMessage::getStoreId(&currentMessage);
this->handleRequest(storeId);
}
return returnvalue::OK;
}
uint16_t CfdpHandler::getIdentifier() { return 0; }
MessageQueueId_t CfdpHandler::getRequestQueue() { return this->requestQueue->getId(); }

@ -1,17 +0,0 @@
#include "CfdpMessage.h"
CfdpMessage::CfdpMessage() = default;
CfdpMessage::~CfdpMessage() = default;
void CfdpMessage::setCommand(CommandMessage *message, store_address_t cfdpPacket) {
message->setParameter(cfdpPacket.raw);
}
store_address_t CfdpMessage::getStoreId(const CommandMessage *message) {
store_address_t storeId;
storeId = static_cast<store_address_t>(message->getParameter());
return storeId;
}
void CfdpMessage::clear(CommandMessage *message) {}

@ -43,7 +43,7 @@ struct FileSize : public SerializeIF {
uint32_t sizeTmp = 0; uint32_t sizeTmp = 0;
ReturnValue_t result = ReturnValue_t result =
SerializeAdapter::deSerialize(&sizeTmp, buffer, size, streamEndianness); SerializeAdapter::deSerialize(&sizeTmp, buffer, size, streamEndianness);
if (result == returnvalue::OK) { if (result == HasReturnvaluesIF::RETURN_OK) {
fileSize = sizeTmp; fileSize = sizeTmp;
} }
return result; return result;
@ -53,11 +53,11 @@ struct FileSize : public SerializeIF {
ReturnValue_t setFileSize(uint64_t fileSize, bool largeFile) { ReturnValue_t setFileSize(uint64_t fileSize, bool largeFile) {
if (not largeFile and fileSize > UINT32_MAX) { if (not largeFile and fileSize > UINT32_MAX) {
// TODO: emit warning here // TODO: emit warning here
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
this->fileSize = fileSize; this->fileSize = fileSize;
this->largeFile = largeFile; this->largeFile = largeFile;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
bool isLargeFile() const { return largeFile; } bool isLargeFile() const { return largeFile; }

@ -7,7 +7,7 @@
#include <cstdint> #include <cstdint>
#include "fsfw/returnvalues/FwClassIds.h" #include "fsfw/returnvalues/FwClassIds.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
namespace cfdp { namespace cfdp {
@ -15,24 +15,28 @@ static constexpr uint8_t VERSION_BITS = 0b00100000;
static constexpr uint8_t CFDP_CLASS_ID = CLASS_ID::CFDP; static constexpr uint8_t CFDP_CLASS_ID = CLASS_ID::CFDP;
static constexpr ReturnValue_t INVALID_TLV_TYPE = returnvalue::makeCode(CFDP_CLASS_ID, 1); static constexpr ReturnValue_t INVALID_TLV_TYPE =
static constexpr ReturnValue_t INVALID_DIRECTIVE_FIELDS = returnvalue::makeCode(CFDP_CLASS_ID, 2); HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 1);
static constexpr ReturnValue_t INVALID_PDU_DATAFIELD_LEN = returnvalue::makeCode(CFDP_CLASS_ID, 3); static constexpr ReturnValue_t INVALID_DIRECTIVE_FIELDS =
HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 2);
static constexpr ReturnValue_t INVALID_PDU_DATAFIELD_LEN =
HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 3);
static constexpr ReturnValue_t INVALID_ACK_DIRECTIVE_FIELDS = static constexpr ReturnValue_t INVALID_ACK_DIRECTIVE_FIELDS =
returnvalue::makeCode(CFDP_CLASS_ID, 4); HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 4);
//! Can not parse options. This can also occur because there are options //! Can not parse options. This can also occur because there are options
//! available but the user did not pass a valid options array //! available but the user did not pass a valid options array
static constexpr ReturnValue_t METADATA_CANT_PARSE_OPTIONS = static constexpr ReturnValue_t METADATA_CANT_PARSE_OPTIONS =
returnvalue::makeCode(CFDP_CLASS_ID, 5); HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 5);
static constexpr ReturnValue_t NAK_CANT_PARSE_OPTIONS = returnvalue::makeCode(CFDP_CLASS_ID, 6); static constexpr ReturnValue_t NAK_CANT_PARSE_OPTIONS =
HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 6);
static constexpr ReturnValue_t FINISHED_CANT_PARSE_FS_RESPONSES = static constexpr ReturnValue_t FINISHED_CANT_PARSE_FS_RESPONSES =
returnvalue::makeCode(CFDP_CLASS_ID, 6); HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 6);
static constexpr ReturnValue_t FILESTORE_REQUIRES_SECOND_FILE = static constexpr ReturnValue_t FILESTORE_REQUIRES_SECOND_FILE =
returnvalue::makeCode(CFDP_CLASS_ID, 8); HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 8);
//! Can not parse filestore response because user did not pass a valid instance //! Can not parse filestore response because user did not pass a valid instance
//! or remaining size is invalid //! or remaining size is invalid
static constexpr ReturnValue_t FILESTORE_RESPONSE_CANT_PARSE_FS_MESSAGE = static constexpr ReturnValue_t FILESTORE_RESPONSE_CANT_PARSE_FS_MESSAGE =
returnvalue::makeCode(CFDP_CLASS_ID, 9); HasReturnvaluesIF::makeReturnCode(CFDP_CLASS_ID, 9);
//! Checksum types according to the SANA Checksum Types registry //! Checksum types according to the SANA Checksum Types registry
//! https://sanaregistry.org/r/checksum_identifiers/ //! https://sanaregistry.org/r/checksum_identifiers/

@ -5,7 +5,7 @@ AckPduDeserializer::AckPduDeserializer(const uint8_t* pduBuf, size_t maxSize, Ac
ReturnValue_t AckPduDeserializer::parseData() { ReturnValue_t AckPduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = FileDirectiveDeserializer::getHeaderSize(); size_t currentIdx = FileDirectiveDeserializer::getHeaderSize();
@ -15,7 +15,7 @@ ReturnValue_t AckPduDeserializer::parseData() {
if (not checkAndSetCodes(rawPtr[currentIdx], rawPtr[currentIdx + 1])) { if (not checkAndSetCodes(rawPtr[currentIdx], rawPtr[currentIdx + 1])) {
return cfdp::INVALID_ACK_DIRECTIVE_FIELDS; return cfdp::INVALID_ACK_DIRECTIVE_FIELDS;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
bool AckPduDeserializer::checkAndSetCodes(uint8_t firstByte, uint8_t secondByte) { bool AckPduDeserializer::checkAndSetCodes(uint8_t firstByte, uint8_t secondByte) {

@ -11,7 +11,7 @@ ReturnValue_t AckPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
cfdp::FileDirectives ackedDirective = ackInfo.getAckedDirective(); cfdp::FileDirectives ackedDirective = ackInfo.getAckedDirective();
@ -21,7 +21,7 @@ ReturnValue_t AckPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
if (ackedDirective != cfdp::FileDirectives::FINISH and if (ackedDirective != cfdp::FileDirectives::FINISH and
ackedDirective != cfdp::FileDirectives::EOF_DIRECTIVE) { ackedDirective != cfdp::FileDirectives::EOF_DIRECTIVE) {
// TODO: better returncode // TODO: better returncode
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (*size + 2 > maxSize) { if (*size + 2 > maxSize) {
return SerializeIF::BUFFER_TOO_SHORT; return SerializeIF::BUFFER_TOO_SHORT;
@ -32,5 +32,5 @@ ReturnValue_t AckPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
**buffer = ackedConditionCode << 4 | transactionStatus; **buffer = ackedConditionCode << 4 | transactionStatus;
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }

@ -8,7 +8,7 @@ EofPduDeserializer::EofPduDeserializer(const uint8_t* pduBuf, size_t maxSize, Eo
ReturnValue_t EofPduDeserializer::parseData() { ReturnValue_t EofPduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
@ -31,7 +31,7 @@ ReturnValue_t EofPduDeserializer::parseData() {
uint32_t checksum = 0; uint32_t checksum = 0;
auto endianness = getEndianness(); auto endianness = getEndianness();
result = SerializeAdapter::deSerialize(&checksum, &bufPtr, &deserLen, endianness); result = SerializeAdapter::deSerialize(&checksum, &bufPtr, &deserLen, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
info.setChecksum(checksum); info.setChecksum(checksum);
@ -44,24 +44,16 @@ ReturnValue_t EofPduDeserializer::parseData() {
result = SerializeAdapter::deSerialize(&fileSizeValue, &bufPtr, &deserLen, endianness); result = SerializeAdapter::deSerialize(&fileSizeValue, &bufPtr, &deserLen, endianness);
info.setFileSize(fileSizeValue, false); info.setFileSize(fileSizeValue, false);
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (info.getConditionCode() != cfdp::ConditionCode::NO_ERROR) { if (info.getConditionCode() != cfdp::ConditionCode::NO_ERROR) {
EntityIdTlv* tlvPtr = info.getFaultLoc(); EntityIdTlv* tlvPtr = info.getFaultLoc();
if (tlvPtr == nullptr) { if (tlvPtr == nullptr) {
#if FSFW_VERBOSE_LEVEL >= 1 FSFW_LOGW("{}",
#if FSFW_CPP_OSTREAM_ENABLED == 1 "parseData: Ca not deserialize fault location,"
sif::warning << "EofPduDeserializer::parseData: Ca not deserialize fault location," " given TLV pointer invalid\n");
" given TLV pointer invalid" return HasReturnvaluesIF::RETURN_FAILED;
<< std::endl;
#else
sif::printWarning(
"EofPduDeserializer::parseData: Ca not deserialize fault location,"
" given TLV pointer invalid");
#endif
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
return returnvalue::FAILED;
} }
result = tlvPtr->deSerialize(&bufPtr, &deserLen, endianness); result = tlvPtr->deSerialize(&bufPtr, &deserLen, endianness);
} }

@ -16,7 +16,7 @@ ReturnValue_t EofPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (*size + 1 > maxSize) { if (*size + 1 > maxSize) {
@ -27,7 +27,7 @@ ReturnValue_t EofPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
*size += 1; *size += 1;
uint32_t checksum = info.getChecksum(); uint32_t checksum = info.getChecksum();
result = SerializeAdapter::serialize(&checksum, buffer, size, maxSize, streamEndianness); result = SerializeAdapter::serialize(&checksum, buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (info.getFileSize().isLargeFile()) { if (info.getFileSize().isLargeFile()) {

@ -6,7 +6,7 @@ FileDataDeserializer::FileDataDeserializer(const uint8_t* pduBuf, size_t maxSize
ReturnValue_t FileDataDeserializer::parseData() { ReturnValue_t FileDataDeserializer::parseData() {
ReturnValue_t result = HeaderDeserializer::parseData(); ReturnValue_t result = HeaderDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = HeaderDeserializer::getHeaderSize(); size_t currentIdx = HeaderDeserializer::getHeaderSize();
@ -32,13 +32,13 @@ ReturnValue_t FileDataDeserializer::parseData() {
} }
} }
result = info.getOffset().deSerialize(&buf, &remSize, this->getEndianness()); result = info.getOffset().deSerialize(&buf, &remSize, this->getEndianness());
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (remSize > 0) { if (remSize > 0) {
info.setFileData(buf, remSize); info.setFileData(buf, remSize);
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
SerializeIF::Endianness FileDataDeserializer::getEndianness() const { return endianness; } SerializeIF::Endianness FileDataDeserializer::getEndianness() const { return endianness; }

@ -50,11 +50,11 @@ ReturnValue_t FileDataInfo::addSegmentMetadataInfo(cfdp::RecordContinuationState
this->segmentMetadataFlag = cfdp::SegmentMetadataFlag::PRESENT; this->segmentMetadataFlag = cfdp::SegmentMetadataFlag::PRESENT;
this->recContState = recContState; this->recContState = recContState;
if (segmentMetadataLen > 63) { if (segmentMetadataLen > 63) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
this->segmentMetadata = segmentMetadata; this->segmentMetadata = segmentMetadata;
this->segmentMetadataLen = segmentMetadataLen; this->segmentMetadataLen = segmentMetadataLen;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
const uint8_t *FileDataInfo::getFileData(size_t *fileSize) const { const uint8_t *FileDataInfo::getFileData(size_t *fileSize) const {

@ -17,7 +17,7 @@ void FileDataSerializer::update() {
ReturnValue_t FileDataSerializer::serialize(uint8_t** buffer, size_t* size, size_t maxSize, ReturnValue_t FileDataSerializer::serialize(uint8_t** buffer, size_t* size, size_t maxSize,
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = HeaderSerializer::serialize(buffer, size, maxSize, streamEndianness); ReturnValue_t result = HeaderSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (*size + this->getSerializedSize() > maxSize) { if (*size + this->getSerializedSize() > maxSize) {
@ -36,7 +36,7 @@ ReturnValue_t FileDataSerializer::serialize(uint8_t** buffer, size_t* size, size
} }
cfdp::FileSize& offset = info.getOffset(); cfdp::FileSize& offset = info.getOffset();
result = offset.serialize(this->getLargeFileFlag(), buffer, size, maxSize, streamEndianness); result = offset.serialize(this->getLargeFileFlag(), buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t fileSize = 0; size_t fileSize = 0;
@ -47,7 +47,7 @@ ReturnValue_t FileDataSerializer::serialize(uint8_t** buffer, size_t* size, size
std::memcpy(*buffer, readOnlyPtr, fileSize); std::memcpy(*buffer, readOnlyPtr, fileSize);
*buffer += fileSize; *buffer += fileSize;
*size += fileSize; *size += fileSize;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t FileDataSerializer::getSerializedSize() const { size_t FileDataSerializer::getSerializedSize() const {

@ -7,7 +7,7 @@ cfdp::FileDirectives FileDirectiveDeserializer::getFileDirective() const { retur
ReturnValue_t FileDirectiveDeserializer::parseData() { ReturnValue_t FileDirectiveDeserializer::parseData() {
ReturnValue_t result = HeaderDeserializer::parseData(); ReturnValue_t result = HeaderDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (this->getPduDataFieldLen() < 1) { if (this->getPduDataFieldLen() < 1) {
@ -21,7 +21,7 @@ ReturnValue_t FileDirectiveDeserializer::parseData() {
return cfdp::INVALID_DIRECTIVE_FIELDS; return cfdp::INVALID_DIRECTIVE_FIELDS;
} }
setFileDirective(static_cast<cfdp::FileDirectives>(rawPtr[currentIdx])); setFileDirective(static_cast<cfdp::FileDirectives>(rawPtr[currentIdx]));
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t FileDirectiveDeserializer::getHeaderSize() const { size_t FileDirectiveDeserializer::getHeaderSize() const {

@ -13,13 +13,13 @@ size_t FileDirectiveSerializer::getSerializedSize() const {
ReturnValue_t FileDirectiveSerializer::serialize(uint8_t **buffer, size_t *size, size_t maxSize, ReturnValue_t FileDirectiveSerializer::serialize(uint8_t **buffer, size_t *size, size_t maxSize,
Endianness streamEndianness) const { Endianness streamEndianness) const {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (FileDirectiveSerializer::getWholePduSize() > maxSize) { if (FileDirectiveSerializer::getWholePduSize() > maxSize) {
return BUFFER_TOO_SHORT; return BUFFER_TOO_SHORT;
} }
ReturnValue_t result = HeaderSerializer::serialize(buffer, size, maxSize, streamEndianness); ReturnValue_t result = HeaderSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
@ -29,7 +29,7 @@ ReturnValue_t FileDirectiveSerializer::serialize(uint8_t **buffer, size_t *size,
**buffer = directiveCode; **buffer = directiveCode;
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
void FileDirectiveSerializer::setDirectiveDataFieldLen(size_t len) { void FileDirectiveSerializer::setDirectiveDataFieldLen(size_t len) {

@ -46,14 +46,14 @@ ReturnValue_t FinishedInfo::setFilestoreResponsesArray(FilestoreResponseTlv** fs
if (maxFsResponsesLen != nullptr) { if (maxFsResponsesLen != nullptr) {
this->fsResponsesMaxLen = *maxFsResponsesLen; this->fsResponsesMaxLen = *maxFsResponsesLen;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t FinishedInfo::getFilestoreResonses(FilestoreResponseTlv*** fsResponses, ReturnValue_t FinishedInfo::getFilestoreResonses(FilestoreResponseTlv*** fsResponses,
size_t* fsResponsesLen, size_t* fsResponsesLen,
size_t* fsResponsesMaxLen) { size_t* fsResponsesMaxLen) {
if (fsResponses == nullptr) { if (fsResponses == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
*fsResponses = this->fsResponses; *fsResponses = this->fsResponses;
if (fsResponsesLen != nullptr) { if (fsResponsesLen != nullptr) {
@ -62,7 +62,7 @@ ReturnValue_t FinishedInfo::getFilestoreResonses(FilestoreResponseTlv*** fsRespo
if (fsResponsesMaxLen != nullptr) { if (fsResponsesMaxLen != nullptr) {
*fsResponsesMaxLen = this->fsResponsesMaxLen; *fsResponsesMaxLen = this->fsResponsesMaxLen;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
void FinishedInfo::setFaultLocation(EntityIdTlv* faultLocation) { void FinishedInfo::setFaultLocation(EntityIdTlv* faultLocation) {
@ -71,10 +71,10 @@ void FinishedInfo::setFaultLocation(EntityIdTlv* faultLocation) {
ReturnValue_t FinishedInfo::getFaultLocation(EntityIdTlv** faultLocation) { ReturnValue_t FinishedInfo::getFaultLocation(EntityIdTlv** faultLocation) {
if (this->faultLocation == nullptr) { if (this->faultLocation == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
*faultLocation = this->faultLocation; *faultLocation = this->faultLocation;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
cfdp::ConditionCode FinishedInfo::getConditionCode() const { return conditionCode; } cfdp::ConditionCode FinishedInfo::getConditionCode() const { return conditionCode; }

@ -6,7 +6,7 @@ FinishPduDeserializer::FinishPduDeserializer(const uint8_t* pduBuf, size_t maxSi
ReturnValue_t FinishPduDeserializer::parseData() { ReturnValue_t FinishPduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = FileDirectiveDeserializer::getHeaderSize(); size_t currentIdx = FileDirectiveDeserializer::getHeaderSize();
@ -33,7 +33,7 @@ FinishedInfo& FinishPduDeserializer::getInfo() { return finishedInfo; }
ReturnValue_t FinishPduDeserializer::parseTlvs(size_t remLen, size_t currentIdx, const uint8_t* buf, ReturnValue_t FinishPduDeserializer::parseTlvs(size_t remLen, size_t currentIdx, const uint8_t* buf,
cfdp::ConditionCode conditionCode) { cfdp::ConditionCode conditionCode) {
ReturnValue_t result = returnvalue::OK; ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
size_t fsResponsesIdx = 0; size_t fsResponsesIdx = 0;
auto endianness = getEndianness(); auto endianness = getEndianness();
FilestoreResponseTlv** fsResponseArray = nullptr; FilestoreResponseTlv** fsResponseArray = nullptr;
@ -60,7 +60,7 @@ ReturnValue_t FinishPduDeserializer::parseTlvs(size_t remLen, size_t currentIdx,
return cfdp::FINISHED_CANT_PARSE_FS_RESPONSES; return cfdp::FINISHED_CANT_PARSE_FS_RESPONSES;
} }
result = fsResponseArray[fsResponsesIdx]->deSerialize(&buf, &remLen, endianness); result = fsResponseArray[fsResponsesIdx]->deSerialize(&buf, &remLen, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
fsResponsesIdx += 1; fsResponsesIdx += 1;
@ -72,11 +72,11 @@ ReturnValue_t FinishPduDeserializer::parseTlvs(size_t remLen, size_t currentIdx,
return cfdp::INVALID_TLV_TYPE; return cfdp::INVALID_TLV_TYPE;
} }
result = finishedInfo.getFaultLocation(&faultLocation); result = finishedInfo.getFaultLocation(&faultLocation);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = faultLocation->deSerialize(&buf, &remLen, endianness); result = faultLocation->deSerialize(&buf, &remLen, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
} else { } else {

@ -17,7 +17,7 @@ ReturnValue_t FinishPduSerializer::serialize(uint8_t **buffer, size_t *size, siz
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (*size + 1 >= maxSize) { if (*size + 1 >= maxSize) {
@ -34,13 +34,13 @@ ReturnValue_t FinishPduSerializer::serialize(uint8_t **buffer, size_t *size, siz
finishInfo.getFilestoreResonses(&fsResponsesArray, &fsResponsesArrayLen, nullptr); finishInfo.getFilestoreResonses(&fsResponsesArray, &fsResponsesArrayLen, nullptr);
for (size_t idx = 0; idx < fsResponsesArrayLen; idx++) { for (size_t idx = 0; idx < fsResponsesArrayLen; idx++) {
result = fsResponsesArray[idx]->serialize(buffer, size, maxSize, streamEndianness); result = fsResponsesArray[idx]->serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
} }
} }
EntityIdTlv *entityId = nullptr; EntityIdTlv *entityId = nullptr;
if (finishInfo.getFaultLocation(&entityId) == returnvalue::OK) { if (finishInfo.getFaultLocation(&entityId) == HasReturnvaluesIF::RETURN_OK) {
result = entityId->serialize(buffer, size, maxSize, streamEndianness); result = entityId->serialize(buffer, size, maxSize, streamEndianness);
} }
return result; return result;

@ -18,7 +18,7 @@ ReturnValue_t HeaderDeserializer::setData(uint8_t *dataPtr, size_t maxSize, void
if (dataPtr == nullptr) { if (dataPtr == nullptr) {
// Allowed for now // Allowed for now
this->fixedHeader = nullptr; this->fixedHeader = nullptr;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
this->fixedHeader = reinterpret_cast<PduHeaderFixedStruct *>(const_cast<uint8_t *>(dataPtr)); this->fixedHeader = reinterpret_cast<PduHeaderFixedStruct *>(const_cast<uint8_t *>(dataPtr));
sourceIdRaw = static_cast<uint8_t *>(&fixedHeader->variableFieldsStart); sourceIdRaw = static_cast<uint8_t *>(&fixedHeader->variableFieldsStart);
@ -27,7 +27,7 @@ ReturnValue_t HeaderDeserializer::setData(uint8_t *dataPtr, size_t maxSize, void
seqNumRaw = static_cast<uint8_t *>(sourceIdRaw) + static_cast<uint8_t>(widthEntityIds); seqNumRaw = static_cast<uint8_t *>(sourceIdRaw) + static_cast<uint8_t>(widthEntityIds);
destIdRaw = static_cast<uint8_t *>(seqNumRaw) + static_cast<uint8_t>(widthSeqNum); destIdRaw = static_cast<uint8_t *>(seqNumRaw) + static_cast<uint8_t>(widthSeqNum);
this->maxSize = maxSize; this->maxSize = maxSize;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t HeaderDeserializer::getHeaderSize() const { size_t HeaderDeserializer::getHeaderSize() const {

@ -36,8 +36,8 @@ class HeaderDeserializer : public RedirectableDataPointerIF, public PduHeaderIF
/** /**
* This needs to be called before accessing the PDU fields to avoid segmentation faults. * This needs to be called before accessing the PDU fields to avoid segmentation faults.
* @return * @return
* - returnvalue::OK on parse success * - RETURN_OK on parse success
* - returnvalue::FAILED Invalid raw data * - RETURN_FAILED Invalid raw data
* - SerializeIF::BUFFER_TOO_SHORT if buffer is shorter than expected * - SerializeIF::BUFFER_TOO_SHORT if buffer is shorter than expected
*/ */
virtual ReturnValue_t parseData(); virtual ReturnValue_t parseData();
@ -61,7 +61,7 @@ class HeaderDeserializer : public RedirectableDataPointerIF, public PduHeaderIF
void getDestId(cfdp::EntityId& destId) const override; void getDestId(cfdp::EntityId& destId) const override;
void getTransactionSeqNum(cfdp::TransactionSeqNum& seqNum) const override; void getTransactionSeqNum(cfdp::TransactionSeqNum& seqNum) const override;
ReturnValue_t deserResult = returnvalue::OK; ReturnValue_t deserResult = HasReturnvaluesIF::RETURN_OK;
/** /**
* Can also be used to reset the pointer to a nullptr, but the getter functions will not * Can also be used to reset the pointer to a nullptr, but the getter functions will not

@ -15,7 +15,7 @@ HeaderSerializer::HeaderSerializer(PduConfig &pduConf, cfdp::PduType pduType,
ReturnValue_t HeaderSerializer::serialize(uint8_t **buffer, size_t *size, size_t maxSize, ReturnValue_t HeaderSerializer::serialize(uint8_t **buffer, size_t *size, size_t maxSize,
Endianness streamEndianness) const { Endianness streamEndianness) const {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (maxSize < this->getSerializedSize()) { if (maxSize < this->getSerializedSize()) {
return BUFFER_TOO_SHORT; return BUFFER_TOO_SHORT;
@ -32,19 +32,19 @@ ReturnValue_t HeaderSerializer::serialize(uint8_t **buffer, size_t *size, size_t
*buffer += 1; *buffer += 1;
*size += 4; *size += 4;
ReturnValue_t result = pduConf.sourceId.serialize(buffer, size, maxSize, streamEndianness); ReturnValue_t result = pduConf.sourceId.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = pduConf.seqNum.serialize(buffer, size, maxSize, streamEndianness); result = pduConf.seqNum.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = pduConf.destId.serialize(buffer, size, maxSize, streamEndianness); result = pduConf.destId.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t HeaderSerializer::getSerializedSize() const { size_t HeaderSerializer::getSerializedSize() const {
@ -55,7 +55,7 @@ size_t HeaderSerializer::getSerializedSize() const {
ReturnValue_t HeaderSerializer::deSerialize(const uint8_t **buffer, size_t *size, ReturnValue_t HeaderSerializer::deSerialize(const uint8_t **buffer, size_t *size,
Endianness streamEndianness) { Endianness streamEndianness) {
// We could implement this, but I prefer dedicated classes // We could implement this, but I prefer dedicated classes
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
size_t HeaderSerializer::getWholePduSize() const { size_t HeaderSerializer::getWholePduSize() const {

@ -6,7 +6,7 @@ KeepAlivePduDeserializer::KeepAlivePduDeserializer(const uint8_t* pduBuf, size_t
ReturnValue_t KeepAlivePduDeserializer::parseData() { ReturnValue_t KeepAlivePduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = FileDirectiveDeserializer::getHeaderSize(); size_t currentIdx = FileDirectiveDeserializer::getHeaderSize();

@ -19,7 +19,7 @@ ReturnValue_t KeepAlivePduSerializer::serialize(uint8_t **buffer, size_t *size,
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return progress.serialize(this->getLargeFileFlag(), buffer, size, maxSize, streamEndianness); return progress.serialize(this->getLargeFileFlag(), buffer, size, maxSize, streamEndianness);

@ -39,7 +39,7 @@ cfdp::FileSize& MetadataInfo::getFileSize() { return fileSize; }
ReturnValue_t MetadataInfo::getOptions(cfdp::Tlv*** optionsArray, size_t* optionsLen, ReturnValue_t MetadataInfo::getOptions(cfdp::Tlv*** optionsArray, size_t* optionsLen,
size_t* maxOptsLen) { size_t* maxOptsLen) {
if (optionsArray == nullptr or this->optionsArray == nullptr) { if (optionsArray == nullptr or this->optionsArray == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
*optionsArray = this->optionsArray; *optionsArray = this->optionsArray;
if (optionsLen != nullptr) { if (optionsLen != nullptr) {
@ -48,7 +48,7 @@ ReturnValue_t MetadataInfo::getOptions(cfdp::Tlv*** optionsArray, size_t* option
if (maxOptsLen != nullptr) { if (maxOptsLen != nullptr) {
*maxOptsLen = this->maxOptionsLen; *maxOptsLen = this->maxOptionsLen;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
bool MetadataInfo::hasOptions() const { bool MetadataInfo::hasOptions() const {

@ -6,7 +6,7 @@ MetadataPduDeserializer::MetadataPduDeserializer(const uint8_t* pduBuf, size_t m
ReturnValue_t MetadataPduDeserializer::parseData() { ReturnValue_t MetadataPduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = FileDirectiveDeserializer::getHeaderSize(); size_t currentIdx = FileDirectiveDeserializer::getHeaderSize();
@ -21,15 +21,15 @@ ReturnValue_t MetadataPduDeserializer::parseData() {
buf += 1; buf += 1;
auto endianness = getEndianness(); auto endianness = getEndianness();
result = info.getFileSize().deSerialize(&buf, &remSize, endianness); result = info.getFileSize().deSerialize(&buf, &remSize, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = info.getSourceFileName().deSerialize(&buf, &remSize, endianness); result = info.getSourceFileName().deSerialize(&buf, &remSize, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = info.getDestFileName().deSerialize(&buf, &remSize, endianness); result = info.getDestFileName().deSerialize(&buf, &remSize, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
@ -47,7 +47,7 @@ ReturnValue_t MetadataPduDeserializer::parseData() {
return cfdp::METADATA_CANT_PARSE_OPTIONS; return cfdp::METADATA_CANT_PARSE_OPTIONS;
} }
result = optionsArray[optsIdx]->deSerialize(&buf, &remSize, endianness); result = optionsArray[optsIdx]->deSerialize(&buf, &remSize, endianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
optsIdx++; optsIdx++;

@ -17,7 +17,7 @@ ReturnValue_t MetadataPduSerializer::serialize(uint8_t **buffer, size_t *size, s
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (*size + 1 >= maxSize) { if (*size + 1 >= maxSize) {
@ -27,15 +27,15 @@ ReturnValue_t MetadataPduSerializer::serialize(uint8_t **buffer, size_t *size, s
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
result = info.getFileSize().serialize(buffer, size, maxSize, streamEndianness); result = info.getFileSize().serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = info.getSourceFileName().serialize(buffer, size, maxSize, streamEndianness); result = info.getSourceFileName().serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = info.getDestFileName().serialize(buffer, size, maxSize, streamEndianness); result = info.getDestFileName().serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
@ -45,7 +45,7 @@ ReturnValue_t MetadataPduSerializer::serialize(uint8_t **buffer, size_t *size, s
info.getOptions(&optsArray, &optsLen, nullptr); info.getOptions(&optsArray, &optsLen, nullptr);
for (size_t idx = 0; idx < optsLen; idx++) { for (size_t idx = 0; idx < optsLen; idx++) {
result = optsArray[idx]->serialize(buffer, size, maxSize, streamEndianness); result = optsArray[idx]->serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
} }

@ -5,7 +5,7 @@ NakPduDeserializer::NakPduDeserializer(const uint8_t* pduBuf, size_t maxSize, Na
ReturnValue_t NakPduDeserializer::parseData() { ReturnValue_t NakPduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = FileDirectiveDeserializer::getHeaderSize(); size_t currentIdx = FileDirectiveDeserializer::getHeaderSize();
@ -16,11 +16,11 @@ ReturnValue_t NakPduDeserializer::parseData() {
} }
result = result =
nakInfo.getStartOfScope().deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK); nakInfo.getStartOfScope().deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = nakInfo.getEndOfScope().deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK); result = nakInfo.getEndOfScope().deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
nakInfo.setSegmentRequestLen(0); nakInfo.setSegmentRequestLen(0);
@ -39,12 +39,12 @@ ReturnValue_t NakPduDeserializer::parseData() {
} }
result = result =
segReqs[idx].first.deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK); segReqs[idx].first.deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = result =
segReqs[idx].second.deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK); segReqs[idx].second.deSerialize(&buffer, &remSize, SerializeIF::Endianness::NETWORK);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
idx++; idx++;

@ -17,15 +17,15 @@ ReturnValue_t NakPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = nakInfo.getStartOfScope().serialize(buffer, size, maxSize, streamEndianness); result = nakInfo.getStartOfScope().serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = nakInfo.getEndOfScope().serialize(buffer, size, maxSize, streamEndianness); result = nakInfo.getEndOfScope().serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (nakInfo.hasSegmentRequests()) { if (nakInfo.hasSegmentRequests()) {
@ -34,11 +34,11 @@ ReturnValue_t NakPduSerializer::serialize(uint8_t **buffer, size_t *size, size_t
nakInfo.getSegmentRequests(&segmentRequests, &segmentRequestLen, nullptr); nakInfo.getSegmentRequests(&segmentRequests, &segmentRequestLen, nullptr);
for (size_t idx = 0; idx < segmentRequestLen; idx++) { for (size_t idx = 0; idx < segmentRequestLen; idx++) {
result = segmentRequests[idx].first.serialize(buffer, size, maxSize, streamEndianness); result = segmentRequests[idx].first.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = segmentRequests[idx].second.serialize(buffer, size, maxSize, streamEndianness); result = segmentRequests[idx].second.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
} }

@ -9,7 +9,7 @@ cfdp::PromptResponseRequired PromptPduDeserializer::getPromptResponseRequired()
ReturnValue_t PromptPduDeserializer::parseData() { ReturnValue_t PromptPduDeserializer::parseData() {
ReturnValue_t result = FileDirectiveDeserializer::parseData(); ReturnValue_t result = FileDirectiveDeserializer::parseData();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
size_t currentIdx = FileDirectiveDeserializer::getHeaderSize(); size_t currentIdx = FileDirectiveDeserializer::getHeaderSize();
@ -17,5 +17,5 @@ ReturnValue_t PromptPduDeserializer::parseData() {
return SerializeIF::STREAM_TOO_SHORT; return SerializeIF::STREAM_TOO_SHORT;
} }
responseRequired = static_cast<cfdp::PromptResponseRequired>((rawPtr[currentIdx] >> 7) & 0x01); responseRequired = static_cast<cfdp::PromptResponseRequired>((rawPtr[currentIdx] >> 7) & 0x01);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }

@ -13,7 +13,7 @@ ReturnValue_t PromptPduSerializer::serialize(uint8_t **buffer, size_t *size, siz
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness); FileDirectiveSerializer::serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (*size + 1 > maxSize) { if (*size + 1 > maxSize) {

@ -6,14 +6,8 @@
cfdp::VarLenField::VarLenField(cfdp::WidthInBytes width, size_t value) : VarLenField() { cfdp::VarLenField::VarLenField(cfdp::WidthInBytes width, size_t value) : VarLenField() {
ReturnValue_t result = this->setValue(width, value); ReturnValue_t result = this->setValue(width, value);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
#if FSFW_DISABLE_PRINTOUT == 0 FSFW_LOGW("{}", "cfdp::VarLenField: Setting value failed\n");
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::warning << "cfdp::VarLenField: Setting value failed" << std::endl;
#else
sif::printWarning("cfdp::VarLenField: Setting value failed\n");
#endif
#endif
} }
} }
@ -25,21 +19,21 @@ ReturnValue_t cfdp::VarLenField::setValue(cfdp::WidthInBytes widthInBytes, size_
switch (widthInBytes) { switch (widthInBytes) {
case (cfdp::WidthInBytes::ONE_BYTE): { case (cfdp::WidthInBytes::ONE_BYTE): {
if (value > UINT8_MAX) { if (value > UINT8_MAX) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
this->value.oneByte = value; this->value.oneByte = value;
break; break;
} }
case (cfdp::WidthInBytes::TWO_BYTES): { case (cfdp::WidthInBytes::TWO_BYTES): {
if (value > UINT16_MAX) { if (value > UINT16_MAX) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
this->value.twoBytes = value; this->value.twoBytes = value;
break; break;
} }
case (cfdp::WidthInBytes::FOUR_BYTES): { case (cfdp::WidthInBytes::FOUR_BYTES): {
if (value > UINT32_MAX) { if (value > UINT32_MAX) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
this->value.fourBytes = value; this->value.fourBytes = value;
break; break;
@ -49,7 +43,7 @@ ReturnValue_t cfdp::VarLenField::setValue(cfdp::WidthInBytes widthInBytes, size_
} }
} }
this->width = widthInBytes; this->width = widthInBytes;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t cfdp::VarLenField::getValue() const { size_t cfdp::VarLenField::getValue() const {
@ -77,7 +71,7 @@ ReturnValue_t cfdp::VarLenField::serialize(uint8_t **buffer, size_t *size, size_
**buffer = value.oneByte; **buffer = value.oneByte;
*size += 1; *size += 1;
*buffer += 1; *buffer += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
case (cfdp::WidthInBytes::TWO_BYTES): { case (cfdp::WidthInBytes::TWO_BYTES): {
return SerializeAdapter::serialize(&value.twoBytes, buffer, size, maxSize, streamEndianness); return SerializeAdapter::serialize(&value.twoBytes, buffer, size, maxSize, streamEndianness);
@ -86,7 +80,7 @@ ReturnValue_t cfdp::VarLenField::serialize(uint8_t **buffer, size_t *size, size_
return SerializeAdapter::serialize(&value.fourBytes, buffer, size, maxSize, streamEndianness); return SerializeAdapter::serialize(&value.fourBytes, buffer, size, maxSize, streamEndianness);
} }
default: { default: {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
} }
@ -105,7 +99,7 @@ ReturnValue_t cfdp::VarLenField::deSerialize(const uint8_t **buffer, size_t *siz
case (cfdp::WidthInBytes::ONE_BYTE): { case (cfdp::WidthInBytes::ONE_BYTE): {
value.oneByte = **buffer; value.oneByte = **buffer;
*size += 1; *size += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
case (cfdp::WidthInBytes::TWO_BYTES): { case (cfdp::WidthInBytes::TWO_BYTES): {
return SerializeAdapter::deSerialize(&value.twoBytes, buffer, size, streamEndianness); return SerializeAdapter::deSerialize(&value.twoBytes, buffer, size, streamEndianness);
@ -114,7 +108,7 @@ ReturnValue_t cfdp::VarLenField::deSerialize(const uint8_t **buffer, size_t *siz
return SerializeAdapter::deSerialize(&value.fourBytes, buffer, size, streamEndianness); return SerializeAdapter::deSerialize(&value.fourBytes, buffer, size, streamEndianness);
} }
default: { default: {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
} }

@ -22,7 +22,7 @@ ReturnValue_t FaultHandlerOverrideTlv::serialize(uint8_t **buffer, size_t *size,
**buffer = this->conditionCode << 4 | this->handlerCode; **buffer = this->conditionCode << 4 | this->handlerCode;
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t FaultHandlerOverrideTlv::getSerializedSize() const { return getLengthField() + 2; } size_t FaultHandlerOverrideTlv::getSerializedSize() const { return getLengthField() + 2; }
@ -40,7 +40,7 @@ ReturnValue_t FaultHandlerOverrideTlv::deSerialize(const uint8_t **buffer, size_
*size -= 1; *size -= 1;
size_t detectedSize = **buffer; size_t detectedSize = **buffer;
if (detectedSize != getLengthField()) { if (detectedSize != getLengthField()) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
@ -48,7 +48,7 @@ ReturnValue_t FaultHandlerOverrideTlv::deSerialize(const uint8_t **buffer, size_
this->handlerCode = static_cast<cfdp::FaultHandlerCode>(**buffer & 0x0f); this->handlerCode = static_cast<cfdp::FaultHandlerCode>(**buffer & 0x0f);
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
cfdp::TlvTypes FaultHandlerOverrideTlv::getType() const { return cfdp::TlvTypes::FAULT_HANDLER; } cfdp::TlvTypes FaultHandlerOverrideTlv::getType() const { return cfdp::TlvTypes::FAULT_HANDLER; }

@ -16,11 +16,11 @@ void FilestoreRequestTlv::setSecondFileName(cfdp::Lv *secondFileName) {
ReturnValue_t FilestoreRequestTlv::serialize(uint8_t **buffer, size_t *size, size_t maxSize, ReturnValue_t FilestoreRequestTlv::serialize(uint8_t **buffer, size_t *size, size_t maxSize,
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = commonSerialize(buffer, size, maxSize, streamEndianness); ReturnValue_t result = commonSerialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = firstFileName.serialize(buffer, size, maxSize, streamEndianness); result = firstFileName.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (requiresSecondFileName()) { if (requiresSecondFileName()) {
@ -30,13 +30,13 @@ ReturnValue_t FilestoreRequestTlv::serialize(uint8_t **buffer, size_t *size, siz
} }
secondFileName->serialize(buffer, size, maxSize, streamEndianness); secondFileName->serialize(buffer, size, maxSize, streamEndianness);
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t FilestoreRequestTlv::deSerialize(const uint8_t **buffer, size_t *size, ReturnValue_t FilestoreRequestTlv::deSerialize(const uint8_t **buffer, size_t *size,
Endianness streamEndianness) { Endianness streamEndianness) {
ReturnValue_t result = commonDeserialize(buffer, size, streamEndianness); ReturnValue_t result = commonDeserialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return deSerializeFromValue(buffer, size, streamEndianness); return deSerializeFromValue(buffer, size, streamEndianness);
@ -63,13 +63,13 @@ ReturnValue_t FilestoreRequestTlv::deSerializeFromValue(const uint8_t **buffer,
*buffer += 1; *buffer += 1;
*size -= 1; *size -= 1;
ReturnValue_t result = firstFileName.deSerialize(buffer, size, streamEndianness); ReturnValue_t result = firstFileName.deSerialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (requiresSecondFileName()) { if (requiresSecondFileName()) {
if (secondFileName == nullptr) { if (secondFileName == nullptr) {
secondFileNameMissing(); secondFileNameMissing();
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
result = secondFileName->deSerialize(buffer, size, streamEndianness); result = secondFileName->deSerialize(buffer, size, streamEndianness);
} }

@ -32,11 +32,11 @@ ReturnValue_t FilestoreResponseTlv::serialize(uint8_t **buffer, size_t *size, si
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
commonSerialize(buffer, size, maxSize, streamEndianness, true, this->statusCode); commonSerialize(buffer, size, maxSize, streamEndianness, true, this->statusCode);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = firstFileName.serialize(buffer, size, maxSize, streamEndianness); result = firstFileName.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (requiresSecondFileName()) { if (requiresSecondFileName()) {
@ -61,7 +61,7 @@ ReturnValue_t FilestoreResponseTlv::serialize(uint8_t **buffer, size_t *size, si
ReturnValue_t FilestoreResponseTlv::deSerialize(const uint8_t **buffer, size_t *size, ReturnValue_t FilestoreResponseTlv::deSerialize(const uint8_t **buffer, size_t *size,
Endianness streamEndianness) { Endianness streamEndianness) {
ReturnValue_t result = commonDeserialize(buffer, size, streamEndianness); ReturnValue_t result = commonDeserialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return deSerializeFromValue(buffer, size, streamEndianness); return deSerializeFromValue(buffer, size, streamEndianness);
@ -75,7 +75,7 @@ ReturnValue_t FilestoreResponseTlv::deSerializeFromValue(const uint8_t **buffer,
*buffer += 1; *buffer += 1;
*size -= 1; *size -= 1;
ReturnValue_t result = firstFileName.deSerialize(buffer, size, streamEndianness); ReturnValue_t result = firstFileName.deSerialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (requiresSecondFileName()) { if (requiresSecondFileName()) {
@ -83,7 +83,7 @@ ReturnValue_t FilestoreResponseTlv::deSerializeFromValue(const uint8_t **buffer,
return cfdp::FILESTORE_REQUIRES_SECOND_FILE; return cfdp::FILESTORE_REQUIRES_SECOND_FILE;
} }
result = secondFileName->deSerialize(buffer, size, streamEndianness); result = secondFileName->deSerialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
} }
@ -98,7 +98,7 @@ ReturnValue_t FilestoreResponseTlv::deSerializeFromValue(const uint8_t **buffer,
*size -= 1; *size -= 1;
*buffer += 1; *buffer += 1;
// Ignore empty filestore message // Ignore empty filestore message
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
return filestoreMsg->deSerialize(buffer, size, streamEndianness); return filestoreMsg->deSerialize(buffer, size, streamEndianness);
} }

@ -6,7 +6,7 @@
#include <fsfw/cfdp/tlv/Tlv.h> #include <fsfw/cfdp/tlv/Tlv.h>
#include <fsfw/cfdp/tlv/TlvIF.h> #include <fsfw/cfdp/tlv/TlvIF.h>
#include <fsfw/serialize/SerializeIF.h> #include <fsfw/serialize/SerializeIF.h>
#include <fsfw/serviceinterface/ServiceInterface.h> #include <fsfw/serviceinterface.h>
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
@ -73,7 +73,7 @@ class FilestoreTlvBase : public TlvIF {
Endianness streamEndianness, bool isResponse = false, Endianness streamEndianness, bool isResponse = false,
uint8_t responseStatusCode = 0) const { uint8_t responseStatusCode = 0) const {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (maxSize < 3) { if (maxSize < 3) {
return SerializeIF::BUFFER_TOO_SHORT; return SerializeIF::BUFFER_TOO_SHORT;
@ -90,13 +90,13 @@ class FilestoreTlvBase : public TlvIF {
} }
*buffer += 1; *buffer += 1;
*size += 1; *size += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t commonDeserialize(const uint8_t** buffer, size_t* size, ReturnValue_t commonDeserialize(const uint8_t** buffer, size_t* size,
SerializeIF::Endianness streamEndianness) { SerializeIF::Endianness streamEndianness) {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (*size < 3) { if (*size < 3) {
return SerializeIF::STREAM_TOO_SHORT; return SerializeIF::STREAM_TOO_SHORT;
@ -114,7 +114,7 @@ class FilestoreTlvBase : public TlvIF {
if (remainingLength == 0) { if (remainingLength == 0) {
return SerializeIF::STREAM_TOO_SHORT; return SerializeIF::STREAM_TOO_SHORT;
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
bool requiresSecondFileName() const { bool requiresSecondFileName() const {
@ -128,17 +128,7 @@ class FilestoreTlvBase : public TlvIF {
} }
void secondFileNameMissing() const { void secondFileNameMissing() const {
#if FSFW_VERBOSE_LEVEL >= 1 FSFW_LOGWT("{}", "secondFileNameMissing: Second file name required but TLV pointer not set\n");
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::warning << "FilestoreRequestTlv::deSerialize: Second file name required"
" but TLV pointer not set"
<< std::endl;
#else
sif::printWarning(
"FilestoreRequestTlv::deSerialize: Second file name required"
" but TLV pointer not set\n");
#endif
#endif
} }
FilestoreActionCode getActionCode() const { return actionCode; } FilestoreActionCode getActionCode() const { return actionCode; }
@ -152,7 +142,7 @@ class FilestoreTlvBase : public TlvIF {
size_t serSize = 0; size_t serSize = 0;
uint8_t* valueStart = buffer + 2; uint8_t* valueStart = buffer + 2;
ReturnValue_t result = this->serialize(&buffer, &serSize, maxSize, streamEndianness); ReturnValue_t result = this->serialize(&buffer, &serSize, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
tlv.setValue(valueStart, serSize - 2); tlv.setValue(valueStart, serSize - 2);

@ -31,13 +31,13 @@ ReturnValue_t cfdp::Lv::serialize(uint8_t** buffer, size_t* size, size_t maxSize
return BUFFER_TOO_SHORT; return BUFFER_TOO_SHORT;
} }
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (zeroLen) { if (zeroLen) {
**buffer = 0; **buffer = 0;
*size += 1; *size += 1;
*buffer += 1; *buffer += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
return value.serialize(buffer, size, maxSize, streamEndianness); return value.serialize(buffer, size, maxSize, streamEndianness);
} }
@ -54,7 +54,7 @@ size_t cfdp::Lv::getSerializedSize() const {
ReturnValue_t cfdp::Lv::deSerialize(const uint8_t** buffer, size_t* size, ReturnValue_t cfdp::Lv::deSerialize(const uint8_t** buffer, size_t* size,
Endianness streamEndianness) { Endianness streamEndianness) {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (*size < 1) { if (*size < 1) {
return SerializeIF::STREAM_TOO_SHORT; return SerializeIF::STREAM_TOO_SHORT;
@ -64,7 +64,7 @@ ReturnValue_t cfdp::Lv::deSerialize(const uint8_t** buffer, size_t* size,
zeroLen = true; zeroLen = true;
*buffer += 1; *buffer += 1;
*size -= 1; *size -= 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} else if (*size < lengthField + 1) { } else if (*size < lengthField + 1) {
return SerializeIF::STREAM_TOO_SHORT; return SerializeIF::STREAM_TOO_SHORT;
} }
@ -73,7 +73,7 @@ ReturnValue_t cfdp::Lv::deSerialize(const uint8_t** buffer, size_t* size,
value.setBuffer(const_cast<uint8_t*>(*buffer + 1), lengthField); value.setBuffer(const_cast<uint8_t*>(*buffer + 1), lengthField);
*buffer += 1 + lengthField; *buffer += 1 + lengthField;
*size -= 1 + lengthField; *size -= 1 + lengthField;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
const uint8_t* cfdp::Lv::getValue(size_t* size) const { const uint8_t* cfdp::Lv::getValue(size_t* size) const {

@ -12,7 +12,7 @@ cfdp::Tlv::Tlv() : value(static_cast<uint8_t *>(nullptr), 0, true) {}
ReturnValue_t cfdp::Tlv::serialize(uint8_t **buffer, size_t *size, size_t maxSize, ReturnValue_t cfdp::Tlv::serialize(uint8_t **buffer, size_t *size, size_t maxSize,
Endianness streamEndianness) const { Endianness streamEndianness) const {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (*size + 2 > maxSize) { if (*size + 2 > maxSize) {
return BUFFER_TOO_SHORT; return BUFFER_TOO_SHORT;
@ -28,10 +28,10 @@ ReturnValue_t cfdp::Tlv::serialize(uint8_t **buffer, size_t *size, size_t maxSiz
**buffer = 0; **buffer = 0;
*size += 1; *size += 1;
*buffer += 1; *buffer += 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
if (value.getConstBuffer() == nullptr) { if (value.getConstBuffer() == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
return value.serialize(buffer, size, maxSize, streamEndianness); return value.serialize(buffer, size, maxSize, streamEndianness);
} }
@ -48,7 +48,7 @@ size_t cfdp::Tlv::getSerializedSize() const {
ReturnValue_t cfdp::Tlv::deSerialize(const uint8_t **buffer, size_t *size, ReturnValue_t cfdp::Tlv::deSerialize(const uint8_t **buffer, size_t *size,
Endianness streamEndianness) { Endianness streamEndianness) {
if (buffer == nullptr or size == nullptr) { if (buffer == nullptr or size == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
if (*size < 2) { if (*size < 2) {
return STREAM_TOO_SHORT; return STREAM_TOO_SHORT;
@ -68,7 +68,7 @@ ReturnValue_t cfdp::Tlv::deSerialize(const uint8_t **buffer, size_t *size,
zeroLen = true; zeroLen = true;
*buffer += 1; *buffer += 1;
*size -= 1; *size -= 1;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
if (lengthField + 1 > *size) { if (lengthField + 1 > *size) {
return SerializeIF::STREAM_TOO_SHORT; return SerializeIF::STREAM_TOO_SHORT;
@ -78,7 +78,7 @@ ReturnValue_t cfdp::Tlv::deSerialize(const uint8_t **buffer, size_t *size,
value.setBuffer(const_cast<uint8_t *>(*buffer + 1), lengthField); value.setBuffer(const_cast<uint8_t *>(*buffer + 1), lengthField);
*buffer += 1 + lengthField; *buffer += 1 + lengthField;
*size -= 1 + lengthField; *size -= 1 + lengthField;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
const uint8_t *cfdp::Tlv::getValue() const { return value.getConstBuffer(); } const uint8_t *cfdp::Tlv::getValue() const { return value.getConstBuffer(); }

@ -23,7 +23,7 @@ class Tlv : public TlvIF {
* @param maxSize * @param maxSize
* @param streamEndianness * @param streamEndianness
* @return * @return
* - returnvalue::OK on success * - RETURN_OK on success
* - INVALID_TLV_TYPE * - INVALID_TLV_TYPE
* - SerializeIF returncode on wrong serialization parameters * - SerializeIF returncode on wrong serialization parameters
*/ */
@ -37,7 +37,7 @@ class Tlv : public TlvIF {
* @param buffer Raw buffer including the size field * @param buffer Raw buffer including the size field
* @param size * @param size
* @param streamEndianness * @param streamEndianness
* - returnvalue::OK on success * - RETURN_OK on success
* - INVALID_TLV_TYPE * - INVALID_TLV_TYPE
* - SerializeIF returncode on wrong deserialization parameters * - SerializeIF returncode on wrong deserialization parameters
*/ */

@ -1,7 +1,7 @@
#ifndef FSFW_CONTAINER_ARRAYLIST_H_ #ifndef FSFW_CONTAINER_ARRAYLIST_H_
#define FSFW_CONTAINER_ARRAYLIST_H_ #define FSFW_CONTAINER_ARRAYLIST_H_
#include "../returnvalues/returnvalue.h" #include "../returnvalues/HasReturnvaluesIF.h"
#include "../serialize/SerializeAdapter.h" #include "../serialize/SerializeAdapter.h"
#include "../serialize/SerializeIF.h" #include "../serialize/SerializeIF.h"
@ -183,7 +183,7 @@ class ArrayList {
* @param entry * @param entry
* @return * @return
* -@c FULL if the List is full * -@c FULL if the List is full
* -@c returnvalue::OK else * -@c RETURN_OK else
*/ */
ReturnValue_t insert(T entry) { ReturnValue_t insert(T entry) {
if (size >= maxSize_) { if (size >= maxSize_) {
@ -191,7 +191,7 @@ class ArrayList {
} }
entries[size] = entry; entries[size] = entry;
++size; ++size;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
/** /**

@ -4,7 +4,7 @@
#include <cstddef> #include <cstddef>
#include <cstring> #include <cstring>
#include "../returnvalues/returnvalue.h" #include "../returnvalues/HasReturnvaluesIF.h"
template <typename T> template <typename T>
class FIFOBase { class FIFOBase {
@ -20,24 +20,24 @@ class FIFOBase {
/** /**
* Insert value into FIFO * Insert value into FIFO
* @param value * @param value
* @return returnvalue::OK on success, FULL if full * @return RETURN_OK on success, FULL if full
*/ */
ReturnValue_t insert(T value); ReturnValue_t insert(T value);
/** /**
* Retrieve item from FIFO. This removes the item from the FIFO. * Retrieve item from FIFO. This removes the item from the FIFO.
* @param value Must point to a valid T * @param value Must point to a valid T
* @return returnvalue::OK on success, EMPTY if empty and FAILED if nullptr check failed * @return RETURN_OK on success, EMPTY if empty and FAILED if nullptr check failed
*/ */
ReturnValue_t retrieve(T* value); ReturnValue_t retrieve(T* value);
/** /**
* Retrieve item from FIFO without removing it from FIFO. * Retrieve item from FIFO without removing it from FIFO.
* @param value Must point to a valid T * @param value Must point to a valid T
* @return returnvalue::OK on success, EMPTY if empty and FAILED if nullptr check failed * @return RETURN_OK on success, EMPTY if empty and FAILED if nullptr check failed
*/ */
ReturnValue_t peek(T* value); ReturnValue_t peek(T* value);
/** /**
* Remove item from FIFO. * Remove item from FIFO.
* @return returnvalue::OK on success, EMPTY if empty * @return RETURN_OK on success, EMPTY if empty
*/ */
ReturnValue_t pop(); ReturnValue_t pop();

@ -17,7 +17,7 @@ inline ReturnValue_t FIFOBase<T>::insert(T value) {
values[writeIndex] = value; values[writeIndex] = value;
writeIndex = next(writeIndex); writeIndex = next(writeIndex);
++currentSize; ++currentSize;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
}; };
@ -27,12 +27,12 @@ inline ReturnValue_t FIFOBase<T>::retrieve(T* value) {
return EMPTY; return EMPTY;
} else { } else {
if (value == nullptr) { if (value == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
*value = values[readIndex]; *value = values[readIndex];
readIndex = next(readIndex); readIndex = next(readIndex);
--currentSize; --currentSize;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
}; };
@ -42,10 +42,10 @@ inline ReturnValue_t FIFOBase<T>::peek(T* value) {
return EMPTY; return EMPTY;
} else { } else {
if (value == nullptr) { if (value == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
*value = values[readIndex]; *value = values[readIndex];
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
}; };

@ -4,7 +4,7 @@
#include <type_traits> #include <type_traits>
#include <utility> #include <utility>
#include "../returnvalues/returnvalue.h" #include "../returnvalues/HasReturnvaluesIF.h"
#include "ArrayList.h" #include "ArrayList.h"
/** /**
@ -75,7 +75,7 @@ class FixedMap : public SerializeIF {
uint32_t size() const { return _size; } uint32_t size() const { return _size; }
ReturnValue_t insert(key_t key, T value, Iterator* storedValue = nullptr) { ReturnValue_t insert(key_t key, T value, Iterator* storedValue = nullptr) {
if (exists(key) == returnvalue::OK) { if (exists(key) == HasReturnvaluesIF::RETURN_OK) {
return KEY_ALREADY_EXISTS; return KEY_ALREADY_EXISTS;
} }
if (_size == theMap.maxSize()) { if (_size == theMap.maxSize()) {
@ -87,7 +87,7 @@ class FixedMap : public SerializeIF {
*storedValue = Iterator(&theMap[_size]); *storedValue = Iterator(&theMap[_size]);
} }
++_size; ++_size;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t insert(std::pair<key_t, T> pair) { return insert(pair.first, pair.second); } ReturnValue_t insert(std::pair<key_t, T> pair) { return insert(pair.first, pair.second); }
@ -95,7 +95,7 @@ class FixedMap : public SerializeIF {
ReturnValue_t exists(key_t key) const { ReturnValue_t exists(key_t key) const {
ReturnValue_t result = KEY_DOES_NOT_EXIST; ReturnValue_t result = KEY_DOES_NOT_EXIST;
if (findIndex(key) < _size) { if (findIndex(key) < _size) {
result = returnvalue::OK; result = HasReturnvaluesIF::RETURN_OK;
} }
return result; return result;
} }
@ -108,7 +108,7 @@ class FixedMap : public SerializeIF {
theMap[i] = theMap[_size - 1]; theMap[i] = theMap[_size - 1];
--_size; --_size;
--((*iter).value); --((*iter).value);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
ReturnValue_t erase(key_t key) { ReturnValue_t erase(key_t key) {
@ -118,14 +118,14 @@ class FixedMap : public SerializeIF {
} }
theMap[i] = theMap[_size - 1]; theMap[i] = theMap[_size - 1];
--_size; --_size;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
T* findValue(key_t key) const { return &theMap[findIndex(key)].second; } T* findValue(key_t key) const { return &theMap[findIndex(key)].second; }
Iterator find(key_t key) const { Iterator find(key_t key) const {
ReturnValue_t result = exists(key); ReturnValue_t result = exists(key);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return end(); return end();
} }
return Iterator(&theMap[findIndex(key)]); return Iterator(&theMap[findIndex(key)]);
@ -133,11 +133,11 @@ class FixedMap : public SerializeIF {
ReturnValue_t find(key_t key, T** value) const { ReturnValue_t find(key_t key, T** value) const {
ReturnValue_t result = exists(key); ReturnValue_t result = exists(key);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
*value = &theMap[findIndex(key)].second; *value = &theMap[findIndex(key)].second;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
bool empty() { bool empty() {
@ -165,7 +165,7 @@ class FixedMap : public SerializeIF {
ReturnValue_t result = ReturnValue_t result =
SerializeAdapter::serialize(&this->_size, buffer, size, maxSize, streamEndianness); SerializeAdapter::serialize(&this->_size, buffer, size, maxSize, streamEndianness);
uint32_t i = 0; uint32_t i = 0;
while ((result == returnvalue::OK) && (i < this->_size)) { while ((result == HasReturnvaluesIF::RETURN_OK) && (i < this->_size)) {
result = result =
SerializeAdapter::serialize(&theMap[i].first, buffer, size, maxSize, streamEndianness); SerializeAdapter::serialize(&theMap[i].first, buffer, size, maxSize, streamEndianness);
result = result =
@ -195,7 +195,7 @@ class FixedMap : public SerializeIF {
return SerializeIF::TOO_MANY_ELEMENTS; return SerializeIF::TOO_MANY_ELEMENTS;
} }
uint32_t i = 0; uint32_t i = 0;
while ((result == returnvalue::OK) && (i < this->_size)) { while ((result == HasReturnvaluesIF::RETURN_OK) && (i < this->_size)) {
result = SerializeAdapter::deSerialize(&theMap[i].first, buffer, size, streamEndianness); result = SerializeAdapter::deSerialize(&theMap[i].first, buffer, size, streamEndianness);
result = SerializeAdapter::deSerialize(&theMap[i].second, buffer, size, streamEndianness); result = SerializeAdapter::deSerialize(&theMap[i].second, buffer, size, streamEndianness);
++i; ++i;

@ -100,7 +100,7 @@ class FixedOrderedMultimap {
* @param[in] value Value of the new element * @param[in] value Value of the new element
* @param[in/out] (optional) storedValue On success this points to the new value, otherwise a * @param[in/out] (optional) storedValue On success this points to the new value, otherwise a
* nullptr * nullptr
* @return returnvalue::OK if insert was successful, MAP_FULL if no space is available * @return RETURN_OK if insert was successful, MAP_FULL if no space is available
*/ */
ReturnValue_t insert(key_t key, T value, Iterator* storedValue = nullptr); ReturnValue_t insert(key_t key, T value, Iterator* storedValue = nullptr);
@ -108,14 +108,14 @@ class FixedOrderedMultimap {
* Used to insert new pair instead of single values * Used to insert new pair instead of single values
* *
* @param pair Pair to be inserted * @param pair Pair to be inserted
* @return returnvalue::OK if insert was successful, MAP_FULL if no space is available * @return RETURN_OK if insert was successful, MAP_FULL if no space is available
*/ */
ReturnValue_t insert(std::pair<key_t, T> pair); ReturnValue_t insert(std::pair<key_t, T> pair);
/*** /***
* Can be used to check if a certain key is in the map * Can be used to check if a certain key is in the map
* @param key Key to be checked * @param key Key to be checked
* @return returnvalue::OK if the key exists KEY_DOES_NOT_EXIST otherwise * @return RETURN_OK if the key exists KEY_DOES_NOT_EXIST otherwise
*/ */
ReturnValue_t exists(key_t key) const; ReturnValue_t exists(key_t key) const;
@ -127,14 +127,14 @@ class FixedOrderedMultimap {
* *
* @warning The iterator needs to be valid and dereferenceable * @warning The iterator needs to be valid and dereferenceable
* @param[in/out] iter Pointer to iterator to the element that needs to be ereased * @param[in/out] iter Pointer to iterator to the element that needs to be ereased
* @return returnvalue::OK if erased, KEY_DOES_NOT_EXIST if the there is no element like this * @return RETURN_OK if erased, KEY_DOES_NOT_EXIST if the there is no element like this
*/ */
ReturnValue_t erase(Iterator* iter); ReturnValue_t erase(Iterator* iter);
/*** /***
* Used to erase by key * Used to erase by key
* @param key Key to be erased * @param key Key to be erased
* @return returnvalue::OK if erased, KEY_DOES_NOT_EXIST if the there is no element like this * @return RETURN_OK if erased, KEY_DOES_NOT_EXIST if the there is no element like this
*/ */
ReturnValue_t erase(key_t key); ReturnValue_t erase(key_t key);
@ -148,7 +148,7 @@ class FixedOrderedMultimap {
*/ */
Iterator find(key_t key) const { Iterator find(key_t key) const {
ReturnValue_t result = exists(key); ReturnValue_t result = exists(key);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return end(); return end();
} }
return Iterator(&theMap[findFirstIndex(key)]); return Iterator(&theMap[findFirstIndex(key)]);
@ -160,7 +160,7 @@ class FixedOrderedMultimap {
* *
* @param key Key to search for * @param key Key to search for
* @param value Found value * @param value Found value
* @return returnvalue::OK if it points to the value, * @return RETURN_OK if it points to the value,
* KEY_DOES_NOT_EXIST if the key is not in the map * KEY_DOES_NOT_EXIST if the key is not in the map
*/ */
ReturnValue_t find(key_t key, T** value) const; ReturnValue_t find(key_t key, T** value) const;

@ -16,7 +16,7 @@ inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::insert(key_t k
if (storedValue != nullptr) { if (storedValue != nullptr) {
*storedValue = Iterator(&theMap[position]); *storedValue = Iterator(&theMap[position]);
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
template <typename key_t, typename T, typename KEY_COMPARE> template <typename key_t, typename T, typename KEY_COMPARE>
inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::insert(std::pair<key_t, T> pair) { inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::insert(std::pair<key_t, T> pair) {
@ -27,7 +27,7 @@ template <typename key_t, typename T, typename KEY_COMPARE>
inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::exists(key_t key) const { inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::exists(key_t key) const {
ReturnValue_t result = KEY_DOES_NOT_EXIST; ReturnValue_t result = KEY_DOES_NOT_EXIST;
if (findFirstIndex(key) < _size) { if (findFirstIndex(key) < _size) {
result = returnvalue::OK; result = HasReturnvaluesIF::RETURN_OK;
} }
return result; return result;
} }
@ -44,7 +44,7 @@ inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::erase(Iterator
} else { } else {
*iter = begin(); *iter = begin();
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
template <typename key_t, typename T, typename KEY_COMPARE> template <typename key_t, typename T, typename KEY_COMPARE>
@ -57,17 +57,17 @@ inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::erase(key_t ke
removeFromPosition(i); removeFromPosition(i);
i = findFirstIndex(key, i); i = findFirstIndex(key, i);
} while (i < _size); } while (i < _size);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
template <typename key_t, typename T, typename KEY_COMPARE> template <typename key_t, typename T, typename KEY_COMPARE>
inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::find(key_t key, T **value) const { inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::find(key_t key, T **value) const {
ReturnValue_t result = exists(key); ReturnValue_t result = exists(key);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
*value = &theMap[findFirstIndex(key)].second; *value = &theMap[findFirstIndex(key)].second;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
template <typename key_t, typename T, typename KEY_COMPARE> template <typename key_t, typename T, typename KEY_COMPARE>

@ -4,7 +4,7 @@
#include <cmath> #include <cmath>
#include "../globalfunctions/CRC.h" #include "../globalfunctions/CRC.h"
#include "../returnvalues/returnvalue.h" #include "../returnvalues/HasReturnvaluesIF.h"
#include "../serialize/SerialArrayListAdapter.h" #include "../serialize/SerialArrayListAdapter.h"
#include "../serviceinterface/ServiceInterfaceStream.h" #include "../serviceinterface/ServiceInterfaceStream.h"
#include "ArrayList.h" #include "ArrayList.h"
@ -52,15 +52,15 @@ class Index : public SerializeIF {
Endianness streamEndianness) const { Endianness streamEndianness) const {
ReturnValue_t result = ReturnValue_t result =
SerializeAdapter::serialize(&blockStartAddress, buffer, size, maxSize, streamEndianness); SerializeAdapter::serialize(&blockStartAddress, buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = indexType.serialize(buffer, size, maxSize, streamEndianness); result = indexType.serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = SerializeAdapter::serialize(&this->size, buffer, size, maxSize, streamEndianness); result = SerializeAdapter::serialize(&this->size, buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = result =
@ -71,19 +71,19 @@ class Index : public SerializeIF {
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size, Endianness streamEndianness) { ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size, Endianness streamEndianness) {
ReturnValue_t result = ReturnValue_t result =
SerializeAdapter::deSerialize(&blockStartAddress, buffer, size, streamEndianness); SerializeAdapter::deSerialize(&blockStartAddress, buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = indexType.deSerialize(buffer, size, streamEndianness); result = indexType.deSerialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = SerializeAdapter::deSerialize(&this->size, buffer, size, streamEndianness); result = SerializeAdapter::deSerialize(&this->size, buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = SerializeAdapter::deSerialize(&this->storedPackets, buffer, size, streamEndianness); result = SerializeAdapter::deSerialize(&this->storedPackets, buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return result; return result;
@ -449,13 +449,13 @@ class IndexedRingMemoryArray : public SerializeIF, public ArrayList<Index<T>, ui
// Check Next Block // Check Next Block
if (!isNextBlockWritable()) { if (!isNextBlockWritable()) {
// The Index is full and does not overwrite old // The Index is full and does not overwrite old
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
// Next block can be written, update Metadata // Next block can be written, update Metadata
currentWriteBlock = getNextWrite(); currentWriteBlock = getNextWrite();
currentWriteBlock->setSize(0); currentWriteBlock->setSize(0);
currentWriteBlock->setStoredPackets(0); currentWriteBlock->setStoredPackets(0);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
/** /**
@ -475,21 +475,21 @@ class IndexedRingMemoryArray : public SerializeIF, public ArrayList<Index<T>, ui
additionalInfo->serialize(buffer, size, maxSize, streamEndianness); additionalInfo->serialize(buffer, size, maxSize, streamEndianness);
} }
ReturnValue_t result = currentWriteBlock->serialize(buffer, size, maxSize, streamEndianness); ReturnValue_t result = currentWriteBlock->serialize(buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = SerializeAdapter::serialize(&this->size, buffer, size, maxSize, streamEndianness); result = SerializeAdapter::serialize(&this->size, buffer, size, maxSize, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
uint32_t i = 0; uint32_t i = 0;
while ((result == returnvalue::OK) && (i < this->size)) { while ((result == HasReturnvaluesIF::RETURN_OK) && (i < this->size)) {
result = result =
SerializeAdapter::serialize(&this->entries[i], buffer, size, maxSize, streamEndianness); SerializeAdapter::serialize(&this->entries[i], buffer, size, maxSize, streamEndianness);
++i; ++i;
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
uint16_t crc = Calculate_CRC(crcBuffer, (*size - oldSize)); uint16_t crc = Calculate_CRC(crcBuffer, (*size - oldSize));
@ -523,44 +523,44 @@ class IndexedRingMemoryArray : public SerializeIF, public ArrayList<Index<T>, ui
*/ */
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size, Endianness streamEndianness) { ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size, Endianness streamEndianness) {
ReturnValue_t result = returnvalue::OK; ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
if (additionalInfo != NULL) { if (additionalInfo != NULL) {
result = additionalInfo->deSerialize(buffer, size, streamEndianness); result = additionalInfo->deSerialize(buffer, size, streamEndianness);
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
Index<T> tempIndex; Index<T> tempIndex;
result = tempIndex.deSerialize(buffer, size, streamEndianness); result = tempIndex.deSerialize(buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
uint32_t tempSize = 0; uint32_t tempSize = 0;
result = SerializeAdapter::deSerialize(&tempSize, buffer, size, streamEndianness); result = SerializeAdapter::deSerialize(&tempSize, buffer, size, streamEndianness);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
if (this->size != tempSize) { if (this->size != tempSize) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
uint32_t i = 0; uint32_t i = 0;
while ((result == returnvalue::OK) && (i < this->size)) { while ((result == HasReturnvaluesIF::RETURN_OK) && (i < this->size)) {
result = SerializeAdapter::deSerialize(&this->entries[i], buffer, size, streamEndianness); result = SerializeAdapter::deSerialize(&this->entries[i], buffer, size, streamEndianness);
++i; ++i;
} }
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
typename IndexedRingMemoryArray<T>::Iterator cmp(&tempIndex); typename IndexedRingMemoryArray<T>::Iterator cmp(&tempIndex);
for (typename IndexedRingMemoryArray<T>::Iterator it = this->begin(); it != this->end(); ++it) { for (typename IndexedRingMemoryArray<T>::Iterator it = this->begin(); it != this->end(); ++it) {
if (*(cmp.value) == *(it.value)) { if (*(cmp.value) == *(it.value)) {
currentWriteBlock = it; currentWriteBlock = it;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
} }
// Reached if current write block iterator is not found // Reached if current write block iterator is not found
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
uint32_t getIndexAddress() const { return indexAddress; } uint32_t getIndexAddress() const { return indexAddress; }

@ -40,7 +40,7 @@ class PlacementFactory {
store_address_t tempId; store_address_t tempId;
uint8_t* pData = nullptr; uint8_t* pData = nullptr;
ReturnValue_t result = dataBackend->getFreeElement(&tempId, sizeof(T), &pData); ReturnValue_t result = dataBackend->getFreeElement(&tempId, sizeof(T), &pData);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return nullptr; return nullptr;
} }
T* temp = new (pData) T(std::forward<Args>(args)...); T* temp = new (pData) T(std::forward<Args>(args)...);
@ -51,12 +51,12 @@ class PlacementFactory {
* This must be called by the user. * This must be called by the user.
* *
* @param thisElement Element to be destroyed * @param thisElement Element to be destroyed
* @return returnvalue::OK if the element was destroyed, different errors on failure * @return RETURN_OK if the element was destroyed, different errors on failure
*/ */
template <typename T> template <typename T>
ReturnValue_t destroy(T* thisElement) { ReturnValue_t destroy(T* thisElement) {
if (thisElement == nullptr) { if (thisElement == nullptr) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
// Need to call destructor first, in case something was allocated by the object (shouldn't do // Need to call destructor first, in case something was allocated by the object (shouldn't do
// that, however). // that, however).

@ -3,7 +3,7 @@
#include <cstddef> #include <cstddef>
#include "../returnvalues/returnvalue.h" #include "../returnvalues/HasReturnvaluesIF.h"
template <uint8_t N_READ_PTRS = 1> template <uint8_t N_READ_PTRS = 1>
class RingBufferBase { class RingBufferBase {
@ -58,18 +58,18 @@ class RingBufferBase {
ReturnValue_t readData(uint32_t amount, uint8_t n = 0) { ReturnValue_t readData(uint32_t amount, uint8_t n = 0) {
if (getAvailableReadData(n) >= amount) { if (getAvailableReadData(n) >= amount) {
incrementRead(amount, n); incrementRead(amount, n);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} else { } else {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
ReturnValue_t writeData(uint32_t amount) { ReturnValue_t writeData(uint32_t amount) {
if (availableWriteSpace() >= amount or overwriteOld) { if (availableWriteSpace() >= amount or overwriteOld) {
incrementWrite(amount); incrementWrite(amount);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} else { } else {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }

@ -2,9 +2,6 @@
#include <cstring> #include <cstring>
#include "fsfw/FSFW.h"
#include "fsfw/serviceinterface.h"
SimpleRingBuffer::SimpleRingBuffer(const size_t size, bool overwriteOld, size_t maxExcessBytes) SimpleRingBuffer::SimpleRingBuffer(const size_t size, bool overwriteOld, size_t maxExcessBytes)
: RingBufferBase<>(0, size, overwriteOld), maxExcessBytes(maxExcessBytes) { : RingBufferBase<>(0, size, overwriteOld), maxExcessBytes(maxExcessBytes) {
if (maxExcessBytes > size) { if (maxExcessBytes > size) {
@ -32,14 +29,14 @@ ReturnValue_t SimpleRingBuffer::getFreeElement(uint8_t** writePointer, size_t am
size_t amountTillWrap = writeTillWrap(); size_t amountTillWrap = writeTillWrap();
if (amountTillWrap < amount) { if (amountTillWrap < amount) {
if ((amount - amountTillWrap + excessBytes) > maxExcessBytes) { if ((amount - amountTillWrap + excessBytes) > maxExcessBytes) {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
excessBytes = amount - amountTillWrap; excessBytes = amount - amountTillWrap;
} }
*writePointer = &buffer[write]; *writePointer = &buffer[write];
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} else { } else {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
@ -51,19 +48,6 @@ void SimpleRingBuffer::confirmBytesWritten(size_t amount) {
} }
ReturnValue_t SimpleRingBuffer::writeData(const uint8_t* data, size_t amount) { ReturnValue_t SimpleRingBuffer::writeData(const uint8_t* data, size_t amount) {
if (data == nullptr) {
return returnvalue::FAILED;
}
if (amount > getMaxSize()) {
#if FSFW_VERBOSE_LEVEL >= 1
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "SimpleRingBuffer::writeData: Amount of data too large" << std::endl;
#else
sif::printError("SimpleRingBuffer::writeData: Amount of data too large\n");
#endif
#endif
return returnvalue::FAILED;
}
if (availableWriteSpace() >= amount or overwriteOld) { if (availableWriteSpace() >= amount or overwriteOld) {
size_t amountTillWrap = writeTillWrap(); size_t amountTillWrap = writeTillWrap();
if (amountTillWrap >= amount) { if (amountTillWrap >= amount) {
@ -74,9 +58,9 @@ ReturnValue_t SimpleRingBuffer::writeData(const uint8_t* data, size_t amount) {
memcpy(buffer, data + amountTillWrap, amount - amountTillWrap); memcpy(buffer, data + amountTillWrap, amount - amountTillWrap);
} }
incrementWrite(amount); incrementWrite(amount);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} else { } else {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
@ -89,7 +73,7 @@ ReturnValue_t SimpleRingBuffer::readData(uint8_t* data, size_t amount, bool incr
// more data available than amount specified. // more data available than amount specified.
amount = availableData; amount = availableData;
} else { } else {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
if (trueAmount != nullptr) { if (trueAmount != nullptr) {
@ -105,7 +89,7 @@ ReturnValue_t SimpleRingBuffer::readData(uint8_t* data, size_t amount, bool incr
if (incrementReadPtr) { if (incrementReadPtr) {
deleteData(amount, readRemaining); deleteData(amount, readRemaining);
} }
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
size_t SimpleRingBuffer::getExcessBytes() const { return excessBytes; } size_t SimpleRingBuffer::getExcessBytes() const { return excessBytes; }
@ -124,12 +108,12 @@ ReturnValue_t SimpleRingBuffer::deleteData(size_t amount, bool deleteRemaining,
if (deleteRemaining) { if (deleteRemaining) {
amount = availableData; amount = availableData;
} else { } else {
return returnvalue::FAILED; return HasReturnvaluesIF::RETURN_FAILED;
} }
} }
if (trueAmount != nullptr) { if (trueAmount != nullptr) {
*trueAmount = amount; *trueAmount = amount;
} }
incrementRead(amount, READ_PTR); incrementRead(amount, READ_PTR);
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }

@ -47,8 +47,8 @@ class SimpleRingBuffer : public RingBufferBase<> {
* Write to circular buffer and increment write pointer by amount. * Write to circular buffer and increment write pointer by amount.
* @param data * @param data
* @param amount * @param amount
* @return -@c returnvalue::OK if write operation was successful * @return -@c RETURN_OK if write operation was successful
* -@c returnvalue::FAILED if * -@c RETURN_FAILED if
*/ */
ReturnValue_t writeData(const uint8_t* data, size_t amount); ReturnValue_t writeData(const uint8_t* data, size_t amount);
@ -95,8 +95,8 @@ class SimpleRingBuffer : public RingBufferBase<> {
* If readRemaining was set to true, the true amount read will be assigned * If readRemaining was set to true, the true amount read will be assigned
* to the passed value. * to the passed value.
* @return * @return
* - @c returnvalue::OK if data was read successfully * - @c RETURN_OK if data was read successfully
* - @c returnvalue::FAILED if not enough data was available and readRemaining * - @c RETURN_FAILED if not enough data was available and readRemaining
* was set to false. * was set to false.
*/ */
ReturnValue_t readData(uint8_t* data, size_t amount, bool incrementReadPtr = false, ReturnValue_t readData(uint8_t* data, size_t amount, bool incrementReadPtr = false,

@ -13,16 +13,14 @@ ControllerBase::ControllerBase(object_id_t setObjectId, object_id_t parentId,
submode(SUBMODE_NONE), submode(SUBMODE_NONE),
modeHelper(this), modeHelper(this),
healthHelper(this, setObjectId) { healthHelper(this, setObjectId) {
auto mqArgs = MqArgs(setObjectId, static_cast<void*>(this)); commandQueue = QueueFactory::instance()->createMessageQueue(commandQueueDepth);
commandQueue = QueueFactory::instance()->createMessageQueue(
commandQueueDepth, MessageQueueMessage::MAX_MESSAGE_SIZE, &mqArgs);
} }
ControllerBase::~ControllerBase() { QueueFactory::instance()->deleteMessageQueue(commandQueue); } ControllerBase::~ControllerBase() { QueueFactory::instance()->deleteMessageQueue(commandQueue); }
ReturnValue_t ControllerBase::initialize() { ReturnValue_t ControllerBase::initialize() {
ReturnValue_t result = SystemObject::initialize(); ReturnValue_t result = SystemObject::initialize();
if (result != returnvalue::OK) { if (result != RETURN_OK) {
return result; return result;
} }
@ -30,7 +28,7 @@ ReturnValue_t ControllerBase::initialize() {
if (parentId != objects::NO_OBJECT) { if (parentId != objects::NO_OBJECT) {
auto* parent = ObjectManager::instance()->get<SubsystemBase>(parentId); auto* parent = ObjectManager::instance()->get<SubsystemBase>(parentId);
if (parent == nullptr) { if (parent == nullptr) {
return returnvalue::FAILED; return RETURN_FAILED;
} }
parentQueue = parent->getCommandQueue(); parentQueue = parent->getCommandQueue();
@ -38,16 +36,16 @@ ReturnValue_t ControllerBase::initialize() {
} }
result = healthHelper.initialize(parentQueue); result = healthHelper.initialize(parentQueue);
if (result != returnvalue::OK) { if (result != RETURN_OK) {
return result; return result;
} }
result = modeHelper.initialize(parentQueue); result = modeHelper.initialize(parentQueue);
if (result != returnvalue::OK) { if (result != RETURN_OK) {
return result; return result;
} }
return returnvalue::OK; return RETURN_OK;
} }
MessageQueueId_t ControllerBase::getCommandQueue() const { return commandQueue->getId(); } MessageQueueId_t ControllerBase::getCommandQueue() const { return commandQueue->getId(); }
@ -55,19 +53,19 @@ MessageQueueId_t ControllerBase::getCommandQueue() const { return commandQueue->
void ControllerBase::handleQueue() { void ControllerBase::handleQueue() {
CommandMessage command; CommandMessage command;
ReturnValue_t result; ReturnValue_t result;
for (result = commandQueue->receiveMessage(&command); result == returnvalue::OK; for (result = commandQueue->receiveMessage(&command); result == RETURN_OK;
result = commandQueue->receiveMessage(&command)) { result = commandQueue->receiveMessage(&command)) {
result = modeHelper.handleModeCommand(&command); result = modeHelper.handleModeCommand(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
result = healthHelper.handleHealthCommand(&command); result = healthHelper.handleHealthCommand(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
result = handleCommandMessage(&command); result = handleCommandMessage(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
command.setToUnknownCommand(); command.setToUnknownCommand();
@ -98,7 +96,7 @@ void ControllerBase::announceMode(bool recursive) { triggerEvent(MODE_INFO, mode
ReturnValue_t ControllerBase::performOperation(uint8_t opCode) { ReturnValue_t ControllerBase::performOperation(uint8_t opCode) {
handleQueue(); handleQueue();
performControlOperation(); performControlOperation();
return returnvalue::OK; return RETURN_OK;
} }
void ControllerBase::modeChanged(Mode_t mode_, Submode_t submode_) {} void ControllerBase::modeChanged(Mode_t mode_, Submode_t submode_) {}
@ -108,7 +106,7 @@ ReturnValue_t ControllerBase::setHealth(HealthState health) {
case HEALTHY: case HEALTHY:
case EXTERNAL_CONTROL: case EXTERNAL_CONTROL:
healthHelper.setHealth(health); healthHelper.setHealth(health);
return returnvalue::OK; return RETURN_OK;
default: default:
return INVALID_HEALTH_STATE; return INVALID_HEALTH_STATE;
} }
@ -119,4 +117,4 @@ void ControllerBase::setTaskIF(PeriodicTaskIF* task_) { executingTask = task_; }
void ControllerBase::changeHK(Mode_t mode_, Submode_t submode_, bool enable) {} void ControllerBase::changeHK(Mode_t mode_, Submode_t submode_, bool enable) {}
ReturnValue_t ControllerBase::initializeAfterTaskCreation() { return returnvalue::OK; } ReturnValue_t ControllerBase::initializeAfterTaskCreation() { return HasReturnvaluesIF::RETURN_OK; }

@ -18,7 +18,8 @@
class ControllerBase : public HasModesIF, class ControllerBase : public HasModesIF,
public HasHealthIF, public HasHealthIF,
public ExecutableObjectIF, public ExecutableObjectIF,
public SystemObject { public SystemObject,
public HasReturnvaluesIF {
public: public:
static const Mode_t MODE_NORMAL = 2; static const Mode_t MODE_NORMAL = 2;

@ -12,7 +12,7 @@ ReturnValue_t ExtendedControllerBase::executeAction(ActionId_t actionId,
MessageQueueId_t commandedBy, MessageQueueId_t commandedBy,
const uint8_t *data, size_t size) { const uint8_t *data, size_t size) {
/* Needs to be overriden and implemented by child class. */ /* Needs to be overriden and implemented by child class. */
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
object_id_t ExtendedControllerBase::getObjectId() const { return SystemObject::getObjectId(); } object_id_t ExtendedControllerBase::getObjectId() const { return SystemObject::getObjectId(); }
@ -23,7 +23,7 @@ uint32_t ExtendedControllerBase::getPeriodicOperationFrequency() const {
ReturnValue_t ExtendedControllerBase::handleCommandMessage(CommandMessage *message) { ReturnValue_t ExtendedControllerBase::handleCommandMessage(CommandMessage *message) {
ReturnValue_t result = actionHelper.handleActionMessage(message); ReturnValue_t result = actionHelper.handleActionMessage(message);
if (result == returnvalue::OK) { if (result == HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
return poolManager.handleHousekeepingMessage(message); return poolManager.handleHousekeepingMessage(message);
@ -32,30 +32,30 @@ ReturnValue_t ExtendedControllerBase::handleCommandMessage(CommandMessage *messa
void ExtendedControllerBase::handleQueue() { void ExtendedControllerBase::handleQueue() {
CommandMessage command; CommandMessage command;
ReturnValue_t result; ReturnValue_t result;
for (result = commandQueue->receiveMessage(&command); result == returnvalue::OK; for (result = commandQueue->receiveMessage(&command); result == RETURN_OK;
result = commandQueue->receiveMessage(&command)) { result = commandQueue->receiveMessage(&command)) {
result = actionHelper.handleActionMessage(&command); result = actionHelper.handleActionMessage(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
result = modeHelper.handleModeCommand(&command); result = modeHelper.handleModeCommand(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
result = healthHelper.handleHealthCommand(&command); result = healthHelper.handleHealthCommand(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
result = poolManager.handleHousekeepingMessage(&command); result = poolManager.handleHousekeepingMessage(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
result = handleCommandMessage(&command); result = handleCommandMessage(&command);
if (result == returnvalue::OK) { if (result == RETURN_OK) {
continue; continue;
} }
command.setToUnknownCommand(); command.setToUnknownCommand();
@ -65,11 +65,11 @@ void ExtendedControllerBase::handleQueue() {
ReturnValue_t ExtendedControllerBase::initialize() { ReturnValue_t ExtendedControllerBase::initialize() {
ReturnValue_t result = ControllerBase::initialize(); ReturnValue_t result = ControllerBase::initialize();
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
result = actionHelper.initialize(commandQueue); result = actionHelper.initialize(commandQueue);
if (result != returnvalue::OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
@ -86,7 +86,7 @@ ReturnValue_t ExtendedControllerBase::performOperation(uint8_t opCode) {
/* We do this after performing control operation because variables will be set changed /* We do this after performing control operation because variables will be set changed
in this function. */ in this function. */
poolManager.performHkOperation(); poolManager.performHkOperation();
return returnvalue::OK; return RETURN_OK;
} }
MessageQueueId_t ExtendedControllerBase::getCommandQueue() const { return commandQueue->getId(); } MessageQueueId_t ExtendedControllerBase::getCommandQueue() const { return commandQueue->getId(); }

@ -152,7 +152,7 @@ ReturnValue_t Sgp4Propagator::initialize(const uint8_t* line1, const uint8_t* li
return MAKE_RETURN_CODE(result); return MAKE_RETURN_CODE(result);
} else { } else {
initialized = true; initialized = true;
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
} }
@ -195,6 +195,6 @@ ReturnValue_t Sgp4Propagator::propagate(double* position, double* velocity, time
if (result != 0) { if (result != 0) {
return MAKE_RETURN_CODE(result || 0xB0); return MAKE_RETURN_CODE(result || 0xB0);
} else { } else {
return returnvalue::OK; return HasReturnvaluesIF::RETURN_OK;
} }
} }

@ -7,7 +7,7 @@
#ifndef PLATFORM_WIN #ifndef PLATFORM_WIN
#include <sys/time.h> #include <sys/time.h>
#endif #endif
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw_contrib/sgp4/sgp4unit.h" #include "fsfw_contrib/sgp4/sgp4unit.h"
class Sgp4Propagator { class Sgp4Propagator {

@ -9,12 +9,12 @@
#define CCSDSRETURNVALUESIF_H_ #define CCSDSRETURNVALUESIF_H_
#include "dllConf.h" #include "dllConf.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
/** /**
* This is a helper class to collect special return values that come up during CCSDS Handling. * This is a helper class to collect special return values that come up during CCSDS Handling.
* @ingroup ccsds_handling * @ingroup ccsds_handling
*/ */
class CCSDSReturnValuesIF { class CCSDSReturnValuesIF : public HasReturnvaluesIF {
public: public:
static const uint8_t INTERFACE_ID = CLASS_ID::CCSDS_HANDLER_IF; //!< Basic ID of the interface. static const uint8_t INTERFACE_ID = CLASS_ID::CCSDS_HANDLER_IF; //!< Basic ID of the interface.

@ -1,6 +1,6 @@
#include "fsfw/datalinklayer/Clcw.h" #include "fsfw/datalinklayer/Clcw.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface.h"
Clcw::Clcw() { Clcw::Clcw() {
content.raw = 0; content.raw = 0;

@ -1,7 +1,7 @@
#include "fsfw/datalinklayer/DataLinkLayer.h" #include "fsfw/datalinklayer/DataLinkLayer.h"
#include "fsfw/globalfunctions/CRC.h" #include "fsfw/globalfunctions/CRC.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface.h"
DataLinkLayer::DataLinkLayer(uint8_t* set_frame_buffer, ClcwIF* setClcw, DataLinkLayer::DataLinkLayer(uint8_t* set_frame_buffer, ClcwIF* setClcw,
uint8_t set_start_sequence_length, uint16_t set_scid) uint8_t set_start_sequence_length, uint16_t set_scid)
@ -28,7 +28,7 @@ ReturnValue_t DataLinkLayer::frameDelimitingAndFillRemoval() {
TcTransferFrame frame_candidate(frameBuffer); TcTransferFrame frame_candidate(frameBuffer);
this->currentFrame = frame_candidate; // should work with shallow copy. this->currentFrame = frame_candidate; // should work with shallow copy.
return returnvalue::OK; return RETURN_OK;
} }
ReturnValue_t DataLinkLayer::frameValidationCheck() { ReturnValue_t DataLinkLayer::frameValidationCheck() {
@ -59,14 +59,14 @@ ReturnValue_t DataLinkLayer::frameValidationCheck() {
if (USE_CRC) { if (USE_CRC) {
return this->frameCheckCRC(); return this->frameCheckCRC();
} }
return returnvalue::OK; return RETURN_OK;
} }
ReturnValue_t DataLinkLayer::frameCheckCRC() { ReturnValue_t DataLinkLayer::frameCheckCRC() {
uint16_t checkValue = uint16_t checkValue =
CRC::crc16ccitt(this->currentFrame.getFullFrame(), this->currentFrame.getFullSize()); CRC::crc16ccitt(this->currentFrame.getFullFrame(), this->currentFrame.getFullSize());
if (checkValue == 0) { if (checkValue == 0) {
return returnvalue::OK; return RETURN_OK;
} else { } else {
return CRC_FAILED; return CRC_FAILED;
} }
@ -74,7 +74,7 @@ ReturnValue_t DataLinkLayer::frameCheckCRC() {
ReturnValue_t DataLinkLayer::allFramesReception() { ReturnValue_t DataLinkLayer::allFramesReception() {
ReturnValue_t status = this->frameDelimitingAndFillRemoval(); ReturnValue_t status = this->frameDelimitingAndFillRemoval();
if (status != returnvalue::OK) { if (status != RETURN_OK) {
return status; return status;
} }
return this->frameValidationCheck(); return this->frameValidationCheck();
@ -90,7 +90,7 @@ ReturnValue_t DataLinkLayer::virtualChannelDemultiplexing() {
virtualChannelIterator iter = virtualChannels.find(vcId); virtualChannelIterator iter = virtualChannels.find(vcId);
if (iter == virtualChannels.end()) { if (iter == virtualChannels.end()) {
// Do not report because passive board will get this error all the time. // Do not report because passive board will get this error all the time.
return returnvalue::OK; return RETURN_OK;
} else { } else {
return (iter->second)->frameAcceptanceAndReportingMechanism(&currentFrame, clcw); return (iter->second)->frameAcceptanceAndReportingMechanism(&currentFrame, clcw);
} }
@ -99,7 +99,7 @@ ReturnValue_t DataLinkLayer::virtualChannelDemultiplexing() {
ReturnValue_t DataLinkLayer::processFrame(uint16_t length) { ReturnValue_t DataLinkLayer::processFrame(uint16_t length) {
receivedDataLength = length; receivedDataLength = length;
ReturnValue_t status = allFramesReception(); ReturnValue_t status = allFramesReception();
if (status != returnvalue::OK) { if (status != RETURN_OK) {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "DataLinkLayer::processFrame: frame reception failed. " sif::error << "DataLinkLayer::processFrame: frame reception failed. "
"Error code: " "Error code: "
@ -117,14 +117,14 @@ ReturnValue_t DataLinkLayer::addVirtualChannel(uint8_t virtualChannelId,
std::pair<virtualChannelIterator, bool> returnValue = virtualChannels.insert( std::pair<virtualChannelIterator, bool> returnValue = virtualChannels.insert(
std::pair<uint8_t, VirtualChannelReceptionIF*>(virtualChannelId, object)); std::pair<uint8_t, VirtualChannelReceptionIF*>(virtualChannelId, object));
if (returnValue.second == true) { if (returnValue.second == true) {
return returnvalue::OK; return RETURN_OK;
} else { } else {
return returnvalue::FAILED; return RETURN_FAILED;
} }
} }
ReturnValue_t DataLinkLayer::initialize() { ReturnValue_t DataLinkLayer::initialize() {
ReturnValue_t returnValue = returnvalue::FAILED; ReturnValue_t returnValue = RETURN_FAILED;
// Set Virtual Channel ID to first virtual channel instance in this DataLinkLayer instance to // Set Virtual Channel ID to first virtual channel instance in this DataLinkLayer instance to
// avoid faulty information (e.g. 0) in the VCID. // avoid faulty information (e.g. 0) in the VCID.
if (virtualChannels.begin() != virtualChannels.end()) { if (virtualChannels.begin() != virtualChannels.end()) {
@ -133,13 +133,13 @@ ReturnValue_t DataLinkLayer::initialize() {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "DataLinkLayer::initialize: No VC assigned to this DLL instance! " << std::endl; sif::error << "DataLinkLayer::initialize: No VC assigned to this DLL instance! " << std::endl;
#endif #endif
return returnvalue::FAILED; return RETURN_FAILED;
} }
for (virtualChannelIterator iterator = virtualChannels.begin(); iterator != virtualChannels.end(); for (virtualChannelIterator iterator = virtualChannels.begin(); iterator != virtualChannels.end();
iterator++) { iterator++) {
returnValue = iterator->second->initialize(); returnValue = iterator->second->initialize();
if (returnValue != returnvalue::OK) break; if (returnValue != RETURN_OK) break;
} }
return returnValue; return returnValue;
} }

@ -51,7 +51,7 @@ class DataLinkLayer : public CCSDSReturnValuesIF {
* This method tries to process a frame that is placed in #frameBuffer. * This method tries to process a frame that is placed in #frameBuffer.
* The procedures described in the Standard are performed. * The procedures described in the Standard are performed.
* @param length Length of the incoming frame candidate. * @param length Length of the incoming frame candidate.
* @return @c returnvalue::OK on successful handling, otherwise the return codes of the higher * @return @c RETURN_OK on successful handling, otherwise the return codes of the higher
* methods. * methods.
*/ */
ReturnValue_t processFrame(uint16_t length); ReturnValue_t processFrame(uint16_t length);
@ -61,12 +61,12 @@ class DataLinkLayer : public CCSDSReturnValuesIF {
* handle Frames directed to this VC. * handle Frames directed to this VC.
* @param virtualChannelId Id of the VC. Shall be smaller than 64. * @param virtualChannelId Id of the VC. Shall be smaller than 64.
* @param object Reference to the object that handles the Frame. * @param object Reference to the object that handles the Frame.
* @return @c returnvalue::OK on success, @c returnvalue::FAILED otherwise. * @return @c RETURN_OK on success, @c RETURN_FAILED otherwise.
*/ */
ReturnValue_t addVirtualChannel(uint8_t virtualChannelId, VirtualChannelReceptionIF* object); ReturnValue_t addVirtualChannel(uint8_t virtualChannelId, VirtualChannelReceptionIF* object);
/** /**
* The initialization method calls the @c initialize routine of all virtual channels. * The initialization method calls the @c initialize routine of all virtual channels.
* @return The return code of the first failed VC initialization or @c returnvalue::OK. * @return The return code of the first failed VC initialization or @c RETURN_OK.
*/ */
ReturnValue_t initialize(); ReturnValue_t initialize();
@ -91,19 +91,19 @@ class DataLinkLayer : public CCSDSReturnValuesIF {
virtualChannels; //!< Map of all virtual channels assigned. virtualChannels; //!< Map of all virtual channels assigned.
/** /**
* Method that performs all possible frame validity checks (as specified). * Method that performs all possible frame validity checks (as specified).
* @return Various error codes or @c returnvalue::OK on success. * @return Various error codes or @c RETURN_OK on success.
*/ */
ReturnValue_t frameValidationCheck(); ReturnValue_t frameValidationCheck();
/** /**
* First method to call. * First method to call.
* Removes start sequence bytes and checks if the complete frame was received. * Removes start sequence bytes and checks if the complete frame was received.
* SHOULDDO: Maybe handling the start sequence must be done more variable. * SHOULDDO: Maybe handling the start sequence must be done more variable.
* @return @c returnvalue::OK or @c TOO_SHORT. * @return @c RETURN_OK or @c TOO_SHORT.
*/ */
ReturnValue_t frameDelimitingAndFillRemoval(); ReturnValue_t frameDelimitingAndFillRemoval();
/** /**
* Small helper method to check the CRC of the Frame. * Small helper method to check the CRC of the Frame.
* @return @c returnvalue::OK or @c CRC_FAILED. * @return @c RETURN_OK or @c CRC_FAILED.
*/ */
ReturnValue_t frameCheckCRC(); ReturnValue_t frameCheckCRC();
/** /**

@ -11,7 +11,7 @@ ReturnValue_t Farm1StateOpen::handleADFrame(TcTransferFrame* frame, ClcwIF* clcw
if (diff == 0) { if (diff == 0) {
myVC->vR++; myVC->vR++;
clcw->setRetransmitFlag(false); clcw->setRetransmitFlag(false);
return returnvalue::OK; return RETURN_OK;
} else if (diff < myVC->positiveWindow && diff > 0) { } else if (diff < myVC->positiveWindow && diff > 0) {
clcw->setRetransmitFlag(true); clcw->setRetransmitFlag(true);
return NS_POSITIVE_W; return NS_POSITIVE_W;

@ -37,8 +37,8 @@ class Farm1StateOpen : public Farm1StateIF {
* change to Farm1StateLockout. * change to Farm1StateLockout.
* @param frame The frame to handle. * @param frame The frame to handle.
* @param clcw Any changes to the CLCW shall be done with the help of this interface. * @param clcw Any changes to the CLCW shall be done with the help of this interface.
* @return If the Sequence Number is ok, it returns returnvalue::OK. Otherwise either * @return If the Sequence Number is ok, it returns #RETURN_OK. Otherwise either #NS_POSITIVE_W,
* #NS_POSITIVE_W, #NS_NEGATIVE_W or NS_LOCKOUT is returned. * #NS_NEGATIVE_W or NS_LOCKOUT is returned.
*/ */
ReturnValue_t handleADFrame(TcTransferFrame* frame, ClcwIF* clcw); ReturnValue_t handleADFrame(TcTransferFrame* frame, ClcwIF* clcw);
/** /**

@ -4,9 +4,9 @@
#include "fsfw/ipc/QueueFactory.h" #include "fsfw/ipc/QueueFactory.h"
#include "fsfw/objectmanager/ObjectManager.h" #include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface.h"
#include "fsfw/storagemanager/StorageManagerIF.h" #include "fsfw/storagemanager/StorageManagerIF.h"
#include "fsfw/tmtcpacket/ccsds/SpacePacketReader.h" #include "fsfw/tmtcpacket/SpacePacketBase.h"
#include "fsfw/tmtcservices/AcceptsTelecommandsIF.h" #include "fsfw/tmtcservices/AcceptsTelecommandsIF.h"
#include "fsfw/tmtcservices/TmTcMessage.h" #include "fsfw/tmtcservices/TmTcMessage.h"
@ -31,7 +31,7 @@ ReturnValue_t MapPacketExtraction::extractPackets(TcTransferFrame* frame) {
if (packetLength <= MAX_PACKET_SIZE) { if (packetLength <= MAX_PACKET_SIZE) {
memcpy(packetBuffer, frame->getDataField(), packetLength); memcpy(packetBuffer, frame->getDataField(), packetLength);
bufferPosition = &packetBuffer[packetLength]; bufferPosition = &packetBuffer[packetLength];
status = returnvalue::OK; status = RETURN_OK;
} else { } else {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "MapPacketExtraction::extractPackets. Packet too large! Size: " sif::error << "MapPacketExtraction::extractPackets. Packet too large! Size: "
@ -52,7 +52,7 @@ ReturnValue_t MapPacketExtraction::extractPackets(TcTransferFrame* frame) {
status = sendCompletePacket(packetBuffer, packetLength); status = sendCompletePacket(packetBuffer, packetLength);
clearBuffers(); clearBuffers();
} }
status = returnvalue::OK; status = RETURN_OK;
} else { } else {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "MapPacketExtraction::extractPackets. Packet too large! Size: " sif::error << "MapPacketExtraction::extractPackets. Packet too large! Size: "
@ -95,7 +95,7 @@ ReturnValue_t MapPacketExtraction::unpackBlockingPackets(TcTransferFrame* frame)
status = sendCompletePacket(packet.getWholeData(), packet.getFullSize()); status = sendCompletePacket(packet.getWholeData(), packet.getFullSize());
totalLength -= packet.getFullSize(); totalLength -= packet.getFullSize();
position += packet.getFullSize(); position += packet.getFullSize();
status = returnvalue::OK; status = RETURN_OK;
} else { } else {
status = DATA_CORRUPTED; status = DATA_CORRUPTED;
totalLength = 0; totalLength = 0;
@ -110,7 +110,7 @@ ReturnValue_t MapPacketExtraction::unpackBlockingPackets(TcTransferFrame* frame)
ReturnValue_t MapPacketExtraction::sendCompletePacket(uint8_t* data, uint32_t size) { ReturnValue_t MapPacketExtraction::sendCompletePacket(uint8_t* data, uint32_t size) {
store_address_t store_id; store_address_t store_id;
ReturnValue_t status = this->packetStore->addData(&store_id, data, size); ReturnValue_t status = this->packetStore->addData(&store_id, data, size);
if (status == returnvalue::OK) { if (status == RETURN_OK) {
TmTcMessage message(store_id); TmTcMessage message(store_id);
status = MessageQueueSenderIF::sendMessage(tcQueueId, &message); status = MessageQueueSenderIF::sendMessage(tcQueueId, &message);
} }
@ -130,9 +130,9 @@ ReturnValue_t MapPacketExtraction::initialize() {
ObjectManager::instance()->get<AcceptsTelecommandsIF>(packetDestination); ObjectManager::instance()->get<AcceptsTelecommandsIF>(packetDestination);
if ((packetStore != NULL) && (distributor != NULL)) { if ((packetStore != NULL) && (distributor != NULL)) {
tcQueueId = distributor->getRequestQueue(); tcQueueId = distributor->getRequestQueue();
return returnvalue::OK; return RETURN_OK;
} else { } else {
return returnvalue::FAILED; return RETURN_FAILED;
} }
} }

@ -5,7 +5,7 @@
#include "dllConf.h" #include "dllConf.h"
#include "fsfw/ipc/MessageQueueSenderIF.h" #include "fsfw/ipc/MessageQueueSenderIF.h"
#include "fsfw/objectmanager/ObjectManagerIF.h" #include "fsfw/objectmanager/ObjectManagerIF.h"
#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
class StorageManagerIF; class StorageManagerIF;
@ -36,7 +36,7 @@ class MapPacketExtraction : public MapPacketExtractionIF {
* Method that is called if the segmentation flag is @c NO_SEGMENTATION. * Method that is called if the segmentation flag is @c NO_SEGMENTATION.
* The method extracts one or more packets within the frame and forwards them to the OBSW. * The method extracts one or more packets within the frame and forwards them to the OBSW.
* @param frame The TC Transfer Frame to work on. * @param frame The TC Transfer Frame to work on.
* @return @c returnvalue::OK if all Packets were extracted. If something is entirely wrong, * @return @c RETURN_OK if all Packets were extracted. If something is entirely wrong,
* @c DATA_CORRUPTED is returned, if some bytes are left over @c RESIDUAL_DATA. * @c DATA_CORRUPTED is returned, if some bytes are left over @c RESIDUAL_DATA.
*/ */
ReturnValue_t unpackBlockingPackets(TcTransferFrame* frame); ReturnValue_t unpackBlockingPackets(TcTransferFrame* frame);
@ -63,7 +63,7 @@ class MapPacketExtraction : public MapPacketExtractionIF {
ReturnValue_t extractPackets(TcTransferFrame* frame); ReturnValue_t extractPackets(TcTransferFrame* frame);
/** /**
* The #packetStore and the default destination of #tcQueue are initialized here. * The #packetStore and the default destination of #tcQueue are initialized here.
* @return @c returnvalue::OK on success, @c returnvalue::FAILED otherwise. * @return @c RETURN_OK on success, @c RETURN_FAILED otherwise.
*/ */
ReturnValue_t initialize(); ReturnValue_t initialize();
/** /**

@ -1,6 +1,6 @@
#include "fsfw/datalinklayer/TcTransferFrame.h" #include "fsfw/datalinklayer/TcTransferFrame.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface.h"
TcTransferFrame::TcTransferFrame() { frame = nullptr; } TcTransferFrame::TcTransferFrame() { frame = nullptr; }

Some files were not shown because too many files have changed in this diff Show More