Compare commits

...

160 Commits
v0.3.0 ... main

Author SHA1 Message Date
Robin Müller 81905090b2
bump common_tmtc 2023-01-13 11:07:18 +01:00
Robin Müller 8a9e079790
README update 2023-01-13 11:03:50 +01:00
Robin Müller f63ae969a7
add tmtccmd and spacepackets install scripts 2023-01-13 11:02:13 +01:00
Robin Müller a9ccd5e146
remove some python dependencies 2023-01-13 10:59:58 +01:00
Robin Müller 40c7b5e7d8
Merge branch 'main' of https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-hosted 2023-01-13 10:57:53 +01:00
Robin Müller a68a3503a1
update dependencies 2023-01-13 10:57:38 +01:00
Robin Müller dd1f1050da
bump tmtccmd 2022-10-21 11:24:05 +02:00
Robin Müller 75e592fc10
bump common_tmtc 2022-10-19 11:56:12 +02:00
Robin Müller f12a31b710
bump deps and call CFPD FSM 2022-10-19 11:52:30 +02:00
Robin Müller 5e0c6b2c41
bump deps again 2022-10-17 17:29:26 +02:00
Robin Müller 438e543203
bump dependencies 2022-10-17 17:25:42 +02:00
Robin Müller 278b878525
bump example_common 2022-10-17 16:59:02 +02:00
Robin Müller 5f59186ace
new CFDP and PUS TM funnel 2022-10-17 16:28:03 +02:00
Robin Müller 45c1ba70e3
bump deps 2022-10-17 15:20:42 +02:00
Robin Müller 9eedbe3810
start implementing closure support for CFDP 2022-10-17 12:26:18 +02:00
Robin Müller cafd8a7e52
bump tmtccmd dependency 2022-10-17 11:06:36 +02:00
Robin Müller e1d2849436
bump deps and add TODO 2022-09-16 18:36:41 +02:00
Robin Müller d7be5f3464
README link correction 2022-09-16 17:08:49 +02:00
Robin Müller 3a31c175c4
bump example common 2022-09-16 17:04:51 +02:00
Robin Müller 02046f043c
move cfdp code to example common where applicable 2022-09-16 17:03:31 +02:00
Robin Müller 42cdca76b6 Merge branch 'mueller/cfdp-routers' of https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-hosted into mueller/cfdp-routers 2022-09-16 15:24:20 +02:00
Robin Müller 50211e0f75
adaptions for updated fsfw code 2022-09-16 15:24:04 +02:00
Robin Müller f6ab970529
bump tmtccmd dep 2022-09-16 12:10:49 +02:00
Robin Müller 6e86dfab19
repoint spacepackets 2022-09-16 12:09:42 +02:00
Robin Müller 22ecffc30e
bump deps 2022-09-15 20:12:54 +02:00
Robin Müller 475f8e1656
bump deps 2022-09-15 18:47:23 +02:00
Robin Müller 9e4f2add7d
move generic handler to framework 2022-09-15 16:53:28 +02:00
Robin Müller 886c966420
bump common_tmtc 2022-09-15 16:29:13 +02:00
Robin Müller a329824f8e
bump deps again 2022-09-15 16:21:41 +02:00
Robin Müller d4264ee75d
bump deps 2022-09-15 16:03:15 +02:00
Robin Müller 2b2527d814
bump deps 2022-09-15 14:31:24 +02:00
Robin Müller 3b9df4adda
second file test for larger file 2022-09-15 14:20:36 +02:00
Robin Müller be0aedb3ae
remove test text file 2022-09-15 14:13:43 +02:00
Robin Müller ec2a500e0c
bump fsfw 2022-09-15 14:08:40 +02:00
Robin Müller ed6a9bf82f
repoint fsfw 2022-09-14 19:31:33 +02:00
Robin Müller bfd54520c9
file transfer working properly 2022-09-14 19:02:11 +02:00
Robin Müller b76ad023a5
bump dependency 2022-09-14 17:48:35 +02:00
Robin Müller 3265f5258c
bump deps 2022-09-14 17:41:08 +02:00
Robin Müller 3b473d8dba
bump deps 2022-09-14 17:36:37 +02:00
Robin Müller 64a58c65dd
end-to-end file transfer working 2022-09-14 14:01:14 +02:00
Robin Müller c9383ca20b
bump example_common 2022-09-13 15:31:45 +02:00
Robin Müller f89ca50bcb
switch to default UDP TC server, bugfix 2022-09-13 15:29:24 +02:00
Robin Müller 9a8cca1821
bump dependencies 2022-09-13 12:00:16 +02:00
Robin Müller eebe169fa7
bump deps again 2022-09-12 10:08:52 +02:00
Robin Müller e678dae989
bump deps again 2022-09-12 09:39:48 +02:00
Robin Müller daa68d335a
bump dependencies 2022-09-12 09:23:30 +02:00
Robin Müller ecb2a751ab
bump dependencies again 2022-09-09 17:52:09 +02:00
Robin Müller 586388b3f0
bump deps, update args handling 2022-09-09 17:45:00 +02:00
Robin Müller ad5169743a
bump deps 2022-09-09 15:52:24 +02:00
Robin Müller d1df2cd694
bump deps 2022-09-09 14:58:49 +02:00
Robin Müller 4e93be0db3
bump deps 2022-09-09 14:46:58 +02:00
Robin Müller c251d2b3c8
wrap up module moving 2022-09-09 14:30:27 +02:00
Robin Müller f87e0854fd
move cfdp modules to common 2022-09-09 14:23:31 +02:00
Robin Müller e769d38d2c
implement packet passing 2022-09-09 14:14:04 +02:00
Robin Müller 4cb00a2bb3
continue CCSDS wrapper 2022-09-09 11:07:20 +02:00
Robin Müller 19078aa5fe
apply black to python files 2022-09-09 10:54:00 +02:00
Robin Müller 4b511d8d30
start ccsds wrapper 2022-09-09 10:53:12 +02:00
Robin Müller e296554827
provide some more helper functions 2022-09-09 10:51:06 +02:00
Robin Müller 6f9a866e9c
implement basic CFDP handler 2022-09-09 10:43:18 +02:00
Robin Müller 87c7542015
provide function to start put request 2022-09-08 18:26:36 +02:00
Robin Müller 3f0367fdb2
bump deps 2022-09-08 17:51:06 +02:00
Robin Müller b5ac8cded7
create and schedule CFDP components 2022-09-08 17:39:59 +02:00
Robin Müller e0837683fe
start instantiating CFDP components 2022-09-08 16:26:47 +02:00
Robin Müller 75e0ef60ce
hmm this is tricky from an architecture standpoint 2022-09-08 15:49:18 +02:00
Robin Müller 91711bd928
afmt 2022-09-08 12:09:52 +02:00
Robin Müller efe60b703b
use lambdas to avoid duplicate code 2022-09-08 12:09:24 +02:00
Robin Müller 9b450f5049
continued pdu forwarding procedure 2022-09-08 11:53:18 +02:00
Robin Müller 6d43fa8911
continue handler implementation 2022-09-08 11:26:29 +02:00
Robin Müller 9c9daffbbc
some more TODOs 2022-09-07 18:40:10 +02:00
Robin Müller dd866790f3
this works 2022-09-07 18:38:25 +02:00
Robin Müller b1e704cd11
continue cfdp handler impl 2022-09-07 18:21:16 +02:00
Robin Müller 68857b9d4e
code compiles again 2022-09-07 17:40:41 +02:00
Robin Müller de90bfaa34
bump fsfw 2022-09-07 15:46:18 +02:00
Robin Müller 8f644cecea
bump fsfw 2022-09-05 17:46:41 +02:00
Robin Müller 0459173362
bump deps 2022-09-02 17:54:36 +02:00
Robin Müller 346bb5c7c0
bump deps 2022-09-02 14:40:05 +02:00
Robin Müller ca4e451e26
bump deps 2022-09-02 11:39:30 +02:00
Robin Müller 1272fa0cca
bump deps 2022-08-31 22:54:17 +02:00
Robin Müller 56d6de17a6
bump tmtc deps 2022-08-31 01:25:04 +02:00
Robin Müller 88228f9f4b
bump dependencies 2022-08-30 11:21:40 +02:00
Robin Müller 94f2dd3c01
bump tmtc dependencies 2022-08-24 15:31:23 +02:00
Robin Müller 522e69d5da
bump deps 2022-08-18 20:50:05 +02:00
Robin Müller 7fcea4ea07
bump deps 2022-08-18 18:34:38 +02:00
Robin Müller bd10232224
bump deps 2022-08-18 18:29:07 +02:00
Robin Müller 459ee67f19
bump deps 2022-08-17 17:23:17 +02:00
Robin Müller 3b32fa79c1
bump deps, improvement for TMTC script 2022-08-17 17:16:50 +02:00
Robin Müller c403abfa9f
Merge branch 'mueller/refactor-tmtc-stack' into mueller/cfdp-routers 2022-08-16 17:24:54 +02:00
Robin Müller 8070e2da4f
bump submodules 2022-08-16 17:23:26 +02:00
Robin Müller 0679490199
bump dependencies 2022-08-16 17:13:29 +02:00
Robin Müller 19bcc35831
bump fsfw 2022-08-15 19:19:44 +02:00
Robin Müller 8340d28170
bump deps 2022-08-11 10:20:35 +02:00
Robin Müller acbf958660
bump dependencies 2022-08-09 16:28:19 +02:00
Robin Müller bb833172d0
bump all dependencies 2022-08-09 15:09:54 +02:00
Robin Müller 51f07ce7bf
run afmt 2022-08-08 12:32:22 +02:00
Robin Müller da04e96278
update submodules 2022-08-01 11:11:54 +02:00
Robin Müller 5c7e47bae0 Merge branch 'mueller/refactor-tmtc-stack' of https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-hosted into mueller/refactor-tmtc-stack 2022-07-29 11:51:13 +02:00
Robin Müller ab4807d702
bump deps again 2022-07-29 11:50:24 +02:00
Robin Müller 37812a033b
bump fsfw 2022-07-29 10:26:23 +02:00
Robin Müller f56f47ed75
bump deps 2022-07-29 09:55:34 +02:00
Robin Müller 27be8d18dc
update tmtccmd 2022-07-28 16:41:51 +02:00
Robin Müller 5bb72c9804
bump dependencies 2022-07-28 16:40:41 +02:00
Robin Müller dc107a5090
bump dependencies 2022-07-28 15:45:06 +02:00
Robin Müller f2e21bb359
bump deps 2022-07-28 15:37:43 +02:00
Robin Müller b37d801afe
bump deps again 2022-07-28 15:27:46 +02:00
Robin Müller f0782e4445
bump deps 2022-07-28 12:40:47 +02:00
Robin Müller b0cd790c78
some more stuff works now 2022-07-27 20:44:20 +02:00
Robin Müller dd7a9dfafd
update generated files 2022-07-27 19:42:35 +02:00
Robin Müller 6f7be65811
fsfw update 2022-07-27 19:09:40 +02:00
Robin Müller 4fd6f35374
ping works properly now 2022-07-27 17:58:54 +02:00
Robin Müller 43e611950b
update for tmtc and other submodules 2022-07-27 14:41:07 +02:00
Robin Müller beeb699c17
update submodules 2022-07-27 11:34:02 +02:00
Robin Müller 1a94f31d69
add test cfg 2022-07-18 11:37:54 +02:00
Robin Müller 2d171b2c36
update .gitignore
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:44:41 +02:00
Robin Müller 9defef2756
bump common_tmtc dependency
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:41:44 +02:00
Robin Müller 84ce93a012
make commanding utility executable
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:39:52 +02:00
Robin Müller b97a23ff8c
update steps to command ping
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:39:32 +02:00
Robin Müller d644a45c34
use public linkage now
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:35:45 +02:00
Robin Müller d07e0e6465
bump fsfw again
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:27:26 +02:00
Robin Müller e6e2e1a935
bump used docker container for CI/CD
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-07-04 10:23:05 +02:00
Robin Müller 46123172ae
fix for jenkinsfile
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-04 10:10:49 +02:00
Robin Müller 3ed1b6f9f1
update jenkinsfile
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-04 10:10:03 +02:00
Robin Müller a59d467e1d
link etl lib explicitely
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-04 10:04:18 +02:00
Robin Müller f4a346d2a8
update to newest tmtccmd version
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-03 21:00:28 +02:00
Robin Müller af618f5652
start updating tmtccmd
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-03 19:29:53 +02:00
Robin Müller 77791efcbc
bump both dependencies
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-03 16:34:37 +02:00
Robin Müller d7923fe18b
move dependencies into separate deps folder 2022-07-03 16:33:32 +02:00
Robin Müller fbe10e4624
bump fsfw dependency
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-07-03 16:32:12 +02:00
Robin Müller 86beb16325
bump submodules again
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-24 14:50:57 +02:00
Robin Müller 0e0ce3dad8
bump submodules
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-24 14:28:22 +02:00
Robin Müller 245bd4ffe8
bump submodules
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-24 13:24:56 +02:00
Robin Müller 3a72fad821
update tmtc
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 11:09:13 +02:00
Robin Müller 5700afa399
update tmtccmd
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 09:25:29 +02:00
Robin Müller 7a06f615cf
re-generate retvals
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 09:23:14 +02:00
Robin Müller 4173a62229
regenerate objects list
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 09:17:18 +02:00
Robin Müller 8570c9e327
re-generate events
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 09:12:36 +02:00
Robin Müller df68ec141b
more storage, bumped submodules
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 08:59:25 +02:00
Robin Müller 6114dddb29
delete obsolete file
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 08:43:22 +02:00
Robin Müller ab047190be
update and apply afmt
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-20 08:39:16 +02:00
Robin Müller da168b21ef
bump submodules
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-20 00:20:36 +02:00
Robin Müller 044d56e96a
update tmtc python program
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2022-05-18 23:41:05 +02:00
Robin Müller 0a923a38a6
use TCP server by default
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-18 16:02:42 +02:00
Robin Müller 228c052fae Merge branch 'master' of https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-hosted
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-18 16:00:20 +02:00
Robin Müller 878988bb09
bump deps and C++ version 2022-05-18 15:49:29 +02:00
Robin Müller 21b3e46a72
add lto option
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-17 18:55:23 +02:00
Robin Müller 99a04398af
bump example version
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-05 20:57:49 +02:00
Robin Müller d2337a769c
apply auto-formatter
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-05 20:55:48 +02:00
Robin Müller a9907fc7b3
build script folders lower case
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-05 20:49:37 +02:00
Robin Müller 3e958fd161
bump fsfw 2022-05-05 20:32:59 +02:00
Robin Müller 832c4a1874
add clang-format file
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-02 11:07:22 +02:00
Robin Müller 34f76d351e
added clang toolchain file 2022-05-02 10:10:41 +02:00
Robin Müller 1049e4072a
removed some printout
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-02 09:38:41 +02:00
Robin Müller ed0077e3f1
track code styles
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-02 09:33:39 +02:00
Robin Müller 094fa011af
update gitignore and fsfw
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-02 09:22:28 +02:00
Robin Müller 7205ac6202 update README as well
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-01 20:30:11 +02:00
Robin Müller 37dcc69f3b bump submodules
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-05-01 17:50:33 +02:00
Robin Mueller 6661dbc274 bump submodule
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-04-30 19:03:38 +02:00
Robin Mueller 519bbf6fd0 mac OS changs
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-04-30 18:45:25 +02:00
Robin Mueller b8398fa81e
update example_common
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-04-11 14:19:28 +02:00
Robin Mueller 1a89b8c12e
fsfw update
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-04-11 14:08:46 +02:00
Robin Müller b78962e8e2
update submodules
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2022-02-02 10:41:16 +01:00
103 changed files with 3023 additions and 1932 deletions

7
.clang-format Normal file
View File

@ -0,0 +1,7 @@
---
BasedOnStyle: Google
IndentWidth: 2
---
Language: Cpp
ColumnLimit: 100
---

11
.gitignore vendored
View File

@ -1,8 +1,12 @@
# PyCharm
/.idea/*
!/.idea/runConfigurations
!/.idea/cmake.xml
!/.idea/codeStyles
# Python
**/.idea/*
!**/.idea/runConfigurations
__pycache__
venv
/venv
# Eclipse
@ -17,6 +21,7 @@ venv
# Build folders
/build*
/cmake-build*
_dep
_obj

6
.gitmodules vendored
View File

@ -7,12 +7,6 @@
[submodule "fsfw"]
path = fsfw
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw.git
[submodule "tmtc/tmtccmd"]
path = tmtc/tmtccmd
url = https://github.com/robamu-org/tmtccmd.git
[submodule "tmtc/common_tmtc"]
path = tmtc/common_tmtc
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-tmtc-common.git
[submodule "tmtc/spacepackets"]
path = tmtc/spacepackets
url = https://github.com/robamu-org/py-spacepackets.git

11
.idea/cmake.xml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeSharedSettings">
<configurations>
<configuration PROFILE_NAME="Debug" ENABLED="true" CONFIG_NAME="Debug" NO_GENERATOR="true" />
<configuration PROFILE_NAME="Debug Linux" ENABLED="true" GENERATION_DIR="cmake-build-debug-linux" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DFSFW_OSAL=linux" NO_GENERATOR="true" />
<configuration PROFILE_NAME="Release" ENABLED="true" CONFIG_NAME="Release" NO_GENERATOR="true" />
<configuration PROFILE_NAME="Debug Clang" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DCMAKE_TOOLCHAIN_FILE=cmake/ClangToolchain.cmake" />
</configurations>
</component>
</project>

