Compare commits

...

168 Commits
v0.1.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
Robin Müller 4e51adf92c
small README tweak
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-12-14 18:17:58 +01:00
Robin Müller 1bc4424453
update tmtc doc and add requirements.txt
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-12-14 18:16:00 +01:00
Robin Müller 307df75a4d
added new run config
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-12-14 17:54:58 +01:00
Robin Müller d374b972dc
update submodules
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-12-14 17:50:49 +01:00
Robin Müller a30b161c3e
asm to normal is now commanded
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-12-14 16:30:08 +01:00
Robin Müller f101352817
update tmtc code
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-12-14 16:00:46 +01:00
Robin Müller df16de69c0
removed old dockerfile
fsfw/fsfw example hosted/pipeline/head This commit looks good Details
2021-11-19 14:24:18 +01:00
Robin Müller 0e7201d993
added automation files and updated README
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit Details
2021-11-19 14:19:21 +01:00
105 changed files with 3108 additions and 1922 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,18 +0,0 @@
FROM ubuntu:latest
# FROM alpine:latest
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=host ..;
ENTRYPOINT ["cmake", "--build", "build-hosted"]
CMD ["-j"]
# CMD ["bash"]

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,8 +52,17 @@ 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
If you need to set up these prerequisites, you can find some more information in the dedicated
[chapter](#prereqsetup).
1. Makefile build: make installed (bundled with MSYS2 on Windows or via [xPacks Windows Build Tools](https://xpack.github.io/windows-build-tools/install/)). Natively installed on Linux.
2. Recommended for application code development: [Eclipse for C/C++](https://www.eclipse.org/downloads/packages/) .
Project files and launch configuration are provided for Eclipse to ease development.
@ -62,6 +71,28 @@ FSFW on a host computer without the need of setting up external embedded hardwar
4. Recommended: Python 3 and [just](https://github.com/casey/just) installed for easy build
generation
## Commanding the Software
When the software is running, it opens a TCP oder UDP server, depending on the configuration,
on port 7301. You can send PUS telecommands to that port to interactively command the
software.
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 tmtc
python3 -m venv venv
cd deps/tmtccmd
pip install .[gui]
```
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
### Windows - MinGW64 build
1. [MSYS2 and MinGW64](https://www.msys2.org/) installed
@ -143,13 +174,13 @@ 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
```sh
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DOS_FSFW=host ..
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DFSFW_OSAL=host ..
```
You can also use `-DOS_FSFW=linux` to use the Linux OSAL of the FSFW.
@ -175,15 +206,15 @@ 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` .
3. Configure the project and generate the native MinGW64 buildsystem
```sh
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DOS_FSFW=host ..
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DFSFW_OSAL=host ..
```
The build configuration can also be performed with the shell scripts located
@ -200,11 +231,15 @@ as well to have a convenient way to configure the CMake build.
## Setting up Eclipse for CMake projects
The separate [Eclipse README](https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-common/src/branch/master/doc/README-eclipse.md) specifies how to set up Eclipse to build CMake
The separate [Eclipse README](https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-common/src/branch/master/doc/README-eclipse.md)
specifies how to set up Eclipse to build CMake
projects. Separate project files and launch configurations for the MinGW build were provided.
The debug output is colored by default. It is recommended to install the
`ANSI Escape in Console` plugin in Eclipse so the coloring works in the Eclipse console. On Windows,
it is recommended to run the applicaton with the Windows command line for the printout to work
`ANSI Escape in Console` plugin in Eclipse so the coloring works in the Eclipse console.
**Windows**
On Windows, it is recommended to run the applicaton with the Windows command line for the printout
to work
properly. You can do this by simply double-clicking the binary or using `start <Exe>` in the
Windows command line

8
automation/Dockerfile Normal file
View File

@ -0,0 +1,8 @@
FROM ubuntu:focal
RUN apt-get update
RUN apt-get --yes upgrade
#tzdata is a dependency, won't install otherwise
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get --yes install gcc g++ cmake make lcov git valgrind nano

29
automation/Jenkinsfile vendored Normal file
View File

@ -0,0 +1,29 @@
pipeline {
environment {
BUILDDIR = 'cmake-build-debug'
}
agent {
docker { image 'fsfw-ci:d3'}
}
stages {
stage('Clean') {
steps {
sh 'rm -rf $BUILDDIR'
}
}
stage('Configure') {
steps {
dir(BUILDDIR) {
sh 'cmake -DFSFW_OSAL=host ..'
}
}
}
stage('Build') {
steps {
dir(BUILDDIR) {
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,311 +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 */