# InnCube--A Wireless Satellite Platform to Demonstrate Innovative Technologies
## 3 Spacecraft Overview
### Command and Data Management System
#### 3.5.3 Onboard Software  
The onboard software is based on two frameworks: Rodos and Corfu. Rodos is an open source operating system with flight heritage mainly developed at the University of Wuerzburg and the German Aerospace Center. It is able to run on different processors and platforms in bare-metal execution, but it also runs as a guest on other operating systems, such as Linux. For bare metal execution, Rodos comes with a real-time preemptive scheduling to adhere to timing requirements. A hardware abstraction layer allows to develop on a desktop computer and directly deploy the code to the target platform.  
Besides the low-level part, Rodos comes with a sophisticated communication middleware. The middleware applies the publish/subscribe principle. Users instantiate topics, which publishers use to publish new data, and subscribers register for notification on data delivery. Beyond the local communication, the middleware comes with gateways that enable publishing and subscribing topics across several computing nodes (i.e., Rodos instances). Rodos middleware is used for exchanging messages via radio between the SKITH modules.  
While Rodos provides the basic infrastructure for executing software on hardware and providing a communication middleware, the Corfu framework provides a common structure for onboard software. Developers define topics, apps, and nodes formally in configuration (specification) files. A node represents the instance of a software that runs on a SKITH module a selection of apps.  
Apps are a collection of threads and subscribers that accomplish a specific task, for example housekeeping, attitude control, or time management. Each app defines a communication interface towards other applications and towards the ground segment. Developers describe the communication interface between the apps by defining which topics the apps publish to and which they subscribe to. The wiring of the topic publication and subscription is accomplished by the node.  
The app interface towards the ground segment comprises a list of telecommands to which the app reacts and a list of telemetry that the app transmits. A special case is the standard (real-time) telemetry. While apps transmit normal (extended) telemetry only on request, the standard telemetry is transmitted periodically. The standard telemetry gives a  
Figure 13: Overview of an onboard computer (OBC) module.  
quick overview of the node's vital status. Therefore, every app should contribute some variables with the most important vital parameters.  
Based on the information of the configuration files, Corfu generates code with abstract methods that the developers have to implement with their intended behaviour. Corfu already covers the communication handling--either in its library or in the generated code. Methods just have to be implemented that pass the parameters in a plain structure or invoke methods to send data.  
To provide rapid prototyping of onboard software, Corfu also comes with a generic ground software. It uses the same information of the configuration files to show a graphical user interface for sending telecommands and printing telemetry data.