View File

@ -0,0 +1,14 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<clangFormatSettings>
<option name="ENABLED" value="true" />
</clangFormatSettings>
<codeStyleSettings language="CMake">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>

View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

View File

@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="example" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="fsfw-example-hosted" TARGET_NAME="fsfw-example-hosted" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="fsfw-example-hosted" RUN_TARGET_NAME="fsfw-example-hosted">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@ -1,37 +1,47 @@
################################################################################
# ##############################################################################
# CMake support for the Flight Software Framework
#
#
# Developed in an effort to replace Make with a modern build system.
#
#
# Author: R. Mueller
################################################################################
# ##############################################################################
################################################################################
# ##############################################################################
# Pre-Project preparation
################################################################################
# ##############################################################################
cmake_minimum_required(VERSION 3.13)
# set(CMAKE_VERBOSE TRUE)
set(CMAKE_SCRIPT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(OBSW_MAX_SCHEDULED_TCS 200)
if(NOT FSFW_OSAL)
set(FSFW_OSAL host CACHE STRING "OS for the FSFW.")
set(FSFW_OSAL
host
CACHE STRING "OS for the FSFW.")
endif()
# Project Name
project(fsfw-example-hosted C CXX)
################################################################################
option(OBSW_ENABLE_IPO "Enable IPO/LTO optimization" ON)
if(OBSW_ENABLE_IPO)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()
# ##############################################################################
# Pre-Sources preparation
################################################################################
# ##############################################################################
# Specify the C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Set names and variables
set(TARGET_NAME ${CMAKE_PROJECT_NAME})
set(TARGET_NAME ${CMAKE_PROJECT_NAME})
set(LIB_FSFW_NAME fsfw)
set(LIB_FSFW_HAL_NAME fsfw_hal)
@ -43,12 +53,9 @@ set(LIB_FSFW_HAL_PATH fsfw_hal)
set(BSP_PATH "bsp_hosted")
set(COMMON_CONFIG_PATH "${COMMON_PATH}/config")
set(FSFW_CONFIG_PATH "${BSP_PATH}/fsfwconfig")
set(FSFW_ADDITIONAL_INC_PATHS
"${COMMON_CONFIG_PATH}"
"${CMAKE_CURRENT_BINARY_DIR}"
CACHE STRING
"FSFW configuration paths"
)
set(FSFW_ADDITIONAL_INC_PATHS
"${COMMON_CONFIG_PATH}" "${CMAKE_CURRENT_BINARY_DIR}"
CACHE STRING "FSFW configuration paths")
configure_file(${COMMON_CONFIG_PATH}/commonConfig.h.in commonConfig.h)
configure_file(${FSFW_CONFIG_PATH}/FSFWConfig.h.in FSFWConfig.h)
@ -57,121 +64,97 @@ configure_file(${FSFW_CONFIG_PATH}/OBSWConfig.h.in OBSWConfig.h)
set(FSFW_ADD_MONITORING ON)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(WARNING_FLAGS
-Wall
-Wextra
-Wimplicit-fallthrough=1
-Wno-unused-parameter
-Wno-psabi
)
set(WARNING_FLAGS -Wall -Wextra -Wimplicit-fallthrough=1
-Wno-unused-parameter -Wno-psabi)
set(FSFW_WARNING_FLAGS ${WARNING_FLAGS})
set(FSFW_WARNING_FLAGS ${WARNING_FLAGS})
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(/permissive- /d2SSAOptimizer-)
# To avoid nameclashes with min and max macro
add_compile_definitions(NOMINMAX)
add_compile_options(/permissive- /d2SSAOptimizer-)
# To avoid nameclashes with min and max macro
add_compile_definitions(NOMINMAX)
endif()
if(FSFW_OSAL MATCHES linux)
find_package(Threads REQUIRED)
# Hosted
find_package(Threads REQUIRED)
# Hosted
else()
if(WIN32)
elseif(UNIX)
find_package(Threads REQUIRED)
endif()
if(WIN32)
elseif(UNIX)
find_package(Threads REQUIRED)
endif()
endif()
################################################################################
# ##############################################################################
# Executable and Sources
################################################################################
# ##############################################################################
# Add executable
add_executable(${TARGET_NAME})
add_executable(${TARGET_NAME} example_common/config/common/definitions.h)
# Add subdirectories
if(LIB_OS_NAME)
add_subdirectory(${LIB_OS_NAME})
add_subdirectory(${LIB_OS_NAME})
endif()
add_subdirectory(${BSP_PATH})
add_subdirectory(${FSFW_PATH})
add_subdirectory(${COMMON_PATH})
################################################################################
# ##############################################################################
# Post-Sources preparation
################################################################################
# ##############################################################################
# Add libraries for all sources.
target_link_libraries(${TARGET_NAME} PRIVATE
${LIB_FSFW_NAME}
${LIB_OS_NAME}
# ${LIB_FSFW_HAL_NAME}
)
target_link_libraries(${TARGET_NAME} PRIVATE ${LIB_FSFW_NAME} ${LIB_OS_NAME})
# Add include paths for all sources.
target_include_directories(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${FSFW_CONFIG_PATH}
)
target_include_directories(
${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR} ${FSFW_CONFIG_PATH})
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_options(${TARGET_NAME} PRIVATE
"-Wl,-Map=${TARGET_NAME}.map"
)
target_link_options(${TARGET_NAME} PRIVATE "-Wl,-Map=${TARGET_NAME}.map")
# Remove unused sections.
target_compile_options(${TARGET_NAME} PRIVATE
"-ffunction-sections"
"-fdata-sections"
)
# Remove unused sections.
target_compile_options(${TARGET_NAME} PRIVATE "-ffunction-sections"
"-fdata-sections")
# Removed unused sections.
target_link_options(${TARGET_NAME} PRIVATE
"-Wl,--gc-sections"
)
# Removed unused sections.
target_link_options(${TARGET_NAME} PRIVATE "-Wl,--gc-sections")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
endif()
if(CMAKE_VERBOSE)
message(STATUS "Warning flags: ${WARNING_FLAGS}")
message(STATUS "Warning flags: ${WARNING_FLAGS}")
endif()
# Compile options for all sources.
target_compile_options(${TARGET_NAME} PRIVATE
${WARNING_FLAGS}
)
target_compile_options(${TARGET_NAME} PRIVATE ${WARNING_FLAGS})
if(NOT CMAKE_SIZE)
set(CMAKE_SIZE size)
if(WIN32)
set(FILE_SUFFIX ".exe")
endif()
set(CMAKE_SIZE size)
if(WIN32)
set(FILE_SUFFIX ".exe")
endif()
endif()
if(TGT_BSP)
set(TARGET_STRING "Target BSP: ${TGT_BSP}")
set(TARGET_STRING "Target BSP: ${TGT_BSP}")
else()
set(TARGET_STRING "Target BSP: Hosted")
set(TARGET_STRING "Target BSP: Hosted")
endif()
string(CONCAT POST_BUILD_COMMENT
"Build directory: ${CMAKE_BINARY_DIR}\n"
"Target OSAL: ${FSFW_OSAL}\n"
"Target Build Type: ${CMAKE_BUILD_TYPE}\n"
"${TARGET_STRING}"
)
string(CONCAT POST_BUILD_COMMENT "Build directory: ${CMAKE_BINARY_DIR}\n"
"Target OSAL: ${FSFW_OSAL}\n"
"Target Build Type: ${CMAKE_BUILD_TYPE}\n" "${TARGET_STRING}")
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_SIZE} ${TARGET_NAME}${FILE_SUFFIX}
COMMENT ${POST_BUILD_COMMENT}
)
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_SIZE} ${TARGET_NAME}${FILE_SUFFIX}
COMMENT ${POST_BUILD_COMMENT})
include (${CMAKE_SCRIPT_PATH}/BuildType.cmake)
include(BuildType)
set_build_type()

