Release v1.2.0 #47

Merged
meierj merged 229 commits from develop into master 2021-06-21 17:58:40 +02:00
202 changed files with 11366 additions and 3209 deletions

6
.dockerignore Normal file
View File

@ -0,0 +1,6 @@
/build*
generators
misc
tmtc
doc

13
.gitignore vendored
View File

@ -1,15 +1,9 @@
_obj
_bin
_dep
/build*
Debug
Debug*
Release
Release*
MinSizeRel
MinSizeRel*
RelWithDebInfo
RelWithDebInfo*
.settings
.metadata
@ -17,6 +11,9 @@ RelWithDebInfo*
.cproject
__pycache__
.idea
!misc/eclipse/**/.cproject
!misc/eclipse/**/.project
/eive_obsw cmake debug/
generators/*.db

8
.gitmodules vendored
View File

@ -15,7 +15,7 @@
url = https://github.com/rmspacefish/lwgps.git
[submodule "fsfw_hal"]
path = fsfw_hal
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw_hal.git
[submodule "generators/modgen"]
path = generators/modgen
url = https://git.ksat-stuttgart.de/source/modgen.git
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw-hal.git
[submodule "generators/fsfwgen"]
path = generators/fsfwgen
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw-generators.git

View File

@ -20,6 +20,10 @@ if(NOT OS_FSFW)
set(OS_FSFW host CACHE STRING "OS for the FSFW.")
endif()
if(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/beagleboneblack")
option(LINUX_CROSS_COMPILE ON)
endif()
# Perform steps like loading toolchain files where applicable.
include(${CMAKE_SCRIPT_PATH}/PreProjectConfig.cmake)
pre_project_config()
@ -50,6 +54,7 @@ set(MISSION_PATH mission)
set(TEST_PATH test/testtasks)
set(LINUX_PATH linux)
set(COMMON_PATH common)
set(COMMON_CONFIG_PATH ${COMMON_PATH}/config)
set(FSFW_HAL_LIB_PATH fsfw_hal)
set(CSP_LIB_PATH ${THIRD_PARTY_FOLDER}/libcsp)
@ -57,7 +62,7 @@ set(ETL_LIB_PATH ${THIRD_PARTY_FOLDER}/etl)
set(LWGPS_LIB_PATH ${THIRD_PARTY_FOLDER}/lwgps)
set(FSFW_WARNING_SHADOW_LOCAL_GCC OFF)
set(ADD_LINUX_FILES TRUE)
set(ADD_LINUX_FILES False)
# Analyse different OS and architecture/target options, determine BSP_PATH,
# display information about compiler etc.
@ -65,9 +70,10 @@ include (${CMAKE_SCRIPT_PATH}/HardwareOsPreConfig.cmake)
pre_source_hw_os_config()
if(TGT_BSP)
if(${TGT_BSP} MATCHES "arm/q7s" OR ${TGT_BSP} MATCHES "arm/raspberrypi")
set(ROOT_CONFIG_FOLDER TRUE)
set(FSFW_CONFIG_PATH "fsfwconfig")
if(${TGT_BSP} MATCHES "arm/q7s" OR ${TGT_BSP} MATCHES "arm/raspberrypi"
OR ${TGT_BSP} MATCHES "arm/beagleboneblack"
)
set(FSFW_CONFIG_PATH "linux/fsfwconfig")
set(ADD_LINUX_FILES TRUE)
set(ADD_CSP_LIB TRUE)
set(FSFW_HAL_ADD_LINUX ON)
@ -78,6 +84,10 @@ if(TGT_BSP)
set(FSFW_HAL_ADD_RASPBERRY_PI ON)
endif()
if(${TGT_BSP} MATCHES "arm/beagleboneblack")
add_definitions(-DBEAGLEBONEBLACK)
endif()
if(${TGT_BSP} MATCHES "arm/q7s")
add_definitions(-DXIPHOS_Q7S)
endif()
@ -85,6 +95,22 @@ else()
# Required by FSFW library
set(FSFW_CONFIG_PATH "${BSP_PATH}/fsfwconfig")
endif()
# Configuration files
configure_file(${COMMON_CONFIG_PATH}/commonConfig.h.in commonConfig.h)
configure_file(${FSFW_CONFIG_PATH}/FSFWConfig.h.in FSFWConfig.h)
configure_file(${FSFW_CONFIG_PATH}/OBSWConfig.h.in OBSWConfig.h)
if(${TGT_BSP} MATCHES "arm/q7s")
configure_file(${BSP_PATH}/boardconfig/q7sConfig.h.in q7sConfig.h)
elseif(${TGT_BSP} MATCHES "arm/raspberrypi")
configure_file(${BSP_PATH}/boardconfig/rpiConfig.h.in rpiConfig.h)
endif()
# Set common config path for FSFW
set(FSFW_ADDITIONAL_INC_PATHS
"${COMMON_PATH}/config"
${CMAKE_CURRENT_BINARY_DIR}
)
# Set for lwgps library
set(LWGPS_CONFIG_PATH "${COMMON_PATH}/config")
@ -95,11 +121,6 @@ set(LWGPS_CONFIG_PATH "${COMMON_PATH}/config")
# Add executable
add_executable(${TARGET_NAME})
# Add subdirectories
if(ROOT_CONFIG_FOLDER)
add_subdirectory(${FSFW_CONFIG_PATH})
endif()
if(ADD_CSP_LIB)
add_subdirectory(${CSP_LIB_PATH})
endif()
@ -150,6 +171,7 @@ endif()
target_include_directories(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${FSFW_CONFIG_PATH}
${CMAKE_CURRENT_BINARY_DIR}
)

109
README.md
View File

@ -33,9 +33,7 @@ The CMake build system can be used to generate build systems as well (see helper
### Installing Vivado the the Xilinx development tools
It's also possible to perform debugging with a normal Eclipse installation by installing
the TCF plugin. Still, it is necessary to install Vivado to get the toolchain for generating
C++ applications. Alternatively you can download the toolchain
[from the cloud](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Arbeitsdaten/08_Used%20Components/Q7S/Toolchain&fileid=422486).
the TCF plugin and downloading the cross-compiler as specified in the section below.
* Install Vivado 2018.2 and Xilinx SDK from https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html.
Install the Vivado Design Suite - HLx Editions - 2018.2 Full Product Installation instead of the updates. It is recommended to use the installer.
@ -53,6 +51,24 @@ C++ applications. Alternatively you can download the toolchain
`<XilinxInstallation>\SDK\2018.2\gnu\aarch32\nt\gcc-arm-linux-gnueabi\bin`
or set up path each time before debugging.
### Installing toolchain without Vivado
You can download the toolchains for Windows and Linux
[from the EIVE cloud](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files?dir=/EIVE_IRS/Software/tools&fileid=831898).
If `wget` is available (e.g. MinGW64), you can use the following command to download the
toolchain for Windows
```sh
wget https://eive-cloud.irs.uni-stuttgart.de/index.php/s/rfoaistRd67yBbH/download/gcc-arm-linux-gnueabi-win.zip
```
or the following command for Linux (could be useful for CI/CD)
```sh
wget https://eive-cloud.irs.uni-stuttgart.de/index.php/s/2Fp2ag6NGnbtAsK/download/gcc-arm-linux-gnueabi.tar.gz
```
### Installing CMake and MSYS2 on Windows
1. Install [MSYS2](https://www.msys2.org/) and [CMake](https://cmake.org/download/) first.
@ -89,7 +105,15 @@ C++ applications. Alternatively you can download the toolchain
## Getting the Q7S system root
It is necessary to copy the Q7S system root to your local development machine for libraries
like `libgpio`. You can find the system root [here](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Arbeitsdaten/08_Used%20Components/Q7S/Toolchain&fileid=422486). Download it and unzip it somewhere in the Xilinx installation folder.
like `libgpio`. You can find the system root for the Q7S, the Raspberry Pi and the
Beagle Bone Black for download here
[here](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Software/rootfs&fileid=831849).
Download it and unzip it somewhere in the Xilinx installation folder.
You can use the following command if `wget` can be used or for CI/CD:
```
wget https://eive-cloud.irs.uni-stuttgart.de/index.php/s/agnJGYeRf6fw2ci/download/cortexa9hf-neon-xiphos-linux-gnueabi.tar.gz
```
Then, create a new environmental variables `Q7S_SYSROOT` and set it to the local system root path.
@ -116,18 +140,30 @@ When using Windows, run theses steps in MSYS2.
or to set up the [PATH and the CROSS_COMPILE variable permanently](https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path)
in the `.profile` file.
4. Run the CMake configuration to create the build system in a `Debug` folder.
Navigate into the `eive_obsw` folder first.
4. Run the CMake configuration to create the build system in a `build-Debug-Q7S` folder.
Add `-G "MinGW Makefiles` in MinGW64 on Windows.
```sh
mkdir build-Debug-Q7S && cd build-Debug-Q7S
cmake -DTGT_BSP="arm/q7s" -DCMAKE_BUILD_TYPE=Debug -DOS_FSFW=linux ..
cmake --build . -j
```
You can also use provided shell scripts to perform these commands
```sh
cd cmake/scripts/Q7S
./create_cmake_debug.sh
cd ../../..
```
This will invoke a Python script which in turn invokes CMake with the correct
arguments to configure CMake for Q7S cross-compilation.
You can build the hosted variant of the OBSW by replacing `-DOS_FSFW=linux` with
`-DOS_FSFW=host`. There are also different values for `-DTGT_BSP` to build for the Raspberry Pi
or the Beagle Bone Black: `arm/raspberrypi` and `arm/beagleboneblack`.
5. Build the software with
```sh
cd Debug
@ -266,7 +302,7 @@ To transfer files from the local machine to the Q7S, use port forwarding
ssh -L 1535:192.168.133.10:22 eive@2001:7c0:2018:1099:babe:0:e1fe:f1a5
```
Then you can copy an `example` file like this
An `example` file can be copied like this
```sh
scp -P 1535 example root@localhost:/tmp
@ -277,7 +313,7 @@ Copying a file from Q7S to flatsat PC
scp -P 22 root@192.168.133.10:/tmp/kernel-config /tmp
````
From a windows machine files can be copied with putty tools
From a windows machine files can be copied with putty tools (note: use IPv4 address)
````
pscp -scp -P 22 eive@192.168.199.227:</directory-to-example-file/>/example-file </windows-machine-path/>
````
@ -529,6 +565,38 @@ GET out_en[0] = 1
* Local File Path: Path to eiveobsw-linux.elf (in _bin\linux\devel)
* Remote File Path: /tmp/eive_obsw.elf
## Running cppcheck on the Software
Static code analysis can be useful to find bugs.
`cppcheck` can be used for this purpose. On Windows you can use MinGW64 to do this.
```sh
pacman -S mingw-w64-x86_64-cppcheck
```
On Ubuntu, install with
```sh
sudo apt-get install cppcheck
```
You can use the Eclipse integration or you can perform the scanning manually from the command line.
CMake will be used for this.
Run the CMake build generation commands specified above but supply
`-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` to the build generation. Invoking the build command will
generate a `compile_commands.json` file which can be used by cppcheck.
```sh
cppcheck --project=compile_commands.json --xml 2> report.xml
```
Finally, you can convert the generated `.xml` file to HTML with the following command
```sh
cppcheck-htmlreport --file=report.xml --report-dir=cppcheck --source-dir=..
```
## Libgpiod
Detect all gpio device files:
@ -579,4 +647,23 @@ to install the required GPIO libraries before cloning the system root folder.
When using Eclipse, there are two special build variables in the project properties
&rarr; C/C++ Build &rarr; Build Variables called `Q7S_SYSROOT` or `RPI_SYSROOT`. You can set
the sysroot path in those variables to get any additional includes like `gpiod.h` in the
Eclipse indexer.
Eclipse indexer.
## Xilinx UARTLIE
Get info about ttyUL* devices
````
cat /proc/tty/driver
````
## I2C
Getting information about I2C device
````
ls /sys/class/i2c-dev/i2c-0/device/device/driver
````
This shows the memory mapping of /dev/i2c-0
## Useful Q7S Linux Commands
Rebooting currently running image:
````
xsc_boot_copy -r
````

21
bsp_hosted/Dockerfile Normal file
View File

@ -0,0 +1,21 @@
FROM ubuntu:latest
# FROM alpine:latest
ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && apt-get install -y cmake g++
# RUN apk add cmake make g++
WORKDIR /usr/src/app
COPY . .
RUN set -ex; \
rm -rf build-hosted; \
mkdir build-hosted; \
cd build-hosted; \
cmake -DCMAKE_BUILD_TYPE=Release -DOS_FSFW=linux ..;
ENTRYPOINT ["cmake", "--build", "build-hosted"]
CMD ["-j"]
# CMD ["bash"]

View File

@ -32,9 +32,9 @@ ObjectManagerIF *objectManager = nullptr;
void initmission::initMission() {
sif::info << "Building global objects.." << std::endl;
/* Instantiate global object manager and also create all objects */
objectManager = new ObjectManager(ObjectFactory::produce);
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
sif::info << "Initializing all objects.." << std::endl;
objectManager->initialize();
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();

View File

@ -14,7 +14,7 @@
#include <fsfw/osal/common/UdpTcPollingTask.h>
#include <fsfw/osal/common/UdpTmTcBridge.h>
#include <fsfw/tmtcpacket/pus/TmPacketStored.h>
#include <fsfw/tmtcpacket/pus/tm.h>
#if OBSW_ADD_TEST_CODE == 1
@ -33,16 +33,14 @@ void Factory::setStaticFrameworkObjectIds(){
TmFunnel::storageDestination = objects::NO_OBJECT;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
TmPacketStored::timeStamperId = objects::TIME_STAMPER;
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
}
void ObjectFactory::produce(){
void ObjectFactory::produce(void* args){
Factory::setStaticFrameworkObjectIds();
ObjectFactory::produceGenericObjects();
new UdpTmTcBridge(objects::UDP_BRIDGE,
objects::CCSDS_PACKET_DISTRIBUTOR,
objects::TM_STORE, objects::TC_STORE);
new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);
}

View File

@ -1,17 +1,10 @@
/*
* ObjectFactory.h
*
* Created on: Sep 22, 2020
* Author: steffen
*/
#ifndef BSP_LINUX_OBJECTFACTORY_H_
#define BSP_LINUX_OBJECTFACTORY_H_
namespace ObjectFactory {
void setStatics();
void produce();
void produce(void* args);
};
#endif /* BSP_LINUX_OBJECTFACTORY_H_ */

View File

