Refactor TMTC Stack, improve test framework #655

Merged
mohr merged 150 commits from mueller/refactor-tmtc-stack into development 2022-09-12 14:31:23 +02:00
Owner
  • Separate TMTC stack into dedicated creator and reader components. There are few occasions where both are needed. Splitting them into dedicated classes leads to more focused classes which are also easier to test and re-use
  • The reader classes use zero-copy semantics to increase program speed and avoid unnecessary copies. The creator classes focus on a comfortable API dedicated towards creating packets.
  • Add full unit test suite for the space packet and PUS packet stack to allow more flexibility and safety when doing more refactoring or changes in the future
  • Drop the PUS A support. It is an old standard, and no projects currently using the newest FSFW version are using PUS A
  • Make the creator and reader components first class objects and the storage and sender components thin wrappers or helpers using them. This allows framework users to only use the packet stack without pulling in a lot of other dependencies of components which might not be required
  • Significantly improve existing test framework. Adds several new mock classes and improves the MessageQueueMock significantly. Most of these mocks are also necessary to unittest more complex classes like the CommandingServiceBase
  • Unit tests for PusServiceBase
  • Refactoring for PusServiceBase to ensure better testability
  • PusServiceBase now takes a composite configuration struct called PsbParams
  • For class like the TmFunnel, which need to manipulate certain fields of a PUS TM
    which is otherwise fine, a special PusTmZeroCopyWriter class can be used. This class currently only exposes the two functions required: Updating the sequence count and the error control field.
  • There are now two distinct checker components inside the CCSDS router stack: The PusPacketChecker and the CcsdsPacketChecker. The CCSDS distributor will perform the CCSDS packet check while the PUS distributor performs the PUS check. By default, the CCSDS checker will not perform any APID checking, but the PUS checker will. It is possible to specify a custom CCSDS checker. This allows to set a custom checker which will verify that the APID is equal to the PUS APID or a hypothetical CFDP APID. The CFDP checker will not make assumptions about how the CFDP packets are wrapped and then has an implementation independent of CCSDS SpacePacket.

These changes also introduce a lot more interfaces to increase the flexbility of the code base. They are also composition-centric, which gets rid of the complicated inheritance trees and the diamond inheritance issue of the former packet stack.

This PR pushes the code coverage to ~65 %.

Full list of added interfaces

  • SpacePacketIF : Generic CCSDS space packet fields. This interface provides all methods based on 4 core abstract methods which return the packet ID, packet sequence control, data length and version as uint16_t oder uint8_t
  • PusIF : Generic PUS fields: Version, service and subservice. This interface implies SpacePacketIF
  • PusTmIF : Generic PUS C TM fields, for example the fields of the secondary header. This interface implies PusIF
  • PusTcIF : Generic PUS C TC fields, for example the fields of the secondary header. This interface implies PusIF
  • ReadablePacketIF : Returns whole packet in raw format. Useful for zero-copy classes
  • RawUserDataReaderIF: Returns user data like TC app data or TM source data in raw format. Useful for zero-copy classes
  • CreatorDataIF : Returns user data in form of a tagged union which allows to specify user data as a serializable (implementing SerializeIF) or in raw format (pointer + size). Useful for high-level packet creators

Migration Guide

Framework Objects

The VerificationReporter object will not be created automatically now,
so a call like this in the user object factory will probably become necessary

  #include "fsfw/tmtcservices/VerificationReporter.h"
  
  ...
  new VerificationReporter();
  ...

This creates the reporter with the default object ID VERIFICATION_REPORTER
which is used by other objects if no explicit reporter is set.

Pus Service Base API

Calls like this:

  new Service17Test(objects::PUS_SERVICE_17_TEST, apid::APID,
                    pus::PUS_SERVICE_17);

do look like this now

  new Service17Test(PsbParams(objects::PUS_SERVICE_17_TEST, apid::APID,
                    pus::PUS_SERVICE_17));

Static Framework IDs

Some static IDs are written in capital letter now to specify that those are statics
which should remain constant after setting them once.

For example, the following PusServiceBase and the VerificationReporter IDs
might be interesting to set in the Factory::setStaticFrameworkObjectIds function, assuming that all the objects were created and set up properly:

  PusServiceBase::PUS_DISTRIBUTOR = objects::PUS_DISTRIBUTOR;
  PusServiceBase::PACKET_DESTINATION = objects::TM_FUNNEL;

  VerificationReporter::DEFAULT_RECEIVER = objects::PUS_SERVICE_1_VERIFICATION;

