Appendix D _________________________________________________ RVP900 Developer's Notes
VAISALA______________________________________________________________________ 399
- RVP8/Proc Processes —These are N-copies of identical code that
are forked by the MAIN threads and which carry out all of the
scientific processing (see Chapter 6, Processing Algorithms, on page
179) within the RVP8. These are the actual "number crunchers" that
implement most of the signal processing algorithms that operate on
raw (I,Q) data. The code is written in standard C, but uses a set of
optimized Pentium/Athlon library functions for floating point FFT,
convolution, filtering, dot product, etc. By calling these very fast
primitives, ordinary C code is adequate for programming the
processing algorithms. This makes the code very maintainable.
Generally you create one RVP8/Proc process per available CPU on an
SMP machine. Most of your customization of the RVP8 algorithms
occur in these processes.
Virtually all of the RVP8/Proc code is released to licensed developers as
source code. There are open APIs for the RVP8/Main that allow you to
build custom trigger patterns, phase sequences, etc., on the transmitter
side. The kernel source is available so that developers can run within their
own customized Linux environment.
D.2.1 RVP8 Software Maintenance Model
The remarkable thing about Vaisala's open source developer's model is that
the open code is the actual delivered code. It is neither example code, nor
an abridged form of the final delivered algorithms. When we build an
official RDA release, we are using the exact same rvp8main/open and
rvp8proc/open source directories that our licensed developers receive. All
bug fixes, enhancements, new processing modes, and maintenance work is
reflected directly in these source files; there is no "other" version. This
point is crucial in the model for software maintenance that includes both
Vaisala code and customer code.
The CORE portion of the developer's tree contains no source files, and is
delivered only as compiled binaries. The OPEN portion of the tree is fully
populated with the actual source files used by Vaisala to build each RVP8
release. This OPEN code should only be used as a reference for
programming examples and ideas; it should never be directly modified by
the developer. The reason this is so important is that the OPEN code may
change significantly with each new release. If custom changes were made
in this area, those changes would all be lost when the next RDA update was
installed.
The correct way to add custom features to the RVP8 is to add them to the
SITE directory. This directory is delivered as a collection of empty
program stubs whose calling conventions are very stable. Each stub is
basically a hook that can be used to define an entirely new RVP8 major
mode. By replacing these stubs with custom code, custom major modes