@ -6,5 +6,16 @@ target_include_directories(${TARGET_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
# If a special translation file for object IDs exists, compile it.
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/objects/translateObjects.cpp")
target_sources(${TARGET_NAME} PRIVATE
objects/translateObjects.cpp
)
endif()
# If a special translation file for events exists, compile it.
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/objects/translateObjects.cpp")
target_sources(${TARGET_NAME} PRIVATE
events/translateEvents.cpp
)
endif()

View File

@ -7,18 +7,18 @@
//! Used to determine whether C++ ostreams are used which can increase
//! the binary size significantly. If this is disabled,
//! the C stdio functions can be used alternatively
#define FSFW_CPP_OSTREAM_ENABLED 1
#define FSFW_CPP_OSTREAM_ENABLED 1
//! More FSFW related printouts depending on level. Useful for development.
#define FSFW_VERBOSE_LEVEL 1
#define FSFW_VERBOSE_LEVEL 1
//! Can be used to completely disable printouts, even the C stdio ones.
#if FSFW_CPP_OSTREAM_ENABLED == 0 && FSFW_VERBOSE_LEVEL == 0
#define FSFW_DISABLE_PRINTOUT 0
#define FSFW_DISABLE_PRINTOUT 0
#endif
//! Can be used to disable the ANSI color sequences for C stdio.
#define FSFW_COLORED_OUTPUT 1
#define FSFW_USE_PUS_C_TELEMETRY 1
#define FSFW_USE_PUS_C_TELECOMMANDS 1
//! Can be used to disable the ANSI color sequences for C stdio.
#define FSFW_COLORED_OUTPUT 1
@ -26,7 +26,7 @@
//! If FSFW_OBJ_EVENT_TRANSLATION is set to one,
//! additional output which requires the translation files translateObjects
//! and translateEvents (and their compiled source files)
#define FSFW_OBJ_EVENT_TRANSLATION 0
#define FSFW_OBJ_EVENT_TRANSLATION 1
#if FSFW_OBJ_EVENT_TRANSLATION == 1
//! Specify whether info events are printed too.
@ -43,10 +43,17 @@
//! Specify whether a special mode store is used for Subsystem components.
#define FSFW_USE_MODESTORE 0
//! Defines if the real time scheduler for linux should be used.
//! If set to 0, this will also disable priority settings for linux
//! as most systems will not allow to set nice values without privileges
//! For embedded linux system set this to 1.
//! If set to 1 the binary needs "cap_sys_nice=eip" privileges to run
#define FSFW_USE_REALTIME_FOR_LINUX 0
namespace fsfwconfig {
//! Default timestamp size. The default timestamp will be an eight byte CDC
//! short timestamp.
static constexpr uint8_t FSFW_MISSION_TIMESTAMP_SIZE = 8;
//! Default timestamp size. The default timestamp will be an seven byte CDC short timestamp.
static constexpr uint8_t FSFW_MISSION_TIMESTAMP_SIZE = 7;
//! Configure the allocated pool sizes for the event manager.
static constexpr size_t FSFW_EVENTMGMR_MATCHTREE_NODES = 240;
@ -55,11 +62,14 @@ static constexpr size_t FSFW_EVENTMGMR_RANGEMATCHERS = 120;
//! Defines the FIFO depth of each commanding service base which
//! also determines how many commands a CSB service can handle in one cycle
//! simulataneously. This will increase the required RAM for
//! simultaneously. This will increase the required RAM for
//! each CSB service !
static constexpr uint8_t FSFW_CSB_FIFO_DEPTH = 6;
static constexpr size_t FSFW_PRINT_BUFFER_SIZE = 124;
static constexpr size_t FSFW_MAX_TM_PACKET_SIZE = 2048;
}
#endif /* CONFIG_FSFWCONFIG_H_ */

View File

@ -1,12 +0,0 @@
#ifndef FSFWCONFIG_OBSWVERSION_H_
#define FSFWCONFIG_OBSWVERSION_H_
const char* const SW_NAME = "eive";
#define SW_VERSION 1
#define SW_SUBVERSION 0
#define SW_SUBSUBVERSION 0
#endif /* FSFWCONFIG_OBSWVERSION_H_ */

View File

@ -1,7 +1,7 @@
#ifndef CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_
#define CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_
#include <fsfw/events/fwSubsystemIdRanges.h>
#include <common/config/commonSubsystemIds.h>
#include <cstdint>
/**
@ -10,17 +10,7 @@
*/
namespace SUBSYSTEM_ID {
enum: uint8_t {
SUBSYSTEM_ID_START = FW_SUBSYSTEM_ID_RANGE,
PUS_SERVICE_2,
PUS_SERVICE_3,
PUS_SERVICE_5,
PUS_SERVICE_6,
PUS_SERVICE_8,
PUS_SERVICE_23,
MGM_LIS3MDL,
MGM_RM3100,
DUMMY_DEVICE,
SUBSYSTEM_ID_START = COMMON_SUBSYSTEM_ID_END
};
}

View File

@ -0,0 +1,264 @@
/**
* @brief Auto-generated event translation file. Contains 83 translations.
* @details
* Generated on: 2021-05-17 19:49:55
*/
#include "translateEvents.h"
const char *STORE_SEND_WRITE_FAILED_STRING = "STORE_SEND_WRITE_FAILED";
const char *STORE_WRITE_FAILED_STRING = "STORE_WRITE_FAILED";
const char *STORE_SEND_READ_FAILED_STRING = "STORE_SEND_READ_FAILED";
const char *STORE_READ_FAILED_STRING = "STORE_READ_FAILED";
const char *UNEXPECTED_MSG_STRING = "UNEXPECTED_MSG";
const char *STORING_FAILED_STRING = "STORING_FAILED";
const char *TM_DUMP_FAILED_STRING = "TM_DUMP_FAILED";
const char *STORE_INIT_FAILED_STRING = "STORE_INIT_FAILED";
const char *STORE_INIT_EMPTY_STRING = "STORE_INIT_EMPTY";
const char *STORE_CONTENT_CORRUPTED_STRING = "STORE_CONTENT_CORRUPTED";
const char *STORE_INITIALIZE_STRING = "STORE_INITIALIZE";
const char *INIT_DONE_STRING = "INIT_DONE";
const char *DUMP_FINISHED_STRING = "DUMP_FINISHED";
const char *DELETION_FINISHED_STRING = "DELETION_FINISHED";
const char *DELETION_FAILED_STRING = "DELETION_FAILED";
const char *AUTO_CATALOGS_SENDING_FAILED_STRING = "AUTO_CATALOGS_SENDING_FAILED";
const char *GET_DATA_FAILED_STRING = "GET_DATA_FAILED";
const char *STORE_DATA_FAILED_STRING = "STORE_DATA_FAILED";
const char *DEVICE_BUILDING_COMMAND_FAILED_STRING = "DEVICE_BUILDING_COMMAND_FAILED";
const char *DEVICE_SENDING_COMMAND_FAILED_STRING = "DEVICE_SENDING_COMMAND_FAILED";
const char *DEVICE_REQUESTING_REPLY_FAILED_STRING = "DEVICE_REQUESTING_REPLY_FAILED";
const char *DEVICE_READING_REPLY_FAILED_STRING = "DEVICE_READING_REPLY_FAILED";
const char *DEVICE_INTERPRETING_REPLY_FAILED_STRING = "DEVICE_INTERPRETING_REPLY_FAILED";
const char *DEVICE_MISSED_REPLY_STRING = "DEVICE_MISSED_REPLY";
const char *DEVICE_UNKNOWN_REPLY_STRING = "DEVICE_UNKNOWN_REPLY";
const char *DEVICE_UNREQUESTED_REPLY_STRING = "DEVICE_UNREQUESTED_REPLY";
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
const char *POWER_BELOW_LOW_LIMIT_STRING = "POWER_BELOW_LOW_LIMIT";
const char *SWITCH_WENT_OFF_STRING = "SWITCH_WENT_OFF";
const char *HEATER_ON_STRING = "HEATER_ON";
const char *HEATER_OFF_STRING = "HEATER_OFF";
const char *HEATER_TIMEOUT_STRING = "HEATER_TIMEOUT";
const char *HEATER_STAYED_ON_STRING = "HEATER_STAYED_ON";
const char *HEATER_STAYED_OFF_STRING = "HEATER_STAYED_OFF";
const char *TEMP_SENSOR_HIGH_STRING = "TEMP_SENSOR_HIGH";
const char *TEMP_SENSOR_LOW_STRING = "TEMP_SENSOR_LOW";
const char *TEMP_SENSOR_GRADIENT_STRING = "TEMP_SENSOR_GRADIENT";
const char *COMPONENT_TEMP_LOW_STRING = "COMPONENT_TEMP_LOW";
const char *COMPONENT_TEMP_HIGH_STRING = "COMPONENT_TEMP_HIGH";
const char *COMPONENT_TEMP_OOL_LOW_STRING = "COMPONENT_TEMP_OOL_LOW";
const char *COMPONENT_TEMP_OOL_HIGH_STRING = "COMPONENT_TEMP_OOL_HIGH";
const char *TEMP_NOT_IN_OP_RANGE_STRING = "TEMP_NOT_IN_OP_RANGE";
const char *FDIR_CHANGED_STATE_STRING = "FDIR_CHANGED_STATE";
const char *FDIR_STARTS_RECOVERY_STRING = "FDIR_STARTS_RECOVERY";
const char *FDIR_TURNS_OFF_DEVICE_STRING = "FDIR_TURNS_OFF_DEVICE";
const char *MONITOR_CHANGED_STATE_STRING = "MONITOR_CHANGED_STATE";
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
const char *SWITCHING_TM_FAILED_STRING = "SWITCHING_TM_FAILED";
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
const char *MODE_INFO_STRING = "MODE_INFO";
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
const char *MODE_TRANSITION_FAILED_STRING = "MODE_TRANSITION_FAILED";
const char *CANT_KEEP_MODE_STRING = "CANT_KEEP_MODE";
const char *OBJECT_IN_INVALID_MODE_STRING = "OBJECT_IN_INVALID_MODE";
const char *FORCING_MODE_STRING = "FORCING_MODE";
const char *MODE_CMD_REJECTED_STRING = "MODE_CMD_REJECTED";
const char *HEALTH_INFO_STRING = "HEALTH_INFO";
const char *CHILD_CHANGED_HEALTH_STRING = "CHILD_CHANGED_HEALTH";
const char *CHILD_PROBLEMS_STRING = "CHILD_PROBLEMS";
const char *OVERWRITING_HEALTH_STRING = "OVERWRITING_HEALTH";
const char *TRYING_RECOVERY_STRING = "TRYING_RECOVERY";
const char *RECOVERY_STEP_STRING = "RECOVERY_STEP";
const char *RECOVERY_DONE_STRING = "RECOVERY_DONE";
const char *RF_AVAILABLE_STRING = "RF_AVAILABLE";
const char *RF_LOST_STRING = "RF_LOST";
const char *BIT_LOCK_STRING = "BIT_LOCK";
const char *BIT_LOCK_LOST_STRING = "BIT_LOCK_LOST";
const char *FRAME_PROCESSING_FAILED_STRING = "FRAME_PROCESSING_FAILED";
const char *CLOCK_SET_STRING = "CLOCK_SET";
const char *CLOCK_SET_FAILURE_STRING = "CLOCK_SET_FAILURE";
const char *TEST_STRING = "TEST";
const char *CHANGE_OF_SETUP_PARAMETER_STRING = "CHANGE_OF_SETUP_PARAMETER";
const char *MEMORY_READ_RPT_CRC_FAILURE_STRING = "MEMORY_READ_RPT_CRC_FAILURE";
const char *ACK_FAILURE_STRING = "ACK_FAILURE";
const char *EXE_FAILURE_STRING = "EXE_FAILURE";
const char *CRC_FAILURE_EVENT_STRING = "CRC_FAILURE_EVENT";
const char * translateEvents(Event event) {
switch( (event & 0xffff) ) {
case(2200):
return STORE_SEND_WRITE_FAILED_STRING;
case(2201):
return STORE_WRITE_FAILED_STRING;
case(2202):
return STORE_SEND_READ_FAILED_STRING;
case(2203):
return STORE_READ_FAILED_STRING;
case(2204):
return UNEXPECTED_MSG_STRING;
case(2205):
return STORING_FAILED_STRING;
case(2206):
return TM_DUMP_FAILED_STRING;
case(2207):
return STORE_INIT_FAILED_STRING;
case(2208):
return STORE_INIT_EMPTY_STRING;
case(2209):
return STORE_CONTENT_CORRUPTED_STRING;
case(2210):
return STORE_INITIALIZE_STRING;
case(2211):
return INIT_DONE_STRING;
case(2212):
return DUMP_FINISHED_STRING;
case(2213):
return DELETION_FINISHED_STRING;
case(2214):
return DELETION_FAILED_STRING;
case(2215):
return AUTO_CATALOGS_SENDING_FAILED_STRING;
case(2600):
return GET_DATA_FAILED_STRING;
case(2601):
return STORE_DATA_FAILED_STRING;
case(2800):
return DEVICE_BUILDING_COMMAND_FAILED_STRING;
case(2801):
return DEVICE_SENDING_COMMAND_FAILED_STRING;
case(2802):
return DEVICE_REQUESTING_REPLY_FAILED_STRING;
case(2803):
return DEVICE_READING_REPLY_FAILED_STRING;
case(2804):
return DEVICE_INTERPRETING_REPLY_FAILED_STRING;
case(2805):
return DEVICE_MISSED_REPLY_STRING;
case(2806):
return DEVICE_UNKNOWN_REPLY_STRING;
case(2807):
return DEVICE_UNREQUESTED_REPLY_STRING;
case(2808):
return INVALID_DEVICE_COMMAND_STRING;
case(2809):
return MONITORING_LIMIT_EXCEEDED_STRING;
case(2810):
return MONITORING_AMBIGUOUS_STRING;
case(4201):
return FUSE_CURRENT_HIGH_STRING;
case(4202):
return FUSE_WENT_OFF_STRING;
case(4204):
return POWER_ABOVE_HIGH_LIMIT_STRING;
case(4205):
return POWER_BELOW_LOW_LIMIT_STRING;
case(4300):
return SWITCH_WENT_OFF_STRING;
case(5000):
return HEATER_ON_STRING;
case(5001):
return HEATER_OFF_STRING;
case(5002):
return HEATER_TIMEOUT_STRING;
case(5003):
return HEATER_STAYED_ON_STRING;
case(5004):
return HEATER_STAYED_OFF_STRING;
case(5200):
return TEMP_SENSOR_HIGH_STRING;
case(5201):
return TEMP_SENSOR_LOW_STRING;
case(5202):
return TEMP_SENSOR_GRADIENT_STRING;
case(5901):
return COMPONENT_TEMP_LOW_STRING;
case(5902):
return COMPONENT_TEMP_HIGH_STRING;
case(5903):
return COMPONENT_TEMP_OOL_LOW_STRING;
case(5904):
return COMPONENT_TEMP_OOL_HIGH_STRING;
case(5905):
return TEMP_NOT_IN_OP_RANGE_STRING;
case(7101):
return FDIR_CHANGED_STATE_STRING;
case(7102):
return FDIR_STARTS_RECOVERY_STRING;
case(7103):
return FDIR_TURNS_OFF_DEVICE_STRING;
case(7201):
return MONITOR_CHANGED_STATE_STRING;
case(7202):
return VALUE_BELOW_LOW_LIMIT_STRING;
case(7203):
return VALUE_ABOVE_HIGH_LIMIT_STRING;
case(7204):
return VALUE_OUT_OF_RANGE_STRING;
case(7301):
return SWITCHING_TM_FAILED_STRING;
case(7400):
return CHANGING_MODE_STRING;
case(7401):
return MODE_INFO_STRING;
case(7402):
return FALLBACK_FAILED_STRING;
case(7403):
return MODE_TRANSITION_FAILED_STRING;
case(7404):
return CANT_KEEP_MODE_STRING;
case(7405):
return OBJECT_IN_INVALID_MODE_STRING;
case(7406):
return FORCING_MODE_STRING;
case(7407):
return MODE_CMD_REJECTED_STRING;
case(7506):
return HEALTH_INFO_STRING;
case(7507):
return CHILD_CHANGED_HEALTH_STRING;
case(7508):
return CHILD_PROBLEMS_STRING;
case(7509):
return OVERWRITING_HEALTH_STRING;
case(7510):
return TRYING_RECOVERY_STRING;
case(7511):
return RECOVERY_STEP_STRING;
case(7512):
return RECOVERY_DONE_STRING;
case(7900):
return RF_AVAILABLE_STRING;
case(7901):
return RF_LOST_STRING;
case(7902):
return BIT_LOCK_STRING;
case(7903):
return BIT_LOCK_LOST_STRING;
case(7905):
return FRAME_PROCESSING_FAILED_STRING;
case(8900):
return CLOCK_SET_STRING;
case(8901):
return CLOCK_SET_FAILURE_STRING;
case(9700):
return TEST_STRING;
case(10600):
return CHANGE_OF_SETUP_PARAMETER_STRING;
case(11101):
return MEMORY_READ_RPT_CRC_FAILURE_STRING;
case(11102):
return ACK_FAILURE_STRING;
case(11103):
return EXE_FAILURE_STRING;
case(11104):
return CRC_FAILURE_EVENT_STRING;
default:
return "UNKNOWN_EVENT";
}
return 0;
}

View File

@ -1,10 +1,3 @@
/*
* translateEvent.h
*
* Created on: 28 May 2019
* Author: Robin
*/
#ifndef FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_
#define FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_
@ -12,5 +5,4 @@
const char * translateEvents(Event event);
#endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */

View File

@ -2,15 +2,11 @@
#define HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#include <cstdint>
#include <commonObjects.h>
// The objects will be instantiated in the ID order
namespace objects {
enum sourceObjects: uint32_t {
/* First Byte 0x50-0x52 reserved for PUS Services **/
CCSDS_PACKET_DISTRIBUTOR = 0x50000100,
PUS_PACKET_DISTRIBUTOR = 0x50000200,
UDP_BRIDGE = 0x50000300,
UDP_POLLING_TASK = 0x50000400,
PUS_SERVICE_3 = 0x51000300,
PUS_SERVICE_5 = 0x51000400,
@ -27,21 +23,6 @@ namespace objects {
DUMMY_INTERFACE = 0xCAFECAFE,
DUMMY_HANDLER = 0x4400AFFE,
/* 0x44 ('D') for device handlers */
P60DOCK_HANDLER = 0x44000001,
PDU1_HANDLER = 0x44000002,
PDU2_HANDLER = 0x44000003,
ACU_HANDLER = 0x44000004,
TMP1075_HANDLER_1 = 0x44000005,
TMP1075_HANDLER_2 = 0x44000006,
MGM_0_LIS3_HANDLER = 0x4400007,
MGM_1_RM3100_HANDLER = 0x44000008,
MGM_2_LIS3_HANDLER = 0x44000009,
MGM_3_RM3100_HANDLER = 0x44000010,
GYRO_0_ADIS_HANDLER = 0x44000011,
GYRO_1_L3G_HANDLER = 0x44000012,
GYRO_2_L3G_HANDLER = 0x44000013,
/* 0x49 ('I') for Communication Interfaces **/
ARDUINO_COM_IF = 0x49000001
};

View File

@ -0,0 +1,109 @@
/**
* @brief Auto-generated object translation file.
* @details
* Contains 31 translations.
* Generated on: 2021-05-17 19:12:49
*/
#include "translateObjects.h"
const char *TEST_TASK_STRING = "TEST_TASK";
const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER";
const char *ARDUINO_COM_IF_STRING = "ARDUINO_COM_IF";
const char *PUS_SERVICE_3_STRING = "PUS_SERVICE_3";
const char *PUS_SERVICE_5_STRING = "PUS_SERVICE_5";
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
const char *PUS_SERVICE_8_STRING = "PUS_SERVICE_8";
const char *PUS_SERVICE_23_STRING = "PUS_SERVICE_23";
const char *PUS_SERVICE_201_STRING = "PUS_SERVICE_201";
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
const char *FSFW_OBJECTS_START_STRING = "FSFW_OBJECTS_START";
const char *PUS_SERVICE_1_VERIFICATION_STRING = "PUS_SERVICE_1_VERIFICATION";
const char *PUS_SERVICE_2_DEVICE_ACCESS_STRING = "PUS_SERVICE_2_DEVICE_ACCESS";
const char *PUS_SERVICE_3_HOUSEKEEPING_STRING = "PUS_SERVICE_3_HOUSEKEEPING";
const char *PUS_SERVICE_5_EVENT_REPORTING_STRING = "PUS_SERVICE_5_EVENT_REPORTING";
const char *PUS_SERVICE_8_FUNCTION_MGMT_STRING = "PUS_SERVICE_8_FUNCTION_MGMT";
const char *PUS_SERVICE_9_TIME_MGMT_STRING = "PUS_SERVICE_9_TIME_MGMT";
const char *PUS_SERVICE_17_TEST_STRING = "PUS_SERVICE_17_TEST";
const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS";
const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT";
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
const char *MODE_STORE_STRING = "MODE_STORE";
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
const char *INTERNAL_ERROR_REPORTER_STRING = "INTERNAL_ERROR_REPORTER";
const char *TC_STORE_STRING = "TC_STORE";
const char *TM_STORE_STRING = "TM_STORE";
const char *IPC_STORE_STRING = "IPC_STORE";
const char *TIME_STAMPER_STRING = "TIME_STAMPER";
const char *FSFW_OBJECTS_END_STRING = "FSFW_OBJECTS_END";
const char *DUMMY_INTERFACE_STRING = "DUMMY_INTERFACE";
const char *NO_OBJECT_STRING = "NO_OBJECT";
const char* translateObject(object_id_t object) {
switch( (object & 0xFFFFFFFF) ) {
case 0x42694269:
return TEST_TASK_STRING;
case 0x4400AFFE:
return DUMMY_HANDLER_STRING;
case 0x49000001:
return ARDUINO_COM_IF_STRING;
case 0x51000300:
return PUS_SERVICE_3_STRING;
case 0x51000400:
return PUS_SERVICE_5_STRING;
case 0x51000500:
return PUS_SERVICE_6_STRING;
case 0x51000800:
return PUS_SERVICE_8_STRING;
case 0x51002300:
return PUS_SERVICE_23_STRING;
case 0x51020100:
return PUS_SERVICE_201_STRING;
case 0x52000002:
return TM_FUNNEL_STRING;
case 0x53000000:
return FSFW_OBJECTS_START_STRING;
case 0x53000001:
return PUS_SERVICE_1_VERIFICATION_STRING;
case 0x53000002:
return PUS_SERVICE_2_DEVICE_ACCESS_STRING;
case 0x53000003:
return PUS_SERVICE_3_HOUSEKEEPING_STRING;
case 0x53000005:
return PUS_SERVICE_5_EVENT_REPORTING_STRING;
case 0x53000008:
return PUS_SERVICE_8_FUNCTION_MGMT_STRING;
case 0x53000009:
return PUS_SERVICE_9_TIME_MGMT_STRING;
case 0x53000017:
return PUS_SERVICE_17_TEST_STRING;
case 0x53000020:
return PUS_SERVICE_20_PARAMETERS_STRING;
case 0x53000200:
return PUS_SERVICE_200_MODE_MGMT_STRING;
case 0x53010000:
return HEALTH_TABLE_STRING;
case 0x53010100:
return MODE_STORE_STRING;
case 0x53030000:
return EVENT_MANAGER_STRING;
case 0x53040000:
return INTERNAL_ERROR_REPORTER_STRING;
case 0x534f0100:
return TC_STORE_STRING;
case 0x534f0200:
return TM_STORE_STRING;
case 0x534f0300:
return IPC_STORE_STRING;
case 0x53500010:
return TIME_STAMPER_STRING;
case 0x53ffffff:
return FSFW_OBJECTS_END_STRING;
case 0xCAFECAFE:
return DUMMY_INTERFACE_STRING;
case 0xFFFFFFFF:
return NO_OBJECT_STRING;
default:
return "UNKNOWN_OBJECT";
}
return 0;
}

View File

@ -1,16 +1,8 @@
/*
* translateObjects.h
*
* Created on: 28 May 2019
* Author: Robin
*/
#ifndef FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_
#define FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/objectmanager/SystemObjectIF.h>
const char* translateObject(object_id_t object);
#endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */

View File

@ -1,6 +1,7 @@
#ifndef CONFIG_RETURNVALUES_CLASSIDS_H_
#define CONFIG_RETURNVALUES_CLASSIDS_H_
#include "commonClassIds.h"
#include <fsfw/returnvalues/FwClassIds.h>
/**
@ -10,9 +11,7 @@
*/
namespace CLASS_ID {
enum {
MISSION_CLASS_ID_START = FW_CLASS_ID_COUNT,
MGM_LIS3MDL,
MGM_RM3100
CLASS_ID_START = COMMON_CLASS_ID_END,
};
}

View File

@ -6,9 +6,3 @@ target_sources(${TARGET_NAME} PUBLIC
add_subdirectory(boardconfig)
add_subdirectory(boardtest)
add_subdirectory(gpio)

View File

@ -0,0 +1,37 @@
FROM ubuntu:latest
# FROM alpine:latest
RUN apt-get update && apt-get install -y curl wget cmake g++
# Raspberry Pi rootfs
RUN mkdir -p /usr/rootfs; \
curl https://eive-cloud.irs.uni-stuttgart.de/index.php/s/kJe3nCnGPRGKFCz/download/rpi-rootfs.tar.gz /usr/rootfs \
| tar xvz -C /usr/rootfs
# Raspberry Pi toolchain
RUN mkdir -p /opt; \
cd /opt; \
wget https://github.com/Pro/raspi-toolchain/releases/latest/download/raspi-toolchain.tar.gz; \
tar xfz raspi-toolchain.tar.gz --strip-components=1 -C .; \
rm -rf raspi-toolchain.tar.gz
# RUN apk add cmake make g++
# Required for cmake build
ENV RASPBERRY_VERSION="4"
ENV RASPBIAN_ROOTFS="/usr/rootfs/rootfs"
ENV PATH=$PATH:"/opt/cross-pi-gcc/bin"
ENV CROSS_COMPILE="arm-linux-gnueabihf"
WORKDIR /usr/src/app
COPY . .
RUN set -ex; \
rm -rf build-rpi; \
mkdir build-rpi; \
cd build-rpi; \
cmake -DCMAKE_BUILD_TYPE=Release -DOS_FSFW=linux -DTGT_BSP="arm/raspberrypi" ..;
ENTRYPOINT ["cmake", "--build", "build-rpi"]
CMD ["-j"]
# CMD ["bash"]

View File

@ -1,9 +1,9 @@
#include "InitMission.h"
#include "ObjectFactory.h"
#include <fsfwconfig/objects/systemObjectList.h>
#include <fsfwconfig/OBSWConfig.h>
#include <fsfwconfig/pollingsequence/pollingSequenceFactory.h>
#include "objects/systemObjectList.h"
#include "OBSWConfig.h"
#include "pollingsequence/pollingSequenceFactory.h"
#include <mission/utility/InitMission.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
@ -26,9 +26,9 @@ ObjectManagerIF *objectManager = nullptr;
void initmission::initMission() {
sif::info << "Building global objects.." << std::endl;
/* Instantiate global object manager and also create all objects */
objectManager = new ObjectManager(ObjectFactory::produce);
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
sif::info << "Initializing all objects.." << std::endl;
objectManager->initialize();
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();
@ -117,6 +117,10 @@ void initmission::initTasks() {
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING);
}
PeriodicTaskIF* pusLowPrio = factory->createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
@ -124,11 +128,16 @@ void initmission::initTasks() {
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST);
}
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("INT_ERR_RPRT",
objects::INTERNAL_ERROR_REPORTER);
}
#if RPI_TEST_ACS_BOARD == 1
FixedTimeslotTaskIF* acsTask = factory->createFixedTimeslotTask(
#if OBSW_ADD_TEST_PST == 1
FixedTimeslotTaskIF* pstTestTask = factory->createFixedTimeslotTask(
"ACS_PST", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 2.0, missedDeadlineFunc);
result = pst::pollingSequenceAcsTest(acsTask);
result = pst::pollingSequenceTest(pstTestTask);
if(result != HasReturnvaluesIF::RETURN_OK) {
sif::warning << "initmission::initTasks: ACS PST initialization failed!" << std::endl;
}
@ -154,6 +163,12 @@ void initmission::initTasks() {
initmission::printAddObjectError("GPIOD_TEST", objects::LIBGPIOD_TEST);
}
#endif /* RPI_ADD_GPIO_TEST == 1 */
#if RPI_ADD_UART_TEST == 1
result = testTask->addComponent(objects::UART_TEST);
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("UART_TEST", objects::UART_TEST);
}
#endif /* RPI_ADD_GPIO_TEST == 1 */
sif::info << "Starting tasks.." << std::endl;
tmTcDistributor->startTask();
@ -170,8 +185,8 @@ void initmission::initTasks() {
testTask->startTask();
#endif /* OBSW_ADD_TEST_CODE == 1 */
#if RPI_TEST_ACS_BOARD == 1
acsTask->startTask();
#if OBSW_ADD_TEST_PST == 1
pstTestTask->startTask();
#endif /* RPI_TEST_ACS_BOARD == 1 */
sif::info << "Tasks started.." << std::endl;
}

View File

@ -0,0 +1,149 @@
#include "ObjectFactory.h"
#include "objects/systemObjectList.h"
#include "devices/addresses.h"
#include "devices/gpioIds.h"
#include "OBSWConfig.h"
#include "tmtc/apid.h"
#include "tmtc/pusIds.h"
#include "spiConf.h"
#include "linux/boardtest/LibgpiodTest.h"
#include "linux/boardtest/SpiTestClass.h"
#include "linux/boardtest/UartTestClass.h"
#include "mission/core/GenericFactory.h"
#include "mission/utility/TmFunnel.h"
#include "mission/devices/MGMHandlerLIS3MDL.h"
#include "mission/devices/MGMHandlerRM3100.h"
#include "mission/devices/GyroADIS16507Handler.h"
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
#include "fsfw/tmtcservices/CommandingServiceBase.h"
#include "fsfw/tmtcservices/PusServiceBase.h"
#include "fsfw/tmtcpacket/pus/tm.h"
#include "fsfw/tasks/TaskFactory.h"
/* UDP server includes */
#include "fsfw/osal/common/UdpTmTcBridge.h"
#include "fsfw/osal/common/UdpTcPollingTask.h"
#include "fsfw_hal/devicehandlers/GyroL3GD20Handler.h"
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
#include "fsfw_hal/linux/rpi/GpioRPi.h"
#include "fsfw_hal/common/gpio/GpioCookie.h"
#include "fsfw_hal/linux/spi/SpiCookie.h"
#include "fsfw_hal/linux/spi/SpiComIF.h"
void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::packetDestination = objects::TM_FUNNEL;
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
TmFunnel::downlinkDestination = objects::UDP_BRIDGE;
// No storage object for now.
TmFunnel::storageDestination = objects::NO_OBJECT;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
}
void ObjectFactory::produce(void* args){
Factory::setStaticFrameworkObjectIds();
ObjectFactory::produceGenericObjects();
new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);
GpioIF* gpioIF = new LinuxLibgpioIF(objects::GPIO_IF);
GpioCookie* gpioCookie = nullptr;
static_cast<void>(gpioCookie);
#if RPI_ADD_SPI_TEST == 1
new SpiTestClass(objects::SPI_TEST, gpioIF);
#endif
#if RPI_ADD_UART_TEST == 1
new UartTestClass(objects::UART_TEST);
#endif
#if RPI_LOOPBACK_TEST_GPIO == 1
GpioCookie* gpioCookieLoopback = new GpioCookie();
/* Loopback pins. Adapt according to setup */
gpioId_t gpioIdSender = gpioIds::TEST_ID_0;
int bcmPinSender = 26;
gpioId_t gpioIdReader = gpioIds::TEST_ID_1;
int bcmPinReader = 16;
gpio::createRpiGpioConfig(gpioCookieLoopback, gpioIdSender, bcmPinSender, "GPIO_LB_SENDER",
gpio::Direction::OUT, 0);
gpio::createRpiGpioConfig(gpioCookieLoopback, gpioIdReader, bcmPinReader, "GPIO_LB_READER",
gpio::Direction::IN, 0);
new LibgpiodTest(objects::LIBGPIOD_TEST, objects::GPIO_IF, gpioCookieLoopback);
#endif /* RPI_LOOPBACK_TEST_GPIO == 1 */
new SpiComIF(objects::SPI_COM_IF, gpioIF);
std::string spiDev;
SpiCookie* spiCookie = nullptr;
static_cast<void>(spiCookie);
#if RPI_TEST_ACS_BOARD == 1
if(gpioCookie == nullptr) {
gpioCookie = new GpioCookie();
}
gpio::createRpiGpioConfig(gpioCookie, gpioIds::MGM_0_LIS3_CS, gpio::MGM_0_BCM_PIN,
"MGM_0_LIS3", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookie, gpioIds::MGM_1_RM3100_CS, gpio::MGM_1_BCM_PIN,
"MGM_1_RM3100", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookie, gpioIds::MGM_2_LIS3_CS, gpio::MGM_2_BCM_PIN,
"MGM_2_LIS3", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookie, gpioIds::MGM_3_RM3100_CS, gpio::MGM_3_BCM_PIN,
"MGM_3_RM3100", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookie, gpioIds::GYRO_0_ADIS_CS, gpio::GYRO_0_BCM_PIN,
"GYRO_0_ADIS", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookie, gpioIds::GYRO_1_L3G_CS, gpio::GYRO_1_BCM_PIN,
"GYRO_1_L3G", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookie, gpioIds::GYRO_2_L3G_CS, gpio::GYRO_2_BCM_PIN,
"GYRO_2_L3G", gpio::Direction::OUT, 1);
gpioIF->addGpios(gpioCookie);
spiDev = "/dev/spidev0.0";
spiCookie = new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
auto mgmLis3Handler = new MGMHandlerLIS3MDL(objects::MGM_0_LIS3_HANDLER,
objects::SPI_COM_IF, spiCookie);
mgmLis3Handler->setStartUpImmediately();
spiCookie = new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
auto mgmRm3100Handler = new MGMHandlerRM3100(objects::MGM_1_RM3100_HANDLER,
objects::SPI_COM_IF, spiCookie);
mgmRm3100Handler->setStartUpImmediately();
spiCookie = new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev,
L3GD20H::MAX_BUFFER_SIZE, spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF,
spiCookie);
gyroL3gHandler->setStartUpImmediately();
#endif /* RPI_TEST_ACS_BOARD == 1 */
#if RPI_TEST_ADIS16507 == 1
if(gpioCookie == nullptr) {
gpioCookie = new GpioCookie();
}
gpio::createRpiGpioConfig(gpioCookie, gpioIds::GYRO_0_ADIS_CS, gpio::GYRO_0_BCM_PIN,
"GYRO_0_ADIS", gpio::Direction::OUT, 1);
gpioIF->addGpios(gpioCookie);
spiDev = "/dev/spidev0.0";
spiCookie = new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, spiDev,
ADIS16507::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE, spi::DEFAULT_ADIS16507_SPEED,
nullptr, nullptr);
auto adisGyroHandler = new GyroADIS16507Handler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_COM_IF, spiCookie);
adisGyroHandler->setStartUpImmediately();
#endif /* RPI_TEST_ADIS16507 == 1 */
}

View File

@ -1,17 +1,10 @@
/*
* ObjectFactory.h
*
* Created on: Sep 22, 2020
* Author: steffen
*/
#ifndef BSP_LINUX_OBJECTFACTORY_H_
#define BSP_LINUX_OBJECTFACTORY_H_
namespace ObjectFactory {
void setStatics();
void produce();
void produce(void* args);
};
#endif /* BSP_LINUX_OBJECTFACTORY_H_ */

View File

