fredag 2. mars 2012

Software development

Not a single word has been published about the software – a critical component in the project. It is about time we give an update about what has been done so far and what plans we have for the finished program.

The server software was left in a not-far-from finished state weeks ago, awaiting a useful client and finished hardware to test against before being finalised. The server is developed in GNU/Linux and is planned to run on a GNU/Linux system at the launch day, so little effort has been put into making the server software cross-platform compatible (as opposed to the client software). The choice of language is Perl. Perl was chosen solely because I wanted to practise the language, not necessarily because it was the best tool for the job.

The server connects to a rotctl TCP/IP dæmon either running on the same machine or another host and a radio on RS232. The server reads data packets from the radio, calculates checksums and stores the packets in a buffer. Numerous clients can connect to the server on TCP/IP using a ascii-based communication protocol and they have simultaneous read access to the packet buffer. Access is restricted on control of the aircraft and of the rotor (if not automatically controlled by the server itself based on position data from the aircraft), so that only one client is in control at a time. Clients can be kicked in order to get the access privileges, and clients will automatically be kicked if they cease to send alive packets.

The idea was to possibly make more than one client application, one mainly for monitoring telemetry and one for aircraft control. We may just stick with one application as the protocol allows the user to choose whether to control the aircraft or not, and the various views in the client program can be hidden if not needed. So far, the only two finished modules in the client program are the raw packet data view and the attitude indicator / artificial horizon. We wish to thank Thomas Ingebretsen for providing the source code for his attitude indicator widget, upon which our widget is based.

 Raw data packet view (data shown is obviously just unrealistic testing data)

Artificial horizon widget (based on the work of Thomas Ingebretsen)

The client software is constantly worked on and it gets major upgrades every week. At this very moment the preferences/settings widget is being finished, and the next plans are (not necessarily according to priority):
  • Update status view
  • Implement a widget containing the most important measured data, possible shown in graphical dials
  • Update network protocol
  • Implement controls (read from joystick and throttle controls) and sending data packets to server/aircraft
  • Finish server
  • Add (user-defined) alarms e.g. when battery voltage drops below a certain limit
  • Add plotting
  • Finish attitude indicator
  • … many more!

Ingen kommentarer:

Legg inn en kommentar