Data Pool Manager Subscription

Calls like this:

poolManager.subscribeForPeriodicPacket(internalErrorSid, false,
      static_cast<float>(getPeriodicOperationFrequency()) / static_cast<float>(1000.0), true);

look like this now

  poolManager.subscribeForDiagPeriodicPacket({internalErrorSid, false,
      static_cast<float>(getPeriodicOperationFrequency()) / static_cast<float>(1000.0)});

TM Funnel Implementation

Existing funnel implementations looked like this

  TmPacketPusC packet(packetData);
  packet.setPacketSequenceCount(this->sourceSequenceCount);
  sourceSequenceCount++;
  sourceSequenceCount =
      sourceSequenceCount % SpacePacketBase::LIMIT_SEQUENCE_COUNT;
  packet.setErrorControl();

They now look like this, with the time reader being explicitely set

  PusTmZeroCopyWriter packet(&timeReader, packetData, size);
  result = packet.parseDataWithoutCrcCheck();
  if(result != HasReturnvaluesIF::RETURN_OK) {
    return result;
  }
  packet.setSequenceCount(sourceSequenceCount++);
  sourceSequenceCount = sourceSequenceCount % ccsds::LIMIT_SEQUENCE_COUNT;
  packet.updateErrorControl();

Changed Interfaces

  • TimeStamperIF : Remove hardcoded timestamp size and imply SerializeIF. This allows more flexibility in the used timestamp

Other changes

  • Rename TimeStamper to CdsShortTimeStamper. This is more explicit.

WIP

  • Unittest for new PusTmZeroCopyWriter class
  • Full unit test suite for the TMTC packet stack
  • Basic integration tests for CSB and PSB
  • Unittests for PSB
  • More advanced integration tests, for example a failing CSB command