@ -5,6 +5,3 @@ target_sources(${TARGET_NAME} PRIVATE
target_include_directories(${TARGET_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)

View File

@ -6,9 +6,18 @@
#define RPI_ADD_GPIO_TEST 0
#define RPI_LOOPBACK_TEST_GPIO 0
/* Only one of those 2 should be enabled! */
#define RPI_TEST_ADIS16507 0
// Only one of those 2 should be enabled!
#define RPI_ADD_SPI_TEST 0
#if RPI_ADD_SPI_TEST == 0
#define RPI_TEST_ACS_BOARD 0
#endif
#define RPI_ADD_UART_TEST 1
#if RPI_ADD_UART_TEST == 1
#define RPI_TEST_GPS_DEVICE 0
#endif
/* Adapt these values accordingly */
namespace gpio {

View File

@ -5,6 +5,14 @@
#include <iostream>
#ifdef RASPBERRY_PI
static const char* const BOARD_NAME = "Raspberry Pi";
#elif defined(BEAGLEBONEBLACK)
static const char* const BOARD_NAME = "Beaglebone Black";
#else
static const char* const BOARD_NAME = "Unknown Board";
#endif
/**
* @brief This is the main program and entry point for the Raspberry Pi.
* @return
@ -12,7 +20,7 @@
int main(void)
{
std::cout << "-- EIVE OBSW --" << std::endl;
std::cout << "-- Compiled for Linux (Raspberry Pi) --" << std::endl;
std::cout << "-- Compiled for Linux board " << BOARD_NAME << " --" << std::endl;
std::cout << "-- Software version " << SW_NAME << " v" << SW_VERSION << "."
<< SW_SUBVERSION << "." << SW_SUBSUBVERSION << " -- " << std::endl;
std::cout << "-- " << __DATE__ << " " << __TIME__ << " --" << std::endl;

View File

@ -6,9 +6,6 @@ target_sources(${TARGET_NAME} PUBLIC
add_subdirectory(boardconfig)
add_subdirectory(comIF)
add_subdirectory(devices)
add_subdirectory(boardtest)
add_subdirectory(gpio)
add_subdirectory(core)

35
bsp_q7s/Dockerfile Normal file
View File

@ -0,0 +1,35 @@
FROM ubuntu:latest
# FROM alpine:latest
ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && apt-get install -y curl cmake g++
# Q7S root filesystem, required for cross-compilation. Use IPv6 for curl
RUN mkdir -p /usr/rootfs; \
curl -6 https://eive-cloud.irs.uni-stuttgart.de/index.php/s/dnfMy9kGpgynN6J/download/cortexa9hf-neon-xiphos-linux-gnueabi.tar.gz \
| tar xvz -C /usr/rootfs
# Q7S C++ cross-compiler. Use IPv6 for curl
RUN mkdir -p /usr/tools; \
curl -6 https://eive-cloud.irs.uni-stuttgart.de/index.php/s/RMsbHydJc6PSqcz/download/gcc-arm-linux-gnueabi.tar.gz \
| tar xvz -C /usr/tools
# RUN apk add cmake make g++
# Required for cmake build
ENV Q7S_SYSROOT="/usr/rootfs/cortexa9hf-neon-xiphos-linux-gnueabi"
ENV PATH=$PATH:"/usr/tools/gcc-arm-linux-gnueabi/bin"
WORKDIR /usr/src/app
COPY . .
RUN set -ex; \
rm -rf build-q7s; \
mkdir build-q7s; \
cd build-q7s; \
cmake -DCMAKE_BUILD_TYPE=Release -DOS_FSFW=linux -DTGT_BSP="arm/q7s" ..;
ENTRYPOINT ["cmake", "--build", "build-q7s"]
CMD ["-j"]
# CMD ["bash"]

View File

@ -1,6 +1,7 @@
#include "InitMission.h"
#include "ObjectFactory.h"
#include <OBSWConfig.h>
#include "OBSWConfig.h"
#include "pollingsequence/pollingSequenceFactory.h"
#include <mission/utility/InitMission.h>
@ -11,7 +12,7 @@
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
#include <fsfw/tasks/TaskFactory.h>
#include <fsfwconfig/pollingsequence/pollingSequenceFactory.h>
#include <iostream>
/* This is configured for linux without CR */
@ -30,11 +31,12 @@ ServiceInterfaceStream sif::error("ERROR", true, false, true);
ObjectManagerIF *objectManager = nullptr;
void initmission::initMission() {
sif::info << "Building global objects.." << std::endl;
/* Instantiate global object manager and also create all objects */
objectManager = new ObjectManager(ObjectFactory::produce);
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
sif::info << "Initializing all objects.." << std::endl;
objectManager->initialize();
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();
@ -83,6 +85,23 @@ void initmission::initTasks() {
initmission::printAddObjectError("UDP_POLLING", objects::UDP_POLLING_TASK);
}
/* UDP bridge */
PeriodicTaskIF* errorReporterTestTask = factory->createPeriodicTask(
"ERROR_REPORTER", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = udpBridgeTask->addComponent(objects::INTERNAL_ERROR_REPORTER);
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("ERROR_REPORTER", objects::INTERNAL_ERROR_REPORTER);
}
#if TEST_CCSDS_BRIDGE == 1
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = ptmeTestTask->addComponent(objects::CCSDS_IP_CORE_BRIDGE);
if(result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PTME_TEST", objects::CCSDS_IP_CORE_BRIDGE);
}
#endif
/* PUS Services */
PeriodicTaskIF* pusVerification = factory->createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
@ -135,6 +154,8 @@ void initmission::initTasks() {
initmission::printAddObjectError("PUS_17", objects::PUS_SERVICE_17_TEST);
}
#if TE0720 == 0
//TODO: Add handling of missed deadlines
/* Polling Sequence Table Default */
#if Q7S_ADD_SPI_TEST == 0
@ -147,14 +168,22 @@ void initmission::initTasks() {
}
#endif
#if TE0720 == 0
FixedTimeslotTaskIF* gomSpacePstTask = factory->
createFixedTimeslotTask("GS_PST_TASK", 50,
PeriodicTaskIF::MINIMUM_STACK_SIZE*8, 3.0, missedDeadlineFunc);
PeriodicTaskIF::MINIMUM_STACK_SIZE*8, 1.0, missedDeadlineFunc);
result = pst::gomspacePstInit(gomSpacePstTask);
if(result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "InitMission::initTasks: GomSpace PST initialization failed!" << std::endl;
}
#else
FixedTimeslotTaskIF * pollingSequenceTaskTE0720 = factory->createFixedTimeslotTask(
"PST_TASK_TE0720", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE * 8, 3.0,
missedDeadlineFunc);
result = pst::pollingSequenceTE0720(pollingSequenceTaskTE0720);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "InitMission::initTasks: Creating TE0720 PST failed!" << std::endl;
}
#endif
#if OBSW_ADD_TEST_CODE == 1
@ -184,12 +213,11 @@ void initmission::initTasks() {
udpBridgeTask->startTask();
udpPollingTask->startTask();
#if TE0720 == 0
#if TE0720 == 0 && Q7S_ADD_SPI_TEST == 0
gomSpacePstTask->startTask();
#endif
#if Q7S_ADD_SPI_TEST == 0
pollingSequenceTableTaskDefault->startTask();
#elif TE0720 == 1 && Q7S_ADD_SPI_TEST == 0
pollingSequenceTaskTE0720->startTask();
#endif
pusVerification->startTask();
@ -198,8 +226,14 @@ void initmission::initTasks() {
pusMedPrio->startTask();
pusLowPrio->startTask();
errorReporterTestTask->startTask();
#if OBSW_ADD_TEST_CODE == 1
testTask->startTask();
#endif
#if TEST_CCSDS_BRIDGE == 1
ptmeTestTask->startTask();
#endif
sif::info << "Tasks started.." << std::endl;
}

View File

@ -1,15 +1,21 @@
#include "ObjectFactory.h"
#include <OBSWConfig.h>
#include <tmtc/apid.h>
#include <devices/addresses.h>
#include <devices/gpioIds.h>
#include <tmtc/pusIds.h>
#include <devices/powerSwitcherList.h>
#include <devices/spi.h>
#include "OBSWConfig.h"
#include "tmtc/apid.h"
#include "devices/addresses.h"
#include "devices/gpioIds.h"
#include "tmtc/pusIds.h"
#include "devices/powerSwitcherList.h"
#include "spiConf.h"
#include <bsp_q7s/devices/HeaterHandler.h>
#include <bsp_q7s/devices/SolarArrayDeploymentHandler.h>
#include <bsp_q7s/gpio/gpioCallbacks.h>
#include "bsp_q7s/gpio/gpioCallbacks.h"
#include "bsp_q7s/core/CoreController.h"
#include <linux/devices/HeaterHandler.h>
#include <linux/devices/SolarArrayDeploymentHandler.h>
#include <linux/devices/devicedefinitions/SusDefinitions.h>
#include <linux/devices/SusHandler.h>
#include <linux/csp/CspCookie.h>
#include <linux/csp/CspComIF.h>
#include <mission/core/GenericFactory.h>
#include <mission/devices/PDU1Handler.h>
@ -20,22 +26,22 @@
#include <mission/devices/Tmp1075Handler.h>
#include <mission/devices/Max31865PT1000Handler.h>
#include <mission/devices/IMTQHandler.h>
#include <mission/devices/devicedefinitions/Max31865Definitions.h>
#include <mission/devices/SyrlinksHkHandler.h>
#include <mission/devices/MGMHandlerLIS3MDL.h>
#include <mission/devices/MGMHandlerRM3100.h>
#include <mission/devices/GyroL3GD20Handler.h>
#include <mission/devices/PlocHandler.h>
#include <mission/devices/RadiationSensorHandler.h>
#include <mission/devices/devicedefinitions/GomspaceDefinitions.h>
#include <mission/devices/devicedefinitions/SyrlinksDefinitions.h>
#include <mission/devices/devicedefinitions/PlocDefinitions.h>
#include <mission/devices/devicedefinitions/RadSensorDefinitions.h>
#include <mission/devices/devicedefinitions/Max31865Definitions.h>
#include <mission/utility/TmFunnel.h>
#include <linux/obc/CCSDSIPCoreBridge.h>
#include <linux/csp/CspCookie.h>
#include <linux/csp/CspComIF.h>
#include <linux/uart/UartComIF.h>
#include <linux/uart/UartCookie.h>
#include "fsfw_hal/linux/uart/UartComIF.h"
#include "fsfw_hal/linux/uart/UartCookie.h"
#include "fsfw_hal/devicehandlers/GyroL3GD20Handler.h"
#include <fsfw_hal/linux/i2c/I2cCookie.h>
#include <fsfw_hal/linux/i2c/I2cComIF.h>
#include <fsfw_hal/linux/spi/SpiCookie.h>
@ -46,7 +52,7 @@
#include <fsfw/datapoollocal/LocalDataPoolManager.h>
#include <fsfw/tmtcservices/CommandingServiceBase.h>
#include <fsfw/tmtcservices/PusServiceBase.h>
#include <fsfw/tmtcpacket/pus/TmPacketStored.h>
#include <fsfw/tmtcpacket/pus/tm.h>
/* UDP server includes */
#include <fsfw/osal/common/UdpTmTcBridge.h>
@ -76,9 +82,20 @@ void Factory::setStaticFrameworkObjectIds() {
void ObjectFactory::produce(){
void ObjectFactory::produce(void* args){
Factory::setStaticFrameworkObjectIds();
ObjectFactory::produceGenericObjects();
LinuxLibgpioIF* gpioComIF = new LinuxLibgpioIF(objects::GPIO_IF);
/* Communication interfaces */
new CspComIF(objects::CSP_COM_IF);
new I2cComIF(objects::I2C_COM_IF);
new UartComIF(objects::UART_COM_IF);
#if Q7S_ADD_SPI_TEST == 0
new SpiComIF(objects::SPI_COM_IF, gpioComIF);
#endif /* Q7S_ADD_SPI_TEST == 0 */
new CoreController(objects::CORE_CONTROLLER);
#if TE0720 == 1
I2cCookie* i2cCookieTmp1075tcs1 = new I2cCookie(addresses::TMP1075_TCS_1,
@ -91,27 +108,16 @@ void ObjectFactory::produce(){
I2cCookie* i2cCookieTmp1075tcs2 = new I2cCookie(addresses::TMP1075_TCS_2,
TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-1"));
#endif
LinuxLibgpioIF* gpioComIF = new LinuxLibgpioIF(objects::GPIO_IF);
/* Communication interfaces */
new CspComIF(objects::CSP_COM_IF);
new I2cComIF(objects::I2C_COM_IF);
new UartComIF(objects::UART_COM_IF);
#if Q7S_ADD_SPI_TEST == 0
new SpiComIF(objects::SPI_COM_IF, gpioComIF);
#endif
/* Temperature sensors */
Tmp1075Handler* tmp1075Handler_1 = new Tmp1075Handler(
objects::TMP1075_HANDLER_1, objects::I2C_COM_IF,
i2cCookieTmp1075tcs1);
tmp1075Handler_1->setStartUpImmediately();
(void) tmp1075Handler_1;
Tmp1075Handler* tmp1075Handler_2 = new Tmp1075Handler(
objects::TMP1075_HANDLER_2, objects::I2C_COM_IF,
i2cCookieTmp1075tcs2);
tmp1075Handler_2->setStartUpImmediately();
GpioCookie* heaterGpiosCookie = new GpioCookie;
(void) tmp1075Handler_2;
#if TE0720 == 0
CspCookie* p60DockCspCookie = new CspCookie(P60Dock::MAX_REPLY_LENGTH,
@ -147,16 +153,127 @@ void ObjectFactory::produce(){
(void) pdu2handler;
(void) acuhandler;
/* Adding gpios for chip select decoding to the gpioComIf */
gpioCallbacks::initSpiCsDecoder(gpioComIF);
GpioCookie* gpioCookieRadSensor = new GpioCookie;
GpiodRegular* chipSelectRadSensor = new GpiodRegular(std::string("gpiochip5"), 19,
std::string("Chip Select Radiation Sensor"), gpio::OUT, 1);
gpioCookieRadSensor->addGpio(gpioIds::CS_RAD_SENSOR, chipSelectRadSensor);
gpioComIF->addGpios(gpioCookieRadSensor);
SpiCookie* spiCookieRadSensor = new SpiCookie(addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR,
std::string("/dev/spidev2.0"), RAD_SENSOR::READ_SIZE, spi::DEFAULT_MAX_1227_MODE,
spi::DEFAULT_MAX_1227_SPEED);
new RadiationSensorHandler(objects::RAD_SENSOR, objects::SPI_COM_IF, spiCookieRadSensor);
GpioCookie* gpioCookieSus = new GpioCookie();
GpioCallback* susgpio = new GpioCallback(std::string("Chip select SUS 1"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_1, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 2"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_2, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 3"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_3, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 4"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_4, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 5"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_5, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 6"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_6, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 7"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_7, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 8"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_8, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 9"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_9, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 10"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_10, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 11"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_11, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 12"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_12, susgpio);
susgpio = new GpioCallback(std::string("Chip select SUS 13"), gpio::OUT, 1,
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
gpioCookieSus->addGpio(gpioIds::CS_SUS_13, susgpio);
gpioComIF->addGpios(gpioCookieSus);
SpiCookie* spiCookieSus1 = new SpiCookie(addresses::SUS_1, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus2 = new SpiCookie(addresses::SUS_2, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus3 = new SpiCookie(addresses::SUS_3, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus4 = new SpiCookie(addresses::SUS_4, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus5 = new SpiCookie(addresses::SUS_5, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus6 = new SpiCookie(addresses::SUS_6, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus7 = new SpiCookie(addresses::SUS_7, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus8 = new SpiCookie(addresses::SUS_8, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus9 = new SpiCookie(addresses::SUS_9, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus10 = new SpiCookie(addresses::SUS_10, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus11 = new SpiCookie(addresses::SUS_11, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus12 = new SpiCookie(addresses::SUS_12, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
SpiCookie* spiCookieSus13 = new SpiCookie(addresses::SUS_13, gpio::NO_GPIO,
std::string("/dev/spidev2.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
SUS::MAX1227_SPI_FREQ);
new SusHandler(objects::SUS_1, objects::SPI_COM_IF, spiCookieSus1, gpioComIF, gpioIds::CS_SUS_1);
new SusHandler(objects::SUS_2, objects::SPI_COM_IF, spiCookieSus2, gpioComIF, gpioIds::CS_SUS_2);
new SusHandler(objects::SUS_3, objects::SPI_COM_IF, spiCookieSus3, gpioComIF, gpioIds::CS_SUS_3);
new SusHandler(objects::SUS_4, objects::SPI_COM_IF, spiCookieSus4, gpioComIF, gpioIds::CS_SUS_4);
new SusHandler(objects::SUS_5, objects::SPI_COM_IF, spiCookieSus5, gpioComIF, gpioIds::CS_SUS_5);
new SusHandler(objects::SUS_6, objects::SPI_COM_IF, spiCookieSus6, gpioComIF, gpioIds::CS_SUS_6);
new SusHandler(objects::SUS_7, objects::SPI_COM_IF, spiCookieSus7, gpioComIF, gpioIds::CS_SUS_7);
new SusHandler(objects::SUS_8, objects::SPI_COM_IF, spiCookieSus8, gpioComIF, gpioIds::CS_SUS_8);
new SusHandler(objects::SUS_9, objects::SPI_COM_IF, spiCookieSus9, gpioComIF, gpioIds::CS_SUS_9);
new SusHandler(objects::SUS_10, objects::SPI_COM_IF, spiCookieSus10, gpioComIF, gpioIds::CS_SUS_10);
new SusHandler(objects::SUS_11, objects::SPI_COM_IF, spiCookieSus11, gpioComIF, gpioIds::CS_SUS_11);
new SusHandler(objects::SUS_12, objects::SPI_COM_IF, spiCookieSus12, gpioComIF, gpioIds::CS_SUS_12);
new SusHandler(objects::SUS_13, objects::SPI_COM_IF, spiCookieSus13, gpioComIF, gpioIds::CS_SUS_13);
#if OBSW_ADD_ACS_BOARD == 1
GpioCookie* gpioCookieAcsBoard = new GpioCookie();
GpiodRegular* gpio = nullptr;
gpio = new GpiodRegular(std::string("gpiochip5"), 1, std::string("CS_GYRO_1_ADIS"),
gpio = new GpiodRegular(std::string("gpiochip5"), 1, std::string("CS_GYRO_0_ADIS"),
gpio::OUT, gpio::HIGH);
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_0_ADIS_CS, gpio);
gpio = new GpiodRegular(std::string("gpiochip5"), 7, std::string("CS_GYRO_2_L3G"),
gpio = new GpiodRegular(std::string("gpiochip5"), 7, std::string("CS_GYRO_1_L3G"),
gpio::OUT, gpio::HIGH);
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_1_L3G_CS, gpio);
gpio = new GpiodRegular(std::string("gpiochip5"), 3, std::string("CS_GYRO_3_L3G"),
gpio = new GpiodRegular(std::string("gpiochip5"), 3, std::string("CS_GYRO_2_L3G"),
gpio::OUT, gpio::HIGH);
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_2_L3G_CS, gpio);
@ -164,7 +281,7 @@ void ObjectFactory::produce(){
gpio::OUT, gpio::HIGH);
gpioCookieAcsBoard->addGpio(gpioIds::MGM_0_LIS3_CS, gpio);
gpio = new GpiodRegular(std::string("gpiochip5"), 17, std::string("CS_MGM_1_RM3100_A"),
gpio = new GpiodRegular(std::string("gpiochip5"), 16, std::string("CS_MGM_1_RM3100_A"),
gpio::OUT, gpio::HIGH);
gpioCookieAcsBoard->addGpio(gpioIds::MGM_1_RM3100_CS, gpio);
@ -197,13 +314,31 @@ void ObjectFactory::produce(){
objects::SPI_COM_IF, spiCookie);
mgmRm3100Handler->setStartUpImmediately();
spiCookie = new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
mgmRm3100Handler = new MGMHandlerRM3100(objects::MGM_3_RM3100_HANDLER,
objects::SPI_COM_IF, spiCookie);
mgmRm3100Handler->setStartUpImmediately();
//TODO: Adis Gyro (Gyro 0 Side A)
/* Gyro 1 Side A */
spiCookie = new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev,
L3GD20H::MAX_BUFFER_SIZE, spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF,
spiCookie);
gyroL3gHandler->setStartUpImmediately();
/* Gyro 2 Side B */
spiCookie = new SpiCookie(addresses::GYRO_2_L3G, gpioIds::GYRO_2_L3G_CS, spiDev,
L3GD20H::MAX_BUFFER_SIZE, spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_2_L3G_HANDLER, objects::SPI_COM_IF,
spiCookie);
gyroL3gHandler->setStartUpImmediately();
#endif
GpioCookie* heaterGpiosCookie = new GpioCookie;
/* Pin H2-11 on stack connector */
GpiodRegular* gpioConfigHeater0 = new GpiodRegular(std::string("gpiochip7"), 6,
std::string("Heater0"), gpio::OUT, 0);
@ -256,8 +391,8 @@ void ObjectFactory::produce(){
solarArrayDeplCookie, objects::PCDU_HANDLER, pcduSwitches::DEPLOYMENT_MECHANISM,
gpioIds::DEPLSA1, gpioIds::DEPLSA2, 1000);
UartCookie* syrlinksUartCookie = new UartCookie(
std::string("/dev/ttyUL0"), 38400, SYRLINKS::MAX_REPLY_SIZE);
UartCookie* syrlinksUartCookie = new UartCookie(objects::SYRLINKS_HK_HANDLER,
std::string("/dev/ttyUL0"), UartModes::NON_CANONICAL, 38400, SYRLINKS::MAX_REPLY_SIZE);
syrlinksUartCookie->setParityEven();
SyrlinksHkHandler* syrlinksHkHandler = new SyrlinksHkHandler(objects::SYRLINKS_HK_HANDLER,
@ -267,61 +402,60 @@ void ObjectFactory::produce(){
#if Q7S_ADD_RTD_DEVICES == 1
GpioCookie* rtdGpioCookie = new GpioCookie;
gpioCallbacks::initTcsBoardDecoder(gpioComIF);
GpioCallback* gpioRtdIc3 = new GpioCallback(std::string("Chip select RTD IC3"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC3, gpioRtdIc3);
GpioCallback* gpioRtdIc4 = new GpioCallback(std::string("Chip select RTD IC4"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC4, gpioRtdIc4);
GpioCallback* gpioRtdIc5 = new GpioCallback(std::string("Chip select RTD IC5"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC5, gpioRtdIc5);
GpioCallback* gpioRtdIc6 = new GpioCallback(std::string("Chip select RTD IC6"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC6, gpioRtdIc6);
GpioCallback* gpioRtdIc7 = new GpioCallback(std::string("Chip select RTD IC7"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC7, gpioRtdIc7);
GpioCallback* gpioRtdIc8 = new GpioCallback(std::string("Chip select RTD IC8"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC8, gpioRtdIc8);
GpioCallback* gpioRtdIc9 = new GpioCallback(std::string("Chip select RTD IC9"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC9, gpioRtdIc9);
GpioCallback* gpioRtdIc10 = new GpioCallback(std::string("Chip select RTD IC10"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC10, gpioRtdIc10);
GpioCallback* gpioRtdIc11 = new GpioCallback(std::string("Chip select RTD IC11"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC11, gpioRtdIc11);
GpioCallback* gpioRtdIc12 = new GpioCallback(std::string("Chip select RTD IC12"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC12, gpioRtdIc12);
GpioCallback* gpioRtdIc13 = new GpioCallback(std::string("Chip select RTD IC13"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC13, gpioRtdIc13);
GpioCallback* gpioRtdIc14 = new GpioCallback(std::string("Chip select RTD IC14"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC14, gpioRtdIc14);
GpioCallback* gpioRtdIc15 = new GpioCallback(std::string("Chip select RTD IC15"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC15, gpioRtdIc15);
GpioCallback* gpioRtdIc16 = new GpioCallback(std::string("Chip select RTD IC16"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC16, gpioRtdIc16);
GpioCallback* gpioRtdIc17 = new GpioCallback(std::string("Chip select RTD IC17"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC17, gpioRtdIc17);
GpioCallback* gpioRtdIc18 = new GpioCallback(std::string("Chip select RTD IC18"), gpio::OUT, 1,
&gpioCallbacks::tcsBoardDecoderCallback, gpioComIF);
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
rtdGpioCookie->addGpio(gpioIds::RTD_IC18, gpioRtdIc18);
gpioComIF->addGpios(rtdGpioCookie);
SpiCookie* spiRtdIc3 = new SpiCookie(addresses::RTD_IC3, gpioIds::RTD_IC3,
std::string("/dev/spidev2.0"), Max31865Definitions::MAX_REPLY_SIZE,
spi::SpiModes::MODE_1, 2000000);
spi::SpiModes::MODE_3, 2000000);
SpiCookie* spiRtdIc4 = new SpiCookie(addresses::RTD_IC4, gpioIds::RTD_IC4,
std::string("/dev/spidev2.0"), Max31865Definitions::MAX_REPLY_SIZE,
spi::SpiModes::MODE_1, 2000000);
@ -357,7 +491,7 @@ void ObjectFactory::produce(){
spi::SpiModes::MODE_1, 2000000);
SpiCookie* spiRtdIc15 = new SpiCookie(addresses::RTD_IC15, gpioIds::RTD_IC15,
std::string("/dev/spidev2.0"), Max31865Definitions::MAX_REPLY_SIZE,
spi::SpiModes::MODE_1, 2000000);
spi::SpiModes::MODE_1, 3900000);
SpiCookie* spiRtdIc16 = new SpiCookie(addresses::RTD_IC16, gpioIds::RTD_IC16,
std::string("/dev/spidev2.0"), Max31865Definitions::MAX_REPLY_SIZE,
spi::SpiModes::MODE_1, 2000000);
@ -384,7 +518,7 @@ void ObjectFactory::produce(){
Max31865PT1000Handler* rtdIc16 = new Max31865PT1000Handler(objects::RTD_IC16, objects::SPI_COM_IF, spiRtdIc16, 0);
Max31865PT1000Handler* rtdIc17 = new Max31865PT1000Handler(objects::RTD_IC17, objects::SPI_COM_IF, spiRtdIc17, 0);
Max31865PT1000Handler* rtdIc18 = new Max31865PT1000Handler(objects::RTD_IC18, objects::SPI_COM_IF, spiRtdIc18, 0);
// rtdIc10->setStartUpImmediately();
rtdIc17->setStartUpImmediately();
// rtdIc4->setStartUpImmediately();
(void) rtdIc3;
@ -401,21 +535,26 @@ void ObjectFactory::produce(){
(void) rtdIc14;
(void) rtdIc15;
(void) rtdIc16;
(void) rtdIc17;
// (void) rtdIc17;
(void) rtdIc18;
#endif /* Q7S_ADD_RTD_DEVICES == 1 */
#endif /* TE0720 == 0 */
new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR, objects::TM_STORE,
objects::TC_STORE);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);
I2cCookie* imtqI2cCookie = new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE,
std::string("/dev/i2c-0"));
IMTQHandler* imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie);
imtqHandler->setStartUpImmediately();
new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie);
UartCookie* plocUartCookie = new UartCookie(objects::PLOC_HANDLER, std::string("/dev/ttyUL3"),
UartModes::NON_CANONICAL, 115200, PLOC::MAX_REPLY_SIZE);
PlocHandler* plocHandler = new PlocHandler(objects::PLOC_HANDLER, objects::UART_COM_IF,
plocUartCookie);
// plocHandler->setStartUpImmediately();
(void) plocHandler;
#endif /* TE0720 == 0 */
new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);
#if TE0720 == 1 && TEST_LIBGPIOD == 1
/* Configure MIO0 as input */
@ -424,13 +563,68 @@ void ObjectFactory::produce(){
GpioCookie* gpioCookie = new GpioCookie;
gpioCookie->addGpio(gpioIds::TEST_ID_0, gpioConfigMio0);
new LibgpiodTest(objects::LIBGPIOD_TEST, objects::GPIO_IF, gpioCookie);
#elif TE0720 == 1
#endif
#if TE0720 == 1 && TEST_SUS_HANDLER == 1
GpioCookie* gpioCookieSus = new GpioCookie;
GpiodRegular* chipSelectSus = new GpiodRegular(std::string("gpiochip1"), 9,
std::string("Chip Select Sus Sensor"), gpio::OUT, 1);
gpioCookieSus->addGpio(gpioIds::CS_SUS_1, chipSelectSus);
gpioComIF->addGpios(gpioCookieSus);
SpiCookie* spiCookieSus = new SpiCookie(addresses::SUS_1, std::string("/dev/spidev1.0"),
SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
new SusHandler(objects::SUS_1, objects::SPI_COM_IF, spiCookieSus, gpioComIF,
gpioIds::CS_SUS_1);
#endif
#if TE0720 == 1 && TEST_CCSDS_BRIDGE == 1
GpioCookie* gpioCookieCcsdsIp = new GpioCookie;
GpiodRegular* papbBusyN = new GpiodRegular(std::string("gpiochip0"), 0, std::string("PAPBBusy_N"));
gpioCookieCcsdsIp->addGpio(gpioIds::PAPB_BUSY_N, papbBusyN);
GpiodRegular* papbEmpty = new GpiodRegular(std::string("gpiochip0"), 1,
std::string("Chip Select Sus Sensor"));
gpioCookieCcsdsIp->addGpio(gpioIds::PAPB_EMPTY, papbEmpty);
gpioComIF->addGpios(gpioCookieCcsdsIp);
new CCSDSIPCoreBridge(objects::CCSDS_IP_CORE_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR,
objects::TM_STORE, objects::TC_STORE, gpioComIF, std::string("/dev/uio0"),
gpioIds::PAPB_BUSY_N, gpioIds::PAPB_EMPTY);
#endif
#if TE0720 == 1 && TEST_RADIATION_SENSOR_HANDLER == 1
GpioCookie* gpioCookieRadSensor = new GpioCookie;
GpiodRegular* chipSelectRadSensor = new GpiodRegular(std::string("gpiochip1"), 0,
std::string("Chip select radiation sensor"), gpio::OUT, 1);
gpioCookieRadSensor->addGpio(gpioIds::CS_RAD_SENSOR, chipSelectRadSensor);
gpioComIF->addGpios(gpioCookieRadSensor);
SpiCookie* spiCookieRadSensor = new SpiCookie(addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR,
std::string("/dev/spidev1.0"), SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE,
spi::DEFAULT_MAX_1227_SPEED);
RadiationSensorHandler* radSensor = new RadiationSensorHandler(objects::RAD_SENSOR,
objects::SPI_COM_IF, spiCookieRadSensor);
radSensor->setStartUpImmediately();
#endif
#if TE0720 == 1 && TEST_PLOC_HANDLER == 1
UartCookie* plocUartCookie = new UartCookie(std::string("/dev/ttyPS1"), 115200,
PLOC::MAX_REPLY_SIZE);
/* Testing PlocHandler on TE0720-03-1CFA */
PlocHandler* plocHandler = new PlocHandler(objects::PLOC_HANDLER, objects::UART_COM_IF,
plocUartCookie);
plocHandler->setStartUpImmediately();
#endif
#if TE0720 == 1 && TE0720_HEATER_TEST == 1
/* Configuration for MIO0 on TE0720-03-1CFA */
GpiodRegular gpioConfigForDummyHeater(std::string("gpiochip0"), 0,
std::string("Heater0"), gpio::OUT, 0);
heaterGpiosCookie->addGpio(gpioIds::HEATER_0, gpioConfigForDummyHeater);
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, heaterGpiosCookie,
objects::PCDU_HANDLER, pcduSwitches::TCS_BOARD_8V_HEATER_IN);
GpiodRegular* heaterGpio = new GpiodRegular(std::string("gpiochip0"), 0, std::string("MIO0"), gpio::IN, 0);
GpioCookie* gpioCookie = new GpioCookie;
gpioCookie->addGpio(gpioIds::HEATER_0, heaterGpio);
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, gpioCookie, objects::PCDU_HANDLER,
pcduSwitches::TCS_BOARD_8V_HEATER_IN);
#endif
#if Q7S_ADD_SPI_TEST == 1

View File

@ -3,7 +3,7 @@
namespace ObjectFactory {
void setStatics();
void produce();
void produce(void* args);
};
#endif /* BSP_Q7S_OBJECTFACTORY_H_ */

View File

@ -5,6 +5,3 @@ target_sources(${TARGET_NAME} PRIVATE
target_include_directories(${TARGET_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)

View File

@ -0,0 +1,3 @@
target_sources(${TARGET_NAME} PRIVATE
CoreController.cpp
)

View File

@ -0,0 +1,26 @@
#include "CoreController.h"
CoreController::CoreController(object_id_t objectId):
ExtendedControllerBase(objectId, objects::NO_OBJECT, 5) {
}
ReturnValue_t CoreController::handleCommandMessage(CommandMessage *message) {
return HasReturnvaluesIF::RETURN_OK;
}
void CoreController::performControlOperation() {
}
ReturnValue_t CoreController::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
LocalDataPoolManager &poolManager) {
return HasReturnvaluesIF::RETURN_OK;
}
LocalPoolDataSetBase* CoreController::getDataSetHandle(sid_t sid) {
return nullptr;
}
ReturnValue_t CoreController::checkModeCommand(Mode_t mode, Submode_t submode,
uint32_t *msToReachTheMode) {
return HasReturnvaluesIF::RETURN_OK;
}

View File

@ -0,0 +1,22 @@
#ifndef BSP_Q7S_CORE_CORECONTROLLER_H_
#define BSP_Q7S_CORE_CORECONTROLLER_H_
#include "fsfw/controller/ExtendedControllerBase.h"
class CoreController: public ExtendedControllerBase {
public:
CoreController(object_id_t objectId);
ReturnValue_t handleCommandMessage(CommandMessage *message) override;
void performControlOperation() override;
private:
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
LocalDataPoolManager& poolManager) override;
LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override;
ReturnValue_t checkModeCommand(Mode_t mode, Submode_t submode,
uint32_t *msToReachTheMode);
};
#endif /* BSP_Q7S_CORE_CORECONTROLLER_H_ */

View File

@ -10,31 +10,32 @@ namespace gpioCallbacks {
GpioIF* gpioComInterface;
void initTcsBoardDecoder(GpioIF* gpioComIF) {
void initSpiCsDecoder(GpioIF* gpioComIF) {
ReturnValue_t result;
if (gpioComIF == nullptr) {
sif::debug << "initTcsBoardDecoder: Invalid gpioComIF" << std::endl;
sif::debug << "initSpiCsDecoder: Invalid gpioComIF" << std::endl;
return;
}
gpioComInterface = gpioComIF;
GpioCookie* spiMuxGpios = new GpioCookie;
/**
* Initial values of the spi mux gpios can all be set to an arbitrary value expect for spi mux
* bit 1. Setting spi mux bit 1 to high will pull all decoder outputs to high voltage level.
*/
/** Setting mux bit 1 to low will disable IC21 on the interface board */
GpiodRegular* spiMuxBit1 = new GpiodRegular(std::string("gpiochip7"), 13,
std::string("SPI Mux Bit 1"), gpio::OUT, 1);
std::string("SPI Mux Bit 1"), gpio::OUT, 0);
spiMuxGpios->addGpio(gpioIds::SPI_MUX_BIT_1, spiMuxBit1);
/** Setting mux bit 2 to low disables IC1 on the TCS board */
GpiodRegular* spiMuxBit2 = new GpiodRegular(std::string("gpiochip7"), 14,
std::string("SPI Mux Bit 2"), gpio::OUT, 0);
spiMuxGpios->addGpio(gpioIds::SPI_MUX_BIT_2, spiMuxBit2);
/** Setting mux bit 3 to low disables IC2 on the TCS board and IC22 on the interface board */
GpiodRegular* spiMuxBit3 = new GpiodRegular(std::string("gpiochip7"), 15,
std::string("SPI Mux Bit 3"), gpio::OUT, 0);
spiMuxGpios->addGpio(gpioIds::SPI_MUX_BIT_3, spiMuxBit3);
/** The following gpios can take arbitrary initial values */
GpiodRegular* spiMuxBit4 = new GpiodRegular(std::string("gpiochip7"), 16,
std::string("SPI Mux Bit 4"), gpio::OUT, 0);
spiMuxGpios->addGpio(gpioIds::SPI_MUX_BIT_4, spiMuxBit4);
@ -47,175 +48,261 @@ void initTcsBoardDecoder(GpioIF* gpioComIF) {
result = gpioComInterface->addGpios(spiMuxGpios);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "initTcsBoardDecoder: Failed to add mux bit gpios to gpioComIF"
sif::error << "initSpiCsDecoder: Failed to add mux bit gpios to gpioComIF"
<< std::endl;
return;
}
}
void tcsBoardDecoderCallback(gpioId_t gpioId, gpio::GpioOperation gpioOp, int value,
void spiCsDecoderCallback(gpioId_t gpioId, gpio::GpioOperation gpioOp, int value,
void* args) {
if (gpioComInterface == nullptr) {
sif::debug << "tcsBoardDecoderCallback: No gpioComIF specified. Call initTcsBoardDecoder "
sif::debug << "spiCsDecoderCallback: No gpioComIF specified. Call initSpiCsDecoder "
<< "to specify gpioComIF" << std::endl;
return;
}
/* Read is not supported by the callback function */
/* Reading is not supported by the callback function */
if (gpioOp == gpio::GpioOperation::READ) {
return;
}
if (value == 1) {
/* This will pull all 16 decoder outputs to high */
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_1);
disableAllDecoder();
}
else if (value == 0) {
switch (gpioId) {
case(gpioIds::RTD_IC3): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY7();
break;
}
case(gpioIds::RTD_IC4): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY6();
break;
}
case(gpioIds::RTD_IC5): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY5();
break;
}
case(gpioIds::RTD_IC6): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY4();
break;
}
case(gpioIds::RTD_IC7): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY3();
break;
}
case(gpioIds::RTD_IC8): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY2();
break;
}
case(gpioIds::RTD_IC9): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY1();
break;
}
case(gpioIds::RTD_IC10): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc1();
selectY0();
break;
}
case(gpioIds::RTD_IC11): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY7();
break;
}
case(gpioIds::RTD_IC12): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY6();
break;
}
case(gpioIds::RTD_IC13): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY5();
break;
}
case(gpioIds::RTD_IC14): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY4();
break;
}
case(gpioIds::RTD_IC15): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY3();
break;
}
case(gpioIds::RTD_IC16): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY2();
break;
}
case(gpioIds::RTD_IC17): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY1();
break;
}
case(gpioIds::RTD_IC18): {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
enableDecoderTcsIc2();
selectY0();
break;
}
case(gpioIds::CS_SUS_1): {
enableDecoderInterfaceBoardIc1();
selectY0();
break;
}
case(gpioIds::CS_SUS_2): {
enableDecoderInterfaceBoardIc1();
selectY1();
break;
}
case(gpioIds::CS_SUS_3): {
enableDecoderInterfaceBoardIc2();
selectY0();
break;
}
case(gpioIds::CS_SUS_4): {
enableDecoderInterfaceBoardIc2();
selectY1();
break;
}
case(gpioIds::CS_SUS_5): {
enableDecoderInterfaceBoardIc2();
selectY2();
break;
}
case(gpioIds::CS_SUS_6): {
enableDecoderInterfaceBoardIc1();
selectY2();
break;
}
case(gpioIds::CS_SUS_7): {
enableDecoderInterfaceBoardIc1();
selectY3();
break;
}
case(gpioIds::CS_SUS_8): {
enableDecoderInterfaceBoardIc2();
selectY3();
break;
}
case(gpioIds::CS_SUS_9): {
enableDecoderInterfaceBoardIc1();
selectY4();
break;
}
case(gpioIds::CS_SUS_10): {
enableDecoderInterfaceBoardIc1();
selectY5();
break;
}
case(gpioIds::CS_SUS_11): {
enableDecoderInterfaceBoardIc2();
selectY4();
break;
}
case(gpioIds::CS_SUS_12): {
enableDecoderInterfaceBoardIc2();
selectY5();
break;
}
case(gpioIds::CS_SUS_13): {
enableDecoderInterfaceBoardIc1();
selectY6();
break;
}
default:
sif::debug << "tcsBoardDecoderCallback: Invalid gpioid " << gpioId << std::endl;
sif::debug << "spiCsDecoderCallback: Invalid gpio id " << gpioId << std::endl;
}
}
else {
sif::debug << "tcsBoardDecoderCallback: Invalid value. Must be 0 or 1" << std::endl;
sif::debug << "spiCsDecoderCallback: Invalid value. Must be 0 or 1" << std::endl;
}
}
void enableDecoderTcsIc1() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
}
void enableDecoderTcsIc2() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
}
void enableDecoderInterfaceBoardIc1() {
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
}
void enableDecoderInterfaceBoardIc2() {
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_3);
}
void selectY0() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
}
void selectY1() {
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
}
void selectY2() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
}
void selectY3() {
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_6);
}
void selectY4() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
}
void selectY5() {
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
}
void selectY6() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
}
void selectY7() {
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_4);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_5);
gpioComInterface->pullHigh(gpioIds::SPI_MUX_BIT_6);
}
void disableAllDecoder() {
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_1);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_2);
gpioComInterface->pullLow(gpioIds::SPI_MUX_BIT_3);
}
}

View File

@ -9,15 +9,54 @@ namespace gpioCallbacks {
/**
* @brief This function initializes the GPIOs used to control the SN74LVC138APWR decoders on
* the TCS Board.
* the TCS Board and the interface board.
*/
void initTcsBoardDecoder(GpioIF* gpioComIF);
void initSpiCsDecoder(GpioIF* gpioComIF);
/**
* @brief This function implements the decoding to multiply gpios by using the two decoder
* chips SN74LVC138APWR on the TCS board.
* @brief This function implements the decoding to multiply gpios by using the decoder
* chips SN74LVC138APWR on the TCS board and the interface board.
*/
void tcsBoardDecoderCallback(gpioId_t gpioId, gpio::GpioOperation gpioOp, int value, void* args);
void spiCsDecoderCallback(gpioId_t gpioId, gpio::GpioOperation gpioOp, int value, void* args);
/**
* @brief This function sets mux bits 1-3 to a state which will only enable the decoder
* on the TCS board which is named to IC1 in the schematic.
*/
void enableDecoderTcsIc1();
/**
* @brief This function sets mux bits 1-3 to a state which will only enable the decoder
* on the TCS board which is named to IC2 in the schematic.
*/
void enableDecoderTcsIc2();
/**
* @brief This function sets mux bits 1-3 to a state which will only enable the decoder
* on the inteface board board which is named to IC21 in the schematic.
*/
void enableDecoderInterfaceBoardIc1();
/**
* @brief This function sets mux bits 1-3 to a state which will only enable the decoder
* on the inteface board board which is named to IC22 in the schematic.
*/
void enableDecoderInterfaceBoardIc2();
/**
* @brief This function disables all decoder.
*/
void disableAllDecoder();
/** The following functions enable the appropriate channel of the currently enabled decoder */
void selectY0();
void selectY1();
void selectY2();
void selectY3();
void selectY4();
void selectY5();
void selectY6();
void selectY7();
}
#endif /* LINUX_GPIO_GPIOCALLBACKS_H_ */

View File

@ -1,6 +1,7 @@
#include "InitMission.h"
#include <OBSWVersion.h>
#include <fsfw/tasks/TaskFactory.h>
#include "OBSWConfig.h"
#include <iostream>
@ -13,7 +14,11 @@
int main(void)
{
std::cout << "-- EIVE OBSW --" << std::endl;
#if TE0720 == 0
std::cout << "-- Compiled for Linux (Xiphos Q7S) --" << std::endl;
#else
std::cout << "-- Compiled for Linux (TE0720) --" << std::endl;
#endif
std::cout << "-- Software version " << SW_NAME << " v" << SW_VERSION << "."
<< SW_SUBVERSION << "." << SW_SUBSUBVERSION << " -- " << std::endl;
std::cout << "-- " << __DATE__ << " " << __TIME__ << " --" << std::endl;

View File

@ -0,0 +1,4 @@
target_sources(${TARGET_NAME} PRIVATE
FileSystemManager.cpp
SdCardAccess.cpp
)

View File

@ -0,0 +1,7 @@
#include "FileSystemManager.h"
class FileSystemManager {
public:
private:
};

View File

@ -0,0 +1,8 @@
#ifndef BSP_Q7S_MEMORY_FILESYSTEMMANAGER_H_
#define BSP_Q7S_MEMORY_FILESYSTEMMANAGER_H_
#endif /* BSP_Q7S_MEMORY_FILESYSTEMMANAGER_H_ */

View File

@ -0,0 +1,4 @@
#include "SdCardAccess.h"
SdCardAccess::SdCardAccess() {
}

View File

@ -0,0 +1,11 @@
#ifndef BSP_Q7S_MEMORY_SDCARDACCESS_H_
#define BSP_Q7S_MEMORY_SDCARDACCESS_H_
class SdCardAccess {
public:
SdCardAccess();
private:
};
#endif /* BSP_Q7S_MEMORY_SDCARDACCESS_H_ */

View File

@ -1,125 +0,0 @@
#include "ObjectFactory.h"
#include <fsfwconfig/objects/systemObjectList.h>
#include <fsfwconfig/devices/addresses.h>
#include <fsfwconfig/devices/gpioIds.h>
#include <fsfwconfig/OBSWConfig.h>
#include <fsfwconfig/tmtc/apid.h>
#include <fsfwconfig/tmtc/pusIds.h>
#include <fsfwconfig/devices/spi.h>
#include <linux/boardtest/LibgpiodTest.h>
#include <linux/boardtest/SpiTestClass.h>
#include <mission/devices/GyroL3GD20Handler.h>
#include <mission/core/GenericFactory.h>
#include <mission/utility/TmFunnel.h>
#include <mission/devices/MGMHandlerLIS3MDL.h>
#include <mission/devices/MGMHandlerRM3100.h>
#include <fsfw/datapoollocal/LocalDataPoolManager.h>
#include <fsfw/tmtcservices/CommandingServiceBase.h>
#include <fsfw/tmtcservices/PusServiceBase.h>
#include <fsfw/tmtcpacket/pus/TmPacketStored.h>
#include <fsfw/tasks/TaskFactory.h>
/* UDP server includes */
#include <fsfw/osal/common/UdpTmTcBridge.h>
#include <fsfw/osal/common/UdpTcPollingTask.h>
#include <fsfw_hal/linux/gpio/LinuxLibgpioIF.h>
#include <fsfw_hal/linux/rpi/GpioRPi.h>
#include <fsfw_hal/common/gpio/GpioCookie.h>
#include <fsfw_hal/linux/spi/SpiCookie.h>
#include <fsfw_hal/linux/spi/SpiComIF.h>
void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::packetDestination = objects::TM_FUNNEL;
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
TmFunnel::downlinkDestination = objects::UDP_BRIDGE;
// No storage object for now.
TmFunnel::storageDestination = objects::NO_OBJECT;
LocalDataPoolManager::defaultHkDestination = objects::NO_OBJECT;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
TmPacketStored::timeStamperId = objects::TIME_STAMPER;
}
void ObjectFactory::produce(){
Factory::setStaticFrameworkObjectIds();
ObjectFactory::produceGenericObjects();
new UdpTmTcBridge(objects::UDP_BRIDGE,
objects::CCSDS_PACKET_DISTRIBUTOR,
objects::TM_STORE, objects::TC_STORE);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);
GpioIF* gpioIF = new LinuxLibgpioIF(objects::GPIO_IF);
#if RPI_ADD_SPI_TEST == 1
new SpiTestClass(objects::SPI_TEST, gpioIF);
#endif
#if RPI_LOOPBACK_TEST_GPIO == 1
GpioCookie* gpioCookieLoopback = new GpioCookie();
/* Loopback pins. Adapt according to setup */
gpioId_t gpioIdSender = gpioIds::TEST_ID_0;
int bcmPinSender = 26;
gpioId_t gpioIdReader = gpioIds::TEST_ID_1;
int bcmPinReader = 16;
gpio::createRpiGpioConfig(gpioCookieLoopback, gpioIdSender, bcmPinSender, "GPIO_LB_SENDER",
gpio::Direction::OUT, 0);
gpio::createRpiGpioConfig(gpioCookieLoopback, gpioIdReader, bcmPinReader, "GPIO_LB_READER",
gpio::Direction::IN, 0);
new LibgpiodTest(objects::LIBGPIOD_TEST, objects::GPIO_IF, gpioCookieLoopback);
#endif /* RPI_LOOPBACK_TEST_GPIO == 1 */
new SpiComIF(objects::SPI_COM_IF, gpioIF);
#if RPI_TEST_ACS_BOARD == 1
GpioCookie* gpioCookieAcsBoard = new GpioCookie();
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::MGM_0_LIS3_CS, gpio::MGM_0_BCM_PIN,
"MGM_0_LIS3", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::MGM_1_RM3100_CS, gpio::MGM_1_BCM_PIN,
"MGM_1_RM3100", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::MGM_2_LIS3_CS, gpio::MGM_2_BCM_PIN,
"MGM_2_LIS3", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::MGM_3_RM3100_CS, gpio::MGM_3_BCM_PIN,
"MGM_3_RM3100", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::GYRO_0_ADIS_CS, gpio::GYRO_0_BCM_PIN,
"GYRO_0_ADIS", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::GYRO_1_L3G_CS, gpio::GYRO_1_BCM_PIN,
"GYRO_1_L3G", gpio::Direction::OUT, 1);
gpio::createRpiGpioConfig(gpioCookieAcsBoard, gpioIds::GYRO_2_L3G_CS, gpio::GYRO_2_BCM_PIN,
"GYRO_2_L3G", gpio::Direction::OUT, 1);
gpioIF->addGpios(gpioCookieAcsBoard);
std::string spiDev = "/dev/spidev0.0";
SpiCookie* spiCookie = new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
auto mgmLis3Handler = new MGMHandlerLIS3MDL(objects::MGM_0_LIS3_HANDLER,
objects::SPI_COM_IF, spiCookie);
mgmLis3Handler->setStartUpImmediately();
spiCookie = new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
auto mgmRm3100Handler = new MGMHandlerRM3100(objects::MGM_1_RM3100_HANDLER,
objects::SPI_COM_IF, spiCookie);
mgmRm3100Handler->setStartUpImmediately();
spiCookie = new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev,
L3GD20H::MAX_BUFFER_SIZE, spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF,
spiCookie);
gyroL3gHandler->setStartUpImmediately();
#endif /* RPI_TEST_ACS_BOARD == 1 */
}

View File

@ -0,0 +1,98 @@
# BBB_ROOTFS should point to the local directory which contains all the
# libraries and includes from the target raspi.
# The following command can be used to do this, replace <ip-address> and the
# local <rootfs-path> accordingly:
# rsync -vR --progress -rl --delete-after --safe-links pi@<ip-address>:/{lib,usr,opt/vc/lib} <rootfs-path>
# RASPBIAN_ROOTFS needs to be passed to the CMake command or defined in the
# application CMakeLists.txt before loading the toolchain file.
# CROSS_COMPILE also needs to be set accordingly or passed to the CMake command
if(NOT DEFINED ENV{BBB_ROOTFS})
message(FATAL_ERROR
"Define the BBB_ROOTFS variable to point to the Beagle Bone Black rootfs."
)
else()
set(SYSROOT_PATH "$ENV{BBB_ROOTFS}" CACHE FILEPATH "BBB root filesystem path")
message(STATUS "Beagle Bone Black sysroot: ${SYSROOT_PATH}")
endif()
if(NOT DEFINED ENV{CROSS_COMPILE})
set(CROSS_COMPILE "arm-linux-gnueabihf")
message(STATUS
"No CROSS_COMPILE environmental variable set, using default ARM linux "
"cross compiler name ${CROSS_COMPILE}"
)
else()
set(CROSS_COMPILE "$ENV{CROSS_COMPILE}")
message(STATUS
"Using environmental variable CROSS_COMPILE as cross-compiler: "
"$ENV{CROSS_COMPILE}"
)
endif()
message(STATUS "Using sysroot path: ${SYSROOT_PATH}")
set(CROSS_COMPILE_CC "${CROSS_COMPILE}-gcc")
set(CROSS_COMPILE_CXX "${CROSS_COMPILE}-g++")
set(CROSS_COMPILE_LD "${CROSS_COMPILE}-ld")
set(CROSS_COMPILE_AR "${CROSS_COMPILE}-ar")
set(CROSS_COMPILE_RANLIB "${CROSS_COMPILE}-ranlib")
set(CROSS_COMPILE_STRIP "${CROSS_COMPILE}-strip")
set(CROSS_COMPILE_NM "${CROSS_COMPILE}-nm")
set(CROSS_COMPILE_OBJCOPY "${CROSS_COMPILE}-objcopy")
set(CROSS_COMPILE_SIZE "${CROSS_COMPILE}-size")
# At the very least, cross compile gcc and g++ have to be set!
find_program (CROSS_COMPILE_CC_FOUND ${CROSS_COMPILE_CC} REQUIRED)
find_program (CROSS_COMPILE_CXX_FOUND ${CROSS_COMPILE_CXX} REQUIRED)
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_SYSROOT "${SYSROOT_PATH}")
# Define name of the target system
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_PROCESSOR "arm")
# Define the compiler
set(CMAKE_C_COMPILER ${CROSS_COMPILE_CC})
set(CMAKE_CXX_COMPILER ${CROSS_COMPILE_CXX})
# List of library dirs where LD has to look. Pass them directly through gcc.
# LD_LIBRARY_PATH is not evaluated by arm-*-ld
set(LIB_DIRS
"${SYSROOT_PATH}/lib/${CROSS_COMPILE}"
"${SYSROOT_PATH}/usr/local/lib"
"${SYSROOT_PATH}/usr/lib/${CROSS_COMPILE}"
"${SYSROOT_PATH}/usr/lib"
)
# You can additionally check the linker paths if you add the
# flags ' -Xlinker --verbose'
set(COMMON_FLAGS "-I${SYSROOT_PATH}/usr/include")
foreach(LIB ${LIB_DIRS})
set(COMMON_FLAGS "${COMMON_FLAGS} -L${LIB} -Wl,-rpath-link,${LIB}")
endforeach()
set(CMAKE_PREFIX_PATH
"${CMAKE_PREFIX_PATH}"
"${SYSROOT_PATH}/usr/lib/${CROSS_COMPILE}"
)
set(CMAKE_C_FLAGS
"-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard ${COMMON_FLAGS}"
CACHE STRING "Flags for Beagle Bone Black"
)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}"
CACHE STRING "Flags for Beagle Bone Black"
)
set(CMAKE_FIND_ROOT_PATH
"${CMAKE_INSTALL_PREFIX};${CMAKE_PREFIX_PATH};${CMAKE_SYSROOT}"
)
# search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

View File

@ -53,8 +53,8 @@ endif()
if(TGT_BSP)
if (${TGT_BSP} MATCHES "arm/raspberrypi")
set(BSP_PATH "bsp_rpi")
if (${TGT_BSP} MATCHES "arm/raspberrypi" OR ${TGT_BSP} MATCHES "arm/beagleboneblack")
set(BSP_PATH "bsp_linux_board")
elseif(${TGT_BSP} MATCHES "arm/q7s")
set(BSP_PATH "bsp_q7s")
else()

View File

@ -11,7 +11,6 @@ endif()
# Disable compiler checks for cross-compiling.
if(${OS_FSFW} STREQUAL linux AND TGT_BSP)
if(${TGT_BSP} MATCHES "arm/q7s")
set(CMAKE_TOOLCHAIN_FILE
"${CMAKE_SCRIPT_PATH}/Q7SCrossCompileConfig.cmake"
@ -38,7 +37,7 @@ if(${OS_FSFW} STREQUAL linux AND TGT_BSP)
else()
message(STATUS "Setting RASPBERRY_VERSION to ${RASPBERRY_VERSION}")
set(RASPBERRY_VERSION ${RASPBERRY_VERSION} CACHE STRING "Raspberry Pi version")
set(ENV{RASPBERRY_VERSION} ${RASPBERRY_VERSION})
set(ENV{RASPBERRY_VERSION} ${RASPBERRY_VERSION})
endif()
else()
message(STATUS
@ -51,7 +50,14 @@ if(${OS_FSFW} STREQUAL linux AND TGT_BSP)
"${CMAKE_SCRIPT_PATH}/RPiCrossCompileConfig.cmake"
PARENT_SCOPE
)
else()
elseif(${TGT_BSP} MATCHES "arm/beagleboneblack")
if(LINUX_CROSS_COMPILE)
set(CMAKE_TOOLCHAIN_FILE
"${CMAKE_SCRIPT_PATH}/BBBCrossCompileConfig.cmake"
PARENT_SCOPE
)
endif()
else()
message(WARNING "Target BSP (TGT_BSP) ${TGT_BSP} unknown!")
endif()
endif()

View File

@ -6,7 +6,7 @@ if(NOT DEFINED ENV{Q7S_SYSROOT})
# "point to the raspbian rootfs."
# )
else()
set(SYSROOT_PATH "$ENV{Q7S_SYSROOT}")
set(SYSROOT_PATH "$ENV{Q7S_SYSROOT}" CACHE PATH "Q7S root filesystem path")
endif()
if(NOT DEFINED ENV{CROSS_COMPILE})

View File

@ -25,7 +25,7 @@ if(NOT DEFINED ENV{RASPBIAN_ROOTFS})
"point to the raspbian rootfs."
)
else()
set(SYSROOT_PATH "$ENV{RASPBIAN_ROOTFS}")
set(SYSROOT_PATH "$ENV{RASPBIAN_ROOTFS}" CACHE FILEPATH "RPi root filesystem path")
endif()
if(NOT DEFINED ENV{CROSS_COMPILE})

View File

@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
</project>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/scripts.iml" filepath="$PROJECT_DIR$/.idea/scripts.iml" />
</modules>
</component>
</project>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>

View File

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="b7804b00-6384-4363-ae17-406610449420" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../.." />
</component>
<component name="ProjectId" id="1mFLMh77EFiQ6e8GGJM4DSy44LC" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.detected.package.tslint" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
<property name="node.js.path.for.package.tslint" value="project" />
<property name="node.js.selected.package.eslint" value="(autodetect)" />
<property name="node.js.selected.package.tslint" value="(autodetect)" />
</component>
<component name="RunManager">
<configuration name="cmake_build_config" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="scripts" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/cmake_build_config.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.cmake_build_config" />
</list>
</recent_temporary>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="b7804b00-6384-4363-ae17-406610449420" name="Default Changelist" comment="" />
<created>1609084345199</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1609084345199</updated>
<workItem from="1609084346343" duration="6791000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/scripts$cmake_build_config.coverage" NAME="cmake_build_config Coverage Results" MODIFIED="1609089450693" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
</component>
</project>

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Debug-BBB"
defines="LINUX_CROSS_COMPILE=OFF"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

View File

@ -0,0 +1,3 @@
export PATH=$PATH:"$HOME/beaglebone/<cross_compiler_path>/bin"
export CROSS_COMPILE="arm-linux-gnueabihf"
export BBB_ROOTFS="${HOME}/raspberrypi/rootfs"

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Debug-BBB"
defines="LINUX_CROSS_COMPILE=ON"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Release-BBB"
defines="LINUX_CROSS_COMPILE=ON"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Release-BBB"
defines="LINUX_CROSS_COMPILE=ON"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

2
cmake/scripts/Host/create_cmake_debug_cfg.sh Normal file → Executable file
View File

@ -15,7 +15,7 @@ if [ "${counter}" -ge 5 ];then
fi
build_generator=""
build_dir="Debug-Host"
build_dir="build-Debug-Host"
os_fsfw="host"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"

View File

@ -16,7 +16,7 @@ fi
build_generator="Unix Makefiles"
os_fsfw="linux"
builddir="Debug-Linux"
builddir="build-Debug-Host"
echo "Running command (without the leading +):"
set -x # Print command

View File

@ -16,7 +16,7 @@ fi
build_generator="Unix Makefiles"
os_fsfw="linux"
builddir="Release-Linux"
builddir="build-Release-Host"
echo "Running command (without the leading +):"
set -x # Print command

View File

@ -1,25 +0,0 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "create_cmake_cfg.sh not found in upper directories!"
exit 1
fi
build_generator="Unix Makefiles"
os_fsfw="linux"
builddir="RelWithDeb-Linux"
echo "Running command (without the leading +):"
set -x # Print command
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -l "${builddir}"
# Use this if commands are added which should not be printed
# set +x

View File

@ -1,20 +0,0 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "create_cmake_cfg.sh not found in upper directories!"
exit 1
fi
build_generator="Unix Makefiles"
os_fsfw="linux"
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "size"

View File

@ -16,6 +16,7 @@ fi
os_fsfw="linux"
tgt_bsp="arm/q7s"
build_dir="build-Debug-Q7S"
build_generator=""
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
@ -24,4 +25,5 @@ else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}"
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l"${build_dir}"

View File

@ -16,6 +16,7 @@ fi
os_fsfw="linux"
tgt_bsp="arm/q7s"
build_dir="build-Release-Q7S"
build_generator=""
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
@ -24,4 +25,5 @@ else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "release" -t "${tgt_bsp}"
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "release" -t "${tgt_bsp}" \
-l"${build_dir}"

View File

@ -16,6 +16,7 @@ fi
os_fsfw="linux"
tgt_bsp="arm/q7s"
build_dir="build-Release-Q7S"
build_generator=""
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
@ -24,4 +25,5 @@ else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "reldeb" -t "${tgt_bsp}"
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "reldeb" -t "${tgt_bsp}" \
-l"${build_dir}"

View File

@ -17,7 +17,7 @@ fi
os_fsfw="linux"
tgt_bsp="arm/raspberrypi"
build_generator=""
build_dir="Debug-RPi"
build_dir="build-Debug-RPi"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.

View File

@ -17,7 +17,7 @@ fi
os_fsfw="linux"
tgt_bsp="arm/raspberrypi"
build_generator=""
build_dir="Release-RPi"
build_dir="build-Release-RPi"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.

View File

@ -18,18 +18,26 @@ def main():
print("-- Python CMake build configurator utility --")
print("Parsing command line arguments..")
parser = argparse.ArgumentParser(description="Processing arguments for CMake build configuration.")
parser = argparse.ArgumentParser(
description="Processing arguments for CMake build configuration."
)
parser.add_argument("-o", "--osal", type=str, choices=["freertos", "linux", "rtems", "host"],
help="FSFW OSAL. Valid arguments: host, linux, rtems, freertos")
parser.add_argument("-b", "--buildtype", type=str, choices=["debug", "release", "size", "reldeb"],
help="CMake build type. Valid arguments: debug, release, size, reldeb (Release with Debug "
"Information)", default="debug")
parser.add_argument(
"-b", "--buildtype", type=str, choices=["debug", "release", "size", "reldeb"],
help="CMake build type. Valid arguments: debug, release, size, reldeb (Release with Debug "
"Information)", default="debug"
)
parser.add_argument("-l", "--builddir", type=str, help="Specify build directory.")
parser.add_argument("-g", "--generator", type=str, help="CMake Generator")
parser.add_argument("-d", "--defines",
help="Additional custom defines passed to CMake (supply without -D prefix!)",
nargs="*", type=str)
parser.add_argument("-t", "--target-bsp", type=str, help="Target BSP, combination of architecture and machine")
parser.add_argument(
"-d", "--defines",
help="Additional custom defines passed to CMake (supply without -D prefix!)",
nargs="*", type=str
)
parser.add_argument(
"-t", "--target-bsp", type=str, help="Target BSP, combination of architecture and machine"
)
args = parser.parse_args()
@ -64,6 +72,12 @@ def main():
else:
cmake_target_cfg_cmd = ""
define_string = ""
if args.defines is not None:
define_list = args.defines[0].split()
for define in define_list:
define_string += f"-D{define} "
build_folder = cmake_build_type
if args.builddir is not None:
build_folder = args.builddir
@ -85,7 +99,8 @@ def main():
os.chdir(build_folder)
cmake_command = f"cmake {generator_cmake_arg} -DOS_FSFW=\"{osal}\" " \
f"-DCMAKE_BUILD_TYPE=\"{cmake_build_type}\" {cmake_target_cfg_cmd} {source_location}"
f"-DCMAKE_BUILD_TYPE=\"{cmake_build_type}\" {cmake_target_cfg_cmd} " \
f"{define_string} {source_location}"
# Remove redundant spaces
cmake_command = ' '.join(cmake_command.split())
print("Running CMake command: ")

View File

@ -4,7 +4,7 @@
const char* const SW_NAME = "eive";
#define SW_VERSION 1
#define SW_SUBVERSION 1
#define SW_SUBVERSION 2
#define SW_SUBSUBVERSION 0
#endif /* COMMON_CONFIG_OBSWVERSION_H_ */

View File

@ -0,0 +1,24 @@
#ifndef COMMON_CONFIG_COMMONCLASSIDS_H_
#define COMMON_CONFIG_COMMONCLASSIDS_H_
#include <fsfw/returnvalues/FwClassIds.h>
#include <cstdint>
namespace CLASS_ID {
enum commonClassIds: uint8_t {
COMMON_CLASS_ID_START = FW_CLASS_ID_COUNT,
MGM_LIS3MDL, //MGMLIS3
MGM_RM3100, //MGMRM3100
PCDU_HANDLER, //PCDU
HEATER_HANDLER, //HEATER
SYRLINKS_HANDLER, //SYRLINKS
IMTQ_HANDLER, //IMTQ
PLOC_HANDLER, //PLOC
SUS_HANDLER, //SUSS
CCSDS_IP_CORE_BRIDGE, // IP Core interface
COMMON_CLASS_ID_END // [EXPORT] : [END]
};
}
#endif /* COMMON_CONFIG_COMMONCLASSIDS_H_ */

View File

@ -0,0 +1,55 @@
#ifndef COMMON_CONFIG_COMMONOBJECTS_H_
#define COMMON_CONFIG_COMMONOBJECTS_H_
#include <cstdint>
namespace objects {
enum commonObjects: uint32_t {
/* First Byte 0x50-0x52 reserved for PUS Services **/
CCSDS_PACKET_DISTRIBUTOR = 0x50000100,
PUS_PACKET_DISTRIBUTOR = 0x50000200,
UDP_BRIDGE = 0x50000300,
UDP_POLLING_TASK = 0x50000400,
/* 0x43 ('C') for Controllers */
THERMAL_CONTROLLER = 0x43001000,
ATTITUDE_CONTROLLER = 0x43002000,
ACS_CONTROLLER = 0x43003000,
CORE_CONTROLLER = 0x43004000,
/* 0x44 ('D') for device handlers */
P60DOCK_HANDLER = 0x44000001,
PDU1_HANDLER = 0x44000002,
PDU2_HANDLER = 0x44000003,
ACU_HANDLER = 0x44000004,
TMP1075_HANDLER_1 = 0x44000005,
TMP1075_HANDLER_2 = 0x44000006,
MGM_0_LIS3_HANDLER = 0x44000007,
MGM_1_RM3100_HANDLER = 0x44000008,
MGM_2_LIS3_HANDLER = 0x44000009,
MGM_3_RM3100_HANDLER = 0x44000010,
GYRO_0_ADIS_HANDLER = 0x44000011,
GYRO_1_L3G_HANDLER = 0x44000012,
GYRO_2_L3G_HANDLER = 0x44000013,
IMTQ_HANDLER = 0x44000014,
PLOC_HANDLER = 0x44000015,
SUS_1 = 0x44000016,
SUS_2 = 0x44000017,
SUS_3 = 0x44000018,
SUS_4 = 0x44000019,
SUS_5 = 0x4400001A,
SUS_6 = 0x4400001B,
SUS_7 = 0x4400001C,
SUS_8 = 0x4400001D,
SUS_9 = 0x4400001E,
SUS_10 = 0x4400001F,
SUS_11 = 0x44000021,
SUS_12 = 0x44000022,
SUS_13 = 0x44000023,
};
}
#endif /* COMMON_CONFIG_COMMONOBJECTS_H_ */

View File

@ -0,0 +1,21 @@
#ifndef COMMON_CONFIG_COMMONSUBSYSTEMIDS_H_
#define COMMON_CONFIG_COMMONSUBSYSTEMIDS_H_
#include <fsfw/events/fwSubsystemIdRanges.h>
namespace SUBSYSTEM_ID {
enum: uint8_t {
COMMON_SUBSYSTEM_ID_START = FW_SUBSYSTEM_ID_RANGE,
MGM_LIS3MDL = 106,
MGM_RM3100 = 107,
PCDU_HANDLER = 108,
HEATER_HANDLER = 109,
SA_DEPL_HANDLER = 110,
PLOC_HANDLER = 111,
IMTQ_HANDLER = 112,
COMMON_SUBSYSTEM_ID_END
};
}
#endif /* COMMON_CONFIG_COMMONSUBSYSTEMIDS_H_ */

View File

@ -1,5 +1,5 @@
#ifndef FSFWCONFIG_DEVICES_SPI_H_
#define FSFWCONFIG_DEVICES_SPI_H_
#ifndef COMMON_CONFIG_SPICONF_H_
#define COMMON_CONFIG_SPICONF_H_
#include <cstdint>
#include <fsfw_hal/linux/spi/spiDefinitions.h>
@ -20,8 +20,12 @@ static constexpr spi::SpiModes DEFAULT_RM3100_MODE = spi::SpiModes::MODE_3;
static constexpr uint32_t DEFAULT_L3G_SPEED = 3'900'000;
static constexpr spi::SpiModes DEFAULT_L3G_MODE = spi::SpiModes::MODE_3;
static constexpr uint32_t DEFAULT_MAX_1227_SPEED = 3'900'000;
static constexpr spi::SpiModes DEFAULT_MAX_1227_MODE = spi::SpiModes::MODE_3;
static constexpr uint32_t DEFAULT_ADIS16507_SPEED = 976'000;
static constexpr spi::SpiModes DEFAULT_ADIS16507_MODE = spi::SpiModes::MODE_3;
}
#endif /* FSFWCONFIG_DEVICES_SPI_H_ */
#endif /* COMMON_CONFIG_SPICONF_H_ */

18
docker-compose.yml Normal file
View File

@ -0,0 +1,18 @@
version: "3.3"
services:
build-host:
build:
context: .
dockerfile: bsp_hosted/Dockerfile
build-obsw:
build:
context: .
dockerfile: bsp_q7s/Dockerfile
build-rpi:
build:
context: .
dockerfile: bsp_linux_board/Dockerfile

2
fsfw

@ -1 +1 @@
Subproject commit 5273ffa721dd83634ebbcc37c4646752f0bea20f
Subproject commit cae69d540097acba46bffa47fd7afc6a8a19bd15

@ -1 +1 @@
Subproject commit 14fe32572d62db9d19707dc1f9bb6fecb1993b73
Subproject commit fce40ebf9a4a45bafedaee2fc87e5aa10e49fdcc

View File

@ -1,11 +0,0 @@
target_sources(${TARGET_NAME} PRIVATE
ipc/MissionMessageTypes.cpp
pollingsequence/pollingSequenceFactory.cpp
)
target_include_directories(${TARGET_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)

View File

@ -1,53 +0,0 @@
/**
* @brief This file can be used to add preprocessor define for conditional
* code inclusion exclusion or various other project constants and
* properties in one place.
*/
#ifndef FSFWCONFIG_OBSWCONFIG_H_
#define FSFWCONFIG_OBSWCONFIG_H_
#ifdef RASPBERRY_PI
#include <rpi_config.h>
#elif defined(XIPHOS_Q7S)
#include <q7s_config.h>
#endif
#include "commonConfig.h"
#include "OBSWVersion.h"
/* These defines should be disabled for mission code but are useful for
debugging. */
#define OBSW_VERBOSE_LEVEL 1
#define OBSW_PRINT_MISSED_DEADLINES 1
#define OBSW_ADD_TEST_CODE 1
#define TEST_LIBGPIOD 0
#define TE0720 0
#define P60DOCK_DEBUG 0
#define PDU1_DEBUG 0
#define PDU2_DEBUG 0
#define ACU_DEBUG 0
#define SYRLINKS_DEBUG 0
#define IMQT_DEBUG 1
#include "OBSWVersion.h"
/* Can be used to switch device to NORMAL mode immediately */
#define OBSW_SWITCH_TO_NORMAL_MODE_AFTER_STARTUP 1
#ifdef __cplusplus
#include "objects/systemObjectList.h"
#include "events/subsystemIdRanges.h"
#include "returnvalues/classIds.h"
namespace config {
#endif
/* Add mission configuration flags here */
#ifdef __cplusplus
}
#endif
#endif /* FSFWCONFIG_OBSWCONFIG_H_ */

View File

@ -1,254 +0,0 @@
/**
* @brief Auto-generated event translation file. Contains 80 translations.
* Generated on: 2020-05-02 20:13:41
*/
#include <fsfwconfig/events/translateEvents.h>
const char *GPS_STARTUP_FAILED_STRING = "GPS_STARTUP_FAILED";
const char *GPS_FIX_STRING = "GPS_FIX";
const char *GPS_LOST_FIX_STRING = "GPS_LOST_FIX";
const char *STORE_SEND_WRITE_FAILED_STRING = "STORE_SEND_WRITE_FAILED";
const char *STORE_WRITE_FAILED_STRING = "STORE_WRITE_FAILED";
const char *STORE_SEND_READ_FAILED_STRING = "STORE_SEND_READ_FAILED";
const char *STORE_READ_FAILED_STRING = "STORE_READ_FAILED";
const char *UNEXPECTED_MSG_STRING = "UNEXPECTED_MSG";
const char *STORING_FAILED_STRING = "STORING_FAILED";
const char *TM_DUMP_FAILED_STRING = "TM_DUMP_FAILED";
const char *STORE_INIT_FAILED_STRING = "STORE_INIT_FAILED";
const char *STORE_INIT_EMPTY_STRING = "STORE_INIT_EMPTY";
const char *STORE_CONTENT_CORRUPTED_STRING = "STORE_CONTENT_CORRUPTED";
const char *STORE_INITIALIZE_STRING = "STORE_INITIALIZE";
const char *INIT_DONE_STRING = "INIT_DONE";
const char *DUMP_FINISHED_STRING = "DUMP_FINISHED";
const char *DELETION_FINISHED_STRING = "DELETION_FINISHED";
const char *DELETION_FAILED_STRING = "DELETION_FAILED";
const char *AUTO_CATALOGS_SENDING_FAILED_STRING = "AUTO_CATALOGS_SENDING_FAILED";
const char *GET_DATA_FAILED_STRING = "GET_DATA_FAILED";
const char *STORE_DATA_FAILED_STRING = "STORE_DATA_FAILED";
const char *DEVICE_BUILDING_COMMAND_FAILED_STRING = "DEVICE_BUILDING_COMMAND_FAILED";
const char *DEVICE_SENDING_COMMAND_FAILED_STRING = "DEVICE_SENDING_COMMAND_FAILED";
const char *DEVICE_REQUESTING_REPLY_FAILED_STRING = "DEVICE_REQUESTING_REPLY_FAILED";
const char *DEVICE_READING_REPLY_FAILED_STRING = "DEVICE_READING_REPLY_FAILED";
const char *DEVICE_INTERPRETING_REPLY_FAILED_STRING = "DEVICE_INTERPRETING_REPLY_FAILED";
const char *DEVICE_MISSED_REPLY_STRING = "DEVICE_MISSED_REPLY";
const char *DEVICE_UNKNOWN_REPLY_STRING = "DEVICE_UNKNOWN_REPLY";
const char *DEVICE_UNREQUESTED_REPLY_STRING = "DEVICE_UNREQUESTED_REPLY";
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
const char *POWER_BELOW_LOW_LIMIT_STRING = "POWER_BELOW_LOW_LIMIT";
const char *SWITCH_WENT_OFF_STRING = "SWITCH_WENT_OFF";
const char *HEATER_ON_STRING = "HEATER_ON";
const char *HEATER_OFF_STRING = "HEATER_OFF";
const char *HEATER_TIMEOUT_STRING = "HEATER_TIMEOUT";
const char *HEATER_STAYED_ON_STRING = "HEATER_STAYED_ON";
const char *HEATER_STAYED_OFF_STRING = "HEATER_STAYED_OFF";
const char *TEMP_SENSOR_HIGH_STRING = "TEMP_SENSOR_HIGH";
const char *TEMP_SENSOR_LOW_STRING = "TEMP_SENSOR_LOW";
const char *TEMP_SENSOR_GRADIENT_STRING = "TEMP_SENSOR_GRADIENT";
const char *COMPONENT_TEMP_LOW_STRING = "COMPONENT_TEMP_LOW";
const char *COMPONENT_TEMP_HIGH_STRING = "COMPONENT_TEMP_HIGH";
const char *COMPONENT_TEMP_OOL_LOW_STRING = "COMPONENT_TEMP_OOL_LOW";
const char *COMPONENT_TEMP_OOL_HIGH_STRING = "COMPONENT_TEMP_OOL_HIGH";
const char *TEMP_NOT_IN_OP_RANGE_STRING = "TEMP_NOT_IN_OP_RANGE";
const char *FDIR_CHANGED_STATE_STRING = "FDIR_CHANGED_STATE";
const char *FDIR_STARTS_RECOVERY_STRING = "FDIR_STARTS_RECOVERY";
const char *FDIR_TURNS_OFF_DEVICE_STRING = "FDIR_TURNS_OFF_DEVICE";
const char *MONITOR_CHANGED_STATE_STRING = "MONITOR_CHANGED_STATE";
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
const char *SWITCHING_TM_FAILED_STRING = "SWITCHING_TM_FAILED";
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
const char *MODE_INFO_STRING = "MODE_INFO";
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
const char *MODE_TRANSITION_FAILED_STRING = "MODE_TRANSITION_FAILED";
const char *CANT_KEEP_MODE_STRING = "CANT_KEEP_MODE";
const char *OBJECT_IN_INVALID_MODE_STRING = "OBJECT_IN_INVALID_MODE";
const char *FORCING_MODE_STRING = "FORCING_MODE";
const char *MODE_CMD_REJECTED_STRING = "MODE_CMD_REJECTED";
const char *HEALTH_INFO_STRING = "HEALTH_INFO";
const char *CHILD_CHANGED_HEALTH_STRING = "CHILD_CHANGED_HEALTH";
const char *CHILD_PROBLEMS_STRING = "CHILD_PROBLEMS";
const char *OVERWRITING_HEALTH_STRING = "OVERWRITING_HEALTH";
const char *TRYING_RECOVERY_STRING = "TRYING_RECOVERY";
const char *RECOVERY_STEP_STRING = "RECOVERY_STEP";
const char *RECOVERY_DONE_STRING = "RECOVERY_DONE";
const char *RF_AVAILABLE_STRING = "RF_AVAILABLE";
const char *RF_LOST_STRING = "RF_LOST";
const char *BIT_LOCK_STRING = "BIT_LOCK";
const char *BIT_LOCK_LOST_STRING = "BIT_LOCK_LOST";
const char *FRAME_PROCESSING_FAILED_STRING = "FRAME_PROCESSING_FAILED";
const char *TEST_EVENT_SERVICE_1_STRING = "TEST_EVENT_SERVICE_1";
const char *TEST2_STRING = "TEST2";
const char * translateEvents(Event event){
switch((event&0xFFFF)){
case 1000:
return GPS_STARTUP_FAILED_STRING;
case 1001:
return GPS_FIX_STRING;
case 1002:
return GPS_LOST_FIX_STRING;
case 2200:
return STORE_SEND_WRITE_FAILED_STRING;
case 2201:
return STORE_WRITE_FAILED_STRING;
case 2202:
return STORE_SEND_READ_FAILED_STRING;
case 2203:
return STORE_READ_FAILED_STRING;
case 2204:
return UNEXPECTED_MSG_STRING;
case 2205:
return STORING_FAILED_STRING;
case 2206:
return TM_DUMP_FAILED_STRING;
case 2207:
return STORE_INIT_FAILED_STRING;
case 2208:
return STORE_INIT_EMPTY_STRING;
case 2209:
return STORE_CONTENT_CORRUPTED_STRING;
case 2210:
return STORE_INITIALIZE_STRING;
case 2211:
return INIT_DONE_STRING;
case 2212:
return DUMP_FINISHED_STRING;
case 2213:
return DELETION_FINISHED_STRING;
case 2214:
return DELETION_FAILED_STRING;
case 2215:
return AUTO_CATALOGS_SENDING_FAILED_STRING;
case 2600:
return GET_DATA_FAILED_STRING;
case 2601:
return STORE_DATA_FAILED_STRING;
case 2800:
return DEVICE_BUILDING_COMMAND_FAILED_STRING;
case 2801:
return DEVICE_SENDING_COMMAND_FAILED_STRING;
case 2802:
return DEVICE_REQUESTING_REPLY_FAILED_STRING;
case 2803:
return DEVICE_READING_REPLY_FAILED_STRING;
case 2804:
return DEVICE_INTERPRETING_REPLY_FAILED_STRING;
case 2805:
return DEVICE_MISSED_REPLY_STRING;
case 2806:
return DEVICE_UNKNOWN_REPLY_STRING;
case 2807:
return DEVICE_UNREQUESTED_REPLY_STRING;
case 2808:
return INVALID_DEVICE_COMMAND_STRING;
case 2809:
return MONITORING_LIMIT_EXCEEDED_STRING;
case 2810:
return MONITORING_AMBIGUOUS_STRING;
case 4201:
return FUSE_CURRENT_HIGH_STRING;
case 4202:
return FUSE_WENT_OFF_STRING;
case 4204:
return POWER_ABOVE_HIGH_LIMIT_STRING;
case 4205:
return POWER_BELOW_LOW_LIMIT_STRING;
case 4300:
return SWITCH_WENT_OFF_STRING;
case 5000:
return HEATER_ON_STRING;
case 5001:
return HEATER_OFF_STRING;
case 5002:
return HEATER_TIMEOUT_STRING;
case 5003:
return HEATER_STAYED_ON_STRING;
case 5004:
return HEATER_STAYED_OFF_STRING;
case 5200:
return TEMP_SENSOR_HIGH_STRING;
case 5201:
return TEMP_SENSOR_LOW_STRING;
case 5202:
return TEMP_SENSOR_GRADIENT_STRING;
case 5901:
return COMPONENT_TEMP_LOW_STRING;
case 5902:
return COMPONENT_TEMP_HIGH_STRING;
case 5903:
return COMPONENT_TEMP_OOL_LOW_STRING;
case 5904:
return COMPONENT_TEMP_OOL_HIGH_STRING;
case 5905:
return TEMP_NOT_IN_OP_RANGE_STRING;
case 7101:
return FDIR_CHANGED_STATE_STRING;
case 7102:
return FDIR_STARTS_RECOVERY_STRING;
case 7103:
return FDIR_TURNS_OFF_DEVICE_STRING;
case 7201:
return MONITOR_CHANGED_STATE_STRING;
case 7202:
return VALUE_BELOW_LOW_LIMIT_STRING;
case 7203:
return VALUE_ABOVE_HIGH_LIMIT_STRING;
case 7204:
return VALUE_OUT_OF_RANGE_STRING;
case 7301:
return SWITCHING_TM_FAILED_STRING;
case 7400:
return CHANGING_MODE_STRING;
case 7401:
return MODE_INFO_STRING;
case 7402:
return FALLBACK_FAILED_STRING;
case 7403:
return MODE_TRANSITION_FAILED_STRING;
case 7404:
return CANT_KEEP_MODE_STRING;
case 7405:
return OBJECT_IN_INVALID_MODE_STRING;
case 7406:
return FORCING_MODE_STRING;
case 7407:
return MODE_CMD_REJECTED_STRING;
case 7506:
return HEALTH_INFO_STRING;
case 7507:
return CHILD_CHANGED_HEALTH_STRING;
case 7508:
return CHILD_PROBLEMS_STRING;
case 7509:
return OVERWRITING_HEALTH_STRING;
case 7510:
return TRYING_RECOVERY_STRING;
case 7511:
return RECOVERY_STEP_STRING;
case 7512:
return RECOVERY_DONE_STRING;
case 7900:
return RF_AVAILABLE_STRING;
case 7901:
return RF_LOST_STRING;
case 7902:
return BIT_LOCK_STRING;
case 7903:
return BIT_LOCK_LOST_STRING;
case 7905:
return FRAME_PROCESSING_FAILED_STRING;
case 8000:
return TEST_EVENT_SERVICE_1_STRING;
case 9100:
return TEST2_STRING;
default:
return "UNKNOWN_EVENT";
}
return 0;
}

View File

@ -1,11 +0,0 @@
#include <fsfw/ipc/CommandMessage.h>
#include <fsfwconfig/ipc/MissionMessageTypes.h>
void messagetypes::clearMissionMessage(CommandMessage* message) {
// switch(message->getMessageType()) {
// default:
// break;
// }
}

View File

@ -1,242 +0,0 @@
/* Auto-generated event translation file. Contains 77 translations. */
#include <fsfwconfig/objects/translateObjects.h>
const char *AT91_UART2_TEST_TASK_STRING = "AT91_UART2_TEST_TASK";
const char *ARDUINO_0_STRING = "ARDUINO_0";
const char *ARDUINO_1_STRING = "ARDUINO_1";
const char *ARDUINO_2_STRING = "ARDUINO_2";
const char *ARDUINO_3_STRING = "ARDUINO_3";
const char *ARDUINO_4_STRING = "ARDUINO_4";
const char *AT91_I2C_TEST_TASK_STRING = "AT91_I2C_TEST_TASK";
const char *TEST_TASK_STRING = "TEST_TASK";
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER";
const char *S_ADC1_DEC2_STRING = "S_ADC1_DEC2";
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
const char *DLR_PVCH_STRING = "DLR_PVCH";
const char *GYRO1_STRING = "GYRO1";
const char *DLR_IRAS_STRING = "DLR_IRAS";
const char *_DEC1_O1_STRING = "_DEC1_O1";
const char *_DEC1_O2_STRING = "_DEC1_O2";
const char *S1_DEC1_O3_STRING = "S1_DEC1_O3";
const char *S2_DEC1_O4_STRING = "S2_DEC1_O4";
const char *S3_DEC1_O5_STRING = "S3_DEC1_O5";
const char *PT1000_PVHC_DEC1_O6_STRING = "PT1000_PVHC_DEC1_O6";
const char *PT1000_CCSDS1_DEC2_STRING = "PT1000_CCSDS1_DEC2";
const char *PT1000_MGT1_DEC2_STRING = "PT1000_MGT1_DEC2";
const char *S4_DEC2_STRING = "S4_DEC2";
const char *S5_DEC2_STRING = "S5_DEC2";
const char *S6_DEC2_STRING = "S6_DEC2";
const char *PT1000_PVCH_DEC2_STRING = "PT1000_PVCH_DEC2";
const char *_DEC3_STRING = "_DEC3";
const char *PT1000_CCSDS2_DEC3_STRING = "PT1000_CCSDS2_DEC3";
const char *S7_DEC3_STRING = "S7_DEC3";
const char *S8_DEC3_STRING = "S8_DEC3";
const char *PT1000_PVCH_DEC3_STRING = "PT1000_PVCH_DEC3";
const char *GYRO2_STRING = "GYRO2";
const char *PT1000_PLOC_DEC4_STRING = "PT1000_PLOC_DEC4";
const char *S9_DEC4_STRING = "S9_DEC4";
const char *S10_DEC4_STRING = "S10_DEC4";
const char *PT1000_PVHC_DEC4_STRING = "PT1000_PVHC_DEC4";
const char *S_ADC_DEC4_STRING = "S_ADC_DEC4";
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
const char *DUMMY_GPS_COM_IF_STRING = "DUMMY_GPS_COM_IF";
const char *RS232_DEVICE_COM_IF_STRING = "RS232_DEVICE_COM_IF";
const char *I2C_DEVICE_COM_IF_STRING = "I2C_DEVICE_COM_IF";
const char *GPIO_DEVICE_COM_IF_STRING = "GPIO_DEVICE_COM_IF";
const char *SPI_POLLING_TASK_STRING = "SPI_POLLING_TASK";
const char *SPI_DEVICE_COM_IF_STRING = "SPI_DEVICE_COM_IF";
const char *DUMMY_ECHO_COM_IF_STRING = "DUMMY_ECHO_COM_IF";
const char *SD_CARD_HANDLER_STRING = "SD_CARD_HANDLER";
const char *CCSDS_PACKET_DISTRIBUTOR_STRING = "CCSDS_PACKET_DISTRIBUTOR";
const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR";
const char *UDP_TMTC_BRIDGE_STRING = "UDP_TMTC_BRIDGE";
const char *EMAC_POLLING_TASK_STRING = "EMAC_POLLING_TASK";
const char *SERIAL_POLLING_TASK_STRING = "SERIAL_POLLING_TASK";
const char *UART_TMTC_BRIDGE_STRING = "UART_TMTC_BRIDGE";
const char *PUS_SERVICE_1_STRING = "PUS_SERVICE_1";
const char *PUS_SERVICE_2_STRING = "PUS_SERVICE_2";
const char *PUS_SERVICE_3_STRING = "PUS_SERVICE_3";
const char *PUS_SERVICE_5_STRING = "PUS_SERVICE_5";
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
const char *PUS_SERVICE_8_STRING = "PUS_SERVICE_8";
const char *PUS_SERVICE_9_STRING = "PUS_SERVICE_9";
const char *PUS_SERVICE_17_STRING = "PUS_SERVICE_17";
const char *PUS_SERVICE_23_STRING = "PUS_SERVICE_23";
const char *PUS_SERVICE_200_STRING = "PUS_SERVICE_200";
const char *PUS_SERVICE_201_STRING = "PUS_SERVICE_201";
const char *PUS_TIME_STRING = "PUS_TIME";
const char *PUS_FUNNEL_STRING = "PUS_FUNNEL";
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
const char *MODE_STORE_STRING = "MODE_STORE";
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
const char *INTERNAL_ERROR_REPORTER_STRING = "INTERNAL_ERROR_REPORTER";
const char *TC_STORE_STRING = "TC_STORE";
const char *TM_STORE_STRING = "TM_STORE";
const char *IPC_STORE_STRING = "IPC_STORE";
const char *AT91_SPI_TEST_TASK_STRING = "AT91_SPI_TEST_TASK";
const char *STM32_TEST_TASK_STRING = "STM32_TEST_TASK";
const char *AT91_UART0_TEST_TASK_STRING = "AT91_UART0_TEST_TASK";
const char *NO_OBJECT_STRING = "NO_OBJECT";
const char* translateObject(object_id_t object){
switch((object&0xFFFFFFFF)){
case 0x000123336:
return AT91_UART2_TEST_TASK_STRING;
case 0x01010100:
return ARDUINO_0_STRING;
case 0x01010101:
return ARDUINO_1_STRING;
case 0x01010102:
return ARDUINO_2_STRING;
case 0x01010103:
return ARDUINO_3_STRING;
case 0x01010104:
return ARDUINO_4_STRING;
case 0x12345678:
return AT91_I2C_TEST_TASK_STRING;
case 0x42694269:
return TEST_TASK_STRING;
case 0x44003200:
return PCDU_HANDLER_STRING;
case 0x4400AFFE:
return DUMMY_HANDLER_STRING;
case 0x44020108:
return S_ADC1_DEC2_STRING;
case 0x44101F00:
return GPS0_HANDLER_STRING;
case 0x44104000:
return DLR_PVCH_STRING;
case 0x44105000:
return GYRO1_STRING;
case 0x44106000:
return DLR_IRAS_STRING;
case 0x44115401:
return _DEC1_O1_STRING;
case 0x44115402:
return _DEC1_O2_STRING;
case 0x44115404:
return S1_DEC1_O3_STRING;
case 0x44115405:
return S2_DEC1_O4_STRING;
case 0x44115406:
return S3_DEC1_O5_STRING;
case 0x44115407:
return PT1000_PVHC_DEC1_O6_STRING;
case 0x44125401:
return PT1000_CCSDS1_DEC2_STRING;
case 0x44125403:
return PT1000_MGT1_DEC2_STRING;
case 0x44125404:
return S4_DEC2_STRING;
case 0x44125405:
return S5_DEC2_STRING;
case 0x44125406:
return S6_DEC2_STRING;
case 0x44125407:
return PT1000_PVCH_DEC2_STRING;
case 0x44130301:
return _DEC3_STRING;
case 0x44130302:
return PT1000_CCSDS2_DEC3_STRING;
case 0x44130305:
return S7_DEC3_STRING;
case 0x44130306:
return S8_DEC3_STRING;
case 0x44130307:
return PT1000_PVCH_DEC3_STRING;
case 0x44130308:
return GYRO2_STRING;
case 0x44145401:
return PT1000_PLOC_DEC4_STRING;
case 0x44145404:
return S9_DEC4_STRING;
case 0x44145405:
return S10_DEC4_STRING;
case 0x44145406:
return PT1000_PVHC_DEC4_STRING;
case 0x44145407:
return S_ADC_DEC4_STRING;
case 0x44202000:
return GPS1_HANDLER_STRING;
case 0x49001F00:
return DUMMY_GPS_COM_IF_STRING;
case 0x49005200:
return RS232_DEVICE_COM_IF_STRING;
case 0x49005300:
return I2C_DEVICE_COM_IF_STRING;
case 0x49005400:
return GPIO_DEVICE_COM_IF_STRING;
case 0x49005410:
return SPI_POLLING_TASK_STRING;
case 0x49005600:
return SPI_DEVICE_COM_IF_STRING;
case 0x4900AFFE:
return DUMMY_ECHO_COM_IF_STRING;
case 0x4D0073AD:
return SD_CARD_HANDLER_STRING;
case 0x50000100:
return CCSDS_PACKET_DISTRIBUTOR_STRING;
case 0x50000200:
return PUS_PACKET_DISTRIBUTOR_STRING;
case 0x50000300:
return UDP_TMTC_BRIDGE_STRING;
case 0x50000400:
return EMAC_POLLING_TASK_STRING;
case 0x50000600:
return SERIAL_POLLING_TASK_STRING;
case 0x5000500:
return UART_TMTC_BRIDGE_STRING;
case 0x51000100:
return PUS_SERVICE_1_STRING;
case 0x51000200:
return PUS_SERVICE_2_STRING;
case 0x51000300:
return PUS_SERVICE_3_STRING;
case 0x51000400:
return PUS_SERVICE_5_STRING;
case 0x51000500:
return PUS_SERVICE_6_STRING;
case 0x51000800:
return PUS_SERVICE_8_STRING;
case 0x51000900:
return PUS_SERVICE_9_STRING;
case 0x51001700:
return PUS_SERVICE_17_STRING;
case 0x51002300:
return PUS_SERVICE_23_STRING;
case 0x51020000:
return PUS_SERVICE_200_STRING;
case 0x51020100:
return PUS_SERVICE_201_STRING;
case 0x52000001:
return PUS_TIME_STRING;
case 0x52000002:
return PUS_FUNNEL_STRING;
case 0x53010000:
return HEALTH_TABLE_STRING;
case 0x53010100:
return MODE_STORE_STRING;
case 0x53030000:
return EVENT_MANAGER_STRING;
case 0x53040000:
return INTERNAL_ERROR_REPORTER_STRING;
case 0x534f0100:
return TC_STORE_STRING;
case 0x534f0200:
return TM_STORE_STRING;
case 0x534f0300:
return IPC_STORE_STRING;
case 0x66666666:
return AT91_SPI_TEST_TASK_STRING;
case 0x77777777:
return STM32_TEST_TASK_STRING;
case 0x87654321:
return AT91_UART0_TEST_TASK_STRING;
case 0xFFFFFFFF:
return NO_OBJECT_STRING;
default:
return "UNKNOWN_OBJECT";
}
return 0;
}

View File

@ -1,291 +0,0 @@
#include "pollingSequenceFactory.h"
#include <OBSWConfig.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfwconfig/objects/systemObjectList.h>
ReturnValue_t pst::pollingSequenceInitDefault(FixedTimeslotTaskIF *thisSequence)
{
/* Length of a communication cycle */
uint32_t length = thisSequence->getPeriodMs();
thisSequence->addSlot(objects::TMP1075_HANDLER_1, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::TMP1075_HANDLER_2, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::HEATER_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::SOLAR_ARRAY_DEPL_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
#if Q7S_ADD_RTD_DEVICES == 1
thisSequence->addSlot(objects::RTD_IC3, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC4, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC5, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC6, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC7, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC8, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC9, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC10, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC11, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC12, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC13, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC14, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC15, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC16, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC17, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RTD_IC18, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
#endif /* Q7S_ADD_RTD_DEVICES */
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::TMP1075_HANDLER_1, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::TMP1075_HANDLER_2, length * 0.2, DeviceHandlerIF::SEND_WRITE);
#if Q7S_ADD_RTD_DEVICES == 1
thisSequence->addSlot(objects::RTD_IC3, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC4, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC5, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC6, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC7, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC8, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC9, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC10, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC11, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC12, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC13, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC14, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC15, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC16, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC17, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RTD_IC18, length * 0.2, DeviceHandlerIF::SEND_WRITE);
#endif /* Q7S_ADD_RTD_DEVICES */
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::TMP1075_HANDLER_1, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::TMP1075_HANDLER_2, length * 0.4, DeviceHandlerIF::GET_WRITE);
#if Q7S_ADD_RTD_DEVICES == 1
thisSequence->addSlot(objects::RTD_IC3, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC4, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC5, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC6, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC7, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC8, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC9, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC10, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC11, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC12, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC13, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC14, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC15, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC16, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC17, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RTD_IC18, length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.4, DeviceHandlerIF::GET_WRITE);
#endif /* Q7S_ADD_RTD_DEVICES */
thisSequence->addSlot(objects::TMP1075_HANDLER_1, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::TMP1075_HANDLER_2, length * 0.6, DeviceHandlerIF::SEND_READ);
#if Q7S_ADD_RTD_DEVICES == 1
thisSequence->addSlot(objects::RTD_IC3, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC4, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC5, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC6, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC7, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC8, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC9, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC10, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC11, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC12, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC13, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC14, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC15, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC16, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC17, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RTD_IC18, length * 0.6, DeviceHandlerIF::SEND_READ);
#endif /* Q7S_ADD_RTD_DEVICES */
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::TMP1075_HANDLER_1, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::TMP1075_HANDLER_2, length * 0.8, DeviceHandlerIF::GET_READ);
#if Q7S_ADD_RTD_DEVICES == 1
thisSequence->addSlot(objects::RTD_IC3, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC4, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC5, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC6, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC7, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC8, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC9, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC10, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC11, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC12, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC13, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC14, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC15, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC16, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC17, length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RTD_IC18, length * 0.8, DeviceHandlerIF::GET_READ);
#endif /* Q7S_ADD_RTD_DEVICES */
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) {
return HasReturnvaluesIF::RETURN_OK;
}
sif::error << "PollingSequence::initialize has errors!" << std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
}
ReturnValue_t pst::gomspacePstInit(FixedTimeslotTaskIF *thisSequence){
uint32_t length = thisSequence->getPeriodMs();
thisSequence->addSlot(objects::PCDU_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::PCDU_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::P60DOCK_HANDLER,
length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::PDU1_HANDLER,
length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::PDU2_HANDLER,
length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::ACU_HANDLER,
length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::P60DOCK_HANDLER,
length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::PDU1_HANDLER,
length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::PDU2_HANDLER,
length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::ACU_HANDLER,
length * 0.2, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::P60DOCK_HANDLER,
length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::PDU1_HANDLER,
length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::PDU2_HANDLER,
length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::ACU_HANDLER,
length * 0.4, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::P60DOCK_HANDLER,
length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::PDU1_HANDLER,
length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::PDU2_HANDLER,
length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::ACU_HANDLER,
length * 0.6, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::P60DOCK_HANDLER,
length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::PDU1_HANDLER,
length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::PDU2_HANDLER,
length * 0.8, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::ACU_HANDLER,
length * 0.8, DeviceHandlerIF::GET_READ);
#if OBSW_ADD_ACS_BOARD == 1
// thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0,
// DeviceHandlerIF::PERFORM_OPERATION);
// thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.2,
// DeviceHandlerIF::SEND_WRITE);
// thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.4,
// DeviceHandlerIF::GET_WRITE);
// thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.6,
// DeviceHandlerIF::SEND_READ);
// thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.8,
// DeviceHandlerIF::GET_READ);
//
// thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0,
// DeviceHandlerIF::PERFORM_OPERATION);
// thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.2,
// DeviceHandlerIF::SEND_WRITE);
// thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.4,
// DeviceHandlerIF::GET_WRITE);
// thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.6,
// DeviceHandlerIF::SEND_READ);
// thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.8,
// DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0.2,
DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0.4,
DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0.6,
DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0.8,
DeviceHandlerIF::GET_READ);
// thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0,
// DeviceHandlerIF::PERFORM_OPERATION);
// thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.2,
// DeviceHandlerIF::SEND_WRITE);
// thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.4,
// DeviceHandlerIF::GET_WRITE);
// thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.6,
// DeviceHandlerIF::SEND_READ);
// thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.8,
// DeviceHandlerIF::GET_READ);
#endif
if (thisSequence->checkSequence() != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Initialization of GomSpace PST failed" << std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t pst::pollingSequenceAcsTest(FixedTimeslotTaskIF *thisSequence) {
uint32_t length = thisSequence->getPeriodMs();
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.2,
DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.4,
DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.6,
DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0.8,
DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.2,
DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.4,
DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.6,
DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::MGM_1_RM3100_HANDLER, length * 0.8,
DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.2,
DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.4,
DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.6,
DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0.8,
DeviceHandlerIF::GET_READ);
if (thisSequence->checkSequence() != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Initialization of ACS Board PST failed" << std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
}
return HasReturnvaluesIF::RETURN_OK;
}

