The program is divided into two parts that are implemented as separate programs: data recording and phase curve analysis. This is because there are also reasons why we would simply want to record signals from satellites flying over a station and perform some other analysis (such as listen to amateur satellites, or record weather satellite down-link data). While the data recording program is written in C++, the phase curve analysis program is written in Python. This allowed easier development of the phase curve calculation routines with a nice interpreted language suitable for scientific computing.
The data recorder application records narrow band (typically 40 kHz, but this is configurable) baseband signals for satellites that fly over the ground station. The program automatically updates it's satellite ephemeris files over the internet from celestrak.com and calculates a schedule for upcoming passes. Thus, it is possible to follow any satellite with a known two-line elements (TLE) ephemeris. The data recording program can simultaneously record satellites within a fairly large band (typically 1 to 10 MHz), each with a separate center frequency. We have tested simultaneous recording of six satellites (there rarely are more beacon satellites in the sky simultaneously), and even in this case, the program is not using very much CPU resources.
The phase curve calculation program is run as a separate process. It goes through all newly recorded raw data files and calculates the relative phase difference between the two carrier frequencies transmitted by the satellite. The phase curve is by default analyzed at a resolution of 40 Hz, although this is also configurable. The phase curve calculation does not require the receiver to be locked to a global reference, but it requires the satellite ephemeris to be relatively well known (the accuracy provided by celestrak is enough).
The software is designed to be operated from a single directory, requiring no system-wide installation of the binaries. While the software in theory should work with any operating system, only Linux has been tested so far.