View File

@ -1,4 +1,4 @@
<img align="center" src="https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-common/raw/branch/master/doc/images/FSFW_Logo_V3_bw.png" width="50%">
<img align="center" src="https://egit.irs.uni-stuttgart.de/fsfw/fsfw/raw/branch/master/misc/logo/FSFW_Logo_V3_bw.png" width="50%">
# <a id="top"></a> <a name="linux"></a> FSFW Example Application
@ -52,6 +52,11 @@ the host abstraction layer of the FSFW.
This demo provides the opportunity to to test functionality of the
FSFW on a host computer without the need of setting up external embedded hardware.
After cloning, make sure to clone and initialize the submodules
```sh
git submodule update --init
```
## Prerequisites
@ -72,16 +77,19 @@ When the software is running, it opens a TCP oder UDP server, depending on the c
on port 7301. You can send PUS telecommands to that port to interactively command the
software.
For a quick test, install the `tmtccmd` Python package first and use `py` instead
of `python3` on Windows:
The following steps set up a virtual environment, install all the dependencies, and then use
the `tmtcc.py` utility to send a ping telecommand to the running OBSW
```sh
cd tmtccmd
python3 -m pip install -r requirements.txt
cd tmtc
python3 -m venv venv
cd deps/tmtccmd
pip install .[gui]
```
Now you can command the software using the `tmtccli.py` and `tmtcgui.py` command.
For example, you can use `tmtccli.py -s 17 -o 0` to send a ping command.
Now you can command the software using the `tmtcc.py` command for the CLI mode and `tmtcc.py -g`
for the GUI mode inside the virtual environment. For example, you can use `tmtcc.py -s 17 -o 0`
to send a ping command.
## <a id="prereqsetup"></a> Setting up Prerequisites
@ -166,8 +174,8 @@ generation as a cross-platform solution.
1. Create a new folder for the executable.
```sh
mkdir build-Debug
cd build-Debug
mkdir cmake-build-debug
cd cmake-build-debug
```
2. Configure the build system
@ -198,8 +206,8 @@ as well to have a convenient way to configure the CMake build.
1. Open the MinGW64 terminal and navigate to the `fsfw_example` folder
2. Create a new folder for the executable.
```sh
mkdir build-Debug
cd build-Debug
mkdir cmake-build-debug
cd cmake-build-debug
```
The build options can be displayed with `cmake -L` .

