To make shared power lines on SOURCE possible, I added a bit of functionality to the SubsystemBase. The newly introduced function SubsystemBase::convertToDeviceObjectId() allows the user to manually override the objectId from the mode-tree. This is necessary because the fsfw is accessing the health-state of an object directly via the healthTable (and not sending messages, like for mode changes) - therefore "ignoring" mode-tree relations with this direct access. I added a default implementation of this function which directly returns it's input - therefore, this is backwards compatible.
Sequential mode transitions
Change the logic of the AssemblyBase state machine - now, it is possible to return from commandChildren with NEED_SECOND_STEP indefinitely. This can be used to spread the transition over as many steps as the user likes.
Miscellaneous
Additionally (and not really related), I made the recovery-time (the time the device is in MODE_OFF during a recovery) accessible and modifiable by the user. This was still an open #todo based on the comments in the fsfw. For SOURCE, this is needed due to the long time (multiple seconds) the PCDU actually needs to change the state of a power line.
## Shared Power Lines
To make shared power lines on _SOURCE_ possible, I added a bit of functionality to the SubsystemBase. The newly introduced function `SubsystemBase::convertToDeviceObjectId()` allows the user to manually override the objectId from the mode-tree. This is necessary because the fsfw is accessing the health-state of an object directly via the healthTable (and not sending messages, like for mode changes) - therefore "ignoring" mode-tree relations with this direct access. I added a default implementation of this function which directly returns it's input - therefore, this is backwards compatible.
## Sequential mode transitions
Change the logic of the `AssemblyBase` state machine - now, it is possible to return from `commandChildren` with `NEED_SECOND_STEP` indefinitely. This can be used to spread the transition over as many steps as the user likes.
## Miscellaneous
Additionally (and not really related), I made the recovery-time (the time the device is in MODE_OFF during a recovery) accessible and modifiable by the user. This was still an open #todo based on the comments in the fsfw. For SOURCE, this is needed due to the long time (multiple seconds) the PCDU actually needs to change the state of a power line.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Shared Power Lines
To make shared power lines on SOURCE possible, I added a bit of functionality to the SubsystemBase. The newly introduced function
SubsystemBase::convertToDeviceObjectId()allows the user to manually override the objectId from the mode-tree. This is necessary because the fsfw is accessing the health-state of an object directly via the healthTable (and not sending messages, like for mode changes) - therefore "ignoring" mode-tree relations with this direct access. I added a default implementation of this function which directly returns it's input - therefore, this is backwards compatible.Sequential mode transitions
Change the logic of the
AssemblyBasestate machine - now, it is possible to return fromcommandChildrenwithNEED_SECOND_STEPindefinitely. This can be used to spread the transition over as many steps as the user likes.Miscellaneous
Additionally (and not really related), I made the recovery-time (the time the device is in MODE_OFF during a recovery) accessible and modifiable by the user. This was still an open #todo based on the comments in the fsfw. For SOURCE, this is needed due to the long time (multiple seconds) the PCDU actually needs to change the state of a power line.
This would be ready to be merged. @muellerr Could you please review this? Thank you!
This is related to this merge request on sourceobsw.