Steffen Gaisser
bd64a43819
Merge pull request 'simplified test controller and added docs gitignore' ( #530 ) from mueller/controller-update into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
fsfw/fsfw/pipeline/pr-master manual fix for jenkins bug
Details
Reviewed-on: #530
2021-12-20 14:15:37 +01:00
Robin Müller
d0c7878da4
simplified test controller and added docs gitignore
fsfw/fsfw/pipeline/pr-development This commit looks good
Details
fsfw/fsfw/pipeline/head Build queued...
Details
2021-12-14 17:50:23 +01:00
Ulrich Mohr
2bd1e6acbd
Merge pull request 'Added formatting scripts' ( #527 ) from KSat/fsfw:mueller/clang-shell-script into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #527
2021-12-13 14:26:22 +01:00
Robin Müller
9697575f50
Merge branch 'development' into mueller/clang-shell-script
2021-12-13 14:25:11 +01:00
Steffen Gaisser
cec44ad44c
Merge pull request 'improved win32 define' ( #529 ) from KSat/fsfw:woodward/define-improvement into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #529
2021-12-13 14:20:50 +01:00
David
661b7b44e0
improved win32 define
fsfw/fsfw/pipeline/pr-development This commit looks good
Details
2021-12-12 19:28:51 +01:00
Robin Müller
e952a82b65
small tweaks and fixes
fsfw/fsfw/pipeline/pr-development Build started...
Details
2021-12-07 13:14:57 +01:00
Robin Müller
cbcfa8fe56
Merge remote-tracking branch 'upstream/development' into mueller/clang-shell-script
fsfw/fsfw/pipeline/pr-development This commit looks good
Details
2021-12-06 15:06:05 +01:00
Steffen Gaisser
32ba4301e4
Merge pull request 'Introducing documentation with Sphinx' ( #526 ) from mueller/sphinx-docs into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #526
2021-12-06 15:05:29 +01:00
Robin Müller
4a5204d6f6
small fix for helper script
2021-12-06 14:46:31 +01:00
Robin Müller
df45f02c39
script fixes, odd behaviour
2021-12-03 14:55:00 +01:00
Robin Müller
15dddd7fc4
small README section for formatting
2021-12-01 16:17:27 +01:00
Robin Müller
fd7581f8ba
Added formatting scripts
...
1. Added .clang-format file which contains information for the
clang-format tool on how to format source files
2. Added shell helper script to apply all changes on HAL soures,
test sources and primary sources
The shell script was not applied yet. This should be done shortly
before introducing the release. Also, it might be good idea to provide
instructions on how to set up the formatter for Eclipse
2021-12-01 16:11:57 +01:00
Robin Müller
c2bf09d506
Introducing documentation with Sphinx
...
This PR introduces the generation of documentation based on
this excellent blog post: https://devblogs.microsoft.com/cppblog/clear-functional-c-documentation-with-sphinx-breathe-doxygen-cmake/
It combines the tools Sphinx, Doxygen and Breathe to generate good
looking HTML documentation conveniently which can be hosted easily.
The helper scripts were unified and there is now one helper.py script
which can be used to create, build and open both tests and documentation.
"./helper.py -h" can be used to get the different options.
This PR also contains some smaller fixes which were necessary for the docs
to build
2021-12-01 11:17:28 +01:00
Steffen Gaisser
bf31248a50
Merge pull request 'Update SerializeAdapter' ( #513 ) from KSat/fsfw:mueller/serializeif-update into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #513
2021-11-29 14:37:40 +01:00
Robin Müller
9fadc9b830
Merge branch 'development' into mueller/serializeif-update
2021-11-29 14:36:25 +01:00
Steffen Gaisser
8c17c7e1a7
Merge pull request 'update unittest helper scripts' ( #525 ) from eive/fsfw:mueller/update-scripts into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #525
2021-11-29 14:35:07 +01:00
Robin Müller
9c5e3565c6
Merge branch 'development' into mueller/serializeif-update
2021-11-24 18:53:28 +01:00
Robin Müller
ecc7f1d691
Merge branch 'development' into mueller/update-scripts
2021-11-24 13:13:26 +01:00
Robin Müller
00dced31ee
update unittest helper scripts
...
- Added functionality to open HTML report immediately
- Added another helper script to automatically generate unittest build
folder
2021-11-19 13:50:46 +01:00
Robin Müller
ab7117d81e
Merge pull request 'Bugfix for Packet ID getters' ( #524 ) from eive/fsfw:mueller/bugfix-improvements-packet-id-functions into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #524
2021-11-19 13:46:46 +01:00
Robin Müller
05c4f4fadc
Bugfix for Packet ID getters
...
- Also added related unittests
2021-11-18 19:56:24 +01:00
Steffen Gaisser
186b3565e0
Merge pull request 'Unittests for Op Divider and Bitutility' ( #510 ) from KSat/fsfw:mueller/unittests-op-divider-bitutil into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #510
2021-11-15 14:24:15 +01:00
Steffen Gaisser
e688105073
Merge branch 'development' into mueller/unittests-op-divider-bitutil
2021-11-15 14:23:34 +01:00
Steffen Gaisser
f7c6ec329b
Merge pull request 'Filesystem Base Interface: Use IF instead of void pointer' ( #511 ) from KSat/fsfw:mueller/filesystem-api-update into development
...
Reviewed-on: #511
2021-11-15 14:23:04 +01:00
Robin Müller
30217aa42b
updated SerializeAdapter.h
...
- Updates `SerializerAdapter` to also take simple pointer and simply assign the serialized and deSerialized size
- Added related unittests
2021-11-10 18:51:56 +01:00
Robin Müller
0176c07886
use IF instead of void pointer
2021-11-10 18:49:29 +01:00
Robin Müller
6d5eb5b387
Op Divider and bitutility updates
...
- Added unittests for `PeriodicOperationDivider` and the `bitutil` helpers
- Some API changes: Removed redundant bit part, because these functions are already in a namespace
- Some bugfixes for `PeriodicOperationDivider`
2021-11-10 18:48:02 +01:00
Steffen Gaisser
9a38106b57
Merge pull request 'STM32 SPI Updates' ( #518 ) from mueller/stm32-spi-updates into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #518
2021-11-08 14:52:28 +01:00
Steffen Gaisser
75e16e0b7b
Merge branch 'development' into mueller/stm32-spi-updates
2021-11-08 14:51:02 +01:00
Steffen Gaisser
87a15910fe
Merge pull request 'CMakeLists fixes' ( #517 ) from mueller/cmake-fixes into development
...
Reviewed-on: #517
LGTM
2021-11-08 14:44:39 +01:00
Robin Müller
9ad215c9a3
Merge branch 'development' into mueller/cmake-fixes
2021-10-28 09:20:02 +02:00
Robin Müller
2ca7a84e86
Merge branch 'development' into mueller/stm32-spi-updates
2021-10-28 09:19:31 +02:00
Ulrich Mohr
fbeb578d1c
Merge pull request 'introducing valgrind' ( #521 ) from mohr_ci into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #521
2021-10-27 21:49:57 +02:00
Ulrich Mohr
58d4525e8a
Merge branch 'development' into mohr_ci
fsfw/fsfw/pipeline/head This commit looks good
Details
2021-10-27 21:35:17 +02:00
Ulrich Mohr
8d004e9621
Merge pull request 'Out of bound reads and writes in unittests' ( #519 ) from mohr_valgrind into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #519
2021-10-27 21:35:01 +02:00
Ulrich Mohr
a53992fdc9
introducing valgrind
2021-10-27 21:32:40 +02:00
Ulrich Mohr
c6bbc19b85
Merge pull request 'Adding code for CI with docker and jenkins' ( #520 ) from mohr_ci into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #520
2021-10-27 20:52:57 +02:00
Ulrich Mohr
36aaf3d758
say hi to my new friend valgrind
2021-10-27 20:41:04 +02:00
Robin Müller
7c855592d0
more cleaning up
fsfw/fsfw/pipeline/head This commit looks good
Details
2021-10-27 18:12:56 +02:00
Robin Müller
cb7399b999
msp init improvements
2021-10-27 18:12:46 +02:00
Robin Müller
d675621b73
grouping CS gpio definition
2021-10-27 17:32:21 +02:00
Robin Müller
3448a8c01b
SPI ComIF updates
...
1. Make setting a chip select pin optional
2. Make ComIF member functions public
2021-10-27 17:32:13 +02:00
Robin Müller
42458725e8
more important fix
2021-10-27 17:10:37 +02:00
Robin Müller
cc7250fcf5
second cmake fix
2021-10-27 17:08:59 +02:00
Ulrich Mohr
da42edcc0c
Jenkinsfile: added stage to be more verbose
fsfw/fsfw/pipeline/head This commit looks good
Details
2021-10-26 20:58:34 +02:00
Ulrich Mohr
b02f737418
jenkins cosmetics
fsfw/fsfw/pipeline/head This commit looks good
Details
2021-10-26 20:53:08 +02:00
Ulrich Mohr
1923b339e9
I can not jenkins
fsfw/fsfw/pipeline/head This commit looks good
Details
2021-10-26 20:47:53 +02:00
Ulrich Mohr
3c41472649
tweaking Jenkinsfile
fsfw/fsfw/pipeline/head There was a failure building this commit
Details
2021-10-26 20:30:22 +02:00
Ulrich Mohr
da19764232
Merge pull request 'Unittest and Integration test hotfix' ( #516 ) from KSat/fsfw:mueller/unittest-hotfix into development
...
fsfw/fsfw/pipeline/head This commit looks good
Details
Reviewed-on: #516
2021-10-26 17:36:40 +02:00
Robin Müller
2126e6e375
simplified test task
2021-10-26 17:24:47 +02:00
Robin Müller
5f8adc63b7
some more fixes for integration tests
2021-10-26 17:16:21 +02:00
Robin Müller
81bae85825
hotfix for unittests
2021-10-26 17:10:54 +02:00
Ulrich Mohr
e263f2fbdc
Merge pull request 'added integration test code' ( #508 ) from mueller/example-code-as-test into development
...
fsfw/fsfw/pipeline/head There was a failure building this commit
Details
Reviewed-on: #508
2021-10-25 15:30:53 +02:00
Robin Müller
8d34561137
Merge branch 'development' into mueller/example-code-as-test
2021-10-25 15:06:36 +02:00
Ulrich Mohr
19f9b0280c
added jenkins integration
fsfw/fsfw/pipeline/head This commit looks good
Details
2021-10-25 14:59:16 +02:00
Ulrich Mohr
e86319707f
Merge branch 'development' into mueller/example-code-as-test
2021-10-25 14:52:43 +02:00
Ulrich Mohr
0e653378c3
Merge pull request 'Arrayprinter format improvements' ( #514 ) from KSat/fsfw:mueller/arrayprinter-improvements into development
...
Reviewed-on: #514
2021-10-25 14:09:25 +02:00
Ulrich Mohr
a506b94d7e
Merge branch 'development' into mueller/arrayprinter-improvements
2021-10-25 14:09:08 +02:00
Ulrich Mohr
7bff632042
Merge pull request 'updated function names' ( #509 ) from eive/fsfw:mueller/constexpr-func-name into development
...
Reviewed-on: #509
2021-10-25 14:05:14 +02:00
Robin Müller
07a0dd5331
this is the correct file
2021-10-22 11:32:28 +02:00
Robin Müller
f16dcebf6b
Merge branch 'development' into mueller/arrayprinter-improvements
2021-10-22 11:31:57 +02:00
Robin Müller
dc6ed40bfb
arrayprinter format improvements
2021-10-22 11:30:00 +02:00
Robin Müller
a5a306ff66
arrayprinter format improvements
2021-10-21 22:36:54 +02:00
Robin Müller
7122c37511
updated function names
2021-10-18 18:26:03 +02:00
Steffen Gaisser
dacec0c1f6
Merge pull request 'Keep Open TCP Implementation' ( #496 ) from eive/fsfw:mueller/tcp-keep-open-pr into development
...
Reviewed-on: #496
2021-10-18 15:13:08 +02:00
Robin Müller
84cd010a25
Merge branch 'mueller/tcp-keep-open-pr' of https://egit.irs.uni-stuttgart.de/eive/fsfw into mueller/tcp-keep-open-pr
2021-10-18 15:07:11 +02:00
Robin Müller
a077a1b587
improved constexpr macros
2021-10-18 15:07:00 +02:00
Robin Müller
b94baf838d
Merge branch 'development' into mueller/tcp-keep-open-pr
2021-10-18 14:58:33 +02:00
Ulrich Mohr
084a3daec6
Merge pull request 'more printouts for rejected TC packets' ( #505 ) from eive/fsfw:mueller/packet-check-printout into development
...
Reviewed-on: #505
2021-10-18 14:44:40 +02:00
Robin Müller
b23ed11c7e
Merge branch 'development' into mueller/tcp-keep-open-pr
2021-10-18 14:44:26 +02:00
Ulrich Mohr
9d7d22510b
Merge pull request 'Tests can now be built as part of FSFW and versioning moved to CMake' ( #500 ) from KSat/fsfw:mueller/integrated-unittests into development
...
Reviewed-on: #500
2021-10-18 14:42:52 +02:00
Robin Müller
76d12e3db1
Merge branch 'development' into mueller/integrated-unittests
2021-10-18 14:36:01 +02:00
Ulrich Mohr
cee42f9b70
one } was on the wrong side of an #endif
2021-10-18 14:34:11 +02:00
Robin Müller
afe8fe6605
assign correct init value
2021-10-18 13:58:18 +02:00
Robin Müller
6e97bd4db4
added integration test code
2021-10-17 23:27:31 +02:00
Robin Müller
7694decaaa
Merge branch 'mueller/packet-check-printout' of https://egit.irs.uni-stuttgart.de/eive/fsfw into mueller/packet-check-printout
2021-10-17 22:56:28 +02:00
Robin Müller
113c992f99
use char* instead
2021-10-17 22:56:00 +02:00
Robin Müller
0738a0b6a4
Merge branch 'development' into mueller/packet-check-printout
2021-10-15 18:33:44 +02:00
Robin Müller
4251ccacf9
Merge branch 'development' into mueller/integrated-unittests
2021-10-15 18:32:35 +02:00
Ulrich Mohr
5d31a54fba
Merge pull request 'small bugfix for LIS3 handler' ( #504 ) from eive/fsfw:mueller/lis3-small-bugfix into development
...
Reviewed-on: #504
2021-10-15 17:20:55 +02:00
Ulrich Mohr
cadf97de88
Merge pull request 'Add feature to open GPIO by line name' ( #506 ) from eive/fsfw:feature/open-gpio-by-line-name into development
...
Reviewed-on: #506
2021-10-15 17:19:42 +02:00
Robin Müller
01f5dfe6b4
Merge branch 'development' into mueller/integrated-unittests
2021-10-15 15:05:23 +02:00
Robin Müller
cae3feb5da
Add feature to open GPIO by line name
...
This features was provided by Jakob Meier as part of
eive/fsfw#19 .
It adds the feature to open GPIOs supplying their line names.
2021-10-11 19:55:37 +02:00
Robin Müller
2180c47f4f
more printouts for rejected packet
2021-10-11 19:47:41 +02:00
Robin Müller
c46bde417e
small bugfix for LIS3 handler
2021-10-11 19:37:23 +02:00
Robin Müller
4924da1667
Merge remote-tracking branch 'upstream/development' into mueller/tcp-keep-open-pr
2021-10-11 18:52:52 +02:00
Ulrich Mohr
f8e9042943
Merge pull request 'Merge v2.0.1 into development' ( #503 ) from master into development
...
Reviewed-on: #503
2021-10-11 18:19:46 +02:00
Robin Müller
060b3a3b2c
added missing leading *
2021-10-11 17:51:13 +02:00
Robin Müller
348975ba5f
additional coverage excludes
2021-10-11 17:31:04 +02:00
Robin Müller
e8927d6aa8
moved testtemplate and removed user folder
2021-10-11 17:22:54 +02:00
Robin Müller
b2b648c4aa
removed obsolete comment
2021-10-11 17:14:30 +02:00
Robin Müller
fc9101cd8f
deleted unrequired files, common include deleted
2021-10-11 17:12:42 +02:00
Robin Müller
d4bb9397ee
better handling for configure files
2021-10-11 16:32:19 +02:00
Robin Müller
bf5590ce26
configure file correction
2021-10-11 16:25:01 +02:00
Robin Müller
460941c225
tiny tweak
2021-10-11 16:16:49 +02:00
Robin Müller
3d6f28c48d
printouts disable by default
2021-10-11 16:14:30 +02:00
Robin Müller
bb9ae86159
indentation fixes
2021-10-11 16:12:32 +02:00
Robin Müller
306a4b647f
more review corrections
2021-10-11 16:06:12 +02:00
Robin Müller
19061c3d50
removed obsolete files
2021-10-11 16:04:43 +02:00
Robin Müller
22dbabba38
removed copy and paste error
2021-10-11 16:01:58 +02:00
Robin Müller
ac8df112b1
small correction
2021-10-11 16:01:14 +02:00
Robin Müller
ad744fb593
README improvement
2021-10-11 15:56:04 +02:00
Robin Müller
6c75b56054
README update
2021-10-11 15:51:27 +02:00
Robin Müller
fb67df6d7f
using testsconfig.h now
2021-10-11 15:45:37 +02:00
Robin Müller
1b6fa9822b
this should work
2021-10-11 15:40:29 +02:00
Robin Müller
5798aa1e3a
create project to suppress warning
2021-10-11 15:09:19 +02:00
Robin Müller
b00f61445d
works
2021-10-11 15:07:52 +02:00
Robin Müller
ad117e07e0
FSFW_CONFIG_PATH update
2021-10-11 15:03:03 +02:00
Robin Müller
c26c2a5a96
hardcoding config path
2021-10-11 14:56:42 +02:00
Robin Müller
e02ac05097
fixed a bug for default cfg path
2021-10-11 13:57:00 +02:00
Robin Müller
a827ec6a92
removed another include
2021-10-11 13:51:08 +02:00
Robin Müller
12321a5d49
Merge branch 'mueller/integrated-unittests' of https://egit.irs.uni-stuttgart.de/KSat/fsfw into mueller/integrated-unittests
2021-10-11 13:48:28 +02:00
Robin Müller
ad3238aa19
removed problematic includes
2021-10-11 13:48:17 +02:00
Robin Müller
f67868516c
Merge branch 'development' into mueller/integrated-unittests
2021-10-11 13:40:09 +02:00
Robin Müller
1ddf9c0f11
Merge branch 'development' into mueller/tcp-keep-open-pr
2021-10-09 13:32:25 +02:00
Jakob Meier
9bcd701a50
tcp server also parses TCs when client closes connection
2021-10-09 13:31:51 +02:00
Jakob Meier
6ad7f51297
added bind call error string
2021-10-09 13:31:40 +02:00
Ulrich Mohr
12983a7143
Merge pull request 'minor updates for PUS services' ( #498 ) from KSat/fsfw:mueller/pus-tweaks into development
...
Reviewed-on: #498
2021-10-08 12:59:04 +02:00
Ulrich Mohr
27a3598526
Merge pull request 'better naming for parameter' ( #499 ) from KSat/fsfw:mueller/retval-better-naming into development
...
Reviewed-on: #499
2021-10-08 12:58:43 +02:00
Robin Müller
dd1631a456
updated CMakeLists.txt
...
- More information about FSFW build
2021-10-07 14:20:34 +02:00
Robin Müller
cd6d616806
using .h.in version fle now
2021-10-07 13:26:31 +02:00
Robin Müller
ade15ad16d
tests can now be built as part of FSFW
...
This PR refactores the tests so they are built as part of the FSFW.
This is done by adding Catch2 with the FetchContent directive.
A future implementation might also use a system installation of Catch2
by first checking whether Catch2 can already be found as a package
The custom configuration folder testcfg was moved from the user folder
to the actual unittest folder.
The tests can be built by setting the CMake FSFW_BUILD_UNITTESTS option
to TRUE/ON. They are built with the static library and dropped inside
the build folders fsfw directory.
2021-10-07 13:24:46 +02:00
Robin Müller
76416f523d
better naming for parameter
2021-10-07 10:44:44 +02:00
Robin Müller
5749e159e4
minor updates for PUS services
2021-10-07 10:39:16 +02:00
Robin Müller
85a90a6ec5
Merge pull request 'FSFW.h.in more default values' ( #491 ) from mueller/fsfw-default-value-pus-c-cfg into development
...
Reviewed-on: #491
2021-10-05 18:27:13 +02:00
Robin Müller
80b41e937b
Merge branch 'development' into mueller/fsfw-default-value-pus-c-cfg
2021-10-05 18:26:34 +02:00
Robin Müller
857a1624c6
Merge branch 'development' into mueller/fsfw-default-value-pus-c-cfg
2021-10-04 14:45:13 +02:00
Robin Müller
198fdbba62
Merge remote-tracking branch 'upstream/development' into mueller/tcp-keep-open-pr
2021-10-04 14:41:51 +02:00
Robin Müller
c7c6d78f4b
Merge branch 'development' into mueller/fsfw-default-value-pus-c-cfg
2021-10-02 15:44:46 +02:00
Robin Müller
0df5491193
Merge branch 'development' into mueller/tcp-keep-open-pr
2021-09-29 16:16:26 +02:00
Robin Müller
897d8b37ad
Merge branch 'development' into mueller/fsfw-default-value-pus-c-cfg
2021-09-29 16:16:11 +02:00
Robin Müller
05ed25d397
Merge branch 'development' into mueller/fsfw-default-value-pus-c-cfg
2021-09-29 14:27:20 +02:00
Robin Müller
65f4433fad
Merge remote-tracking branch 'origin/development' into mueller/fsfw-default-value-pus-c-cfg
2021-09-29 12:07:06 +02:00
Robin Müller
febe3cc4d4
define fix
2021-09-29 12:05:24 +02:00
Robin Müller
f388878b99
added more defines
2021-09-29 12:05:15 +02:00
Robin Müller
faa7e1e24f
default values for PUS c config
2021-09-29 12:00:59 +02:00
Robin Müller
9002c12cf1
update FSFW.h.in
2021-09-29 11:55:20 +02:00
Robin Müller
0a6a32a130
printout separation
2021-09-29 11:45:20 +02:00
Robin Müller
cffd77ed32
put functions in namespace
2021-09-28 17:42:29 +02:00
Robin Müller
b1a9c90087
this should work for both OSes
2021-09-28 17:39:07 +02:00
Robin Müller
a619087fef
Merge remote-tracking branch 'upstream/mueller/tcp-windows-fixes' into mueller/tcp-keep-open-pr
2021-09-28 17:35:07 +02:00
Robin Müller
32b5060c62
all windows fixes
2021-09-28 17:28:54 +02:00
Robin Müller
936bac5abd
class id renamed
2021-09-28 16:33:50 +02:00
Robin Müller
bf02f14772
C++11 adaptions
2021-09-28 16:33:20 +02:00
Robin Müller
1622e23f1c
delay configurable
2021-09-28 15:33:31 +02:00
Robin Müller
a4d6421510
documentation and bugfixes
2021-09-28 15:30:01 +02:00
Robin Müller
f02852d8d2
cmake lists file update
2021-09-28 15:13:46 +02:00
Robin Müller
bbea5e33bc
removed obsolete empty ctor
2021-09-28 15:12:55 +02:00
Robin Müller
e536918804
wiretapping in runtime config now
2021-09-28 15:09:56 +02:00
Robin Müller
09299802f0
TCP refactoring
...
This refactoring keeps the TCP connection opened until the client closes
it. It also increased the robustness of the TCP reception.
Because TCP is stream based and usually applied to newline separated
data, a special way to handle binary space packets is required.
The new SpacePacketParser class takes care of this by taking TC packet
IDs as as optional start markers to parse for space packets in a given
buffer.
The refactored TCP server uses a ring buffer, a reception buffer and the
new parser to extract space packets from a stream in a safer way.
2021-09-28 15:01:01 +02:00