View File

@ -1,28 +1,17 @@
pipeline {
agent any
environment {
BUILDDIR = 'build-Debug'
BUILDDIR = 'cmake-build-debug'
}
agent {
docker { image 'fsfw-ci:d3'}
}
stages {
stage('Create Docker') {
agent {
dockerfile {
dir 'automation'
additionalBuildArgs '--no-cache'
reuseNode true
}
}
stage('Clean') {
steps {
sh 'rm -rf $BUILDDIR'
}
}
stage('Configure') {
agent {
dockerfile {
dir 'automation'
reuseNode true
}
}
steps {
dir(BUILDDIR) {
sh 'cmake -DFSFW_OSAL=host ..'
@ -30,15 +19,9 @@ pipeline {
}
}
stage('Build') {
agent {
dockerfile {
dir 'automation'
reuseNode true
}
}
steps {
dir(BUILDDIR) {
sh 'cmake --build . -j'
sh 'cmake --build . -j4'
}
}
}

View File

@ -1,13 +1,7 @@
target_sources(${TARGET_NAME}
PRIVATE
main.cpp
)
target_sources(${TARGET_NAME} PRIVATE main.cpp)
add_subdirectory(core)
add_subdirectory(fsfwconfig)
add_subdirectory(utility)
target_include_directories(${TARGET_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

View File

@ -1,5 +1 @@
target_sources(${TARGET_NAME}
PRIVATE
InitMission.cpp
ObjectFactory.cpp
)
target_sources(${TARGET_NAME} PRIVATE InitMission.cpp ObjectFactory.cpp)

View File

@ -1,300 +1,305 @@
#include <OBSWConfig.h>
#include <bsp_hosted/core/InitMission.h>
#include <bsp_hosted/fsfwconfig/objects/systemObjectList.h>
#include <bsp_hosted/fsfwconfig/pollingsequence/pollingSequenceFactory.h>
#include "example/utility/TaskCreation.h"
#include "fsfw_tests/integration/assemblies/TestAssembly.h"
#include <fsfw/modes/HasModesIF.h>
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/retval.h>
#include <fsfw/serviceinterface/ServiceInterface.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
#include <fsfw/tasks/TaskFactory.h>
#include "example/utility/TaskCreation.h"
#include "fsfw_tests/integration/assemblies/TestAssembly.h"
#ifdef _WIN32
#include <fsfw/osal/windows/winTaskHelpers.h>
#endif
void InitMission::createTasks() {
TaskFactory* taskFactory = TaskFactory::instance();
if(taskFactory == nullptr) {
return;
}
TaskFactory* taskFactory = TaskFactory::instance();
if (taskFactory == nullptr) {
return;
}
TaskPriority currPrio;
TaskPriority currPrio;
#ifdef _WIN32
currPrio = tasks::makeWinPriority();
currPrio = tasks::makeWinPriority();
#endif
TaskDeadlineMissedFunction deadlineMissedFunc = nullptr;
TaskDeadlineMissedFunction deadlineMissedFunc = nullptr;
#if OBSW_PRINT_MISSED_DEADLINES == 1
deadlineMissedFunc = TaskFactory::printMissedDeadline;
deadlineMissedFunc = TaskFactory::printMissedDeadline;
#endif
#if OBSW_ADD_CORE_COMPONENTS == 1
#ifdef __unix__
currPrio = 40;
currPrio = 40;
#endif
/* TMTC Distribution */
PeriodicTaskIF* distributerTask = taskFactory->createPeriodicTask(
"DIST", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.1, deadlineMissedFunc);
ReturnValue_t result = distributerTask->addComponent(objects::CCSDS_DISTRIBUTOR);
if (result != returnvalue::OK) {
task::printInitError("CCSDS distributor", objects::CCSDS_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::PUS_DISTRIBUTOR);
if (result != returnvalue::OK) {
task::printInitError("PUS distributor", objects::PUS_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::CFDP_DISTRIBUTOR);
if (result != returnvalue::OK) {
task::printInitError("CFDP distributor", objects::CFDP_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::TM_FUNNEL);
if (result != returnvalue::OK) {
task::printInitError("TM funnel", objects::TM_FUNNEL);
}
#if OBSW_ADD_CFDP_COMPONENTS == 1
#ifdef __unix__
currPrio = 50;
#endif
PeriodicTaskIF* cfdpTask = taskFactory->createPeriodicTask(
"CFDP Handler", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, deadlineMissedFunc);
result = cfdpTask->addComponent(objects::CFDP_HANDLER);
if (result != returnvalue::OK) {
task::printInitError("CFDP Handler", objects::CFDP_HANDLER);
}
#endif
/* TMTC Distribution */
PeriodicTaskIF* distributerTask = taskFactory->createPeriodicTask(
"DIST", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.1, deadlineMissedFunc);
ReturnValue_t result = distributerTask->addComponent(
objects::CCSDS_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
task::printInitError("CCSDS distributor", objects::CCSDS_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::PUS_DISTRIBUTOR);
if (result!=HasReturnvaluesIF::RETURN_OK) {
task::printInitError("PUS distributor", objects::PUS_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::TM_FUNNEL);
if (result != HasReturnvaluesIF::RETURN_OK) {
task::printInitError("TM funnel", objects::TM_FUNNEL);
}
#ifdef __unix__
currPrio = 50;
currPrio = 50;
#endif
/* UDP bridge */
PeriodicTaskIF* udpBridgeTask = taskFactory->createPeriodicTask(
"TCPIP_TMTC_BRIDGE", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2,
deadlineMissedFunc
);
result = udpBridgeTask->addComponent(objects::TCPIP_TMTC_BRIDGE);
if(result != HasReturnvaluesIF::RETURN_OK) {
task::printInitError("TMTC bridge", objects::TCPIP_TMTC_BRIDGE);
}
/* UDP bridge */
PeriodicTaskIF* udpBridgeTask = taskFactory->createPeriodicTask(
"TCPIP_TMTC_BRIDGE", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, deadlineMissedFunc);
result = udpBridgeTask->addComponent(objects::TCPIP_TMTC_BRIDGE);
if (result != returnvalue::OK) {
task::printInitError("TMTC bridge", objects::TCPIP_TMTC_BRIDGE);
}
#ifdef __unix__
currPrio = 80;
currPrio = 80;
#endif
PeriodicTaskIF* udpPollingTask = taskFactory->createPeriodicTask(
"TMTC_POLLING", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, deadlineMissedFunc
);
result = udpPollingTask->addComponent(objects::TCPIP_TMTC_POLLING_TASK);
if(result != HasReturnvaluesIF::RETURN_OK) {
task::printInitError("TMTC polling", objects::TCPIP_TMTC_POLLING_TASK);
}
PeriodicTaskIF* udpPollingTask = taskFactory->createPeriodicTask(
"TMTC_POLLING", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, deadlineMissedFunc);
result = udpPollingTask->addComponent(objects::TCPIP_TMTC_POLLING_TASK);
if (result != returnvalue::OK) {
task::printInitError("TMTC polling", objects::TCPIP_TMTC_POLLING_TASK);
}
#ifdef __unix__
currPrio = 20;
currPrio = 20;
#endif
PeriodicTaskIF* eventTask = taskFactory->createPeriodicTask(
"EVENT", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.100, deadlineMissedFunc
);
result = eventTask->addComponent(objects::EVENT_MANAGER);
if(result != HasReturnvaluesIF::RETURN_OK) {
task::printInitError("Event Manager", objects::EVENT_MANAGER);
}
PeriodicTaskIF* eventTask = taskFactory->createPeriodicTask(
"EVENT", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.100, deadlineMissedFunc);
result = eventTask->addComponent(objects::EVENT_MANAGER);
if (result != returnvalue::OK) {
task::printInitError("Event Manager", objects::EVENT_MANAGER);
}
#endif /* OBSW_ADD_CORE_COMPONENTS == 1 */
#if OBSW_ADD_TASK_EXAMPLE == 1
#ifdef __unix__
currPrio = 50;
currPrio = 50;
#endif
FixedTimeslotTaskIF* timeslotDemoTask = taskFactory->createFixedTimeslotTask(
"PST_TASK", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.5, deadlineMissedFunc);
result = pst::pollingSequenceExamples(timeslotDemoTask);
if(result != HasReturnvaluesIF::RETURN_OK) {
FixedTimeslotTaskIF* timeslotDemoTask = taskFactory->createFixedTimeslotTask(
"PST_TASK", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.5, deadlineMissedFunc);
result = pst::pollingSequenceExamples(timeslotDemoTask);
if (result != returnvalue::OK) {
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "InitMission::createTasks: Timeslot demo task initialization failed!" <<
std::endl;
sif::error << "InitMission::createTasks: Timeslot demo task initialization failed!"
<< std::endl;
#else
sif::printError("InitMission::createTasks: Timeslot demo task initialization failed!\n");
sif::printError("InitMission::createTasks: Timeslot demo task initialization failed!\n");
#endif
}
}
#ifdef __unix__
currPrio = 40;
currPrio = 40;
#endif
PeriodicTaskIF* readerTask = taskFactory->createPeriodicTask(