The software for the prototype is written in Java. This runs well on the raspberry PI prototype platform. The Java library PI4J was used to access the GPIO of the controller board.
Architecture Notes:
A common code base was developed for the project so a single Jar file will run on either the CubeSat, the Dock or even on a test environment. The software launches the Main class in the default package. This Main class determines which platform it is running on and creates a single object instance which represents that platform. Since the telemetry is a core component of every platform the following objects extend the TelemetryCore class from the telemetry package...
CubeTelemetry - for the CubeSat platform
DockTelemetry - for the dock platform
TestTelemetry - for the test platform
For added convenience the platform can also be specified on from the command line.
A default constructor is supplied to the TelemetryCore object which is the filename of an XML file which holds the configuration of the telemetry for the given platform.
Full Javadoc documentation for the prototype software can be found on the Github repository for this project but for convenience the packages are outlined here.
default package - The main class and a single object representing each of the three main platforms (see above)
imagerecognition - The classes which handle the image recognition and image manipulation features
telemetry - The core telemetry handling functions
utility - Some generic functions for handling logging and date and time formatting
xmlparser - XML file parsing routines
UML
The UML was modelled using the ObjectAid Eclipse plugin.
Please feel free to have a browse through our code on Github and leave comments below. Be nice though as this was a very rapid prototype! I have tried to put as many comments as possible in the code to make it easy to read but please ask questions if you need anything.
Resources
1. PI4J Library - http://pi4j.com
2. ObjectAid - http://www.objectaid.com