Version 3, last updated by Leonid Kostrykin at September 03, 2008 13:15 UTC

Overview

The current software was started without proper planing or software design. Congruosly it turned out over time that some decisions were wrong and resulted in lesser effectivity. For instance we could save a lot of memory by using a constant sample rate instead of a variable one, which means we need to remember a time in µs for every sample. Furthermore we would not have needed a timer for detecting current time for every sample. The problem with that timers is that they have a low precision. There is no possibility to implement a timer with a precision of 1 µs; currently the POSIX gettimeofday function is in use which gives us a guaranteed precision of just about 50 µs. You're welcome to start a new one :) Never the less the application consists of classes which form up an architecture by definition. This and some other coherences could need some explanation.


 

Architecture

The MVC design pattern can be raughly applied to the architecture: It can be devided in a model part and a view. Their is no control layer. The model looks like this: Data class is a set of voltage — time pairs, represented by instances of Packet class. The set is filled up by Recorder class, which accesses MOInterface. MOInterface abstracts the incoming byte stream (from hardware) to packets and has the ability to write bytes on the stream (to hardware).

 

Model Layer

 

When talking about the View layer we only have to remember the classes Data, Recorder and Packet.