guorbit / obc-model

Functional/Architectural Capella 6.0 model for the ASTRAEUS-01 spacecraft system and all its subsystems.
https://guorbit.github.io/obc-model/
10 stars 1 forks source link

System-wide Mode Change architecture matching TASTE implementation for CloudView-1 mission / IAC23 diagrams #61

Open chgio opened 8 months ago

chgio commented 8 months ago

The architecture specified in #41, when implemented as per guorbit/obc-firmware/#4, introduced the async bug described in guorbit/obc-firmware/#9. As an architectural issue, this bug was fixed in TASTE by refactoring the topology of the System and Subsystem Mode Management components as detailed in guorbit/obc-firmware/#11.

The IAC work An Open-Source Method for Model-Based Development of Embedded Systems: Experience Report from a CubeSat Student Project mainly revolved around showing that a semantic mirroring between Capella and TASTE is possible and helpful, so these refactorings have been backpropagated to the Capella model in the outstanding commits below. After confirmation of the functionality and reliability of this system through the successful CloudView-1 sounding balloon launch (guorbit/obc-firmware Release), the deployed TASTE architecture shall be frozen in the Capella model as a significant flight-proven element, so a merge is required.

The work on Watchdog Monitoring previously merged in #36 only conflicts with this branch in Git because of the lack of integration with Capella's underlying XML semantics; however, there should be no conflict between that and the features proposed in this MR, as they simply pertain to distinct sections of the OBC. As it is smaller in architectural scope and diagram impact, my recommendation would be to pick that as the target of our manual re-modelling, rather than the work described in the commits below. Feel free to use whatever kind Diff/Merge tools you can get to work, just please make sure the work done in this branch is not impacted as it is the one that got flight-proven. By the way, thank you @xszymonzur for all the great work, I'll spare you from doing more boring Capella work for nothing but we'll still ask you to review this request just to make sure everything is as you intended before merging it :smile:

Some previous CI/CD work (#57, #58, #59, #60) has also been done to generate the HTML documentation directly from this unmerged branch (through the cloudview-1 tag) and deploy it on the model export website to facilitate its consultation. The exports can be found here for this unmerged branch, and here for the main branch including #36. For more punctual exports, you'll have to hope the artifacts from the Workflow Runs haven't expired :crossed_fingers:

Notable exceptions to the aforementioned symmetry between Capella and TASTE are the few architectural "hacks" such as guorbit/pipeline-relay (cloudview-1 Release) or guorbit/camera-relay (cloudview-1 Release), which for simplicity have not been represented in the model and are therefore not included in this MR. However, these hot-fixes were only required to integrate the TASTE software with the selected hardware within the time constraints of the project, and did not significantly alter the topology of the wider system. Nevertheless, consideration should soon be given to further backpropagation of these solutions should they be deemed stable enough. (@Sajtospoga01, @bobtailcat00)

chgio commented 8 months ago

can't remember if this strategy has already been detailed somewhere in another PR, but here it is for the convenience of @ZonaDashti and anyone else browsing in the future:

$ git checkout model/gio-mode-change-integrated
Switched to branch 'model/gio-mode-change-integrated'
Your branch is up to date with 'origin/model/gio-mode-change-integrated'.

$ git merge -X ours main
Auto-merging obc-model/obc-model.aird
Auto-merging obc-model/obc-model.capella
Merge made by the 'ort' strategy.
 .gitignore                  |    1 +
 obc-model/obc-model.aird    | 1920 +++++++++++++++++++++++++++++++++++++++----
 obc-model/obc-model.capella | 1430 +++++++++++++++++++++++++++++++-
 3 files changed, 3155 insertions(+), 196 deletions(-)

This leaves you with a Capella model that is valid, but missing any conflicting changes from main -- in this case, @xszymonzur's work merged in #36. I would recommend committing the merge before copying over the missing work; the other changed files concern the CI/CD pipelines, and should be checked out from main: