Open Source Flight Intrument Documentation [index]
All software is written in ANSI C. The only exception is the QTG module which contains several C++ classes.
Several software applications will be produced for this project including the applications for each of the three hardware variants.
Several GUI applications will also be produced for simulating each of the three hardware variants on a PC environment.
An integration test suite may also be developed. These tests may run on a PC operating system as well as on the target instruments.
A set of simulators may be developed to assist with integration
testing. These can be used in place of the target instrument driver code
so as to allow various flight scenarios to be simulated.
The software is to be developed possibly with several different
compilers. The "ImageCraft ICC12" and the "GNU Development Chain for
68HC11 and 68HC12" will be used to develop software for the instruments.
Likewise compilers such as GCC for Linux and MINGW for Windows may be used to
compile test software to run in the PC environment.
The PC GUI applications will be built using the Qt cross platform
development framework, version 4. Open source versions of this for
Linux and Windows are available from Trolltech.
A portable platform interface is used to isolate any OS or compiler specific code.
A driver interface is used so that most of the code will not know if it is using real hardware or the simulators.
Code is broken into logical groups known as modules. Each module consists of one or more source files.
Portable modules are those that have no dependence upon a particular compiler, OS, or whether the hardware is real or simulated. Portable modules have a short name, possibly an acronym that will identify each module.
Non-portable modules are those that are specific to a particular compiler, OS, or whether the hardware is real or simulated. Non-portable modules implement the functionality behind the portable interfaces.
The source code is stored in a set of directories as shown below.
(OSFI_ROOT)/
+- include/
| +- platform/
| +- driver/
+- src/
| +- module1/
| +- module2/
| +- ...
+- bin/
+- docs/
The include/
directory contains the public header files
associated with the portable modules. All function names in these
headers begin with the module identifier so that the function can be
associated with it's source module. The header filename itself will also
reflect the module name whose functions they contain.
The include/<portable interface>/
directories
contain the public header files associated with the non-portable modules.
The src/<module>/
directories contain the private
header files and source files associated with each of the software
modules.
The bin/
directory is where the actual software images
are written to after linking.
The docs/
directory contains project documentation.
All source code is saved in Sourceforge's CVS servers under the osfi project.
The hardware is provided with a BDM port through which software can
be downloaded and on chip debugging can occur.