taken over upstream changes
This commit is contained in:
parent
df333e0cc8
commit
b7dbdb072d
49
CHANGELOG
49
CHANGELOG
@ -1,5 +1,8 @@
|
|||||||
## Changes from ASTP 0.0.1 to 1.0.0
|
## Changes from ASTP 0.0.1 to 1.0.0
|
||||||
|
|
||||||
|
### Host OSAL
|
||||||
|
|
||||||
|
- Bugfix in MessageQueue, which caused the sender not to be set properly
|
||||||
|
|
||||||
### FreeRTOS OSAL
|
### FreeRTOS OSAL
|
||||||
|
|
||||||
@ -11,3 +14,49 @@ a C file without issues
|
|||||||
- It is now possible to change the message queue depth for the telecommand verification service (PUS1)
|
- It is now possible to change the message queue depth for the telecommand verification service (PUS1)
|
||||||
- The same is possible for the event reporting service (PUS5)
|
- The same is possible for the event reporting service (PUS5)
|
||||||
- PUS Health Service added, which allows to command and retrieve health via PUS packets
|
- PUS Health Service added, which allows to command and retrieve health via PUS packets
|
||||||
|
|
||||||
|
|
||||||
|
### EnhancedControllerBase
|
||||||
|
|
||||||
|
- New base class for a controller which also implements HasActionsIF and HasLocalDataPoolIF
|
||||||
|
|
||||||
|
### Local Pool
|
||||||
|
|
||||||
|
- Interface of LocalPools has changed. LocalPool is not a template anymore. Instead the size and bucket number of the pools per page and the number of pages are passed to the ctor instead of two ctor arguments and a template parameter
|
||||||
|
|
||||||
|
### Parameter Service
|
||||||
|
|
||||||
|
- The API of the parameter service has been changed to prevent inconsistencies
|
||||||
|
between documentation and actual code and to clarify usage.
|
||||||
|
- The parameter ID now consists of:
|
||||||
|
1. Domain ID (1 byte)
|
||||||
|
2. Unique Identifier (1 byte)
|
||||||
|
3. Linear Index (2 bytes)
|
||||||
|
The linear index can be used for arrays as well as matrices.
|
||||||
|
The parameter load command now explicitely expects the ECSS PTC and PFC
|
||||||
|
information as well as the rows and column number. Rows and column will
|
||||||
|
default to one, which is equivalent to one scalar parameter (the most
|
||||||
|
important use-case)
|
||||||
|
|
||||||
|
### File System Interface
|
||||||
|
|
||||||
|
- A new interfaces specifies the functions for a software object which exposes the file system of a given hardware to use message based file handling (e.g. PUS commanding)
|
||||||
|
|
||||||
|
### Internal Error Reporter
|
||||||
|
|
||||||
|
- The new internal error reporter uses the local data pools. The pool IDs for
|
||||||
|
the exisiting three error values and the new error set will be hardcoded for
|
||||||
|
now, the the constructor for the internal error reporter just takes an object
|
||||||
|
ID for now.
|
||||||
|
|
||||||
|
### Device Handler Base
|
||||||
|
|
||||||
|
- There is an additional `PERFORM_OPERATION` step for the device handler base. It is important
|
||||||
|
that DHB users adapt their polling sequence tables to perform this step. This steps allows for aclear distinction between operation and communication steps
|
||||||
|
|
||||||
|
### Events
|
||||||
|
|
||||||
|
- makeEvent function: Now takes three input parameters instead of two and
|
||||||
|
allows setting a unique ID. Event.cpp source file removed, functions now
|
||||||
|
defined in header directly. Namespaces renamed. Functions declared `constexpr`
|
||||||
|
now
|
||||||
|
85
CMakeLists.txt
Normal file
85
CMakeLists.txt
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
|
||||||
|
set(LIB_FSFW_NAME fsfw)
|
||||||
|
add_library(${LIB_FSFW_NAME})
|
||||||
|
|
||||||
|
# Set options for FSFW OSAL selection.
|
||||||
|
if(UNIX)
|
||||||
|
set(OS_FSFW "linux" CACHE STRING "OS abstraction layer used in the FSFW")
|
||||||
|
elseif(WIN32)
|
||||||
|
set(OS_FSFW "host" CACHE STRING "OS abstraction layer used in the FSFW")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(CACHE OS_FSFW PROPERTY STRINGS host linux rtems freertos)
|
||||||
|
|
||||||
|
if(${OS_FSFW} STREQUAL host)
|
||||||
|
set(OS_FSFW_NAME "Host")
|
||||||
|
elseif(${OS_FSFW} STREQUAL linux)
|
||||||
|
set(OS_FSFW_NAME "Linux")
|
||||||
|
elseif(${OS_FSFW} STREQUAL freertos)
|
||||||
|
set(OS_FSFW_NAME "FreeRTOS")
|
||||||
|
elseif(${OS_FSFW} STREQUAL rtems)
|
||||||
|
set(OS_FSFW_NAME "RTEMS")
|
||||||
|
else()
|
||||||
|
message(WARNING "Invalid operating system for FSFW specified! Setting to host..")
|
||||||
|
set(OS_FSFW_NAME "Host")
|
||||||
|
set(OS_FSFW "host")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Compiling FSFW for the ${OS_FSFW_NAME} operating system")
|
||||||
|
|
||||||
|
# Options to exclude parts of the FSFW from compilation.
|
||||||
|
option(FSFW_USE_RMAP "Compile with RMAP" ON)
|
||||||
|
option(FSFW_USE_DATALINKLAYER "Compile with Data Link Layer" ON)
|
||||||
|
|
||||||
|
add_subdirectory(action)
|
||||||
|
add_subdirectory(container)
|
||||||
|
add_subdirectory(controller)
|
||||||
|
add_subdirectory(coordinates)
|
||||||
|
add_subdirectory(datalinklayer)
|
||||||
|
add_subdirectory(datapool)
|
||||||
|
add_subdirectory(devicehandlers)
|
||||||
|
add_subdirectory(events)
|
||||||
|
add_subdirectory(fdir)
|
||||||
|
add_subdirectory(globalfunctions)
|
||||||
|
add_subdirectory(health)
|
||||||
|
add_subdirectory(internalError)
|
||||||
|
add_subdirectory(ipc)
|
||||||
|
add_subdirectory(memory)
|
||||||
|
add_subdirectory(modes)
|
||||||
|
add_subdirectory(monitoring)
|
||||||
|
add_subdirectory(objectmanager)
|
||||||
|
add_subdirectory(osal)
|
||||||
|
add_subdirectory(parameters)
|
||||||
|
add_subdirectory(power)
|
||||||
|
add_subdirectory(pus)
|
||||||
|
|
||||||
|
if(FSFW_USE_RMAP)
|
||||||
|
add_subdirectory(rmap)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(serialize)
|
||||||
|
add_subdirectory(serviceinterface)
|
||||||
|
add_subdirectory(storagemanager)
|
||||||
|
add_subdirectory(subsystem)
|
||||||
|
add_subdirectory(tasks)
|
||||||
|
add_subdirectory(tcdistribution)
|
||||||
|
add_subdirectory(thermal)
|
||||||
|
add_subdirectory(timemanager)
|
||||||
|
add_subdirectory(tmstorage)
|
||||||
|
add_subdirectory(tmtcpacket)
|
||||||
|
add_subdirectory(tmtcservices)
|
||||||
|
|
||||||
|
# The project CMakeLists file has to set the FSFW_CONFIG_PATH and add it.
|
||||||
|
# If this is not given, we include the default configuration and emit a warning.
|
||||||
|
if(NOT FSFW_CONFIG_PATH)
|
||||||
|
message(WARNING "Flight Software Framework configuration path not set!")
|
||||||
|
message(WARNING "Setting default configuration!")
|
||||||
|
add_subdirectory(defaultcfg/fsfwconfig)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Required include paths to compile the FSFW
|
||||||
|
target_include_directories(${LIB_FSFW_NAME}
|
||||||
|
INTERFACE
|
||||||
|
${FSFW_CONFIG_PATH}
|
||||||
|
)
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef FSFW_DEFAULTCFG_VERSION_H_
|
#ifndef FSFW_DEFAULTCFG_VERSION_H_
|
||||||
#define FSFW_DEFAULTCFG_VERSION_H_
|
#define FSFW_DEFAULTCFG_VERSION_H_
|
||||||
|
|
||||||
const char* const FSFW_VERSION_NAME = "fsfw";
|
const char* const FSFW_VERSION_NAME = "ASTP";
|
||||||
|
|
||||||
#define FSFW_VERSION 0
|
#define FSFW_VERSION 0
|
||||||
#define FSFW_SUBVERSION 0
|
#define FSFW_SUBVERSION 0
|
||||||
|
#define FSFW_REVISION 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4
controller/CMakeLists.txt
Normal file
4
controller/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
target_sources(${LIB_FSFW_NAME}
|
||||||
|
PRIVATE
|
||||||
|
ControllerBase.cpp
|
||||||
|
)
|
@ -8,7 +8,7 @@ ControllerBase::ControllerBase(object_id_t setObjectId, object_id_t parentId,
|
|||||||
size_t commandQueueDepth) :
|
size_t commandQueueDepth) :
|
||||||
SystemObject(setObjectId), parentId(parentId), mode(MODE_OFF),
|
SystemObject(setObjectId), parentId(parentId), mode(MODE_OFF),
|
||||||
submode(SUBMODE_NONE), modeHelper(this),
|
submode(SUBMODE_NONE), modeHelper(this),
|
||||||
healthHelper(this, setObjectId), hkSwitcher(this) {
|
healthHelper(this, setObjectId) {
|
||||||
commandQueue = QueueFactory::instance()->createMessageQueue(
|
commandQueue = QueueFactory::instance()->createMessageQueue(
|
||||||
commandQueueDepth);
|
commandQueueDepth);
|
||||||
}
|
}
|
||||||
@ -44,10 +44,6 @@ ReturnValue_t ControllerBase::initialize() {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = hkSwitcher.initialize();
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +103,6 @@ void ControllerBase::announceMode(bool recursive) {
|
|||||||
|
|
||||||
ReturnValue_t ControllerBase::performOperation(uint8_t opCode) {
|
ReturnValue_t ControllerBase::performOperation(uint8_t opCode) {
|
||||||
handleQueue();
|
handleQueue();
|
||||||
hkSwitcher.performOperation();
|
|
||||||
performControlOperation();
|
performControlOperation();
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
@ -72,9 +72,6 @@ protected:
|
|||||||
|
|
||||||
HealthHelper healthHelper;
|
HealthHelper healthHelper;
|
||||||
|
|
||||||
// Is this still needed?
|
|
||||||
HkSwitchHelper hkSwitcher;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pointer to the task which executes this component,
|
* Pointer to the task which executes this component,
|
||||||
* is invalid before setTaskIF was called.
|
* is invalid before setTaskIF was called.
|
||||||
|
@ -97,7 +97,6 @@ ReturnValue_t ExtendedControllerBase::initializeAfterTaskCreation() {
|
|||||||
|
|
||||||
ReturnValue_t ExtendedControllerBase::performOperation(uint8_t opCode) {
|
ReturnValue_t ExtendedControllerBase::performOperation(uint8_t opCode) {
|
||||||
handleQueue();
|
handleQueue();
|
||||||
hkSwitcher.performOperation();
|
|
||||||
localPoolManager.performHkOperation();
|
localPoolManager.performHkOperation();
|
||||||
performControlOperation();
|
performControlOperation();
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
|
Loading…
Reference in New Issue
Block a user