- Separate TMTC stack into dedicated creator and reader components. There are few occasions where both are needed. Splitting them into dedicated classes leads to more focused classes which are also easier to test and re-use - The reader classes use zero-copy semantics to increase program speed and avoid unnecessary copies. The creator classes focus on a comfortable API dedicated towards creating packets. - Add full unit test suite for the space packet and PUS packet stack to allow more flexibility and safety when doing more refactoring or changes in the future - Drop the PUS A support. It is an old standard, and no projects currently using the newest FSFW version are using PUS A - Make the creator and reader components first class objects and the storage and sender components thin wrappers or helpers using them. This allows framework users to only use the packet stack without pulling in a lot of other dependencies of components which might not be required - Significantly improve existing test framework. Adds several new mock classes and improves the `MessageQueueMock` significantly. Most of these mocks are also necessary to unittest more complex classes like the CommandingServiceBase - Unit tests for `PusServiceBase` - Refactoring for `PusServiceBase` to ensure better testability - `PusServiceBase` now takes a composite configuration struct called `PsbParams` - For class like the `TmFunnel`, which need to manipulate certain fields of a PUS TM which is otherwise fine, a special `PusTmZeroCopyWriter` class can be used. This class currently only exposes the two functions required: Updating the sequence count and the error control field. - There are now two distinct checker components inside the CCSDS router stack: The `PusPacketChecker` and the `CcsdsPacketChecker`. The CCSDS distributor will perform the CCSDS packet check while the PUS distributor performs the PUS check. By default, the CCSDS checker will not perform any APID checking, but the PUS checker will. It is possible to specify a custom CCSDS checker. This allows to set a custom checker which will verify that the APID is equal to the PUS APID or a hypothetical CFDP APID. The CFDP checker will not make assumptions about how the CFDP packets are wrapped and then has an implementation independent of CCSDS SpacePacket. These changes also introduce a lot more interfaces to increase the flexbility of the code base. They are also composition-centric, which gets rid of the complicated inheritance trees and the diamond inheritance issue of the former packet stack. This PR pushes the code coverage to ~65 %. ## Full list of added interfaces - `SpacePacketIF` : Generic CCSDS space packet fields. This interface provides all methods based on 4 core abstract methods which return the packet ID, packet sequence control, data length and version as `uint16_t` oder `uint8_t` - `PusIF` : Generic PUS fields: Version, service and subservice. This interface implies `SpacePacketIF` - `PusTmIF` : Generic PUS C TM fields, for example the fields of the secondary header. This interface implies `PusIF` - `PusTcIF` : Generic PUS C TC fields, for example the fields of the secondary header. This interface implies `PusIF` - `ReadablePacketIF` : Returns whole packet in raw format. Useful for zero-copy classes - `RawUserDataReaderIF`: Returns user data like TC app data or TM source data in raw format. Useful for zero-copy classes - `CreatorDataIF` : Returns user data in form of a tagged union which allows to specify user data as a serializable (implementing `SerializeIF`) or in raw format (pointer + size). Useful for high-level packet creators ## Migration Guide ### Framework Objects The `VerificationReporter` object will not be created automatically now, so a call like this in the user object factory will probably become necessary ```cpp #include "fsfw/tmtcservices/VerificationReporter.h" ... new VerificationReporter(); ... ``` This creates the reporter with the default object ID `VERIFICATION_REPORTER` which is used by other objects if no explicit reporter is set. ### Pus Service Base API Calls like this: ```cpp new Service17Test(objects::PUS_SERVICE_17_TEST, apid::APID, pus::PUS_SERVICE_17); ``` do look like this now ```cpp new Service17Test(PsbParams(objects::PUS_SERVICE_17_TEST, apid::APID, pus::PUS_SERVICE_17)); ``` ### Static Framework IDs Some static IDs are written in capital letter now to specify that those are statics which should remain constant after setting them once. For example, the following `PusServiceBase` and the `VerificationReporter` IDs might be interesting to set in the `Factory::setStaticFrameworkObjectIds` function, assuming that all the objects were created and set up properly: ```cpp PusServiceBase::PUS_DISTRIBUTOR = objects::PUS_DISTRIBUTOR; PusServiceBase::PACKET_DESTINATION = objects::TM_FUNNEL; VerificationReporter::DEFAULT_RECEIVER = objects::PUS_SERVICE_1_VERIFICATION; ``` ### Data Pool Manager Subscription Calls like this: ```cpp poolManager.subscribeForPeriodicPacket(internalErrorSid, false, static_cast<float>(getPeriodicOperationFrequency()) / static_cast<float>(1000.0), true); ``` look like this now ```cpp poolManager.subscribeForDiagPeriodicPacket({internalErrorSid, false, static_cast<float>(getPeriodicOperationFrequency()) / static_cast<float>(1000.0)}); ``` ### TM Funnel Implementation Existing funnel implementations looked like this ```cpp TmPacketPusC packet(packetData); packet.setPacketSequenceCount(this->sourceSequenceCount); sourceSequenceCount++; sourceSequenceCount = sourceSequenceCount % SpacePacketBase::LIMIT_SEQUENCE_COUNT; packet.setErrorControl(); ``` They now look like this, with the time reader being explicitely set ```cpp PusTmZeroCopyWriter packet(&timeReader, packetData, size); result = packet.parseDataWithoutCrcCheck(); if(result != HasReturnvaluesIF::RETURN_OK) { return result; } packet.setSequenceCount(sourceSequenceCount++); sourceSequenceCount = sourceSequenceCount % ccsds::LIMIT_SEQUENCE_COUNT; packet.updateErrorControl(); ``` ## Changed Interfaces - `TimeStamperIF` : Remove hardcoded timestamp size and imply `SerializeIF`. This allows more flexibility in the used timestamp ## Other changes - Rename `TimeStamper` to `CdsShortTimeStamper`. This is more explicit. ## WIP - [x] Unittest for new `PusTmZeroCopyWriter` class - [x] Full unit test suite for the TMTC packet stack - [x] Basic integration tests for CSB and PSB - [x] Unittests for PSB - [x] More advanced integration tests, for example a failing CSB command
muellerr added 18 commits 2022-07-21 13:51:19 +02:00
add space packet creator class
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
d7a2eada94
additional ctor for space packet creator
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
0c5f623780
added basic sp creator test
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
3c72a42ce1
hmm this is problematic
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
7e2fdc06cd
update changelog
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
e4d7182d93
Merge remote-tracking branch 'origin/development' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
490a80e49f
apply auto-formatter
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
ddf38b65c3
finished creator unittests
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
3d2af203f2
start PUS TC refactoring
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
5fffbd4a90
a lot of refactoring
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
6c636661b6
start refactoring PUS TM handling
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
d80941514f
create new TmSendHelper
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
9860061fc6
switched to new tmtc stack API
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
be35bd53a6
various bugfixes and improvements
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
d8b6cb39ac
some fixes
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
e5ee96259d
muellerr added 1 commit 2022-07-21 14:05:29 +02:00
delete a few old classes
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
23f264096c
muellerr added 1 commit 2022-07-21 14:40:00 +02:00
added sp reader unittests
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
08e0b0f1a0
muellerr added 1 commit 2022-07-21 17:48:10 +02:00
fnished PUS TC creator unittests
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
5af3138e81
muellerr added 1 commit 2022-07-21 17:57:29 +02:00
delete code which is not used anymore
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
61bc867bed
muellerr added 1 commit 2022-07-21 18:17:37 +02:00
minor changes, virtual dtors added
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
0981ee6f7e
muellerr added 1 commit 2022-07-21 18:21:08 +02:00
rename namespace
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
affde6bad5
muellerr added 1 commit 2022-07-21 19:10:14 +02:00
finished basic TC unittests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
0dfaba81f9
muellerr added 1 commit 2022-07-21 19:16:40 +02:00
add empty test files
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
bfee4fd90a
muellerr added 1 commit 2022-07-22 16:06:38 +02:00
verify successfull TM serialization
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
67776241de
muellerr added 1 commit 2022-07-22 16:09:19 +02:00
added some missing implementations
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
9275ccb79b
muellerr added 1 commit 2022-07-22 16:41:30 +02:00
APID getter bugfix
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
f28b9ea61b
muellerr added 1 commit 2022-07-22 17:09:43 +02:00
PUS TM creator tests done
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
cecaec6007
muellerr added 1 commit 2022-07-22 17:11:54 +02:00
start TM reader unittests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
2dfbce6174
muellerr added 1 commit 2022-07-22 18:22:32 +02:00
completed basic test set
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
b350018cad
muellerr added 1 commit 2022-07-22 18:30:59 +02:00
completed baseline PUS TM unittests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
cb05329dd9
muellerr added 1 commit 2022-07-22 18:46:56 +02:00
add basic CCSDS tests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
133894f4ba
muellerr added 14 commits 2022-07-25 10:24:39 +02:00
muellerr added 1 commit 2022-07-25 10:31:44 +02:00
replace c include
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
4921527022
muellerr added 1 commit 2022-07-25 10:38:43 +02:00
added base for tm store test
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
63ee88af17
muellerr added 1 commit 2022-07-25 10:50:48 +02:00
replace some API components with references
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
832367fb30
muellerr added 1 commit 2022-07-25 10:56:17 +02:00
fixes for Linux OSAL clock
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
4989bd0f02
muellerr added 1 commit 2022-07-25 11:15:57 +02:00
using uint32_t as store_address requires explicit cast
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
899d021e00
muellerr added 1 commit 2022-07-25 11:24:10 +02:00
some more ref replacements
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
973d4ee8a5
muellerr added 1 commit 2022-07-25 11:26:40 +02:00
more ref replacements
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
e2ad37e3e6
muellerr added 3 commits 2022-07-25 11:35:26 +02:00
use Be instead of Ne, which could be confused
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
fsfw/fsfw/pipeline/pr-development This commit looks good
2a34c831b1
Merge branch 'mueller/expand-serialize-if' into mueller/refactor-tmtc-stack
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
ca1e921b94
muellerr added 1 commit 2022-07-25 13:39:17 +02:00
finished tm store helper tests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
36e3956efb
muellerr added 1 commit 2022-07-25 14:03:59 +02:00
set up new internal error reporter mock
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
1a7d7b172b
muellerr added 2 commits 2022-07-25 14:57:17 +02:00
Merge remote-tracking branch 'origin/development' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
5fd5d488ff
muellerr added 1 commit 2022-07-25 19:37:17 +02:00
cleaning up message queue mock and subscription API
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
6d0fa36f8a
muellerr added 1 commit 2022-07-25 19:41:58 +02:00
normal queue sufficient
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
935e135f1c
muellerr added 1 commit 2022-07-25 19:49:12 +02:00
all tests running again
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
a88f767cca
muellerr added 1 commit 2022-07-25 20:31:03 +02:00
completed send helper tests
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
586993c081
muellerr added 1 commit 2022-07-25 20:40:56 +02:00
some more tests using TM send helper
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
c83f75c515
muellerr added this to the v6.0.0 milestone 2022-07-25 20:42:28 +02:00
muellerr added the
Refactor
Breaking API Change
labels 2022-07-25 20:42:43 +02:00
muellerr changed title from WIP: Refactor TMTC Stack to Refactor TMTC Stack, improve test framework 2022-07-25 20:46:01 +02:00
muellerr changed title from Refactor TMTC Stack, improve test framework to WIP: Refactor TMTC Stack, improve test framework 2022-07-25 20:46:09 +02:00
muellerr added 1 commit 2022-07-25 20:53:13 +02:00
add old api but mark it deprecated
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
7d87274844
muellerr added 1 commit 2022-07-25 21:07:54 +02:00
fix memory leak
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
6d00fc65c0
muellerr added 1 commit 2022-07-25 22:14:47 +02:00
this should fix the mmeory leak
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
c12669fe50
muellerr added 1 commit 2022-07-25 22:22:17 +02:00
maybe this teardown fixes the leak
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
db33f9cc7e
muellerr added 1 commit 2022-07-25 22:29:10 +02:00
more leaks
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
747243684d
muellerr added 1 commit 2022-07-25 22:36:47 +02:00
possible double delete
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
e48b6f1432
muellerr added 1 commit 2022-07-26 10:21:14 +02:00
add new HasReturnvaluesIF features
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
bdf71d4e66
muellerr added 3 commits 2022-07-26 10:29:41 +02:00
update HasReturnvaluesIF
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
b827bd8370
1. Add new retval namespace which contains OK and FAIL returnvalue
2. Also contains makeCode constexpr function
3. Mark HasReturnvaluesIF::makeReturnCode deprecated