View File

@ -0,0 +1,83 @@
2200;STORE_SEND_WRITE_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2201;STORE_WRITE_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2202;STORE_SEND_READ_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2203;STORE_READ_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2204;UNEXPECTED_MSG;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2205;STORING_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2206;TM_DUMP_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2207;STORE_INIT_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2208;STORE_INIT_EMPTY;INFO; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2209;STORE_CONTENT_CORRUPTED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2210;STORE_INITIALIZE;INFO; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2211;INIT_DONE;INFO; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2212;DUMP_FINISHED;INFO; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2213;DELETION_FINISHED;INFO; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2214;DELETION_FAILED;LOW; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2215;AUTO_CATALOGS_SENDING_FAILED;INFO; ;../../fsfw/tmstorage/TmStoreBackendIF.h
2600;GET_DATA_FAILED;LOW; ;../../fsfw/storagemanager/StorageManagerIF.h
2601;STORE_DATA_FAILED;LOW; ;../../fsfw/storagemanager/StorageManagerIF.h
2800;DEVICE_BUILDING_COMMAND_FAILED;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2801;DEVICE_SENDING_COMMAND_FAILED;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2802;DEVICE_REQUESTING_REPLY_FAILED;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2803;DEVICE_READING_REPLY_FAILED;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2805;DEVICE_MISSED_REPLY;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2806;DEVICE_UNKNOWN_REPLY;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2807;DEVICE_UNREQUESTED_REPLY;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2808;INVALID_DEVICE_COMMAND;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2809;MONITORING_LIMIT_EXCEEDED;LOW; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
2810;MONITORING_AMBIGUOUS;HIGH; ;../../fsfw/devicehandlers/DeviceHandlerIF.h
4201;FUSE_CURRENT_HIGH;LOW; ;../../fsfw/power/Fuse.h
4202;FUSE_WENT_OFF;LOW; ;../../fsfw/power/Fuse.h
4204;POWER_ABOVE_HIGH_LIMIT;LOW; ;../../fsfw/power/Fuse.h
4205;POWER_BELOW_LOW_LIMIT;LOW; ;../../fsfw/power/Fuse.h
4300;SWITCH_WENT_OFF;LOW; ;../../fsfw/power/PowerSwitchIF.h
5000;HEATER_ON;INFO; ;../../fsfw/thermal/Heater.h
5001;HEATER_OFF;INFO; ;../../fsfw/thermal/Heater.h
5002;HEATER_TIMEOUT;LOW; ;../../fsfw/thermal/Heater.h
5003;HEATER_STAYED_ON;LOW; ;../../fsfw/thermal/Heater.h
5004;HEATER_STAYED_OFF;LOW; ;../../fsfw/thermal/Heater.h
5200;TEMP_SENSOR_HIGH;LOW; ;../../fsfw/thermal/AbstractTemperatureSensor.h
5201;TEMP_SENSOR_LOW;LOW; ;../../fsfw/thermal/AbstractTemperatureSensor.h
5202;TEMP_SENSOR_GRADIENT;LOW; ;../../fsfw/thermal/AbstractTemperatureSensor.h
5901;COMPONENT_TEMP_LOW;LOW; ;../../fsfw/thermal/ThermalComponentIF.h
5902;COMPONENT_TEMP_HIGH;LOW; ;../../fsfw/thermal/ThermalComponentIF.h
5903;COMPONENT_TEMP_OOL_LOW;LOW; ;../../fsfw/thermal/ThermalComponentIF.h
5904;COMPONENT_TEMP_OOL_HIGH;LOW; ;../../fsfw/thermal/ThermalComponentIF.h
5905;TEMP_NOT_IN_OP_RANGE;LOW; ;../../fsfw/thermal/ThermalComponentIF.h
7101;FDIR_CHANGED_STATE;INFO; ;../../fsfw/fdir/FailureIsolationBase.h
7102;FDIR_STARTS_RECOVERY;MEDIUM; ;../../fsfw/fdir/FailureIsolationBase.h
7103;FDIR_TURNS_OFF_DEVICE;MEDIUM; ;../../fsfw/fdir/FailureIsolationBase.h
7201;MONITOR_CHANGED_STATE;LOW; ;../../fsfw/monitoring/MonitoringIF.h
7202;VALUE_BELOW_LOW_LIMIT;LOW; ;../../fsfw/monitoring/MonitoringIF.h
7203;VALUE_ABOVE_HIGH_LIMIT;LOW; ;../../fsfw/monitoring/MonitoringIF.h
7204;VALUE_OUT_OF_RANGE;LOW; ;../../fsfw/monitoring/MonitoringIF.h
7301;SWITCHING_TM_FAILED;LOW; ;../../fsfw/datapool/HkSwitchHelper.h
7400;CHANGING_MODE;INFO; ;../../fsfw/modes/HasModesIF.h
7401;MODE_INFO;INFO; ;../../fsfw/modes/HasModesIF.h
7402;FALLBACK_FAILED;HIGH; ;../../fsfw/modes/HasModesIF.h
7403;MODE_TRANSITION_FAILED;LOW; ;../../fsfw/modes/HasModesIF.h
7404;CANT_KEEP_MODE;HIGH; ;../../fsfw/modes/HasModesIF.h
7405;OBJECT_IN_INVALID_MODE;LOW; ;../../fsfw/modes/HasModesIF.h
7406;FORCING_MODE;MEDIUM; ;../../fsfw/modes/HasModesIF.h
7407;MODE_CMD_REJECTED;LOW; ;../../fsfw/modes/HasModesIF.h
7506;HEALTH_INFO;INFO; ;../../fsfw/health/HasHealthIF.h
7507;CHILD_CHANGED_HEALTH;INFO; ;../../fsfw/health/HasHealthIF.h
7508;CHILD_PROBLEMS;LOW; ;../../fsfw/health/HasHealthIF.h
7509;OVERWRITING_HEALTH;LOW; ;../../fsfw/health/HasHealthIF.h
7510;TRYING_RECOVERY;MEDIUM; ;../../fsfw/health/HasHealthIF.h
7511;RECOVERY_STEP;MEDIUM; ;../../fsfw/health/HasHealthIF.h
7512;RECOVERY_DONE;MEDIUM; ;../../fsfw/health/HasHealthIF.h
7900;RF_AVAILABLE;INFO; ;../../fsfw/datalinklayer/DataLinkLayer.h
7901;RF_LOST;INFO; ;../../fsfw/datalinklayer/DataLinkLayer.h
7902;BIT_LOCK;INFO; ;../../fsfw/datalinklayer/DataLinkLayer.h
7903;BIT_LOCK_LOST;INFO; ;../../fsfw/datalinklayer/DataLinkLayer.h
7905;FRAME_PROCESSING_FAILED;LOW; ;../../fsfw/datalinklayer/DataLinkLayer.h
8900;CLOCK_SET;INFO; ;../../fsfw/pus/Service9TimeManagement.h
8901;CLOCK_SET_FAILURE;LOW; ;../../fsfw/pus/Service9TimeManagement.h
9700;TEST;INFO; ;../../fsfw/pus/Service17Test.h
10600;CHANGE_OF_SETUP_PARAMETER;LOW; ;../../mission/devices/MGMHandlerLIS3MDL.h
11101;MEMORY_READ_RPT_CRC_FAILURE;LOW; ;../../mission/devices/PlocHandler.h
11102;ACK_FAILURE;LOW; ;../../mission/devices/PlocHandler.h
11103;EXE_FAILURE;LOW; ;../../mission/devices/PlocHandler.h
11104;CRC_FAILURE_EVENT;LOW; ;../../mission/devices/PlocHandler.h
1 2200 STORE_SEND_WRITE_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
2 2201 STORE_WRITE_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
3 2202 STORE_SEND_READ_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
4 2203 STORE_READ_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
5 2204 UNEXPECTED_MSG LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
6 2205 STORING_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
7 2206 TM_DUMP_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
8 2207 STORE_INIT_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
9 2208 STORE_INIT_EMPTY INFO ../../fsfw/tmstorage/TmStoreBackendIF.h
10 2209 STORE_CONTENT_CORRUPTED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
11 2210 STORE_INITIALIZE INFO ../../fsfw/tmstorage/TmStoreBackendIF.h
12 2211 INIT_DONE INFO ../../fsfw/tmstorage/TmStoreBackendIF.h
13 2212 DUMP_FINISHED INFO ../../fsfw/tmstorage/TmStoreBackendIF.h
14 2213 DELETION_FINISHED INFO ../../fsfw/tmstorage/TmStoreBackendIF.h
15 2214 DELETION_FAILED LOW ../../fsfw/tmstorage/TmStoreBackendIF.h
16 2215 AUTO_CATALOGS_SENDING_FAILED INFO ../../fsfw/tmstorage/TmStoreBackendIF.h
17 2600 GET_DATA_FAILED LOW ../../fsfw/storagemanager/StorageManagerIF.h
18 2601 STORE_DATA_FAILED LOW ../../fsfw/storagemanager/StorageManagerIF.h
19 2800 DEVICE_BUILDING_COMMAND_FAILED LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
20 2801 DEVICE_SENDING_COMMAND_FAILED LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
21 2802 DEVICE_REQUESTING_REPLY_FAILED LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
22 2803 DEVICE_READING_REPLY_FAILED LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
23 2804 DEVICE_INTERPRETING_REPLY_FAILED LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
24 2805 DEVICE_MISSED_REPLY LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
25 2806 DEVICE_UNKNOWN_REPLY LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
26 2807 DEVICE_UNREQUESTED_REPLY LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
27 2808 INVALID_DEVICE_COMMAND LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
28 2809 MONITORING_LIMIT_EXCEEDED LOW ../../fsfw/devicehandlers/DeviceHandlerIF.h
29 2810 MONITORING_AMBIGUOUS HIGH ../../fsfw/devicehandlers/DeviceHandlerIF.h
30 4201 FUSE_CURRENT_HIGH LOW ../../fsfw/power/Fuse.h
31 4202 FUSE_WENT_OFF LOW ../../fsfw/power/Fuse.h
32 4204 POWER_ABOVE_HIGH_LIMIT LOW ../../fsfw/power/Fuse.h
33 4205 POWER_BELOW_LOW_LIMIT LOW ../../fsfw/power/Fuse.h
34 4300 SWITCH_WENT_OFF LOW ../../fsfw/power/PowerSwitchIF.h
35 5000 HEATER_ON INFO ../../fsfw/thermal/Heater.h
36 5001 HEATER_OFF INFO ../../fsfw/thermal/Heater.h
37 5002 HEATER_TIMEOUT LOW ../../fsfw/thermal/Heater.h
38 5003 HEATER_STAYED_ON LOW ../../fsfw/thermal/Heater.h
39 5004 HEATER_STAYED_OFF LOW ../../fsfw/thermal/Heater.h
40 5200 TEMP_SENSOR_HIGH LOW ../../fsfw/thermal/AbstractTemperatureSensor.h
41 5201 TEMP_SENSOR_LOW LOW ../../fsfw/thermal/AbstractTemperatureSensor.h
42 5202 TEMP_SENSOR_GRADIENT LOW ../../fsfw/thermal/AbstractTemperatureSensor.h
43 5901 COMPONENT_TEMP_LOW LOW ../../fsfw/thermal/ThermalComponentIF.h
44 5902 COMPONENT_TEMP_HIGH LOW ../../fsfw/thermal/ThermalComponentIF.h
45 5903 COMPONENT_TEMP_OOL_LOW LOW ../../fsfw/thermal/ThermalComponentIF.h
46 5904 COMPONENT_TEMP_OOL_HIGH LOW ../../fsfw/thermal/ThermalComponentIF.h
47 5905 TEMP_NOT_IN_OP_RANGE LOW ../../fsfw/thermal/ThermalComponentIF.h
48 7101 FDIR_CHANGED_STATE INFO ../../fsfw/fdir/FailureIsolationBase.h
49 7102 FDIR_STARTS_RECOVERY MEDIUM ../../fsfw/fdir/FailureIsolationBase.h
50 7103 FDIR_TURNS_OFF_DEVICE MEDIUM ../../fsfw/fdir/FailureIsolationBase.h
51 7201 MONITOR_CHANGED_STATE LOW ../../fsfw/monitoring/MonitoringIF.h
52 7202 VALUE_BELOW_LOW_LIMIT LOW ../../fsfw/monitoring/MonitoringIF.h
53 7203 VALUE_ABOVE_HIGH_LIMIT LOW ../../fsfw/monitoring/MonitoringIF.h
54 7204 VALUE_OUT_OF_RANGE LOW ../../fsfw/monitoring/MonitoringIF.h
55 7301 SWITCHING_TM_FAILED LOW ../../fsfw/datapool/HkSwitchHelper.h
56 7400 CHANGING_MODE INFO ../../fsfw/modes/HasModesIF.h
57 7401 MODE_INFO INFO ../../fsfw/modes/HasModesIF.h
58 7402 FALLBACK_FAILED HIGH ../../fsfw/modes/HasModesIF.h
59 7403 MODE_TRANSITION_FAILED LOW ../../fsfw/modes/HasModesIF.h
60 7404 CANT_KEEP_MODE HIGH ../../fsfw/modes/HasModesIF.h
61 7405 OBJECT_IN_INVALID_MODE LOW ../../fsfw/modes/HasModesIF.h
62 7406 FORCING_MODE MEDIUM ../../fsfw/modes/HasModesIF.h
63 7407 MODE_CMD_REJECTED LOW ../../fsfw/modes/HasModesIF.h
64 7506 HEALTH_INFO INFO ../../fsfw/health/HasHealthIF.h
65 7507 CHILD_CHANGED_HEALTH INFO ../../fsfw/health/HasHealthIF.h
66 7508 CHILD_PROBLEMS LOW ../../fsfw/health/HasHealthIF.h
67 7509 OVERWRITING_HEALTH LOW ../../fsfw/health/HasHealthIF.h
68 7510 TRYING_RECOVERY MEDIUM ../../fsfw/health/HasHealthIF.h
69 7511 RECOVERY_STEP MEDIUM ../../fsfw/health/HasHealthIF.h
70 7512 RECOVERY_DONE MEDIUM ../../fsfw/health/HasHealthIF.h
71 7900 RF_AVAILABLE INFO ../../fsfw/datalinklayer/DataLinkLayer.h
72 7901 RF_LOST INFO ../../fsfw/datalinklayer/DataLinkLayer.h
73 7902 BIT_LOCK INFO ../../fsfw/datalinklayer/DataLinkLayer.h
74 7903 BIT_LOCK_LOST INFO ../../fsfw/datalinklayer/DataLinkLayer.h
75 7905 FRAME_PROCESSING_FAILED LOW ../../fsfw/datalinklayer/DataLinkLayer.h
76 8900 CLOCK_SET INFO ../../fsfw/pus/Service9TimeManagement.h
77 8901 CLOCK_SET_FAILURE LOW ../../fsfw/pus/Service9TimeManagement.h
78 9700 TEST INFO ../../fsfw/pus/Service17Test.h
79 10600 CHANGE_OF_SETUP_PARAMETER LOW ../../mission/devices/MGMHandlerLIS3MDL.h
80 11101 MEMORY_READ_RPT_CRC_FAILURE LOW ../../mission/devices/PlocHandler.h
81 11102 ACK_FAILURE LOW ../../mission/devices/PlocHandler.h
82 11103 EXE_FAILURE LOW ../../mission/devices/PlocHandler.h
83 11104 CRC_FAILURE_EVENT LOW ../../mission/devices/PlocHandler.h

