The SkywardHub is an HMI (Human-Machine Interface) suite. The software is made of Modules that can be arranged in different configurations each of which is design for a specific purpose.
The GroundStation is one of the possible configurations of the modules, it is used for pre-flight operations, testing, and integration procedures.The main purpose of the GS is to enable the members of the team to monitor the state of the rocket and its subsystems. During all the phases of the mission, the GS configuration is made of modules that decode the data coming from the rocket through radio signals and display them in custom views designed to organize the data in a way that facilitates user analysis and real-time checks. Besides receiving telemetry data, remote commands can also be sent to the rocket, in order to perform the required integrity checks before the launch and, eventually, to manually control the actuators in case of necessity during flight. All the data received by the GS are logged for post-mission analysis.
Besides the GroundStation, the modules of the SkywardHub can be configured to offer a versatile tool for the development and testing process. The purpose of the SkywardHub is to offer a standard development framework for quick deployment and testing of new functionalities, ensuring a coherent design among all the HMI applications developed in Skyward. The modular and configurable design aims to guarantee a flexible UI and maintainable software for long-term compatibility with future mission requirements.
The modules are independent logical units implementing some specific functionalities. They communicate with each other through a publisher-subscriber paradigm. Inside a module, there may be more than one panel, all of them sharing some logic.
The MVC (Model-View-Controller) is implemented module level, while for the entire system there is a Core unit that acts as manager of the modules. The Core handles the communication between modules, defines some common logic such as the serialization and deserialization in xml of the entire application, and defines the messages that the modules exchange.