This prevents from having to implement an interface just to use a shorter
version of the general returnvalues. A namespace is better suited for this
I think
fix deprecation warnings
Some checks are pending
fsfw/fsfw/pipeline/head Build started...
fsfw/fsfw/pipeline/pr-development This commit looks good
88ebb67c8d
Merge branch 'mueller/expand-retval-if' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
4ed028000d
muellerr added 1 commit 2022-07-26 11:09:55 +02:00
added additional TM store and send helper
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
500a5602bd
muellerr added 1 commit 2022-07-26 11:14:34 +02:00
some more API improvements and replacements
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
f1c37203a4
muellerr added 2 commits 2022-07-26 13:59:06 +02:00
add new VerificationReporterIF
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
75c824ec80
muellerr added 1 commit 2022-07-26 14:10:17 +02:00
created PSB mock
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
146a0e3828
muellerr added 1 commit 2022-07-26 14:13:52 +02:00
removed some obsolete code
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
f14c812aff
muellerr added 1 commit 2022-07-26 16:49:44 +02:00
adapt PSB so it can be unittested properly
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
d98b79cf5e
muellerr added 1 commit 2022-07-26 17:41:13 +02:00
default PUS receiver set automatically now
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
1954ce0ea4
muellerr added 1 commit 2022-07-26 18:46:21 +02:00
test auto-initializers
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
8bf0fb9885
muellerr added 1 commit 2022-07-26 18:58:30 +02:00
psb unittests almost complete
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
152c01b2ec
muellerr added 1 commit 2022-07-26 19:08:07 +02:00
PSB unittests complete
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
681738dcc6
muellerr added 1 commit 2022-07-27 10:49:58 +02:00
some printout fixes
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
9eb652e585
muellerr added 1 commit 2022-07-27 11:26:52 +02:00
example compiles again
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
18ee2ab903
muellerr added 1 commit 2022-07-27 11:33:16 +02:00
some of the deprecation warnings run amok
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
064b195c75
muellerr added 1 commit 2022-07-27 11:35:28 +02:00
this gets rid of some warnings
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
86692e202d
muellerr added 1 commit 2022-07-27 11:41:01 +02:00
add helper methods to disable crc calculation
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
059fb10558
muellerr added 1 commit 2022-07-27 14:40:42 +02:00
updates for PusDistributor
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
740644f2c8
muellerr added 2 commits 2022-07-27 17:13:33 +02:00
switch off debugging switches
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
c5ad9b5fa9
muellerr added 1 commit 2022-07-27 17:33:36 +02:00
pass timeReader to Pus ZC writer
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
f591b9793c
muellerr added 1 commit 2022-07-27 17:48:51 +02:00
send time stampers properly now
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
234ccdf764
muellerr added 1 commit 2022-07-27 17:56:04 +02:00
small bugfix
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
0a38d2e22d
muellerr added 1 commit 2022-07-27 18:03:05 +02:00
afmt
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
356d778743
muellerr added 1 commit 2022-07-27 19:40:51 +02:00
some more minor fixes
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
4e571e5082
muellerr added 1 commit 2022-07-27 19:56:04 +02:00
set queue of tm send helper
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
d641d63531
muellerr added 1 commit 2022-07-27 20:10:06 +02:00
another bugfix in CSB
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
f03b7cd660
muellerr added 1 commit 2022-07-27 20:37:12 +02:00
remove nullptr check
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
7e8afcc12f
muellerr added 1 commit 2022-07-27 21:06:16 +02:00
tests running again
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
93acac02f5
muellerr added 1 commit 2022-07-27 21:07:26 +02:00
update serialize IF
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
85dbef20b0
muellerr added 1 commit 2022-07-27 21:11:05 +02:00
improvements for creator API
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
5bb7023ff3
muellerr added 1 commit 2022-07-27 21:35:30 +02:00
Simple SerializeIF adaptions
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
b485afea57
- Returns serialized or deserialized size
muellerr added 4 commits 2022-07-28 13:00:44 +02:00
use result instead of retval
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
5355e63711
some more fixes
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
30ba9ab916
muellerr added 1 commit 2022-07-28 13:24:45 +02:00
completed ZcWriter unittests
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
cb118176a0
muellerr added 1 commit 2022-07-28 13:36:59 +02:00
test no crc generation
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
1b5fa2a8fa
muellerr added 1 commit 2022-07-28 13:42:25 +02:00
some more fail tests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
8f6f0e1d45
muellerr added 1 commit 2022-07-28 15:13:24 +02:00
set sec header flag and add unit test for it
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
fc3412fa35
muellerr added a new dependency 2022-07-29 09:51:56 +02:00
muellerr added a new dependency 2022-07-29 09:52:03 +02:00
muellerr added 1 commit 2022-07-29 10:23:55 +02:00
do not use TC info for failed TC retrieval
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
fsfw/fsfw/pipeline/pr-development This commit looks good
da106fd96f
muellerr changed title from WIP: Refactor TMTC Stack, improve test framework to Refactor TMTC Stack, improve test framework 2022-08-01 17:18:24 +02:00
muellerr added a new dependency 2022-08-01 20:51:11 +02:00
muellerr requested review from gaisser 2022-08-09 13:05:56 +02:00
muellerr added 1 commit 2022-08-09 13:06:14 +02:00
Merge branch 'development' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
9796abfc7d
muellerr changed title from Refactor TMTC Stack, improve test framework to WIP: Refactor TMTC Stack, improve test framework 2022-08-15 14:21:59 +02:00
muellerr added 1 commit 2022-08-15 19:05:49 +02:00
Merge remote-tracking branch 'origin/development' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
d7ec04bf4b
muellerr added 1 commit 2022-08-15 19:16:34 +02:00
fix unittests
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
9e064fe800
muellerr added 1 commit 2022-08-16 17:11:25 +02:00
flip verif reporter ctor arguments
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
8fd8a37f59
muellerr added 1 commit 2022-08-16 17:17:46 +02:00
better name for global object
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
875174c4ad
muellerr added 1 commit 2022-08-16 17:23:09 +02:00
update changelog
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
239d053562
muellerr added 1 commit 2022-08-18 11:20:55 +02:00
important bugfix for verif reporter
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
ff6de8e378
muellerr added 2 commits 2022-08-22 14:17:31 +02:00
merge retval refactoring
All checks were successful
fsfw/fsfw/pipeline/head This commit looks good
1037102349
Merge branch 'mueller/refactor-tmtc-stack' into mueller/refactor-tmtc-stack-with-retval-refactoring
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
2a4ab0af7b
muellerr added 1 commit 2022-08-22 15:02:49 +02:00
apply auto-formatter
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
fsfw/fsfw/pipeline/head There was a failure building this commit
dab1b1d067
muellerr added 1 commit 2022-08-22 15:57:23 +02:00
Merge remote-tracking branch 'origin/development' into mueller/refactor-tmtc-stack-with-retval-refactoring
Some checks failed
fsfw/fsfw/pipeline/head There was a failure building this commit
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
10f34e5a48
muellerr added 1 commit 2022-08-22 16:23:29 +02:00
tests running again
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
ba5c6410d6
muellerr changed title from WIP: Refactor TMTC Stack, improve test framework to Refactor TMTC Stack, improve test framework 2022-08-22 16:36:31 +02:00
muellerr added 1 commit 2022-08-22 16:37:45 +02:00
small changelog update
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
a46d8c34d9
Author
Owner