View File

@ -0,0 +1,93 @@
0x00005060;P60DOCK_TEST_TASK
0x44000001;P60DOCK_HANDLER
0x44000002;PDU1_HANDLER
0x44000003;PDU2_HANDLER
0x44000004;ACU_HANDLER
0x44000005;TMP1075_HANDLER_1
0x44000006;TMP1075_HANDLER_2
0x44000007;MGM_0_LIS3_HANDLER
0x44000008;MGM_1_RM3100_HANDLER
0x44000009;MGM_2_LIS3_HANDLER
0x44000010;MGM_3_RM3100_HANDLER
0x44000011;GYRO_0_ADIS_HANDLER
0x44000012;GYRO_1_L3G_HANDLER
0x44000013;GYRO_2_L3G_HANDLER
0x44000014;IMTQ_HANDLER
0x44000015;PLOC_HANDLER
0x44000016;SUS_1
0x44000017;SUS_2
0x44000018;SUS_3
0x44000019;SUS_4
0x4400001A;SUS_5
0x4400001B;SUS_6
0x4400001C;SUS_7
0x4400001D;SUS_8
0x4400001E;SUS_9
0x4400001F;SUS_10
0x44000021;SUS_11
0x44000022;SUS_12
0x44000023;SUS_13
0x44001000;PCDU_HANDLER
0x44001001;SOLAR_ARRAY_DEPL_HANDLER
0x44001002;SYRLINKS_HK_HANDLER
0x47000001;GPIO_IF
0x49000001;ARDUINO_COM_IF
0x49000002;CSP_COM_IF
0x49000003;I2C_COM_IF
0x49000004;UART_COM_IF
0x49000005;SPI_COM_IF
0x50000100;CCSDS_PACKET_DISTRIBUTOR
0x50000200;PUS_PACKET_DISTRIBUTOR
0x50000300;UDP_BRIDGE
0x50000400;UDP_POLLING_TASK
0x51000300;PUS_SERVICE_3
0x51000400;PUS_SERVICE_5
0x51000500;PUS_SERVICE_6
0x51000800;PUS_SERVICE_8
0x51002300;PUS_SERVICE_23
0x51020100;PUS_SERVICE_201
0x52000002;TM_FUNNEL
0x53000000;FSFW_OBJECTS_START
0x53000001;PUS_SERVICE_1_VERIFICATION
0x53000002;PUS_SERVICE_2_DEVICE_ACCESS
0x53000003;PUS_SERVICE_3_HOUSEKEEPING
0x53000005;PUS_SERVICE_5_EVENT_REPORTING
0x53000008;PUS_SERVICE_8_FUNCTION_MGMT
0x53000009;PUS_SERVICE_9_TIME_MGMT
0x53000017;PUS_SERVICE_17_TEST
0x53000020;PUS_SERVICE_20_PARAMETERS
0x53000200;PUS_SERVICE_200_MODE_MGMT
0x53000201;PUS_SERVICE_201_HEALTH
0x53010000;HEALTH_TABLE
0x53010100;MODE_STORE
0x53030000;EVENT_MANAGER
0x53040000;INTERNAL_ERROR_REPORTER
0x534f0100;TC_STORE
0x534f0200;TM_STORE
0x534f0300;IPC_STORE
0x53500010;TIME_STAMPER
0x53ffffff;FSFW_OBJECTS_END
0x54000003;HEATER_HANDLER
0x54000004;RTD_IC3
0x54000005;RTD_IC4
0x54000006;RTD_IC5
0x54000007;RTD_IC6
0x54000008;RTD_IC7
0x54000009;RTD_IC8
0x5400000A;RTD_IC9
0x5400000B;RTD_IC10
0x5400000C;RTD_IC11
0x5400000D;RTD_IC12
0x5400000E;RTD_IC13
0x5400000F;RTD_IC14
0x54000010;SPI_TEST
0x5400001F;RTD_IC15
0x5400002F;RTD_IC16
0x5400003F;RTD_IC17
0x5400004F;RTD_IC18
0x54000050;RAD_SENSOR
0x5400AFFE;DUMMY_HANDLER
0x5400CAFE;DUMMY_INTERFACE
0x54123456;LIBGPIOD_TEST
0x54694269;TEST_TASK
0xFFFFFFFF;NO_OBJECT
1 0x00005060 P60DOCK_TEST_TASK
2 0x44000001 P60DOCK_HANDLER
3 0x44000002 PDU1_HANDLER
4 0x44000003 PDU2_HANDLER
5 0x44000004 ACU_HANDLER
6 0x44000005 TMP1075_HANDLER_1
7 0x44000006 TMP1075_HANDLER_2
8 0x44000007 MGM_0_LIS3_HANDLER
9 0x44000008 MGM_1_RM3100_HANDLER
10 0x44000009 MGM_2_LIS3_HANDLER
11 0x44000010 MGM_3_RM3100_HANDLER
12 0x44000011 GYRO_0_ADIS_HANDLER
13 0x44000012 GYRO_1_L3G_HANDLER
14 0x44000013 GYRO_2_L3G_HANDLER
15 0x44000014 IMTQ_HANDLER
16 0x44000015 PLOC_HANDLER
17 0x44000016 SUS_1
18 0x44000017 SUS_2
19 0x44000018 SUS_3
20 0x44000019 SUS_4
21 0x4400001A SUS_5
22 0x4400001B SUS_6
23 0x4400001C SUS_7
24 0x4400001D SUS_8
25 0x4400001E SUS_9
26 0x4400001F SUS_10
27 0x44000021 SUS_11
28 0x44000022 SUS_12
29 0x44000023 SUS_13
30 0x44001000 PCDU_HANDLER
31 0x44001001 SOLAR_ARRAY_DEPL_HANDLER
32 0x44001002 SYRLINKS_HK_HANDLER
33 0x47000001 GPIO_IF
34 0x49000001 ARDUINO_COM_IF
35 0x49000002 CSP_COM_IF
36 0x49000003 I2C_COM_IF
37 0x49000004 UART_COM_IF
38 0x49000005 SPI_COM_IF
39 0x50000100 CCSDS_PACKET_DISTRIBUTOR
40 0x50000200 PUS_PACKET_DISTRIBUTOR
41 0x50000300 UDP_BRIDGE
42 0x50000400 UDP_POLLING_TASK
43 0x51000300 PUS_SERVICE_3
44 0x51000400 PUS_SERVICE_5
45 0x51000500 PUS_SERVICE_6
46 0x51000800 PUS_SERVICE_8
47 0x51002300 PUS_SERVICE_23
48 0x51020100 PUS_SERVICE_201
49 0x52000002 TM_FUNNEL
50 0x53000000 FSFW_OBJECTS_START
51 0x53000001 PUS_SERVICE_1_VERIFICATION
52 0x53000002 PUS_SERVICE_2_DEVICE_ACCESS
53 0x53000003 PUS_SERVICE_3_HOUSEKEEPING
54 0x53000005 PUS_SERVICE_5_EVENT_REPORTING
55 0x53000008 PUS_SERVICE_8_FUNCTION_MGMT
56 0x53000009 PUS_SERVICE_9_TIME_MGMT
57 0x53000017 PUS_SERVICE_17_TEST
58 0x53000020 PUS_SERVICE_20_PARAMETERS
59 0x53000200 PUS_SERVICE_200_MODE_MGMT
60 0x53000201 PUS_SERVICE_201_HEALTH
61 0x53010000 HEALTH_TABLE
62 0x53010100 MODE_STORE
63 0x53030000 EVENT_MANAGER
64 0x53040000 INTERNAL_ERROR_REPORTER
65 0x534f0100 TC_STORE
66 0x534f0200 TM_STORE
67 0x534f0300 IPC_STORE
68 0x53500010 TIME_STAMPER
69 0x53ffffff FSFW_OBJECTS_END
70 0x54000003 HEATER_HANDLER
71 0x54000004 RTD_IC3
72 0x54000005 RTD_IC4
73 0x54000006 RTD_IC5
74 0x54000007 RTD_IC6
75 0x54000008 RTD_IC7
76 0x54000009 RTD_IC8
77 0x5400000A RTD_IC9
78 0x5400000B RTD_IC10
79 0x5400000C RTD_IC11
80 0x5400000D RTD_IC12
81 0x5400000E RTD_IC13
82 0x5400000F RTD_IC14
83 0x54000010 SPI_TEST
84 0x5400001F RTD_IC15
85 0x5400002F RTD_IC16
86 0x5400003F RTD_IC17
87 0x5400004F RTD_IC18
88 0x54000050 RAD_SENSOR
89 0x5400AFFE DUMMY_HANDLER
90 0x5400CAFE DUMMY_INTERFACE
91 0x54123456 LIBGPIOD_TEST
92 0x54694269 TEST_TASK
93 0xFFFFFFFF NO_OBJECT

View File

@ -0,0 +1,407 @@
0x0;OK;System-wide code for ok.;RETURN_OK;HasReturnvaluesIF.h;HasReturnvaluesIF
0x1;Failed;Unspecified system-wide code for failed.;RETURN_FAILED;HasReturnvaluesIF.h;HasReturnvaluesIF
0xe0;_PacketTooLong;;0xE0;../../mission/devices/GomspaceDeviceHandler.h;
0xe1;_InvalidTableId;;0xE1;../../mission/devices/GomspaceDeviceHandler.h;
0xe2;_InvalidAddress;;0xE2;../../mission/devices/GomspaceDeviceHandler.h;
0xe3;_InvalidParamSize;;0xE3;../../mission/devices/GomspaceDeviceHandler.h;
0xe4;_InvalidPayloadSize;;0xE4;../../mission/devices/GomspaceDeviceHandler.h;
0xe5;_UnknownReplyId;;0xE5;../../mission/devices/GomspaceDeviceHandler.h;
0x4da0;PLOC_CrcFailure;;0xA0;../../mission/devices/PlocHandler.h;PLOC_HANDLER
0x4da1;PLOC_ReceivedAckFailure;;0xA1;../../mission/devices/PlocHandler.h;PLOC_HANDLER
0x4da2;PLOC_ReceivedExeFailure;;0xA2;../../mission/devices/PlocHandler.h;PLOC_HANDLER
0x4da3;PLOC_InvalidApid;;0xA3;../../mission/devices/PlocHandler.h;PLOC_HANDLER
0x4ca0;IMTQ_InvalidCommandCode;;0xA0;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ca1;IMTQ_ParameterMissing;;0xA1;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ca2;IMTQ_ParameterInvalid;;0xA2;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ca3;IMTQ_CcUnavailable;;0xA3;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ca4;IMTQ_InternalProcessingError;;0xA4;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ca5;IMTQ_RejectedWithoutReason;;0xA5;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ca6;IMTQ_CmdErrUnknown;;0xA6;../../mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x4ba0;SYRLINKS_CrcFailure;;0xA0;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba1;SYRLINKS_UartFraminOrParityErrorAck;;0xA1;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba2;SYRLINKS_BadCharacterAck;;0xA2;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba3;SYRLINKS_BadParameterValueAck;;0xA3;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba4;SYRLINKS_BadEndOfFrameAck;;0xA4;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba5;SYRLINKS_UnknownCommandIdAck;;0xA5;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba6;SYRLINKS_BadCrcAck;;0xA6;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba7;SYRLINKS_ReplyWrongSize;;0xA7;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x4ba8;SYRLINKS_MissingStartFrameCharacter;;0xA8;../../mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x2b01;CCS_BcIsSetVrCommand;;0x01;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2b02;CCS_BcIsUnlockCommand;;0x02;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bb0;CCS_BcIllegalCommand;;0xB0;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bb1;CCS_BoardReadingNotFinished;;0xB1;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bf0;CCS_NsPositiveW;;0xF0;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bf1;CCS_NsNegativeW;;0xF1;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bf2;CCS_NsLockout;;0xF2;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bf3;CCS_FarmInLockout;;0xF3;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bf4;CCS_FarmInWait;;0xF4;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be0;CCS_WrongSymbol;;0xE0;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be1;CCS_DoubleStart;;0xE1;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be2;CCS_StartSymbolMissed;;0xE2;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be3;CCS_EndWithoutStart;;0xE3;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be4;CCS_TooLarge;;0xE4;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be5;CCS_TooShort;;0xE5;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be6;CCS_WrongTfVersion;;0xE6;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be7;CCS_WrongSpacecraftId;;0xE7;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be8;CCS_NoValidFrameType;;0xE8;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2be9;CCS_CrcFailed;;0xE9;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bea;CCS_VcNotFound;;0xEA;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2beb;CCS_ForwardingFailed;;0xEB;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bec;CCS_ContentTooLarge;;0xEC;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bed;CCS_ResidualData;;0xED;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bee;CCS_DataCorrupted;;0xEE;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bef;CCS_IllegalSegmentationFlag;;0xEF;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bd0;CCS_IllegalFlagCombination;;0xD0;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bd1;CCS_ShorterThanHeader;;0xD1;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bd2;CCS_TooShortBlockedPacket;;0xD2;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bd3;CCS_TooShortMapExtraction;;0xD3;../../fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2901;IEC_NoConfigurationTable;;0x01;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2902;IEC_NoCpuTable;;0x02;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2903;IEC_InvalidWorkspaceAddress;;0x03;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2904;IEC_TooLittleWorkspace;;0x04;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2905;IEC_WorkspaceAllocation;;0x05;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2906;IEC_InterruptStackTooSmall;;0x06;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2907;IEC_ThreadExitted;;0x07;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2908;IEC_InconsistentMpInformation;;0x08;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2909;IEC_InvalidNode;;0x09;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290a;IEC_NoMpci;;0x0a;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290b;IEC_BadPacket;;0x0b;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290c;IEC_OutOfPackets;;0x0c;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290d;IEC_OutOfGlobalObjects;;0x0d;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290e;IEC_OutOfProxies;;0x0e;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290f;IEC_InvalidGlobalId;;0x0f;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2910;IEC_BadStackHook;;0x10;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2911;IEC_BadAttributes;;0x11;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2912;IEC_ImplementationKeyCreateInconsistency;;0x12;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2913;IEC_ImplementationBlockingOperationCancel;;0x13;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2914;IEC_MutexObtainFromBadState;;0x14;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2915;IEC_UnlimitedAndMaximumIs0;;0x15;../../fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0xe01;HM_InvalidMode;;0x01;../../fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe02;HM_TransNotAllowed;;0x02;../../fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe03;HM_InTransition;;0x03;../../fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe04;HM_InvalidSubmode;;0x04;../../fsfw/modes/HasModesIF.h;HAS_MODES_IF
0x2d01;HPA_InvalidIdentifierId;;0x01;../../fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d02;HPA_InvalidDomainId;;0x02;../../fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d03;HPA_InvalidValue;;0x03;../../fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d05;HPA_ReadOnly;;0x05;../../fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2c01;PAW_UnknownDatatype;;0x01;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c02;PAW_DatatypeMissmatch;;0x02;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c03;PAW_Readonly;;0x03;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c04;PAW_TooBig;;0x04;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c05;PAW_SourceNotSet;;0x05;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c06;PAW_OutOfBounds;;0x06;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c07;PAW_NotSet;;0x07;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c08;PAW_ColumnOrRowsZero;;0x08;../../fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x3101;CF_ObjectHasNoFunctions;;1;../../fsfw/action/CommandsActionsIF.h;COMMANDS_ACTIONS_IF
0x3102;CF_AlreadyCommanding;;2;../../fsfw/action/CommandsActionsIF.h;COMMANDS_ACTIONS_IF
0x3201;HF_IsBusy;;1;../../fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3202;HF_InvalidParameters;;2;../../fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3203;HF_ExecutionFinished;;3;../../fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3204;HF_InvalidActionId;;4;../../fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x201;OM_InsertionFailed;;1;../../fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x202;OM_NotFound;;2;../../fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x203;OM_ChildInitFailed;;3;../../fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x204;OM_InternalErrReporterUninit;;4;../../fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x2500;FDI_YourFault;;0;../../fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2501;FDI_MyFault;;1;../../fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2502;FDI_ConfirmLater;;2;../../fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2101;TMF_Busy;;1;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2102;TMF_LastPacketFound;;2;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2103;TMF_StopFetch;;3;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2104;TMF_Timeout;;4;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2105;TMF_TmChannelFull;;5;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2106;TMF_NotStored;;6;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2107;TMF_AllDeleted;;7;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2108;TMF_InvalidData;;8;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2109;TMF_NotReady;;9;../../fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2001;TMB_Busy;;1;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2002;TMB_Full;;2;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2003;TMB_Empty;;3;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2004;TMB_NullRequested;;4;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2005;TMB_TooLarge;;5;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2006;TMB_NotReady;;6;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2007;TMB_DumpError;;7;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2008;TMB_CrcError;;8;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2009;TMB_Timeout;;9;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200a;TMB_IdlePacketFound;;10;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200b;TMB_TelecommandFound;;11;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200c;TMB_NoPusATm;;12;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200d;TMB_TooSmall;;13;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200e;TMB_BlockNotFound;;14;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200f;TMB_InvalidRequest;;15;../../fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x1c01;TCD_PacketLost;;1;../../fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1c02;TCD_DestinationNotFound;;2;../../fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1c03;TCD_ServiceIdAlreadyExists;;3;../../fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1b00;TCC_IllegalApid;;0;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x1b01;TCC_IncompletePacket;;1;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x1b02;TCC_IncorrectChecksum;;2;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x1b03;TCC_IllegalPacketType;;3;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x1b04;TCC_IllegalPacketSubtype;;4;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x1b05;TCC_IncorrectPrimaryHeader;;5;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x1b06;TCC_IncorrectSecondaryHeader;;6;../../fsfw/tcdistribution/TcPacketCheck.h;TC_PACKET_CHECK
0x4e1;RMP_CommandNoDescriptorsAvailable;;0xE1;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e2;RMP_CommandBufferFull;;0xE2;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e3;RMP_CommandChannelOutOfRange;;0xE3;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e6;RMP_CommandChannelDeactivated;;0xE6;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e7;RMP_CommandPortOutOfRange;;0xE7;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e8;RMP_CommandPortInUse;;0xE8;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e9;RMP_CommandNoChannel;;0xE9;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4ea;RMP_NoHwCrc;;0xEA;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4d0;RMP_ReplyNoReply;;0xD0;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4d1;RMP_ReplyNotSent;;0xD1;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4d2;RMP_ReplyNotYetSent;;0xD2;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4d3;RMP_ReplyMissmatch;;0xD3;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4d4;RMP_ReplyTimeout;;0xD4;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4c0;RMP_ReplyInterfaceBusy;;0xC0;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4c1;RMP_ReplyTransmissionError;;0xC1;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4c2;RMP_ReplyInvalidData;;0xC2;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4c3;RMP_ReplyNotSupported;;0xC3;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f0;RMP_LinkDown;;0xF0;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f1;RMP_SpwCredit;;0xF1;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f2;RMP_SpwEscape;;0xF2;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f3;RMP_SpwDisconnect;;0xF3;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f4;RMP_SpwParity;;0xF4;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f5;RMP_SpwWriteSync;;0xF5;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f6;RMP_SpwInvalidAddress;;0xF6;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f7;RMP_SpwEarlyEop;;0xF7;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f8;RMP_SpwDma;;0xF8;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4f9;RMP_SpwLinkError;;0xF9;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x400;RMP_ReplyOk;;0;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x401;RMP_ReplyGeneralErrorCode;;1;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x402;RMP_ReplyUnusedPacketTypeOrCommandCode;;2;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x403;RMP_ReplyInvalidKey;;3;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x404;RMP_ReplyInvalidDataCrc;;4;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x405;RMP_ReplyEarlyEop;;5;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x406;RMP_ReplyTooMuchData;;6;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x407;RMP_ReplyEep;;7;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x408;RMP_ReplyReserved;;8;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x409;RMP_ReplyVerifyBufferOverrun;;9;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x40a;RMP_ReplyCommandNotImplementedOrNotAuthorised;;10;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x40b;RMP_ReplyRmwDataLengthError;;11;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x40c;RMP_ReplyInvalidTargetLogicalAddress;;12;../../fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x2701;SM_DataTooLarge;;1;../../fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2702;SM_DataStorageFull;;2;../../fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2703;SM_IllegalStorageId;;3;../../fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2704;SM_DataDoesNotExist;;4;../../fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2705;SM_IllegalAddress;;5;../../fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2706;SM_PoolTooLarge;;6;../../fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x36a1;SGP4_InvalidEccentricity;;0xA1;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36a2;SGP4_InvalidMeanMotion;;0xA2;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36a3;SGP4_InvalidPerturbationElements;;0xA3;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36a4;SGP4_InvalidSemiLatusRectum;;0xA4;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36a5;SGP4_InvalidEpochElements;;0xA5;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36a6;SGP4_SatelliteHasDecayed;;0xA6;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36b1;SGP4_TleTooOld;;0xB1;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x36b2;SGP4_TleNotInitialized;;0xB2;../../fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x2301;MT_TooDetailedRequest;;1;../../fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2302;MT_TooGeneralRequest;;2;../../fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2303;MT_NoMatch;;3;../../fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2304;MT_Full;;4;../../fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2305;MT_NewNodeCreated;;5;../../fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x3d01;DLEE_StreamTooShort;;0x01;../../fsfw/globalfunctions/DleEncoder.h;DLE_ENCODER
0x3d02;DLEE_DecodingError;;0x02;../../fsfw/globalfunctions/DleEncoder.h;DLE_ENCODER
0x2e01;ASC_TooLongForTargetType;;1;../../fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x2e02;ASC_InvalidCharacters;;2;../../fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x2e03;ASC_BufferTooSmall;;0x3;../../fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0xf01;CM_UnknownCommand;;1;../../fsfw/ipc/CommandMessageIF.h;COMMAND_MESSAGE
0x3801;MQI_Empty;;1;../../fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3802;MQI_Full; No space left for more messages;2;../../fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3803;MQI_NoReplyPartner; Returned if a reply method was called without partner;3;../../fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3804;MQI_DestinationInvalid; Returned if the target destination is invalid.;4;../../fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3701;MUX_NotEnoughResources;;1;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3702;MUX_InsufficientMemory;;2;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3703;MUX_NoPrivilege;;3;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3704;MUX_WrongAttributeSetting;;4;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3705;MUX_MutexAlreadyLocked;;5;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3706;MUX_MutexNotFound;;6;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3707;MUX_MutexMaxLocks;;7;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3708;MUX_CurrThreadAlreadyOwnsMutex;;8;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3709;MUX_CurrThreadDoesNotOwnMutex;;9;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x370a;MUX_MutexTimeout;;10;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x370b;MUX_MutexInvalidId;;11;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x370c;MUX_MutexDestroyedWhileWaiting;;12;../../fsfw/ipc/MutexIF.h;MUTEX_IF
0x3901;SPH_SemaphoreTimeout;;1;../../fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x3902;SPH_SemaphoreNotOwned;;2;../../fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x3903;SPH_SemaphoreInvalid;;3;../../fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x2801;TC_InvalidTargetState;;1;../../fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x28f1;TC_AboveOperationalLimit;;0xF1;../../fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x28f2;TC_BelowOperationalLimit;;0xF2;../../fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0xc02;MS_InvalidEntry;;0x02;../../fsfw/subsystem/modes/ModeStoreIF.h;MODE_STORE_IF
0xc03;MS_TooManyElements;;0x03;../../fsfw/subsystem/modes/ModeStoreIF.h;MODE_STORE_IF
0xc04;MS_CantStoreEmpty;;0x04;../../fsfw/subsystem/modes/ModeStoreIF.h;MODE_STORE_IF
0xd01;SS_SequenceAlreadyExists;;0x01;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd02;SS_TableAlreadyExists;;0x02;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd03;SS_TableDoesNotExist;;0x03;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd04;SS_TableOrSequenceLengthInvalid;;0x04;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd05;SS_SequenceDoesNotExist;;0x05;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd06;SS_TableContainsInvalidObjectId;;0x06;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd07;SS_FallbackSequenceDoesNotExist;;0x07;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd08;SS_NoTargetTable;;0x08;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd09;SS_SequenceOrTableTooLong;;0x09;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd0b;SS_IsFallbackSequence;;0x0B;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd0c;SS_AccessDenied;;0x0C;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd0e;SS_TableInUse;;0x0E;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xda1;SS_TargetTableNotReached;;0xA1;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xda2;SS_TableCheckFailed;;0xA2;../../fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xb01;SB_ChildNotFound;;0x01;../../fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb02;SB_ChildInfoUpdated;;0x02;../../fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb03;SB_ChildDoesntHaveModes;;0x03;../../fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb04;SB_CouldNotInsertChild;;0x04;../../fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb05;SB_TableContainsInvalidObjectId;;0x05;../../fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0x3c00;HKM_QueueOrDestinationInvalid;;0;../../fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3c01;HKM_WrongHkPacketType;;1;../../fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3c02;HKM_ReportingStatusUnchanged;;2;../../fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3c03;HKM_PeriodicHelperInvalid;;3;../../fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3c04;HKM_PoolobjectNotFound;;4;../../fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3c05;HKM_DatasetNotFound;;5;../../fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3a00;LPIF_PoolEntryNotFound;;0x00;../../fsfw/datapoollocal/localPoolDefinitions.h;LOCAL_POOL_OWNER_IF
0x3a01;LPIF_PoolEntryTypeConflict;;0x01;../../fsfw/datapoollocal/localPoolDefinitions.h;LOCAL_POOL_OWNER_IF
0x3ba0;PVA_InvalidReadWriteMode;;0xA0;../../fsfw/datapool/PoolVariableIF.h;POOL_VARIABLE_IF
0x3ba1;PVA_InvalidPoolEntry;;0xA1;../../fsfw/datapool/PoolVariableIF.h;POOL_VARIABLE_IF
0x801;DPS_InvalidParameterDefinition;;1;../../fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x802;DPS_SetWasAlreadyRead;;2;../../fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x803;DPS_CommitingWithoutReading;;3;../../fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x804;DPS_DataSetUninitialised;;4;../../fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x805;DPS_DataSetFull;;5;../../fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x806;DPS_PoolVarNull;;6;../../fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x1000;TIM_UnsupportedTimeFormat;;0;../../fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1001;TIM_NotEnoughInformationForTargetFormat;;1;../../fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1002;TIM_LengthMismatch;;2;../../fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1003;TIM_InvalidTimeFormat;;3;../../fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1004;TIM_InvalidDayOfYear;;4;../../fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1005;TIM_TimeDoesNotFitFormat;;5;../../fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x3501;TSI_BadTimestamp;;1;../../fsfw/timemanager/TimeStamperIF.h;TIME_STAMPER_IF
0x1d01;PUS_ActivityStarted;;1;../../fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d02;PUS_InvalidSubservice;;2;../../fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d03;PUS_IllegalApplicationData;;3;../../fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d04;PUS_SendTmFailed;;4;../../fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d05;PUS_Timeout;;5;../../fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1f01;CSB_ExecutionComplete;;1;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f02;CSB_NoStepMessage;;2;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f03;CSB_ObjectBusy;;3;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f04;CSB_Busy;;4;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f05;CSB_InvalidTc;;5;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f06;CSB_InvalidObject;;6;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f07;CSB_InvalidReply;;7;../../fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1101;AL_Full;;0x01;../../fsfw/container/ArrayList.h;ARRAY_LIST
0x1801;FF_Full;;1;../../fsfw/container/FIFOBase.h;FIFO_CLASS
0x1802;FF_Empty;;2;../../fsfw/container/FIFOBase.h;FIFO_CLASS
0x1601;FMM_MapFull;;0x01;../../fsfw/container/FixedOrderedMultimap.h;FIXED_MULTIMAP
0x1602;FMM_KeyDoesNotExist;;0x02;../../fsfw/container/FixedOrderedMultimap.h;FIXED_MULTIMAP
0x1501;FM_KeyAlreadyExists;;0x01;../../fsfw/container/FixedMap.h;FIXED_MAP
0x1502;FM_MapFull;;0x02;../../fsfw/container/FixedMap.h;FIXED_MAP
0x1503;FM_KeyDoesNotExist;;0x03;../../fsfw/container/FixedMap.h;FIXED_MAP
0x2401;EV_ListenerNotFound;;1;../../fsfw/events/EventManagerIF.h;EVENT_MANAGER_IF
0x1701;HHI_ObjectNotHealthy;;1;../../fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x1702;HHI_InvalidHealthState;;2;../../fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x2f01;POS_InPowerTransition;;1;../../fsfw/power/PowerSwitcher.h;POWER_SWITCHER
0x2f02;POS_SwitchStateMismatch;;2;../../fsfw/power/PowerSwitcher.h;POWER_SWITCHER
0x501;PS_SwitchOn;;1;../../fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x500;PS_SwitchOff;;0;../../fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x502;PS_SwitchTimeout;;2;../../fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x503;PS_FuseOn;;3;../../fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x504;PS_FuseOff;;4;../../fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x1a01;TRC_NotEnoughSensors;;1;../../fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a02;TRC_LowestValueOol;;2;../../fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a03;TRC_HighestValueOol;;3;../../fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a04;TRC_BothValuesOol;;4;../../fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a05;TRC_DuplexOol;;5;../../fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x3001;LIM_Unchecked;;1;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3002;LIM_Invalid;;2;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3003;LIM_Unselected;;3;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3004;LIM_BelowLowLimit;;4;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3005;LIM_AboveHighLimit;;5;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3006;LIM_UnexpectedValue;;6;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3007;LIM_OutOfRange;;7;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30a0;LIM_FirstSample;;0xA0;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e0;LIM_InvalidSize;;0xE0;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e1;LIM_WrongType;;0xE1;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e2;LIM_WrongPid;;0xE2;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e3;LIM_WrongLimitId;;0xE3;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30ee;LIM_MonitorNotFound;;0xEE;../../fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x4000;FILS_GenericFileError;;0;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4001;FILS_IsBusy;;1;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4002;FILS_InvalidParameters;;2;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4005;FILS_FileDoesNotExist;;5;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4006;FILS_FileAlreadyExists;;6;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4007;FILS_FileLocked;;7;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x400a;FILS_DirectoryDoesNotExist;;10;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x400b;FILS_DirectoryAlreadyExists;;11;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x400c;FILS_DirectoryNotEmpty;;12;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x400f;FILS_SequencePacketMissingWrite;;15;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4010;FILS_SequencePacketMissingRead;;16;../../fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x601;PP_DoItMyself;;1;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x602;PP_PointsToVariable;;2;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x603;PP_PointsToMemory;;3;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x604;PP_ActivityCompleted;;4;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x605;PP_PointsToVectorUint8;;5;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x606;PP_PointsToVectorUint16;;6;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x607;PP_PointsToVectorUint32;;7;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x608;PP_PointsToVectorFloat;;8;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6a0;PP_DumpNotSupported;;0xA0;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e0;PP_InvalidSize;;0xE0;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e1;PP_InvalidAddress;;0xE1;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e2;PP_InvalidContent;;0xE2;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e3;PP_UnalignedAccess;;0xE3;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e4;PP_WriteProtected;;0xE4;../../fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x13e0;MH_UnknownCmd;;0xE0;../../fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e1;MH_InvalidAddress;;0xE1;../../fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e2;MH_InvalidSize;;0xE2;../../fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e3;MH_StateMismatch;;0xE3;../../fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x1201;AB_NeedSecondStep;;0x01;../../fsfw/devicehandlers/AssemblyBase.h;ASSEMBLY_BASE
0x1202;AB_NeedToReconfigure;;0x02;../../fsfw/devicehandlers/AssemblyBase.h;ASSEMBLY_BASE
0x1203;AB_ModeFallback;;0x03;../../fsfw/devicehandlers/AssemblyBase.h;ASSEMBLY_BASE
0x1204;AB_ChildNotCommandable;;0x04;../../fsfw/devicehandlers/AssemblyBase.h;ASSEMBLY_BASE
0x1205;AB_NeedToChangeHealth;;0x05;../../fsfw/devicehandlers/AssemblyBase.h;ASSEMBLY_BASE
0x12a1;AB_NotEnoughChildrenInCorrectState;;0xa1;../../fsfw/devicehandlers/AssemblyBase.h;ASSEMBLY_BASE
0x3a0;DHB_InvalidChannel;;0xA0;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3b0;DHB_AperiodicReply;;0xB0;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3b1;DHB_IgnoreReplyData;;0xB1;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3b2;DHB_IgnoreFullPacket;;0xB2;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3c0;DHB_NothingToSend;;0xC0;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3c2;DHB_CommandMapError;;0xC2;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3d0;DHB_NoSwitch;;0xD0;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3e0;DHB_ChildTimeout;;0xE0;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3e1;DHB_SwitchFailed;;0xE1;../../fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3301;DC_NoReplyReceived;;0x01;../../fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3302;DC_ProtocolError;;0x02;../../fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3303;DC_Nullpointer;;0x03;../../fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3304;DC_InvalidCookieType;;0x04;../../fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3305;DC_NotActive;;0x05;../../fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3306;DC_TooMuchData;;0x06;../../fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x26a0;DHI_NoCommandData;;0xA0;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a1;DHI_CommandNotSupported;;0xA1;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a2;DHI_CommandAlreadySent;;0xA2;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a3;DHI_CommandWasNotSent;;0xA3;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a4;DHI_CantSwitchAddress;;0xA4;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a5;DHI_WrongModeForCommand;;0xA5;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a6;DHI_Timeout;;0xA6;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a7;DHI_Busy;;0xA7;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a8;DHI_NoReplyExpected;;0xA8;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26a9;DHI_NonOpTemperature;;0xA9;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26aa;DHI_CommandNotImplemented;;0xAA;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26b0;DHI_ChecksumError;;0xB0;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26b1;DHI_LengthMissmatch;;0xB1;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26b2;DHI_InvalidData;;0xB2;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26b3;DHI_ProtocolError;;0xB3;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26c0;DHI_DeviceDidNotExecute;;0xC0;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26c1;DHI_DeviceReportedError;;0xC1;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26c2;DHI_UnknownDeviceReply;;0xC2;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26c3;DHI_DeviceReplyInvalid;;0xC3;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26d0;DHI_InvalidCommandParameter;;0xD0;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26d1;DHI_InvalidNumberOrLengthOfParameters;;0xD1;../../fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x1401;SE_BufferTooShort;;1;../../fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x1402;SE_StreamTooShort;;2;../../fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x1403;SE_TooManyElements;;3;../../fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x4aa1;HEATER_CommandNotSupported;;0xA1;../../linux/devices/HeaterHandler.h;HEATER_HANDLER
0x4aa2;HEATER_InitFailed;;0xA2;../../linux/devices/HeaterHandler.h;HEATER_HANDLER
0x4aa3;HEATER_InvalidSwitchNr;;0xA3;../../linux/devices/HeaterHandler.h;HEATER_HANDLER
0x4aa4;HEATER_MainSwitchSetTimeout;;0xA4;../../linux/devices/HeaterHandler.h;HEATER_HANDLER
0x4aa5;HEATER_CommandAlreadyWaiting;;0xA5;../../linux/devices/HeaterHandler.h;HEATER_HANDLER
0x4ea0;SUSS_ErrorUnlockMutex;;0xA0;../../linux/devices/SusHandler.h;SUS_HANDLER
0x4ea1;SUSS_ErrorLockMutex;;0xA1;../../linux/devices/SusHandler.h;SUS_HANDLER
0x57a0;SADPL_CommandNotSupported;;0xA0;../../linux/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x57a1;SADPL_DeploymentAlreadyExecuting;;0xA1;../../linux/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x57a2;SADPL_MainSwitchTimeoutFailure;;0xA2;../../linux/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x57a3;SADPL_SwitchingDeplSa1Failed;;0xA3;../../linux/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x57a4;SADPL_SwitchingDeplSa2Failed;;0xA4;../../linux/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
1 0x0 OK System-wide code for ok. RETURN_OK HasReturnvaluesIF.h HasReturnvaluesIF
2 0x1 Failed Unspecified system-wide code for failed. RETURN_FAILED HasReturnvaluesIF.h HasReturnvaluesIF
3 0xe0 _PacketTooLong 0xE0 ../../mission/devices/GomspaceDeviceHandler.h
4 0xe1 _InvalidTableId 0xE1 ../../mission/devices/GomspaceDeviceHandler.h
5 0xe2 _InvalidAddress 0xE2 ../../mission/devices/GomspaceDeviceHandler.h
6 0xe3 _InvalidParamSize 0xE3 ../../mission/devices/GomspaceDeviceHandler.h
7 0xe4 _InvalidPayloadSize 0xE4 ../../mission/devices/GomspaceDeviceHandler.h
8 0xe5 _UnknownReplyId 0xE5 ../../mission/devices/GomspaceDeviceHandler.h
9 0x4da0 PLOC_CrcFailure 0xA0 ../../mission/devices/PlocHandler.h PLOC_HANDLER
10 0x4da1 PLOC_ReceivedAckFailure 0xA1 ../../mission/devices/PlocHandler.h PLOC_HANDLER
11 0x4da2 PLOC_ReceivedExeFailure 0xA2 ../../mission/devices/PlocHandler.h PLOC_HANDLER
12 0x4da3 PLOC_InvalidApid 0xA3 ../../mission/devices/PlocHandler.h PLOC_HANDLER
13 0x4ca0 IMTQ_InvalidCommandCode 0xA0 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
14 0x4ca1 IMTQ_ParameterMissing 0xA1 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
15 0x4ca2 IMTQ_ParameterInvalid 0xA2 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
16 0x4ca3 IMTQ_CcUnavailable 0xA3 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
17 0x4ca4 IMTQ_InternalProcessingError 0xA4 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
18 0x4ca5 IMTQ_RejectedWithoutReason 0xA5 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
19 0x4ca6 IMTQ_CmdErrUnknown 0xA6 ../../mission/devices/IMTQHandler.h IMTQ_HANDLER
20 0x4ba0 SYRLINKS_CrcFailure 0xA0 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
21 0x4ba1 SYRLINKS_UartFraminOrParityErrorAck 0xA1 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
22 0x4ba2 SYRLINKS_BadCharacterAck 0xA2 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
23 0x4ba3 SYRLINKS_BadParameterValueAck 0xA3 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
24 0x4ba4 SYRLINKS_BadEndOfFrameAck 0xA4 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
25 0x4ba5 SYRLINKS_UnknownCommandIdAck 0xA5 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
26 0x4ba6 SYRLINKS_BadCrcAck 0xA6 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
27 0x4ba7 SYRLINKS_ReplyWrongSize 0xA7 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
28 0x4ba8 SYRLINKS_MissingStartFrameCharacter 0xA8 ../../mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
29 0x2b01 CCS_BcIsSetVrCommand 0x01 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
30 0x2b02 CCS_BcIsUnlockCommand 0x02 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
31 0x2bb0 CCS_BcIllegalCommand 0xB0 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
32 0x2bb1 CCS_BoardReadingNotFinished 0xB1 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
33 0x2bf0 CCS_NsPositiveW 0xF0 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
34 0x2bf1 CCS_NsNegativeW 0xF1 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
35 0x2bf2 CCS_NsLockout 0xF2 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
36 0x2bf3 CCS_FarmInLockout 0xF3 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
37 0x2bf4 CCS_FarmInWait 0xF4 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
38 0x2be0 CCS_WrongSymbol 0xE0 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
39 0x2be1 CCS_DoubleStart 0xE1 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
40 0x2be2 CCS_StartSymbolMissed 0xE2 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
41 0x2be3 CCS_EndWithoutStart 0xE3 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
42 0x2be4 CCS_TooLarge 0xE4 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
43 0x2be5 CCS_TooShort 0xE5 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
44 0x2be6 CCS_WrongTfVersion 0xE6 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
45 0x2be7 CCS_WrongSpacecraftId 0xE7 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
46 0x2be8 CCS_NoValidFrameType 0xE8 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
47 0x2be9 CCS_CrcFailed 0xE9 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
48 0x2bea CCS_VcNotFound 0xEA ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
49 0x2beb CCS_ForwardingFailed 0xEB ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
50 0x2bec CCS_ContentTooLarge 0xEC ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
51 0x2bed CCS_ResidualData 0xED ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
52 0x2bee CCS_DataCorrupted 0xEE ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
53 0x2bef CCS_IllegalSegmentationFlag 0xEF ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
54 0x2bd0 CCS_IllegalFlagCombination 0xD0 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
55 0x2bd1 CCS_ShorterThanHeader 0xD1 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
56 0x2bd2 CCS_TooShortBlockedPacket 0xD2 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
57 0x2bd3 CCS_TooShortMapExtraction 0xD3 ../../fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
58 0x2901 IEC_NoConfigurationTable 0x01 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
59 0x2902 IEC_NoCpuTable 0x02 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
60 0x2903 IEC_InvalidWorkspaceAddress 0x03 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
61 0x2904 IEC_TooLittleWorkspace 0x04 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
62 0x2905 IEC_WorkspaceAllocation 0x05 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
63 0x2906 IEC_InterruptStackTooSmall 0x06 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
64 0x2907 IEC_ThreadExitted 0x07 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
65 0x2908 IEC_InconsistentMpInformation 0x08 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
66 0x2909 IEC_InvalidNode 0x09 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
67 0x290a IEC_NoMpci 0x0a ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
68 0x290b IEC_BadPacket 0x0b ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
69 0x290c IEC_OutOfPackets 0x0c ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
70 0x290d IEC_OutOfGlobalObjects 0x0d ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
71 0x290e IEC_OutOfProxies 0x0e ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
72 0x290f IEC_InvalidGlobalId 0x0f ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
73 0x2910 IEC_BadStackHook 0x10 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
74 0x2911 IEC_BadAttributes 0x11 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
75 0x2912 IEC_ImplementationKeyCreateInconsistency 0x12 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
76 0x2913 IEC_ImplementationBlockingOperationCancel 0x13 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
77 0x2914 IEC_MutexObtainFromBadState 0x14 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
78 0x2915 IEC_UnlimitedAndMaximumIs0 0x15 ../../fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
79 0xe01 HM_InvalidMode 0x01 ../../fsfw/modes/HasModesIF.h HAS_MODES_IF
80 0xe02 HM_TransNotAllowed 0x02 ../../fsfw/modes/HasModesIF.h HAS_MODES_IF
81 0xe03 HM_InTransition 0x03 ../../fsfw/modes/HasModesIF.h HAS_MODES_IF
82 0xe04 HM_InvalidSubmode 0x04 ../../fsfw/modes/HasModesIF.h HAS_MODES_IF
83 0x2d01 HPA_InvalidIdentifierId 0x01 ../../fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
84 0x2d02 HPA_InvalidDomainId 0x02 ../../fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
85 0x2d03 HPA_InvalidValue 0x03 ../../fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
86 0x2d05 HPA_ReadOnly 0x05 ../../fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
87 0x2c01 PAW_UnknownDatatype 0x01 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
88 0x2c02 PAW_DatatypeMissmatch 0x02 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
89 0x2c03 PAW_Readonly 0x03 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
90 0x2c04 PAW_TooBig 0x04 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
91 0x2c05 PAW_SourceNotSet 0x05 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
92 0x2c06 PAW_OutOfBounds 0x06 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
93 0x2c07 PAW_NotSet 0x07 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
94 0x2c08 PAW_ColumnOrRowsZero 0x08 ../../fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
95 0x3101 CF_ObjectHasNoFunctions 1 ../../fsfw/action/CommandsActionsIF.h COMMANDS_ACTIONS_IF
96 0x3102 CF_AlreadyCommanding 2 ../../fsfw/action/CommandsActionsIF.h COMMANDS_ACTIONS_IF
97 0x3201 HF_IsBusy 1 ../../fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
98 0x3202 HF_InvalidParameters 2 ../../fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
99 0x3203 HF_ExecutionFinished 3 ../../fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
100 0x3204 HF_InvalidActionId 4 ../../fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
101 0x201 OM_InsertionFailed 1 ../../fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
102 0x202 OM_NotFound 2 ../../fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
103 0x203 OM_ChildInitFailed 3 ../../fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
104 0x204 OM_InternalErrReporterUninit 4 ../../fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
105 0x2500 FDI_YourFault 0 ../../fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
106 0x2501 FDI_MyFault 1 ../../fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
107 0x2502 FDI_ConfirmLater 2 ../../fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
108 0x2101 TMF_Busy 1 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
109 0x2102 TMF_LastPacketFound 2 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
110 0x2103 TMF_StopFetch 3 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
111 0x2104 TMF_Timeout 4 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
112 0x2105 TMF_TmChannelFull 5 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
113 0x2106 TMF_NotStored 6 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
114 0x2107 TMF_AllDeleted 7 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
115 0x2108 TMF_InvalidData 8 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
116 0x2109 TMF_NotReady 9 ../../fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
117 0x2001 TMB_Busy 1 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
118 0x2002 TMB_Full 2 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
119 0x2003 TMB_Empty 3 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
120 0x2004 TMB_NullRequested 4 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
121 0x2005 TMB_TooLarge 5 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
122 0x2006 TMB_NotReady 6 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
123 0x2007 TMB_DumpError 7 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
124 0x2008 TMB_CrcError 8 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
125 0x2009 TMB_Timeout 9 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
126 0x200a TMB_IdlePacketFound 10 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
127 0x200b TMB_TelecommandFound 11 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
128 0x200c TMB_NoPusATm 12 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
129 0x200d TMB_TooSmall 13 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
130 0x200e TMB_BlockNotFound 14 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
131 0x200f TMB_InvalidRequest 15 ../../fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
132 0x1c01 TCD_PacketLost 1 ../../fsfw/tcdistribution/TcDistributor.h PACKET_DISTRIBUTION
133 0x1c02 TCD_DestinationNotFound 2 ../../fsfw/tcdistribution/TcDistributor.h PACKET_DISTRIBUTION
134 0x1c03 TCD_ServiceIdAlreadyExists 3 ../../fsfw/tcdistribution/TcDistributor.h PACKET_DISTRIBUTION
135 0x1b00 TCC_IllegalApid 0 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
136 0x1b01 TCC_IncompletePacket 1 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
137 0x1b02 TCC_IncorrectChecksum 2 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
138 0x1b03 TCC_IllegalPacketType 3 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
139 0x1b04 TCC_IllegalPacketSubtype 4 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
140 0x1b05 TCC_IncorrectPrimaryHeader 5 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
141 0x1b06 TCC_IncorrectSecondaryHeader 6 ../../fsfw/tcdistribution/TcPacketCheck.h TC_PACKET_CHECK
142 0x4e1 RMP_CommandNoDescriptorsAvailable 0xE1 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
143 0x4e2 RMP_CommandBufferFull 0xE2 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
144 0x4e3 RMP_CommandChannelOutOfRange 0xE3 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
145 0x4e6 RMP_CommandChannelDeactivated 0xE6 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
146 0x4e7 RMP_CommandPortOutOfRange 0xE7 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
147 0x4e8 RMP_CommandPortInUse 0xE8 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
148 0x4e9 RMP_CommandNoChannel 0xE9 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
149 0x4ea RMP_NoHwCrc 0xEA ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
150 0x4d0 RMP_ReplyNoReply 0xD0 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
151 0x4d1 RMP_ReplyNotSent 0xD1 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
152 0x4d2 RMP_ReplyNotYetSent 0xD2 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
153 0x4d3 RMP_ReplyMissmatch 0xD3 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
154 0x4d4 RMP_ReplyTimeout 0xD4 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
155 0x4c0 RMP_ReplyInterfaceBusy 0xC0 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
156 0x4c1 RMP_ReplyTransmissionError 0xC1 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
157 0x4c2 RMP_ReplyInvalidData 0xC2 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
158 0x4c3 RMP_ReplyNotSupported 0xC3 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
159 0x4f0 RMP_LinkDown 0xF0 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
160 0x4f1 RMP_SpwCredit 0xF1 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
161 0x4f2 RMP_SpwEscape 0xF2 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
162 0x4f3 RMP_SpwDisconnect 0xF3 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
163 0x4f4 RMP_SpwParity 0xF4 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
164 0x4f5 RMP_SpwWriteSync 0xF5 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
165 0x4f6 RMP_SpwInvalidAddress 0xF6 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
166 0x4f7 RMP_SpwEarlyEop 0xF7 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
167 0x4f8 RMP_SpwDma 0xF8 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
168 0x4f9 RMP_SpwLinkError 0xF9 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
169 0x400 RMP_ReplyOk 0 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
170 0x401 RMP_ReplyGeneralErrorCode 1 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
171 0x402 RMP_ReplyUnusedPacketTypeOrCommandCode 2 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
172 0x403 RMP_ReplyInvalidKey 3 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
173 0x404 RMP_ReplyInvalidDataCrc 4 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
174 0x405 RMP_ReplyEarlyEop 5 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
175 0x406 RMP_ReplyTooMuchData 6 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
176 0x407 RMP_ReplyEep 7 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
177 0x408 RMP_ReplyReserved 8 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
178 0x409 RMP_ReplyVerifyBufferOverrun 9 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
179 0x40a RMP_ReplyCommandNotImplementedOrNotAuthorised 10 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
180 0x40b RMP_ReplyRmwDataLengthError 11 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
181 0x40c RMP_ReplyInvalidTargetLogicalAddress 12 ../../fsfw/rmap/RMAP.h RMAP_CHANNEL
182 0x2701 SM_DataTooLarge 1 ../../fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
183 0x2702 SM_DataStorageFull 2 ../../fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
184 0x2703 SM_IllegalStorageId 3 ../../fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
185 0x2704 SM_DataDoesNotExist 4 ../../fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
186 0x2705 SM_IllegalAddress 5 ../../fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
187 0x2706 SM_PoolTooLarge 6 ../../fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
188 0x36a1 SGP4_InvalidEccentricity 0xA1 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
189 0x36a2 SGP4_InvalidMeanMotion 0xA2 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
190 0x36a3 SGP4_InvalidPerturbationElements 0xA3 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
191 0x36a4 SGP4_InvalidSemiLatusRectum 0xA4 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
192 0x36a5 SGP4_InvalidEpochElements 0xA5 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
193 0x36a6 SGP4_SatelliteHasDecayed 0xA6 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
194 0x36b1 SGP4_TleTooOld 0xB1 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
195 0x36b2 SGP4_TleNotInitialized 0xB2 ../../fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
196 0x2301 MT_TooDetailedRequest 1 ../../fsfw/globalfunctions/matching/MatchTree.h MATCH_TREE_CLASS
197 0x2302 MT_TooGeneralRequest 2 ../../fsfw/globalfunctions/matching/MatchTree.h MATCH_TREE_CLASS
198 0x2303 MT_NoMatch 3 ../../fsfw/globalfunctions/matching/MatchTree.h MATCH_TREE_CLASS
199 0x2304 MT_Full 4 ../../fsfw/globalfunctions/matching/MatchTree.h MATCH_TREE_CLASS
200 0x2305 MT_NewNodeCreated 5 ../../fsfw/globalfunctions/matching/MatchTree.h MATCH_TREE_CLASS
201 0x3d01 DLEE_StreamTooShort 0x01 ../../fsfw/globalfunctions/DleEncoder.h DLE_ENCODER
202 0x3d02 DLEE_DecodingError 0x02 ../../fsfw/globalfunctions/DleEncoder.h DLE_ENCODER
203 0x2e01 ASC_TooLongForTargetType 1 ../../fsfw/globalfunctions/AsciiConverter.h ASCII_CONVERTER
204 0x2e02 ASC_InvalidCharacters 2 ../../fsfw/globalfunctions/AsciiConverter.h ASCII_CONVERTER
205 0x2e03 ASC_BufferTooSmall 0x3 ../../fsfw/globalfunctions/AsciiConverter.h ASCII_CONVERTER
206 0xf01 CM_UnknownCommand 1 ../../fsfw/ipc/CommandMessageIF.h COMMAND_MESSAGE
207 0x3801 MQI_Empty 1 ../../fsfw/ipc/MessageQueueIF.h MESSAGE_QUEUE_IF
208 0x3802 MQI_Full No space left for more messages 2 ../../fsfw/ipc/MessageQueueIF.h MESSAGE_QUEUE_IF
209 0x3803 MQI_NoReplyPartner Returned if a reply method was called without partner 3 ../../fsfw/ipc/MessageQueueIF.h MESSAGE_QUEUE_IF
210 0x3804 MQI_DestinationInvalid Returned if the target destination is invalid. 4 ../../fsfw/ipc/MessageQueueIF.h MESSAGE_QUEUE_IF
211 0x3701 MUX_NotEnoughResources 1 ../../fsfw/ipc/MutexIF.h MUTEX_IF
212 0x3702 MUX_InsufficientMemory 2 ../../fsfw/ipc/MutexIF.h MUTEX_IF
213 0x3703 MUX_NoPrivilege 3 ../../fsfw/ipc/MutexIF.h MUTEX_IF
214 0x3704 MUX_WrongAttributeSetting 4 ../../fsfw/ipc/MutexIF.h MUTEX_IF
215 0x3705 MUX_MutexAlreadyLocked 5 ../../fsfw/ipc/MutexIF.h MUTEX_IF
216 0x3706 MUX_MutexNotFound 6 ../../fsfw/ipc/MutexIF.h MUTEX_IF
217 0x3707 MUX_MutexMaxLocks 7 ../../fsfw/ipc/MutexIF.h MUTEX_IF
218 0x3708 MUX_CurrThreadAlreadyOwnsMutex 8 ../../fsfw/ipc/MutexIF.h MUTEX_IF
219 0x3709 MUX_CurrThreadDoesNotOwnMutex 9 ../../fsfw/ipc/MutexIF.h MUTEX_IF
220 0x370a MUX_MutexTimeout 10 ../../fsfw/ipc/MutexIF.h MUTEX_IF
221 0x370b MUX_MutexInvalidId 11 ../../fsfw/ipc/MutexIF.h MUTEX_IF
222 0x370c MUX_MutexDestroyedWhileWaiting 12 ../../fsfw/ipc/MutexIF.h MUTEX_IF
223 0x3901 SPH_SemaphoreTimeout 1 ../../fsfw/tasks/SemaphoreIF.h SEMAPHORE_IF
224 0x3902 SPH_SemaphoreNotOwned 2 ../../fsfw/tasks/SemaphoreIF.h SEMAPHORE_IF
225 0x3903 SPH_SemaphoreInvalid 3 ../../fsfw/tasks/SemaphoreIF.h SEMAPHORE_IF
226 0x2801 TC_InvalidTargetState 1 ../../fsfw/thermal/ThermalComponentIF.h THERMAL_COMPONENT_IF
227 0x28f1 TC_AboveOperationalLimit 0xF1 ../../fsfw/thermal/ThermalComponentIF.h THERMAL_COMPONENT_IF
228 0x28f2 TC_BelowOperationalLimit 0xF2 ../../fsfw/thermal/ThermalComponentIF.h THERMAL_COMPONENT_IF
229 0xc02 MS_InvalidEntry 0x02 ../../fsfw/subsystem/modes/ModeStoreIF.h MODE_STORE_IF
230 0xc03 MS_TooManyElements 0x03 ../../fsfw/subsystem/modes/ModeStoreIF.h MODE_STORE_IF
231 0xc04 MS_CantStoreEmpty 0x04 ../../fsfw/subsystem/modes/ModeStoreIF.h MODE_STORE_IF
232 0xd01 SS_SequenceAlreadyExists 0x01 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
233 0xd02 SS_TableAlreadyExists 0x02 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
234 0xd03 SS_TableDoesNotExist 0x03 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
235 0xd04 SS_TableOrSequenceLengthInvalid 0x04 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
236 0xd05 SS_SequenceDoesNotExist 0x05 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
237 0xd06 SS_TableContainsInvalidObjectId 0x06 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
238 0xd07 SS_FallbackSequenceDoesNotExist 0x07 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
239 0xd08 SS_NoTargetTable 0x08 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
240 0xd09 SS_SequenceOrTableTooLong 0x09 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
241 0xd0b SS_IsFallbackSequence 0x0B ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
242 0xd0c SS_AccessDenied 0x0C ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
243 0xd0e SS_TableInUse 0x0E ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
244 0xda1 SS_TargetTableNotReached 0xA1 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
245 0xda2 SS_TableCheckFailed 0xA2 ../../fsfw/subsystem/Subsystem.h SUBSYSTEM
246 0xb01 SB_ChildNotFound 0x01 ../../fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
247 0xb02 SB_ChildInfoUpdated 0x02 ../../fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
248 0xb03 SB_ChildDoesntHaveModes 0x03 ../../fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
249 0xb04 SB_CouldNotInsertChild 0x04 ../../fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
250 0xb05 SB_TableContainsInvalidObjectId 0x05 ../../fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
251 0x3c00 HKM_QueueOrDestinationInvalid 0 ../../fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
252 0x3c01 HKM_WrongHkPacketType 1 ../../fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
253 0x3c02 HKM_ReportingStatusUnchanged 2 ../../fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
254 0x3c03 HKM_PeriodicHelperInvalid 3 ../../fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
255 0x3c04 HKM_PoolobjectNotFound 4 ../../fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
256 0x3c05 HKM_DatasetNotFound 5 ../../fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
257 0x3a00 LPIF_PoolEntryNotFound 0x00 ../../fsfw/datapoollocal/localPoolDefinitions.h LOCAL_POOL_OWNER_IF
258 0x3a01 LPIF_PoolEntryTypeConflict 0x01 ../../fsfw/datapoollocal/localPoolDefinitions.h LOCAL_POOL_OWNER_IF
259 0x3ba0 PVA_InvalidReadWriteMode 0xA0 ../../fsfw/datapool/PoolVariableIF.h POOL_VARIABLE_IF
260 0x3ba1 PVA_InvalidPoolEntry 0xA1 ../../fsfw/datapool/PoolVariableIF.h POOL_VARIABLE_IF
261 0x801 DPS_InvalidParameterDefinition 1 ../../fsfw/datapool/DataSetIF.h DATA_SET_CLASS
262 0x802 DPS_SetWasAlreadyRead 2 ../../fsfw/datapool/DataSetIF.h DATA_SET_CLASS
263 0x803 DPS_CommitingWithoutReading 3 ../../fsfw/datapool/DataSetIF.h DATA_SET_CLASS
264 0x804 DPS_DataSetUninitialised 4 ../../fsfw/datapool/DataSetIF.h DATA_SET_CLASS
265 0x805 DPS_DataSetFull 5 ../../fsfw/datapool/DataSetIF.h DATA_SET_CLASS
266 0x806 DPS_PoolVarNull 6 ../../fsfw/datapool/DataSetIF.h DATA_SET_CLASS
267 0x1000 TIM_UnsupportedTimeFormat 0 ../../fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
268 0x1001 TIM_NotEnoughInformationForTargetFormat 1 ../../fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
269 0x1002 TIM_LengthMismatch 2 ../../fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
270 0x1003 TIM_InvalidTimeFormat 3 ../../fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
271 0x1004 TIM_InvalidDayOfYear 4 ../../fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
272 0x1005 TIM_TimeDoesNotFitFormat 5 ../../fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
273 0x3501 TSI_BadTimestamp 1 ../../fsfw/timemanager/TimeStamperIF.h TIME_STAMPER_IF
274 0x1d01 PUS_ActivityStarted 1 ../../fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
275 0x1d02 PUS_InvalidSubservice 2 ../../fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
276 0x1d03 PUS_IllegalApplicationData 3 ../../fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
277 0x1d04 PUS_SendTmFailed 4 ../../fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
278 0x1d05 PUS_Timeout 5 ../../fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
279 0x1f01 CSB_ExecutionComplete 1 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
280 0x1f02 CSB_NoStepMessage 2 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
281 0x1f03 CSB_ObjectBusy 3 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
282 0x1f04 CSB_Busy 4 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
283 0x1f05 CSB_InvalidTc 5 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
284 0x1f06 CSB_InvalidObject 6 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
285 0x1f07 CSB_InvalidReply 7 ../../fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
286 0x1101 AL_Full 0x01 ../../fsfw/container/ArrayList.h ARRAY_LIST
287 0x1801 FF_Full 1 ../../fsfw/container/FIFOBase.h FIFO_CLASS
288 0x1802 FF_Empty 2 ../../fsfw/container/FIFOBase.h FIFO_CLASS
289 0x1601 FMM_MapFull 0x01 ../../fsfw/container/FixedOrderedMultimap.h FIXED_MULTIMAP
290 0x1602 FMM_KeyDoesNotExist 0x02 ../../fsfw/container/FixedOrderedMultimap.h FIXED_MULTIMAP
291 0x1501 FM_KeyAlreadyExists 0x01 ../../fsfw/container/FixedMap.h FIXED_MAP
292 0x1502 FM_MapFull 0x02 ../../fsfw/container/FixedMap.h FIXED_MAP
293 0x1503 FM_KeyDoesNotExist 0x03 ../../fsfw/container/FixedMap.h FIXED_MAP
294 0x2401 EV_ListenerNotFound 1 ../../fsfw/events/EventManagerIF.h EVENT_MANAGER_IF
295 0x1701 HHI_ObjectNotHealthy 1 ../../fsfw/health/HasHealthIF.h HAS_HEALTH_IF
296 0x1702 HHI_InvalidHealthState 2 ../../fsfw/health/HasHealthIF.h HAS_HEALTH_IF
297 0x2f01 POS_InPowerTransition 1 ../../fsfw/power/PowerSwitcher.h POWER_SWITCHER
298 0x2f02 POS_SwitchStateMismatch 2 ../../fsfw/power/PowerSwitcher.h POWER_SWITCHER
299 0x501 PS_SwitchOn 1 ../../fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
300 0x500 PS_SwitchOff 0 ../../fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
301 0x502 PS_SwitchTimeout 2 ../../fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
302 0x503 PS_FuseOn 3 ../../fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
303 0x504 PS_FuseOff 4 ../../fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
304 0x1a01 TRC_NotEnoughSensors 1 ../../fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
305 0x1a02 TRC_LowestValueOol 2 ../../fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
306 0x1a03 TRC_HighestValueOol 3 ../../fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
307 0x1a04 TRC_BothValuesOol 4 ../../fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
308 0x1a05 TRC_DuplexOol 5 ../../fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
309 0x3001 LIM_Unchecked 1 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
310 0x3002 LIM_Invalid 2 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
311 0x3003 LIM_Unselected 3 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
312 0x3004 LIM_BelowLowLimit 4 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
313 0x3005 LIM_AboveHighLimit 5 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
314 0x3006 LIM_UnexpectedValue 6 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
315 0x3007 LIM_OutOfRange 7 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
316 0x30a0 LIM_FirstSample 0xA0 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
317 0x30e0 LIM_InvalidSize 0xE0 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
318 0x30e1 LIM_WrongType 0xE1 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
319 0x30e2 LIM_WrongPid 0xE2 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
320 0x30e3 LIM_WrongLimitId 0xE3 ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
321 0x30ee LIM_MonitorNotFound 0xEE ../../fsfw/monitoring/MonitoringIF.h LIMITS_IF
322 0x4000 FILS_GenericFileError 0 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
323 0x4001 FILS_IsBusy 1 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
324 0x4002 FILS_InvalidParameters 2 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
325 0x4005 FILS_FileDoesNotExist 5 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
326 0x4006 FILS_FileAlreadyExists 6 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
327 0x4007 FILS_FileLocked 7 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
328 0x400a FILS_DirectoryDoesNotExist 10 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
329 0x400b FILS_DirectoryAlreadyExists 11 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
330 0x400c FILS_DirectoryNotEmpty 12 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
331 0x400f FILS_SequencePacketMissingWrite 15 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
332 0x4010 FILS_SequencePacketMissingRead 16 ../../fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
333 0x601 PP_DoItMyself 1 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
334 0x602 PP_PointsToVariable 2 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
335 0x603 PP_PointsToMemory 3 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
336 0x604 PP_ActivityCompleted 4 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
337 0x605 PP_PointsToVectorUint8 5 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
338 0x606 PP_PointsToVectorUint16 6 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
339 0x607 PP_PointsToVectorUint32 7 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
340 0x608 PP_PointsToVectorFloat 8 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
341 0x6a0 PP_DumpNotSupported 0xA0 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
342 0x6e0 PP_InvalidSize 0xE0 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
343 0x6e1 PP_InvalidAddress 0xE1 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
344 0x6e2 PP_InvalidContent 0xE2 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
345 0x6e3 PP_UnalignedAccess 0xE3 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
346 0x6e4 PP_WriteProtected 0xE4 ../../fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
347 0x13e0 MH_UnknownCmd 0xE0 ../../fsfw/memory/MemoryHelper.h MEMORY_HELPER
348 0x13e1 MH_InvalidAddress 0xE1 ../../fsfw/memory/MemoryHelper.h MEMORY_HELPER
349 0x13e2 MH_InvalidSize 0xE2 ../../fsfw/memory/MemoryHelper.h MEMORY_HELPER
350 0x13e3 MH_StateMismatch 0xE3 ../../fsfw/memory/MemoryHelper.h MEMORY_HELPER
351 0x1201 AB_NeedSecondStep 0x01 ../../fsfw/devicehandlers/AssemblyBase.h ASSEMBLY_BASE
352 0x1202 AB_NeedToReconfigure 0x02 ../../fsfw/devicehandlers/AssemblyBase.h ASSEMBLY_BASE
353 0x1203 AB_ModeFallback 0x03 ../../fsfw/devicehandlers/AssemblyBase.h ASSEMBLY_BASE
354 0x1204 AB_ChildNotCommandable 0x04 ../../fsfw/devicehandlers/AssemblyBase.h ASSEMBLY_BASE
355 0x1205 AB_NeedToChangeHealth 0x05 ../../fsfw/devicehandlers/AssemblyBase.h ASSEMBLY_BASE
356 0x12a1 AB_NotEnoughChildrenInCorrectState 0xa1 ../../fsfw/devicehandlers/AssemblyBase.h ASSEMBLY_BASE
357 0x3a0 DHB_InvalidChannel 0xA0 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
358 0x3b0 DHB_AperiodicReply 0xB0 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
359 0x3b1 DHB_IgnoreReplyData 0xB1 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
360 0x3b2 DHB_IgnoreFullPacket 0xB2 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
361 0x3c0 DHB_NothingToSend 0xC0 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
362 0x3c2 DHB_CommandMapError 0xC2 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
363 0x3d0 DHB_NoSwitch 0xD0 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
364 0x3e0 DHB_ChildTimeout 0xE0 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
365 0x3e1 DHB_SwitchFailed 0xE1 ../../fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
366 0x3301 DC_NoReplyReceived 0x01 ../../fsfw/devicehandlers/DeviceCommunicationIF.h DEVICE_COMMUNICATION_IF
367 0x3302 DC_ProtocolError 0x02 ../../fsfw/devicehandlers/DeviceCommunicationIF.h DEVICE_COMMUNICATION_IF
368 0x3303 DC_Nullpointer 0x03 ../../fsfw/devicehandlers/DeviceCommunicationIF.h DEVICE_COMMUNICATION_IF
369 0x3304 DC_InvalidCookieType 0x04 ../../fsfw/devicehandlers/DeviceCommunicationIF.h DEVICE_COMMUNICATION_IF
370 0x3305 DC_NotActive 0x05 ../../fsfw/devicehandlers/DeviceCommunicationIF.h DEVICE_COMMUNICATION_IF
371 0x3306 DC_TooMuchData 0x06 ../../fsfw/devicehandlers/DeviceCommunicationIF.h DEVICE_COMMUNICATION_IF
372 0x26a0 DHI_NoCommandData 0xA0 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
373 0x26a1 DHI_CommandNotSupported 0xA1 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
374 0x26a2 DHI_CommandAlreadySent 0xA2 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
375 0x26a3 DHI_CommandWasNotSent 0xA3 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
376 0x26a4 DHI_CantSwitchAddress 0xA4 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
377 0x26a5 DHI_WrongModeForCommand 0xA5 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
378 0x26a6 DHI_Timeout 0xA6 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
379 0x26a7 DHI_Busy 0xA7 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
380 0x26a8 DHI_NoReplyExpected 0xA8 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
381 0x26a9 DHI_NonOpTemperature 0xA9 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
382 0x26aa DHI_CommandNotImplemented 0xAA ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
383 0x26b0 DHI_ChecksumError 0xB0 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
384 0x26b1 DHI_LengthMissmatch 0xB1 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
385 0x26b2 DHI_InvalidData 0xB2 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
386 0x26b3 DHI_ProtocolError 0xB3 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
387 0x26c0 DHI_DeviceDidNotExecute 0xC0 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
388 0x26c1 DHI_DeviceReportedError 0xC1 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
389 0x26c2 DHI_UnknownDeviceReply 0xC2 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
390 0x26c3 DHI_DeviceReplyInvalid 0xC3 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
391 0x26d0 DHI_InvalidCommandParameter 0xD0 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
392 0x26d1 DHI_InvalidNumberOrLengthOfParameters 0xD1 ../../fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
393 0x1401 SE_BufferTooShort 1 ../../fsfw/serialize/SerializeIF.h SERIALIZE_IF
394 0x1402 SE_StreamTooShort 2 ../../fsfw/serialize/SerializeIF.h SERIALIZE_IF
395 0x1403 SE_TooManyElements 3 ../../fsfw/serialize/SerializeIF.h SERIALIZE_IF
396 0x4aa1 HEATER_CommandNotSupported 0xA1 ../../linux/devices/HeaterHandler.h HEATER_HANDLER
397 0x4aa2 HEATER_InitFailed 0xA2 ../../linux/devices/HeaterHandler.h HEATER_HANDLER
398 0x4aa3 HEATER_InvalidSwitchNr 0xA3 ../../linux/devices/HeaterHandler.h HEATER_HANDLER
399 0x4aa4 HEATER_MainSwitchSetTimeout 0xA4 ../../linux/devices/HeaterHandler.h HEATER_HANDLER
400 0x4aa5 HEATER_CommandAlreadyWaiting 0xA5 ../../linux/devices/HeaterHandler.h HEATER_HANDLER
401 0x4ea0 SUSS_ErrorUnlockMutex 0xA0 ../../linux/devices/SusHandler.h SUS_HANDLER
402 0x4ea1 SUSS_ErrorLockMutex 0xA1 ../../linux/devices/SusHandler.h SUS_HANDLER
403 0x57a0 SADPL_CommandNotSupported 0xA0 ../../linux/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
404 0x57a1 SADPL_DeploymentAlreadyExecuting 0xA1 ../../linux/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
405 0x57a2 SADPL_MainSwitchTimeoutFailure 0xA2 ../../linux/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
406 0x57a3 SADPL_SwitchingDeplSa1Failed 0xA3 ../../linux/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
407 0x57a4 SADPL_SwitchingDeplSa2Failed 0xA4 ../../linux/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER

View File

@ -0,0 +1,9 @@
import enum
DATABASE_NAME = "eive_mod.db"
class BspType(enum.Enum):
BSP_Q7S = "bsp_q7s"
BSP_HOSTED = "bsp_hosted"
BSP_LINUX_BOARD = "bsp_linux_board"

View File

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