The changes in this PR are used inside the EIVE OBSW now

The changes in this PR are used inside the EIVE OBSW now
gaisser added 1 commit 2022-08-29 15:11:54 +02:00
Merge branch 'development' into mueller/refactor-tmtc-stack
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
6bcb208968
muellerr added 2 commits 2022-08-29 15:20:50 +02:00
muellerr added 1 commit 2022-08-29 15:27:54 +02:00
remove TODO
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
b499dedd76
muellerr added 1 commit 2022-08-29 15:30:54 +02:00
default initialization of CDS short struct
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
cb23911ccd
gaisser requested changes 2022-08-29 18:39:30 +02:00
gaisser left a comment
Owner

I gave up after 81 files. I cannot review this in a sense that I feel satisfied by the review. This is way to large for a proper review.

I gave up after 81 files. I cannot review this in a sense that I feel satisfied by the review. This is way to large for a proper review.
@ -16,1 +13,3 @@
this->messageSize = this->HEADER_SIZE + size;
: messageSize(MessageQueueMessage::HEADER_SIZE + size) {
if (size <= MessageQueueMessage::MAX_DATA_SIZE) {
std::memcpy(internalBuffer + MessageQueueMessage::HEADER_SIZE, data, size);
Owner

You need to avoud this here? Is this a good idea?

You need to avoud this here? Is this a good idea?
Author
Owner

clang-tidy does not like using virtual member functions in the constructor

clang-tidy does not like using virtual member functions in the constructor
gaisser marked this conversation as resolved
@ -13,7 +13,6 @@ ReturnValue_t MessageQueueSenderIF::sendMessage(MessageQueueId_t sendTo,
MessageQueueMessageIF* message,
MessageQueueId_t sentFrom, bool ignoreFault) {
return MessageQueue::sendMessageFromMessageQueue(sendTo, message, sentFrom, ignoreFault);
return returnvalue::OK;
Owner

Oh this was a dumb one.

Oh this was a dumb one.
gaisser marked this conversation as resolved
@ -148,4 +148,2 @@
// Init our dummy packet and correct endianness of object ID before
// sending it back.
WiretappingPacket TmPacket(DeviceHandlerMessage::getDeviceObjectId(reply), data);
TmPacket.objectId = EndianConverter::convertBigEndian(TmPacket.objectId);
Owner

API change or bug fix?

API change or bug fix?
Author
Owner

The previous API used a function which simply copies the TM data with memcpy. The new one uses this function

ReturnValue_t CommandingServiceBase::sendTmPacket(uint8_t subservice, object_id_t objectId,
                                                  const uint8_t* data, size_t dataLen) {
  telemetry::DataWithObjectIdPrefix dataWithObjId(objectId, data, dataLen);
  ReturnValue_t result = tmHelper.prepareTmPacket(subservice, dataWithObjId);
  if (result != returnvalue::OK) {
    return result;
  }
  return tmHelper.storeAndSendTmPacket();
}

where DataWithObjectIdPrefix implements SerializeIF so there is no need to tweak the endianness manually.

The previous API used a function which simply copies the TM data with `memcpy`. The new one uses this function ```cpp ReturnValue_t CommandingServiceBase::sendTmPacket(uint8_t subservice, object_id_t objectId, const uint8_t* data, size_t dataLen) { telemetry::DataWithObjectIdPrefix dataWithObjId(objectId, data, dataLen); ReturnValue_t result = tmHelper.prepareTmPacket(subservice, dataWithObjId); if (result != returnvalue::OK) { return result; } return tmHelper.storeAndSendTmPacket(); } ``` where `DataWithObjectIdPrefix` implements SerializeIF so there is no need to tweak the endianness manually.
gaisser marked this conversation as resolved
muellerr added 1 commit 2022-08-29 20:09:26 +02:00
avoid duplicate code
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
2cab73d972
Author
Owner

Local pool specific code will be moved into a separate PR

Local pool specific code will be moved into a separate PR
muellerr added 4 commits 2022-08-30 10:58:10 +02:00
muellerr added a new dependency 2022-08-30 11:04:33 +02:00
muellerr added 1 commit 2022-08-30 11:12:06 +02:00
better name
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
aea9db75cb
muellerr added 1 commit 2022-08-30 12:04:36 +02:00
move data wrapper
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
a9277622ce
muellerr added 4 commits 2022-08-30 13:46:02 +02:00
add new data wrapper helper type
Some checks are pending
fsfw/fsfw/pipeline/head Build started...
fsfw/fsfw/pipeline/pr-development This commit looks good
20d42add03
extend data wrapper
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
0f27c7e7e7
data wrapper update
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
c756297e5c
Merge branch 'mueller/data-wrapper' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
8e6cee7761
gaisser reviewed 2022-08-31 15:35:52 +02:00
@ -35,3 +34,1 @@
data.data_field.service_subtype = subtype;
TmPacketMinimal testPacket((uint8_t*)&data);
testPacket.setAPID(apid);
mintm::MinimalPusTm data{};
Owner

What does mintm mean?

What does mintm mean?
Author
Owner

minimal tm. I can rename it to minTm:: if that helps..

minimal tm. I can rename it to minTm:: if that helps..
Owner

I think that minTm is better.

I think that minTm is better.
gaisser reviewed 2022-08-31 15:45:00 +02:00
@ -27,3 +30,3 @@
private:
uint8_t subService;
uint8_t subService{};
Owner

{} vs = 0 ?

{} vs = 0 ?
Author
Owner

that was auto-generated. apparently clion prefers this..

that was auto-generated. apparently clion prefers this..
Owner

Ok.

Ok.
gaisser marked this conversation as resolved
Owner
This PR leaks https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/668/files
Author
Owner

This is intentional. This PR requires the features of #668 , I only packaged #668 after using it at two places in the code. It might be worth a thought to replace it to an API similar to #671

This is intentional. This PR requires the features of #668 , I only packaged #668 after using it at two places in the code. It might be worth a thought to replace it to an API similar to https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/671
gaisser added a new dependency 2022-09-01 11:48:47 +02:00
gaisser removed a dependency 2022-09-01 11:48:57 +02:00
gaisser added a new dependency 2022-09-01 11:49:44 +02:00
gaisser reviewed 2022-09-01 11:59:32 +02:00
@ -12,3 +12,3 @@
* addTimeStamp may be called in parallel from a different context.
*/
class TimeStamperIF {
class TimeStamperIF : public SerializeIF, public TimeStampIF {
Owner

Is the TimeStamper Serializable? Or is the product of the timestamp serializable?

Is the TimeStamper Serializable? Or is the product of the timestamp serializable?
Author
Owner

Whatever implements TimeStamperIF should also be serializable.

Whatever implements TimeStamperIF should also be serializable.
Author
Owner

Refactored, now named TimeWriterIF

Refactored, now named `TimeWriterIF`
muellerr added 1 commit 2022-09-01 17:48:37 +02:00
Merge remote-tracking branch 'origin/development' into mueller/refactor-tmtc-stack
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
5c20cc804e
muellerr added 1 commit 2022-09-01 17:51:04 +02:00
test fix
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
04bff7a522
muellerr added 1 commit 2022-09-05 14:44:43 +02:00
Some improvements for time stamper API
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
d64ad71529
muellerr added 1 commit 2022-09-05 14:46:57 +02:00
Merge branch 'development' into mueller/refactor-tmtc-stack
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
ee93f4a4ca
muellerr added 3 commits 2022-09-05 16:02:31 +02:00
muellerr removed a dependency 2022-09-05 16:02:42 +02:00
muellerr added 1 commit 2022-09-05 16:06:17 +02:00
explicit include
Some checks failed
fsfw/fsfw/pipeline/pr-development There was a failure building this commit
4c3f9feb93
muellerr added 1 commit 2022-09-05 16:09:59 +02:00
refactor tm helper
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
f5421e9abd
muellerr added 1 commit 2022-09-05 16:24:58 +02:00
set buffer expects const pointer now
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
1e395dc402
muellerr added 1 commit 2022-09-05 16:27:16 +02:00
rename const buf setter
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
3583e30ee6
muellerr added a new dependency 2022-09-05 16:34:52 +02:00
muellerr added 2 commits 2022-09-05 16:38:50 +02:00
rename setBuffer to setConstBuffer
Some checks are pending
fsfw/fsfw/pipeline/head Build started...
fsfw/fsfw/pipeline/pr-development Build started...
16688316a8
Merge branch 'mueller/refactor-serial-buffer-adapter' into mueller/refactor-tmtc-stack
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
80464f2a81
mohr approved these changes 2022-09-12 14:14:37 +02:00
mohr left a comment
Owner

Approving this for merge as to keep up with eive.

Approving this for merge as to keep up with eive.
mohr added 1 commit 2022-09-12 14:14:52 +02:00
Merge branch 'development' into mueller/refactor-tmtc-stack
Some checks are pending
fsfw/fsfw/pipeline/pr-development Build queued...
a64a04d7fe
mohr merged commit a5b5523111 into development 2022-09-12 14:31:23 +02:00
mohr deleted branch mueller/refactor-tmtc-stack 2022-09-12 14:31:27 +02:00
Sign in to join this conversation.
No description provided.