
HISTORY
=======


Current development version

        -


0.66    Bumped version number to 0.66.

        Marco implemented the Graupner SUMD protocol: Autosensing of UART ports works. 
        Parser with 1-MAX kanaelen works. CRC16 gets checked. loop sumd <uart> shows 12bit
        scaled values. Mixer works.

        Marco implemented deadzone for all rc devices. 

        Marco implemented new option rc.servoway. Default is 100 (%). This allows for 
        more resultion of the sticks: Switch to 150% servoway on your remote control, 
        then set rc.servoway to 150. This parameter influences Throttle, Nick, Roll
        and Yaw only. Currently only supported for SUMD (Graupner) parser. Could be
        ported to the other rc devices. 

        Implemented HAL.dir.invert.bottom boolean flag in HAL X8 to allow the bottom
        motors to invert directions. X8 can be flown with the bottom motors in parallel
        to the upper motors or inverted. Added HAL parameter HAL.dir.invert.bottom to
        X8x HAL too.

        Implemented HAL.circular.addressing parameter in F8 HAL allowing two different
        motor id addressing modes for this HAL. Implemented HAL.circular.addressing too.

        Fixed throttle limiting function which limited at T.idle + T.reserve instad of
        T.idle only while flying. T.reserver is the kick-off peak given to the motors
        when spinning up but should have no influence on flight throttle. 

        Attention: make sure that your motors will not switch off in flight because only
        T.idle is used now. To get the old behavior set T.idle to 40 and T.reserve to 0.

        Implemented a prelimary braking circle around the target space using a PD 
        closed-loop to change velocity to near zero. introduced new define 
        CTRL_AMIR_NG_NAV_USE_BRAKE which is switched to active for now. implemented 
        NAV.brake.P, NAV.brake.D, NAV.brake.I and a navigation brake implemented as
        PID closed-loop near the target. implemented I-part in height-hold PID.

        Fixed behavior condition descriptions. Thanks to Kroimon for pointing out the
        problems.

        Christi implemented behavior actions to manipulate config variable using one 
        or several potentiomenter on the remote control.

        Ticket #275 implemented (without memory blowup). Added 4 new global variables: 
        RC.var.map.int.min, RC.var.map.int.max, RC.var.map.float.min, RC.var.map.float.max
        to be used in new behavior conditions. Added 2 new behavior actions: 
        ctrl.var.int.rc.map(variable, channel) to set controller [variable] to rc [channel]
        in range RC.var.map.int.min - .max and ctrl.var.float.rc.map(variable, channel) 
        to set controller [variable] to rc [channel] in range RC.var.map.float.min - .max.

        Marco revamped our source tree according our plans to separate driver-, kernel- 
        and userspace. Code compiles and works again. Thanks to Marco for the great work!

        Marco implemented arch dependent version detection. He changed Makefile.am in
        fc/kernel and fc/user to work non-recursive, so only 3 static libraries are build
        now (libkernel.a, libuser.a, libmath.a). fc/Makefile.am will create a binary using
        fc/main.c and these libraries. Renamed ldd_ver_init to arch_ver_init.

        Neverhood implemented a X16 HAL for 16 propellers in coax.

        Implemented new amir-ng controller dependant parameter NAV.brake.radius.

        Extended amir-ng controller navigation routines: We now have three zones: the brake
        zone (radius configurable) where we reduce velocity to zero, the slowdown zone 
        (radius configurable) where we reduce velocity to the maximum slowdown velocity
        (configurable) and the travel zone outside of the slowdown zone radius where we
        reduce velocity to the maximum travel velocity (configurable). Intruduced new
        parameters NAV.slowdown.radius, NAV.slowdown.maxspeed, NAV.travel.maxspeed.

        Implemented ADTC (attitude dependant throttle control) amplification factor. 
        100% means factor 1. Introduced new amir-ng controller dependant parameter ADTC.fact.

        Stefan fixed DEV_IDX_* constants being out-of-sync with the device table. 
        Fixed MLINK sensors to correctly output dbg2, dbg3 and dbg4 variables.

        Ralf added BMA180 support.

        Implemented ctrl_limit_min() and ctrl_limit_max(). Used them to implement 
        ctrl_limit_dtc(int M[], int cnt), a DTC method working for any number of actors.
        replaced all ctrl_limit_dtcX() with it.

        MPU defaults for DLPF changed. MPU ACC and BMA180 work well with Software LP Filter.
        Ralf added median filters for MPU and BMA and introduced the ACC_FILTER_LP and 
        ACC_FILTER_MEDIAN defines in spi0-sensor.h.

        Fixed NGPP compass registers: instad of compass_data.[xyz]_new we provide 
        compass_data.[xyz] which contain the calibrated values and not the raw values.

        Christi implemented a new heading hold PID. Added limited I part to new Heading 
        Hold PID. Corrections in HH PID and behaviors. New heading hold algorithm for
        amir-ng ctrl. Calculate rc headig matrix only every 20ms. Bugfix in pid_hh_yaw, 
        heading matrix difference limit. Sign error and cosmetics. Changed heading hold
        angle PD controller to PID angle velocity controller to behave like the normal PID. 

        Use global.ctrl_acc_hh_fact to control the heading matrix rotation speed. 
        Use stick input also in P part of HH PID, normalize the heading matrix.

        Added libbhcc to NGOS. Configure automatically checks for libbhcc and enables 
        it's use when found. Configure automatically configures libbhcc too and libbhcc 
        will be automatically compiled and linked together with NGOS when found.

        Implemented --enable-bhcc which now chooses if configure looks for libbhcc and
        configures and compiles it.

        Fixed height-hold: changed D error to contain as->pos.kalman.z.f_vel, eg. the
        guessed velocity in direction of the z-axis. Attention: the scaling of D will
        have changed! It's now velocity [cm/s] we have as D error.

        Introduced POS.Kalman.Baro.Q. We now have for the baro: POS.Kalman.Baro.Q (process
        variance of the acc) & POS.Kalman.Baro.R (system variance of the baro). We now have
        for the GPS: POS.Kalman.GPS.Q (process variance of the acc) & POS.Kalman.GPS.R
        (system variance of the GPS). This should decouple Baro and GPS data fusions and
        so allow for greater flexibility in tuning.

        Tim fix typo in qngctrl.pro. Disabled symbol exporting in qmapcontrol as we not 
        compiling it as an shared library. Add missing icon and add built-in version info
        to qNGctrl. Implemented getQPixmapFromSVG(...) and render icons from svg at runtime. 
        Move common code to qngctrl.pro. Fix typo and remove unneeded library references.

        Implemented ACC measurement validation for amir-ng controller. ACC.valid defines
        the allowed delta from 9.81m/s where we still accept acceleration measurements for
        updating the Kalman filters. If the delta is bigger than ACC.valid, then we ignore
        the acceleration measurement. 

        Attention fellow pilots: The feature is switched on by default, as we re-use
        ACC.valid from the amir controller.

        Introduced new header define for amir-ng controller called 
        CTRL_AMIR_NG_DCM_ACC_VALID_DEBUG. It enables acc validation in the amir-ng 
        controller. Fixed acc measurement validation check. When 
        CTRL_AMIR_NG_DCM_ACC_VALID_DEBUG is not defined ACC.valid does not show up in
        controller configuration.

        The command "loop ctrlreg" now support dbg[1234].

        Negative ACCvalid (the absolute value gets used) will inform the user with a beep,
        when the ACC measurement gets ignored. Fixed height-hold limit (it was asymetrical
        for P.z.upfact != 100%). Negative P.z.limit values (the absolute value gets used)
        will inform the user with a beep when limiting.

        Extended attitude PID for nick/roll to contain an integrated and limited II-part.
        This will allow for weight compensation on the copter for asymmetrical weights.
        Added II.nick, II.roll and II.limit parameters controller dependant parameters to 
        amir-ng controller.

        Implemented new conf.Izlimit parameter with a default value of zero. Added 
        controller dependant parameter I.z.limit to amir-ng controller. Introduced new
        amir-ng controller defines CTRL_AMIR_NG_BEEP_Z_PID_MOTOR_LIMIT and
        CTRL_AMIR_NG_BEEP_Z_PID_I_LIMIT. Both limiter support the negative limit feature
        and will beep when limiting. Introduced CTRL_AMIR_NG_N_PID_DEBUG, 
        CTRL_AMIR_NG_R_PID_DEBUG and CTRL_AMIR_NG_Z_PID_DEBUG which will enable debug
        output on cs.out.dbg[1234] for their respective feature.

        Disabled DCM PID II to make sure nobody flys it.

        Switched NAV.slowdown.maxspeed and NAV.travel.maxspeed from [m/s^2] to [cm/s^2].

        Switched behavior action ctrl.calibrate.acc.by.stick() from +-5 to +-20 changes 
        when doing a full stick movement. sometimes you need to calibrate more, before 
        doing the fine tuning.

        Implemented base throttle for height hold. Introduced new parameter CTRL.z.throttle.
        When set to zero, we use rc throttle as height hold base throttle as before. 
        When set to !=0, we use the throttle value at fix time plus the value of
        CTRL.z.throttle as base throttle value for the height-hold PID.

        Fixed small bug preventing the ACC.valid parameter to show up in "show conf".

        Fixed in-flight calibration for MPU. sadly the MPU ACC uses different registers 
        for ACC raw/mean/sum than the LISL ACC resulting in different ctrl_input() code
        in ctrl.c and different calibration code in spi0-sensor.c for both sensor types. 
        This would only make sense, if we intend to use MPU ACC and LISL ACC at the same
        time (which will be possible with HW-0.23-mini-r1, so I'm unsure if I should 
        cleanup this). in-flight calibration now also works for HW-0.23-mini-rX using 
        the MPU sensor.

        Removed hopefully most of the unused dead code concerning
        #ifndef CTRL_USE_RC_CALIBRATION and removed the #define CTRL_USE_RC_CALIBRATION 
        from ctrl.h. These were 842 lines of diff I've removed.

        Qngctrl: Mattes added reversion support on empty REV flag; Upgraded paths for
        headers and libs. 

        Qngctrl: Decoupled 3ds model from angles. Each now has his own dump checkbox and 
        both enable the same packet type for dump. But they are separate now, enabling angle 
        dumps does not enable the 3ds model. This allows users not to use the 3ds model on 
        slow PCs but still dump the angles if required

        Qngctrl: Fixed crappy SVN revision number. Now correctly displays as ONE number
        (eg. 8004). Implemented --help and --disable-3ds. Made --disable-3ds functional. 
        Will disable the 3ds glc render model and make the model tab go away.

        amir-ng: Christi fixed yaw error when switching from HH to integral. Changed scaling 
        of ctrl_acc_hh_fact. Changed default values according to Amirs flight tests. Switch
        slowly from HH to integral mode.

        Fixed calibration acc for mpu acc. Nick and roll calibrations are now in the right
        variables.

        Introduced CTRL_AMIR_NG_DCM_USE_DELTA_HEIGHT_VELOCITY which will use the difference
        of the last baro measurement and the new one velocity measurement. Fixed small bug
        in velocity calculation. We used m/ms instad of m/s.

        Implemented controller dependant ACC.valid defaults (amir: 125, amir-ng: 250). 
        Adjusted default parameters to my newest tested setting. Decreased P,D,I to be
        able to fly with wind. Updated with newest height-hold parameters. Updated with
        newest position Kalman parameters (R=0.002 for baro and gps). Adjusted brake circle
        to 7m, Increased brake P and angle.max. Set ADTC.fact to 105%.

        Activated ADTC in the default settings. It makes sense that everybody uses it.

        Corrected current velocity calculation which did not consider how many cycles
        happened in the meantime. We now correctly remember the cycle numbers and 
        orrectly scale to 1s to have m/s.

        Qngctrl: Log file will be created now autmatically. Fixed icon size zooming. Added
        all files to logfiletab; decreased gps icon sizes smaller layer 19.

        Qngctrl: Added LIBS += -lquazip to system.pri.

        Qngctrl: Added define for test-tab. edited Makefile.win for new paths; Added 
        typedefs for msvc <= 2008 because stdint.h is not available. Changes define for
        testtab, changes path for ngos in system_win.pri. Extended ngos parameter discription
        for rc-val conditions. Added mingw32 differences.

        ctrl_amir_ng_gps_init() will now initialize the position z Kalman filter with the
        current baro pressure height and a velocity of zero while telling the filter that 
        position and velocity is exaktly known.

        Implemented height for home, target, rel-target and waypoints. extended all position
        commands with height (or relative height). Extended behaviors with 3. argument for
        height. Changed all ctrl_nav_set_*() functions to have height. When home position 
        gets set, we also set home-height.

        ctrl_nav_init() now sets home position height to current height. ctrl_amir_ng_nav_init() 
        sets Kalman position filter initial height to current height. ctrl_spinup() sets home
        position lat, lon and height.

        Implemented new command "nav pos2home" to set current position as home position.

        Implemented ctrl_nav_init_callback() which now sets home height from baro height
        2.25s after startup.

        Now dumping relative height instad of absolute height.

        We no longer issue an error when deleting a empty behavior slot.

        Qngctrl: Imported my doc's for crosscompiling and the files for crosscompiling. 
        Added file content: needed files in win. Added Makefile.win-mingw32. Removed debug
        warning on src/ng.h. Fix silly path; added flags to crosscompile. Mingw compiling 
        fully works under Windows. Only on QT v4.7.4! v4.8.x generates GLC_lib errors. 
        Cosmetics. Corrected wrong config flag from r8120.

        Renamed HW-0.23-mini-r1 to HW-0.24-mini-r0 as decided by team today. There are too
        many changes and additions to call it the same version.

        Added newest polyhexa HAL received from Chris.

        Qngctrl: Waypoints now also visible after mapchange; Added file extension and removed
        warning for overwriteing (it does not overwrite) at logging filedialog; cosmetics.

        Christi fixed calibrate compass. Fixed calibrate mk3mag again.

        Qngctrl: If filedialog will aborted by user bottom log to file was wrong; at libng
        dllexport for mingw32 was wrong. Added motor plots M4-M8; disabled 'Log 2 File' for
        Windows. Changed compiler flags for msvc's makefiles/qmake files. Now logging should
        work. libng bugfix windows msvc: uart crashed with exception. libng: timing stuff in
        windows. cosmetics. cosmetics & little bugfix for motor plot and write settings.

        Implemented M_FPOW(a,b) and rewrote dist2angle() function into tunable exponential 
        function (x/s)^(attack/10). Bigger attack means bigger exponent. Changed default
        nav.angle.attack to 15 meaning (x/s)^1.5

        Christi limitted PID output when switching HH->ACC.

        Mattes added settings for timerInterval. ngctrl.cpp: corrected store/load settings
        for dumpIntervalMotor; set Windows standard serial Port to COM5. prefdialog.cpp: 
        adding \.\ to string for windows serialports > COM9. Adding files for windows. Added
        simply batch file to gernerate qngctrl windows daily. Added README.txt to archive. 
        Added fresh compiling for daily_qngctrl_win.bat. Adding msvc for daily_qngctrl_win.
        Reorderd some filenames and folders.

        Mattes added rx polling for shell (untested) while connected && NOT started. Added
        qngctrl cross compile skript; still buggy. qngctrl saves last map type. Fixed showing
        numbers of satellites if fix will be lost. Debugging received sats; cosmetics. 

        Christi implemented a new behavior action called rc.calibrate.mk3mag(). Added check
        boxes to bool values in qngctrl configuration tab.

        Qngctrl: Mattes extended shell to thread based and resolved output.

        Christi added version VER_0_24_mini. Added support for LISL on hw-0.24.mini.

        Implemented check for number of CPUs and using that for MAKEOPTS="-jCPU".

        Optimized conf.c: -623 lines of code, same functionality.

        Implemented 'show rc', 'diff rc', 'dump rc', 'api ngctrl-rc'. this makes 
        show globals' a lot shorter. Implemented new Makefile target 'fc-flash-serial-wipe'.

        Qngctrl: Added libquazip to needed libs, added some needed system packages to README,
        added HappyDay to header, added onboard venus gps and multiplexer, added multiplexer
        to uart1, corrected multiplexer direction, onboard GPS works, multiplexed gps/terminal
        is now working, bugfix: terminate gps parser would'nt work at uart1.

        Christi added support for the aux open collector output on hw 0.24. Always reading 
        MPU acc, but use LISL if present. Reading gyro values only from MPU if LISL is 
        present. Added 'show rc' and 'api ngrtrl-rc' to the list of commands. Added qngctrl
        config tabs RC, HAL, PCA. Added an option for saving 'diff all' to file. Added command
        'api ngctrl-pca'.

        Fixed small bug in shell prompt redrawing.

        Christi implemented a real shell in qngctrl.

        Qngctrl: Bugfix: Changed usleep into multiplatform qtstyle; removed glc_win_bug
        defines. Added HISTORY.txt in qNGctrl to document major changes. Set the UAVP
        logo as application icon.

        Christi implemented Trh's suggestion to be able to set HW.use.acc to no,lisl or mpu.

        NGblc-4mini: initial checkin of simonK's source for converting to atmega88/168. 
        Starting to convert simonK's fw. Modified simonK's firmware to atmega88/168. 
        Modified makefile and asm for external i2c address support. Fixed warning in 
        simons FW. Corrected typo. Fixed silly macro bug. Immortalized ng uavp to headers.

        Fixed configure LTO check.

        Qngctrl: copy/paste support for qngctrl shell

        Added CW/CCW notice to motor descriptions of HAL y6.

        Christi changed autoconf scripts to work with new version of svn. Added const 
        qualifiers to some variables in ngos-sbc, beacause some avr-gcc versions complain
        if they are missing.

        Replaced SHORT_BEEPs with standard OK_BEEPs in actions ctrl.*.

        Extended internal adc interface to aquire aux adc0/1 on >= hw-0.23. extended adc 
        interface to all 8 channels of AD0. Fixed adc sampling calibration. Made adc mean
        count version dependant.

        Implemented support for the Sharp IR sensor 2Y0A02 on adc aux0 and aux1. Sensor
        gets detected and sampled. 

        Implemented 'loop ir' using task_sleep(). The command shows AD0 aux0/aux1. 
        task_sleep(ms) works perfect now. We should rewrite all 'loop' commands to use
        task_sleep().

        Christi added rcctrl support for HW 0.24. Changed shell background color in qngctrl
        if shell is disabled. Added spinboxes to HAL BLC values. Fixed MS56xx output in
        qngctrl baro graph.


0.65    Bumped version number to 0.65.

        Stefan updated the Ubuntu scripts for the new NG release.
        Hotfix for qngctrl, ngctrl and ngctrl2.

        Shortened flightstate names.

        Volker added the schematic of HK-12A/30A BlueSeries BLDCs. Ceconstructed schematic
        of new 12A & 30A HK_BlueSeries BLDC, planning modifications and drawed modified
        schematics.

        Matze added missing field in configure struct and optimzed configure process in
        the command "venus init".

        Rewrote all function names in venus.[ch] to make the module comply to our naming
        conventions. Please make sure the first word of each function is the same as the
        module name. Also make sure all terminal command functions have a "_cmd_" as second
        function name part. Indented venus.c. Extended "init venus" to 
        "init venus [uart0|uart1] [store]". Implemented the new shell commands "venus attach"
        and "venus detach" which attach/detach a on-board Venus GPS from UART1 TX to make
        the Venus GPS available to client software on UART1. Renamed command "init venus"
        to "venus init".

        Added initialization of GPS reset pin for HW-0.23-mini in gps_init().

        Matze added autodetection of baudrate for venus gps module.

        Tim fixed some compiler problems on windows for libng.

        Stefan added initial support for MPU6000, extended SPI state machine, created 
        debug/loop mpu commands.

        Axel cleaned up openocd scripts. We now use the interfaces (jtag adapters) from
        openocd supplied config files. This changes the configure arguments: you now only
        need to set "--with-openocd-interface=NAME", e.g. "jtagkey" or "olimex-arm-usb-ocd"
        
        Stefan changed MPU code to ignore first byte, set CPOL/CPHA right, configure 
        MPU6000 right before first usage. Select device after configuring the bus, 
        set bus speed. Changed argument order in spi0_write (make more sense this way), 
        beautified debug/loop mpu printing. Using MPUtick in show stats. Implemented
        calibration commands for gyros and acc in MPU, renamed calibration command function
        names. Fixed axis orientation for MPU inputs.

        Amir fixed all gcc 4.4.4 compile warnings. Lotsa "dereferencing pointer xxx does
        break strict-aliasing rules" warnings are gone.

        Amir fixed race problem for dump_init() which got called in ctrl_init() which in
        turn was called AFTER timer_init() which is a problem as the timer calles dump_dump()
        on each tick. moved dump_init() to beginning of main.c. Fixed array size of all
        ctrl-dump monitor based arrays. Never forget, monitor based arrays need to be of 
        size (NUMOF_MONITORS + 1)!

        Disable interrupts when adding new SPI0 task, should avoid race conditions.

        Stefan fixed a race condition in MPU state machine, data were already sent/received,
        when SPIE was set. Therefore we have to set SPIE before writing data!

        Amir extended the NGOS-build-toolchain.sh script: Beautified and changed final
        toolchain directory to /opt/arm-<gcc-version>. Changed TARGET from arm-elf to
        arm-none-elf. Removed --disable-werror flag to be more pedantic on errors.
        Included newlib sources to toolchain for debugging reasons. Fixed url for mpfr
        and switched from wget to curl. Added more debug output. Made script exit with
        error 1 when something with downloading and unpacking fails. Added build log.
        This allows us to see warnings and errors which still go to the console. Upgraded 
        mpfr from 3.0.1 to 3.1.0. Made sure all local sources get used by gcc. There were
        some --with-XXX-include/lib missing. Added a compile check for -flto and adding
        it to CFLAGS only when detected. This makes older compilers which do not support
        LTO work again. Fixed lib + include paths of gcc dependency packets. Added -f to
        force overwriting of already existing toolchain. Added $UNPACK folder, where all
        unpacked sources get stored and left until the next compile happens. Now compiling
        all needed libraries separately and installing them to temporary folder in /tmp.
        gcc then uses the libs from the when compiling, instad of compiling them by himself.
        Special feature for trh: automatically switching destination folder to 
        /tmp/build/toolchain should the default destination folder in /opt not be writable
        by user. Enabled GOLD in toolchain. Added bugurl and pkgversion showing NGOS
        version and libraries. Fixed README. Told NEWLIB configure where to find GMP, MPC
        and MPFR. Dynamically adapt number of compile threads to number of CPUs found
        in /proc/cpuinfo.

        Axel changed the function SWI_Routine() use register r14 instead of r4 for reading
        the swi_id, which is safer and the intended way in supervisor mode. Using register
        r0 for fiddeling the swi_id (further reading told me that manipulating r14 is not
        recommended). Added tool to calculate the vector checksum and patch the bin file.
        This assures proper startup of arm and makes OpenOCD stop complaining.

        Amir improved "venus init". Now recognizing 3 messages. Fixed +-1 error when not
        enough characters were in buffer. Implemented "venus disable" and "venus enable".
        Sadly the Venus GPS will not release the TX pin when disabled. We probably need
        a hw fix for this. Implemented "loop gps [uart0|uart1]" to inspect GPS messages
        received.

        Axel added a new Makefile target for ngos.lst (disassembly).

        Amir replaced all trigonometric float3232 tables in RAM with on-the-fly generated
        const tables in flash. Our free RAM was raised from 6kb to 12kb.

        Made "loop attitude" better readable. Improved all i2c loop commands. Improved 
        all spi0 loop commands. Improved "loop mpu".

        Tim fixed all compiler warnings on winodws with MSVC. 32 and 64 bit version build 
        fine. Fixed bug in ng_char_available's windows specific code. Some windows specific 
        changes to ngctrl. Fixes to qmapcontrol to compile on windows with MSVC. Fixed DLL
        function exports in libng for windows. Fixed header file includes for Windows
        version of libng.

        Axel changed toolchain name to arm-ngos-elf (tools/toolchain build script and
        defaults in conficure script): This way it is easily distinguishable from other
        toolchains, which is important because we disable the newlib-supplied-syscalls,
        which results in a non-standard toolchain.

        Stefan added a state machine for MS56xx pressure sensor and debug command 
        (MS5607-B can be used on HW 0.23-mini). Implemented temperature and pressure 
        calculation with second order compensation. Implemented CRC check for MS56xx PROM.
        MS56xx init works. CRC checksum of MS56xx sensor is successfully read and matches.
        Made low-level spi_write/read functions static. MS56xx fsm works. Extended 
        "show stats" with ms56xx stats.

        Added -flto to enable link-time-optimization. NGOS still seems to work.

        Fixed syscalls.c to export _isatty() and isatty() so that all newlib functions are 
        happy.

        Benjamin fixed ADS1255 (ADC24) having different AINCOM connection. Set input
        multiplexer to Vin=(AIN0-AINCOM)=(BaroOutput-VREFp).

        Fixed typo in "make debug-jtag". Implemented --enable-lto in NGOS configure.

        Fixed gcc version in "show version" to show -v and not --version. Switched from
        "-O1" to "-O2 -fno-reorder-functions -fno-schedule-insns -fno-schedule-insns2"
        which works fine with gcc-4.6.2 that way. 
        Enabled "-fuse-linker-plugin -fwhole-program" as linker flags when --enable-lto
        is configured. Fixed all new gcc-4.6.2 warnings which popped up 
        (-Wunused-but-set-variable). Implemented --enable-debug which sets -O1 -g.

        The whole stuff works finally: gcc+GOLD+LTO+fuse-linker-plugin+fwhole-program.

        Upgraded qngctrl to use GLC_lib-2.2.0. Please note: qngctrl does no longer
        compile with the old GLC_lib-2.0.0 library.

        Fixed version check bug in spi0-sensor: we no longer do a callback to scan for
        gyros in hw-0.23 but instad we output the scan messages directly in spi0_init().

        Sorted device table and adjusted index defines.

        Implemented delay parameter for spi0_write_read() and spi0_write_u8().

        Implemented --enable-tests in NGOS's configure, which enables the local tests
        in ngos/tests on the build system.

        Tim found out that passing of QString instead of const char* fixes storing of
        settings under Windows.

        Prepared CSTD in configure.ac which allows us to pass a -std=c90 or -std=c99
        to the NGOS source code. We need to get rid of all those inline defines which
        are no inlines before doing that. Enabled -std=gnu90. for -std=gnu99 we need
        some work. Made NGOS source code C99 (-std=gnu99) compliant.

        Renamed rc-controller to ngos-rcc and sb-controller to ngos-sbc.

        Added NG-osd, a color osd based on STM. Added eagle files. 

        Extended toolchain script: new choosing architecture and gcc version on the 
        command line: Usage: ./build-arm-toolchain.sh [-f] [<arch>-<gcc-version>]. 
        Added arm7-4.1.2 target which builds gcc-4.1.2 without GMP, MPFR, MPC and
        LIBELF. The new command line arguments should allow us to use the script for
        all further versions and architectures. gcc-4.1.2 with newlib-1.15.0 compiles
        too. Added patch support to be able to build binutils-1.18. Added WERROR config
        support to be able to build buildutils-1.18. Added patch for newlib-1.15.0 and
        removed old double-make hack. Enabled interwork and multilib, added gcc patch
        for t-arm-elf, enabled c99 standard, enabled target-optspace, cleanup in zlib
        usage, added old GMP and MPFR to gcc-4.1.2. Revamped script. now defining
        TOOLARGS and GCCNEWLIB_ARGS and using them everywhere where possible. A newly
        built gcc-4.1.2 toolchain will work fine now. Added STATIC and GNU variables.
        Reshuffled the code. Reenabled multilib and interwork, removed system-zlib
        for gcc-4.6.2. This way we are prepared for fpu and thumb support, should we
        need it.

        Fixed output bug which made the HW.uart.mode "spektrum" shown as "m-link".

        Prelimary fix to the I2C state 0x58 which was missing the case of receiving
        buffer overflow.

        Made acc FSM honor HW.use.acc. Baro always gets detected, but FSM honors
        HW.use.baro.

        Implemented i2c0 and i2c1 buffer range checks. All _init() now ignore
        hw_use_xxx and expect input_prepare to handle the hw_use_xxx flags
        accordingly. This allows to change hw_use_xxx flags during runtime.

        Increased critical section in spi0_start_task() around spi0_add_task(). 
        Changed module init order in main() and moved ctrl_init() below all other
        inits. In ctrl_init() moved setting of controller to the end and added a
        timer_sleep() before the first ctrl_input_prepare(). Added array bounds
        check for spi0_task[spi0_task_current]. Made spi0_task[] a volatile
        pointer pointing to volatile, replaced memset() with for() loop zeroing
        the structs as memset() can not handle volatile. Clearing i2c0 task slots
        when all tasks have completed. checking i2c0_task array bounds. Checking
        spi0_task[spi0_task_current]!=NULL before entering spi0_next(). Improved
        error handling in spi0_input_prepare(): we now let LEDB_RED shine, when
        we can not start an fsm.

        Improved ads fsm: moved all SPI_SPINT=1; to the end of states except for
        the first state. Cleanup in ms56xx fsm, moved unselect & SPI_SPINT=1
        directly below data register access. Cleanup in LISL fsm: made exit/continue
        code cleaner and moved SPI_SPINT=1 immediately after unselect and at end of
        block, when continuing.

        Fixed long warning in generated math-trig3232-gen-const.c source code visible
        with gcc-4.1.x.

        Corrected 'venus init' code: made delays between commands last longer. 
        Now the Venus has 10Hz instad of only 1Hz as before.

        Cleanup in lpc2148-rom.ld: added a lot of missing gnu sections. Some more
        c++ gnu sections are still missing. Made all sections 4 byte aligned. 
        Cleanup in etext and edata symbols. Startup code now again correctly copies 
        from etext to edata to RAM/data, this was broken. Added start/end symbols 
        for most sections.

        Increased supervisor mode and irq mode stack sizes from 256 to 512 bytes.
        HW-0.23-mini now seems to work fine with all devices.

        Moved swi handler from startup.c to swi.c. Extended SWI framework: we are
        now able to execute a system call with 4 register arguments. This allows us
        to implement more complex system calls than we had before. Implemented the
        new debug command "debug swi [kernel|user] spi0_start_task" to execute swi
        based system calls from kernel and user context. Implemented SWI based
        spi0_start_task. Switched to SWI based spi0_swi_start_task(). Seems to work
        fine! We no longer disable SPI0 interrupts. User and kernel context both
        use the SWI based system call spi0_swi_start_task() to start fresh fsm tasks.

        Implemented new SWI based system call 'spi0_swi_start_tasks()' which allows
        us to start several SPI tasks with one single system call instad of calling
        a system call for each single task. Implemented i2c0_swi_start_task() and
        i2c0_swi_start_tasks().

        All SWI_CALL() functions now return register r0.

        Removed global swi_errno as was a concurrency problem. The callee of the
        SWI_CALL() now returns the return value in register r0 to caller, which
        in turn returns it as the return value of SWI_CALL(). SWI_CALL() now works
        like a normal system call function which return value.

        Renamed i2c-actor.[ch] to i2c1-actor.[ch]. Corrected code according to our
        naming conventions.

        i2c0_swi_start_task() and i2c0_swi_start_tasks() now use SWI_CALL() return 
        values. switched to i2c0_swi_start_task() and i2c0_swi_start_tasks(). All
        i2c0 functions now call the SWI based system calls to start new fsm tasks.

        Implemented i2c1_swi_start_task(), i2c1_swi_start_tasks() and 
        i2c1_start_task_swi_func(), i2c1_start_tasks_swi_func() callback functions.
        Extended swi.c with the needed table entries and defines.

        Switched from i2c1_start_task() to i2c1_swi_start_task() everywhere except
        in actor_start_burst(). We are sure that actor_start_burst() will be called
        once per cycle and we also know that our statemachine is finished until then.
        No need for i2c1_swi_start_task() in this case for now.

        Consolidated code: renamed i2c0_fsm_tasks_t + i2c1_fsm_tasks_t to 
        i2c_fsm_tasks_t common to i2c0 and i2c1, defined in ngos/i2c.h. Consolidated
        spi_fsm_tasks_t to be similar to i2c_fsm_tasks_t.

        Replaced spi_fsm_tasks_t and i2c_fsm_tasks_t with ctrl_fsm_tasks_t.

        Introduced ngpp_swi_register_read() and ngpp_swi_register_write() which
        offer to setup buffered tasks in a given i2c_fsm_tasks_t structure allowing
        us to collect all needed tasks and to call a single i2c0_swi_start_tasks()
        with all of them, essentially reducing all SWI calls in i2c0_input_prepare()
        to a single SWI call.

        Small optimizations in swi.c: made swi_dispatch() inline, swi function table
        const and simplified dispatcher code. gained 3us, I would say.

        Implemented SWI statistics in "show stats".

        Implemented generic SWI call for start_tasks in ctrl.c: ctrl_swi_start_tasks()
        and its SWI callback hook ctrl_start_tasks_swi_func() which in turn dispatches
        to i2c0_start_tasks_swi_func() and spi0_start_tasks_swi_func(). This reduces
        SWI calls to one call per cycle. still unused.

        Reduced SWI calls needed by i2c0 and spi0 to exactly one per cycle by using
        the generic SWI call ctrl_swi_start_tasks() which is able to start i2c0 
        + spi0 tasks in one go. Improved, streamlined and beautified
        ctrl_swi_start_tasks() and ctrl_start_tasks_swi_func().

        Optimized away the SWI call in the kernel: we no longer do a SWI call in the
        kernel but instad disable all interrupts, call the generic in-kernel 
        ctrl_start_tasks(), start all spi0 + i2c0 tasks in one go and reenable all
        interrupts. If you wonder: we did not win any measurable time.

        Exported all swi based system calls in the header files. Made all kernel-only
        calls static inline. This will allow us to split of user mode commands from
        the kernel code in the future.

        Improved SWI calls SWI_ID_CONF_STORE and SWI_ID_CONF_CLEAR. Both no longer
        use global variables to pass information to the kernel but use the stack
        instad by filling registers r0 and r1 which get stored on the stack on SWI.

        Removed obsolete irq disable/enable in ngpp_reserve_slot.

        Ralf added NGblc-4mini together withd partlist, datasheets and software files.

        Lowered ADC12_SAMPLES from 8 to 4. This makes sure we have enough time with
        all devices without having overruns.

        Corrected compass_tick: we do not need to tick in ctrl_input(), we need to
        tick in the input fsm in i2c0-sensor.c.

        Changed GPS stats period from 10000 cycles to 1000 cycles. Looks nicer 
        this way.

        Matze added CTRL.acc.HH.fact for inflight stick factor scaling, when switching
        between amir-ng ACC & amir-ng HH PID.

        Switched NGOS to -O2 optimization with -fno-reorder-functions -fno-schedule-insns
        -fno-schedule-insns2. This way even LTO optimization works. We gain over 40us
        only by optimizing the code better.

        Implemented MPU gyro scaling and added MPU gyro types for most available deg/s
        MPU modes. Eliminated local counter, using cs.in.cycle now in ctrl_input_prepare().
        Implemented gyro_type usage on MPU initialisation. Gyro types MPU-2000deg, 
        MPU-1000deg, MPU-500deg, MPU-250deg are supported.

        Matze fixed hmc z axis sign.

        Implemented task_sleep(ms) which allows a task to sleep for a certain amount
        of [ms] without being called by the sheduler. This will allow us to improve
        all loop functions and similar. task_sleep(ms) should work for normal and
        run-once tasks.

        Michael fixed rcctrl mpx0 + mpx1 handling. Implemented a global battery offset
        parameter. Fixed ram corruption, caused due to wrongly sized struct variable.

        Moved checksum calculation on "conf store" inside the SWI system call. This
        way we are sure we do not receive an irq in between checksum calculation and
        SWI call, which (theoretically) could destroy our checksum when manipulating
        the configuration RAM. Fixed warning and moved checksum calculation after
        magic restoration in conf_store_swi_func().

        Bejamin added --enable-newlib-io-c99-formats and --enable-newlib-io-long-long
        to toolchain script. This way NEWLIB's printf() is able to process %lld , %llx
        and friends. Fixed various shifting issues in MS56xx pressure calculation. Fixed 
        cases for low temperature MS56xx barometric sensor calculations.

        Michael implemented prelimary NG-osd code: added systick, timer callbacks, 
        debug leds, fixed serial, jtag flash script, tasks, shell and more. Implemented
        'print osd'. osd essentially works. Added funkrushas ascii compass. Added
        osd_color_t as position parameter for osd_draw_<hud modul> functions. Added
        function osd_triangle. Added ellipse funtion. Changed to osd_draw.* to osd_hud.*.
        Added osd_hud_battery. Added black outlines to the battery symbol. 

        Amir fixed all license header problems in NG-osd and NGOS. Updated search 
        folders for maintainer/manage_licenses.sh and updated foreign friends database.
        Fixed all license header related problems. Fixed all files which irritated
        maintainer/manage_licenses.sh. Extended manage_licenses.sh to handle .cfg files.
        Updated all license headers in all files. Used new makefile target "indent" in 
        NG-osd to format the code according to our coding guidelines.
        
        Switched NGOS to gnu99.

        Added gen.tools.sh script to NGOS which will run autoreconf and libtoolize. This
        script can be used when the host versions are too different and the autotools
        and libtool scripts need to be regenerated.

        Duplicated ng-tools/libng to sources/libng to make it standalone. Moved autotools
        auxillary files to aux/ and cleaned up sources/ngos. Standalone libng compiles
        and includes a configure now. implemented --with-toolchaindir=DIR and 
        --with-crossprefix=PREFIX. Renamed aux/ to config/ as aux/ is reserved on
        Windows/DOS.

        Fixed "make distclean" in ng-tools. Works now. Removed libng from ng-tools and
        made it into a separate package. ng-tools expects to find libng at ../libng but
        allows to configure the source code for a non standard location of the library
        source with --with-libngsrc=dir. ng-tools automatically checks for, configures
        and compiles the separate libng project.

        Amir autotoolized ng-osd. The new autotools suite works. Fixed fwlib library
        creation with autotools. Fixed generation of fwlib/startup_stm32f10x_hd.o.
        Currently linking the .o directly using linker flags. #ifdef'ed __STREXB()
        and __STREXH() as both instructions result in a 'Error: registers may not be
        the same -- strexb r0,r0,[r1]', respective 'Error: registers may not be the
        same -- strexh r0,r0,[r1]'. The functions where not used anywhere. Code now
        compiles with our own toolchain using gcc 4.6.2 and newest binutils.

        Matze added added automatic gps configuration to NGOS, based on the value of 
        hw.uartx.mode, should it be set to 'venus'.

        Benjamin added GPS Antenna test results. Smithchart, SWR and Magnitude plots
        were measured with a Rohde & Schwarz ZVB network analyser. Integrated an 
        uPC8236T6N SiGE low noise amplifier on the antenna board. This way, we get
        additional 19.5dB gain with a 0.9dB noise figure. Made the LNA more testable.
        Added SMA connector footprint at antenna port. Added a jumper to be able to
        apply external power to the LNA for DC-free RF measurements. Added testpad
        for bias adjustments. Added biasing documentation.

        Amir extended NGOS-build-toolchain.sh's gcc-4.6.2 patch to support
        mcpu=cortex-m3. Compiling ng-osd works. Added insight-6.8a to build toolchain
        script. Fixed patching in script, it did not patch gcc-4.6.2 correctly. Fixed
        gcc-4.6.2 patch.

        Amir changed libng configure suite to support --with-target-cflags="xxx" which
        will allow us to compile the code for cortex-m3 by passing the corresponding
        "-mcpu=cortex-m3 -mthumb -march=armv7-m -mfix-cortex-m3-ldrd -msoft-float" 
        flags. Configure now exports the define _ARM when --with-target-cflags is used.
        Patches to make uart.c ARM compatible. Baudrates fixed. Termios eliminated.
        Adapted ng-tools to static libng linking as we no longer generate a shared
        library. Static linking also works on the arm architecture.

        ng-osd's configure now has --with-libngsrc=DIR. it automatically configures
        libng with the same toolchaindir, crossprefix and target-cflags as given to 
        itself. ng-osd now correctly configures, compiles, links and cleans libng 
        whenever needed. Corrected linker file to be able to compile with modern
        gcc > 4.5. Added __exidx_start and __exidx_end symbols and section. 

        Michael finally got both shells running simultaneously on the ng-osd. ng-osd
        sends first command to fc using libng. Connection to fc via libng working.
        Added ngctrl connect command. Receiving data from fc works. Grabbing data
        with libng's ng_ngctrl2_packet_parser_struct_storage. ngctrl polls from a
        task now. Compass uses real fc value now. Polling without errors now.

        Added multilib switch -marm to NGOS to make sure we always use the right
        multilib.

        Amir extended NGOS-build-toolchain: First EABI support, not yet perfect
        but it seems at least working. Removed --with-float=$FLOAT from configures.

        Tim added Makefiles for building static and dynamic version of libng on
        Windows using MSVC.

        Amir fixed NGOS's configure suite when all flags are activated. Some
        leftover bugs from Axel's openocd changes. Fixed windows self flashing
        executable generation.

        Added #ifdef _ARM around #include "serial.h" in libng, the file does not
        exist on host systems.

        Updated README.txt, added hw-0.23-mini.

        Tim corrected detection range for gyros on adc12 so that all ADXRS620 gyros
        in specification are detected.

        Michael added/ported conf.[ch] in NGosd.

        Added and eliminated CTRL.gps.latitude, its no longer needed and we use the
        navigation home position's latutude for the calculation of the navigational 
        constants. Implemented new function ctrl_nav_precalc_consts(home_pos_lat). 
        This function gets called whenever a new home position gets set. 

        Attention: It seems our new arm-ngos-eabi toolchain is not yet as stable as we
        thought. Use arm-ngos-elf for now for production firmwares!

        Optimized code: ctrl.c now also provides ctrl_[lat|lon]_float_deg2m for
        controllers using floats. Will get used more when using the new CPUs.

        Improved --verbose and version output in tools/toolchain/build-arm-toolchain.sh.
        Improved comments, added "current" target which defaults to arm-elf-4.6.2
        currently and made running header more compact.

        Increased ctrl.descend(10) to ctrl.descend(20) in default parameters to make
        sure a NG makes a safe landing when signal loss occures.

        Fixed typo in behavior_action_nav_position_hold().

        Reimplemented action=onlypage in qngctrl's web browser as our new MoinMoin
        supports it again.

        Adapted gen.daily.sh to newest configure scripts.

        Tim made the uart format configurable (eg. 8N1, 7E2 et all).

        Michael added flash functions to store conf and global settings in NGosd. 
        Added conf commands (set, edit, dump, etc).

        Tim implemented support for Futaba S-Bus receivers.

        Added schematic of Cam Controller for public release.

        Reenabled --with-system-zlib and --disable-werror in build-arm-toolchain.sh
        to make sure the script works on ubuntu too.

        Mattes fixed a bug in rc conditions behavior_condition_when_rc_pot_lt and
        behavior_condition_when_rc_pot_gt which did not convert the second argument
        from 8bit to 12bit. Thanks Mattes!

        Martin changed include order in NGosd. conf.h needs to be included after ng.h
        cause the conf.h has a define to keyword conf. Changed some display positions 
        for tests and fixed battery icon. Added -c 'reset init' before -c 'halt'. 
        Added new font font_freesans_mini. Implemented graphical compass, looks nice.
        Added new font freemono_mini. Added prototype for hud-horizont. Changed compass
        layout and added current compass value. Added ng header to font files. Changed
        compass range to 180 degree. Added ng-uavp logo. Maybe we can show it later bigger
        as start screen.

        Added note on hw-0.23-mini to RELEASE.txt.

        Fixed poisoned errors in RCC code resulting from newer toolchain depreciating
        certain header file symbols.

        Neverhood added a new global configuration option called HW.actor.init for I2C
        devices which can not be bus-scanned and so need hardcoded i2c addresses 
        (eg. I2C to PWM converters). The new flag will choose the old default autodetection
        if set to zero or it will hardcode the i2c addresses for a number of actors as
        defined in HW.actor.init (1-16).

        Switched release.sh to arm-ngos-elf. We need to debug arm-ngos-eabi.


0.64    Bumped version number to 0.64.

        Timo added i2c-led hardware that was produced 20110812 and distributed at 
        dev-meeting 20111001.

        Timo added i2c-led that will (probably) be the final version.

        Volker finished the layout for HW-0.23-mini-r0.

        Matze fixed a bug in the sequence action.

        Fixed configure help texts for --disable-ctrl-bh and --disable-ctrl-amir. Fixed
        all --enable-xxx flags to work correctly for --disable-xxx AND --enable-xxx. 
        Configure now correctly switches the respective option on and off in both cases.

        Release script now correctly adds all needed controllers.
        
        Fixed a bug in HAL quadX which prevented the compass value cs.in.Y_n and
        cs.out.Y_mag to show correctly. Thanks to Massy for pointing this out!

        Fixed uart empty check to use monitor and not a hardcoded uart0 in M-Link code.
        Fixed missing -DUSE_MLINK on CFLAGS.
        
        Moved mlink_sensor_table from .h to .c. fixed m-link parser to correctly work
        with two monitors. Added UART_MODE_MLINK_SENSOR and extended available options 
        for HW.uart[01].mode with 'm-link' to allow non-autotected usage of M-LINK/MSB/M-Bus
        with ACT receivers. Multiplex receivers will still get automatically detected.

        Renamed DEV_ID_MLINK_SENSOR[01] to DEV_ID_MLINK_TELEMETRY. Implemented validation
        for uart.mode for uart0 and uart1.

        MSB/M-Bus/M-Link works with 4 sensors for now: battery, nick, roll, yaw.

        Volker worked a lot on the HW-0.30 prototype.

        Updated HISTORY.txt.

        Implemented Attitude dependant Throttle Control (ADTC) for the amir-ng controller.
        ADTC will adjust throttle depending on attitude angle when the thrust of the
        propellers is no longer vertical. Implemented conf.CTRLuseADTC and added it to
        controller dependant parameters of the amir-ng controller. The implementation 
        resides in ctrl_amir_ng_pid_throttle()/ctrl_amir_ng_pid_hh_throttle().

        Implemented "show mbus" and "set MSB.sensor[2345..]". Changed mbus parser to honor
        "show mbus" configuration and implemented a mbus type validation allowing named
        sensor type input. Implemented new data types for M-Bus sensor type parameters.
        Mbus sensor configuration gets loaded and stored with "conf load" and "conf store".

        Implemented "dump mbus" and "diff mbus" and extended "dump all" and "diff all".

        Matze added action actor.pca9685.load.defaults() to reload default values.

        Implemented new M-Bus sensor types: cs.out.pos_[lat|lon], cs.out.gps_[lat|lon], 
        cs.out.target_[lat|lon], cs.out.home_[lat|lon]. Extended and renamed M-Bus 
        sensors: battery, N, R, Y, compass, height, pos_[lon|lat], gps_[lon|lat],
        home_[lon|lat], target_[lon|lat], target_distance, target_deviation, dbg[1234].
        Implemented new M-Bus sensors: gps_speed, navN, NavR, navY.

        Fixed missing symbols when no --enable-mlink is specified.

        Increased limiting range for raw compass values. The range is 1024 _after_ 
        calibration, but before calibration it may be more.

        Volker added panelized versions of HW0.23-mini-r0.

        Added QMapControl as subfolder qmapcontrol/ of qngctrl1. Added qmapcontrol license.

        Fixed ${datadir} in qngctrl/ which already contains ${prefix} and does not need
        to be prefixed.

        Added a Map tab which shows a OSM map at first. Map works, uses last proxy settings
        to initialize, setting view to nmea position works, need to store last gps position
        to initilialize view correctly. Added first icon on overlay map.

        Created Gerber files of HW-0.23-mini-r0 and added zip file for production.

        Jeroen added a patch for ticket #251 (checking of existence of arm-elf-ranlib
        by configure).

        Replaced default behaviors using when.landed.rc.stick.left() with 
        when.landed.rc.stick.left.delay() using a delay of 4, so that PPM users will not
        experience unhappy accidents when their receivers receive a spike. Fixes ticket #238.

        Added comment on how to fix build-arm-toolchain.sh for gcc >= 4.5. Untested.

        Removed 3. union in position.h which seems unused but makes problems with gcc-4.6.
        Fixed union chaos.

        Hopefully fixed Jeroen's svn problem under Windows: TortoiseSVN does not create a
        .svn/ folder in every subfolder, so checking for it fails. Instad of checking for
        .svn/entries we now do a `svn info` after having found the svn binary and should 
        that succeed we enable WC revision fetching.

        Ralf added NGblc-4mini Eagle files.

        Moved gps map controller for qngctrl into separate object GPSMap which will also 
        implement the map controls. Adapted the rest of the code. Works as before.

        Implemented ufo_moveTo(QPointF) and target_moveTo(QPointF) in qngctrl. They emit
        signals to the respective ImagePoint. Added marker2-red.png and marker4-red.png.
        Side box shows up with map combo popup. We now support 4 maps: OSM, Google Sat, 
        Yahoo Street and Yahoo Sat. Sadly Yahoo is not able to show zoom level 17, but
        only level 16, which is a bit small for our application.

        Implemented new NGCTRL2 packet type DUMP_PKG_HOME.
        
        Updated autopain environment: Added AC_CONFIG_MACRO_DIR(m4) and LT_INIT to
        configure.ac added -Im4 to Makefile.am fixed -L for usbstack.

        Added show UFO, Home, Target buttons in qngctrl which move and zoom to the respective
        coordinates. Implemented ufo movement but currently fails as ufo position is in [m]
        but home position is in [deg]. I really hate unit conversations! *grumble*
        Home position works. Ufo position works. We convert [m] back to [deg] and add this 
        to home.

        Extended "print position".

        Renamed all cs.out.* variables which are relative to home to cs.out.rel_* and adapted
        all code. All relative variables now have a rel_* prefix.

        Changed dumping of home position. We now dump 8bit integer and 24bit fraction bits. 
        Precision is enough now.

        Dumping of of home position works now. Changed result type to float, makes no sense
        to use integers on the pc side. Added controls to show home/ufo/target lat/lon.
        lat/lon fields now show correctly formated. Implemented GPS dump controls and
        removed old position tab which got replaced by the gps tab. Enable/disable gps map works.

        Changed NGCTRL2 dump command to switch off terminal shell output while dumping if dumping
        to controlling tty. Implemented dump_status(monitor) to check monitor for dumping.

        Changed qngctrl code to use ng_receive_impl() and ng_send_impl(). We now correctly handle
        shell access without echo. Poll once request for home is delayed by 2s to make sure it
        arrives on start. Implemented ng_send_cmd_impl() ng_receive_impl() in libng. 
        Changed ngctrl2 protocol to handle shells without echo. Changed ng_ngctrl2_request() to
        correctly handle shells without echo which makes it a lot faster. Bumped ngctrl2 version
        to 2. Implemented more error codes for ng_open_uart().

        Ralf added a better version of NGblc-4mini. Optimised power wires and layers.

        Qngctrl now fetches home position only once. Implemented handling of error codes of
        ng_open_uart().

        Renamed cs.in.Y_n to cs.out.Y_n as it's no longer an input (cs.in.magX/Y/Z are the inputs)
        but an output.

        Made gps map icons invisible on start. GUI components show "no fix" until the first home
        position gets aquired. Icons show when they get moved the first time. Icons get hidden
        when a home position of 0/0 gets set. Switched to Google Satellite maps and changed
        zoomlevel to 18. Storing last valid home position and automatically set view to last
        home position after start. Implemented a compass gui component.

        Implemented new NGCTRL2 packet type DUMP_PKG_COMPASS. libng now supports NGCTRL2 packet
        type DUMP_PKG_COMPASS. qngctrl recognizes NGCTRL2 packet type DUMP_PKG_COMPASS now and 
        sets the compass heading when it receives such a packet. Fixed initial view loading from
        stored last home position. Optimized uav icon movements. Disabled jump to buttons when
        no uav, home, target position. Implemented compass heading gui as number. Added 
        "set target" and "set home" buttons.

        Stefan added a bash script to the maintainer folder which creates deb-packages from
        source and uploads it to our PPA at launchpad. Expanded bash script for deb-packages, 
        allows to create packages from official releases and svn revisons. Updated debian patch 
        file for correct installation directory. Makefile now handles DESTDIR correctly, 
        glc_renderer.cpp uses the DATADIR macro as it should.

        Implemented partially working mini map in qngctrl. Minimap now shows up at the right
        location. Moved compass into map. Fixed qmapcontrol/googlesatmapadapter.cpp where
        GoogleSatMapAdapter::displayToCoordinate() was buggy and needed a fix. Map and minimap
        work perfectly now. GoogleSatMapAdapter now performs better as well. Seems the bugfix
        helped. Now showing cross cursor while "Set Home" or "Set Target" is active.

        Matze added HMC5883L to device table and added detection routine. Added FSM for 
        HMC5883L, including initialisation routine and print/loop commands. Fixed FSM and
        implemented device usage in amir-ng controller. Added calibration routine, scaling, 
        offset and removed prototypes.

        Implemented new shell commands "nav target", "nav target <lat> <lon>", "nav home", 
        "nav home <lat> <lon>" to inspect and set the target and home positions of the
        navigation algorithm. Remote tools will call these functions as well. They will not
        output answers when the terminal is dumping. Implemented new NGCTRL2 packets
        DUMP_PKG_TARGET and DUMP_PKG_NAVIGATION. Implemented out-of-order transmission of
        DUMP_PKG_TARGET and DUMP_PKG_HOME when target and home position changes. Implemented
        new NGCTRL2 packet types DUMP_PKG_TARGET and DUMP_PKG_NAVIGATION in libng. Setting
        target from gui works (gui->qngctrl->libng->ngos->ngctrl2->libng->qngctrl). Disabled
        set target button as long as no home position is known.

        Stefan removed INSTALL_ROOT in qngctrl Makefile.am, which lead to wrong installation 
        directory when trying to do a default install.

        Implemented new NGOS command "nav reltarget". Made "sim on" and "sim off" silent
        while dumping.

        Improved status bar messages in qngctrl. Now showing connection, dump, simulation, 
        logging, online and flightstate. Implemented home position setting and home position
        out-of-order packet on flightstate change from SPINUP to FLYING, making sure we have
        the starting position as home position and informed all clients.

        Fixed ng_ngctrl2_packet_poll() in libng not to use all cpu time. Made read echo buffer
        bigger for NGCTRL2 inititialze. This makes sure we do not have garbage at the beginning
        of a dump start. Made dump_start(), dump_stop() honor dump status of tty. If dumping
        stay silent. Multiple data-sets in one packet work now perfectly (happens when two 
        timer count to zero at the same time, eg. a double dump_once() request for example).
        Requested NGCTRL2 packet types get emitted immediately after 1ms instad of after the 
        configured interval.

        Ralf worked on NGblc-4mini and improved power paths. Added step down power supply. 
        Routing finished, print layout to be done. Improved power paths. Added step down power
        supply. Routing finished. Finished print layout, finished partlist. Added TxD, RxD
        support. Reduced battery measuring parts. Now using 1 oscillator for all Atmels.

        Moved flightstate names definition to dump.h, so that libng client apps can access 
        and use them. Moved flightstate enums to dump.h for clients to use. Fixed flightstate 
        name list and added missing flightstates. Moved definition of dump package names to
        dump.h so that client apps can easily access them. Cleanup in dump.h.

        Flightstate visualisation in qngctrl works. Added battery polling and visualisation 
        of battery in status bar. Implemented GUI controls for flightstate and battery voltage.

        Implemented new NGCTRL2 package type DUMP_PKG_INT_SCALING.

        Stefan changed autotools build of ng-tools: Calling qmake from automake Nakefile
        instead of configure. This allows to use variables such as PREFIX from configure. 
        Fixed target path, use BASE_PREFIX only too. Added getResourceFile function which 
        finds resource files such as the quadrocopter model or the QMapControl markers.

        Implemented new navigational display and displaying it inside the map in the lower
        right corner. Shows uav heading, target, deviation, target heading. Improved nav
        visualisation and made it all antialiased. Looks nice now. Improved data access
        functions of NavScene and improved visualisation. Added target heading calculation.
        Calculating target heading using the relative target + ufo position.

        NGOS will no longer allow setting of the home position while flying. Moved flightstate 
        checks and actions from ctrl_loopstep() to ctrl_flightstate_changes(). Fixed setting
        of home position when entering spinup flightstate.

        Implemented the new NGOS shell commands 'nav position-hold' and 'nav coming-home' and
        added an alias for 'print position' called 'nav position'. Rhese commands allow a user
        to initiate PH and CH from a shell. Made nav commands recognize dumping terminals and
        disable responses in that case. 

        Implemented new HW.compass.inverted flag. It turns the sign of two of the magnetic 
        field vectors effectively turning a upside-down compass to mathematically face upwards.

        Implemented PH + CH buttons in qngctrl and colorized fields corresponding to navigation
        view. Added target deviation arc to navigation view. Position hold/coming home controls
        work. Changed tile cache path to ~/.config/UAVP-NG/qmap which is persistent contrary 
        to /tmp. The navigation control now only shows a target pointer when a target is set. 
        It only shows the copter pointer when a home position is available and it only shows the
        deviation pointer & arc when we are doing PH or CH. Enabled/disabled respective CH/PH, 
        Goto Home and Goto Target buttons. Implemented action buttons "Set Home to Pos" and
        "Clear Target". PH & CH buttons now change texts when active. Implemented 
        flightstate_changed() and enabling and disabling the gps button whenever we see a
        flightstate change depending on the new flightstate. Eliminated NGCTRL2 packet type
        DUMP_PKG_POS_HOLD. Removed old debug code to switch on/off position hold, which got
        replaced by "nav position-hold". Adapted position-hold & comming-home behaviors to
        correctly send a TARGET packet when switched on and a NAVIGATION packet when switched off.
        Changed default zoom level of mini-map to something where one recognizes the surounding 
        area. Changed button press recognition code of normal map to use the left mouse button
        for target/home setting. Changed button press recognition code of mini-map to allow zoom
        in and zoom out of the mini-map using middle and right button. Left button on the mini-map
        still moves the normal map to that location. Implemented home-heading pointer in
        navigation control. Fixed update of mini-map when moving home, target, ufo. 
        Renamed "bluetooth" to "wireless". Rhe flag is needed for wi.232 as well.

        Matze fixed scaling of MK3MAG & HMC5883L.

        The amir-ng controller no longer resets the full controller state using ctrl_state_reset()
        but resets only its local controller state using ctrl_amir_ng_state_reset(). This makes
        sure that home and target information in cs.in/cs.out does not get flushed. Resetting
        target deviation & target distance when PH or CH is switched off. Sending NGCTRL2 home
        packet on first fix, when home gets set. Improved output of "nav position". Eliminated
        flightstate CTRL_FS_SPINDOWN. It was not used, we go directly from FLYING to LANDED. 
        Changed packet content of DUMP_PKG_NAVIGATION: we transmit angles as -16000..16000
        or 0..32000.

        Generalized navigation in amir-ng controller. Navigation routines now get a enum telling
        them where to navigate to. Currently we are able to navigate to the target and to home.
        Coming home works now.

        NGOS does no longer zero cs.in & cs.out in ctrl_state_reset(). No longer zeroing
        horizontal stick when vertical stick at max. Implemented new controller dependant 
        parameter "NAV.min.satellites". Its default value is 6. it configures how many
        satellites are needed until we store the home position, accept a "nav position-hold"
        or "nav coming-home" command. We do not navigate before we have enough satellites.
        Changed behavior actions "nav.position.hold" and "nav.coming.home" not to touch the
        target position. If you want to do position hold at the current location, you need to
        use "nav.store.target" first to store the current position as target and then trigger
        "nav.position.hold". The target position gets ONLY ever set by the user. Implemented
        new behavior action "nav.store.and.position.hold(on/off)" which allows the user to
        store the current position as target and the do position hold at that location. Made
        all navigation behavior actions honor NAV.min.satellites. 
        Added command "debug filter deg2m".

        Added Wooz's great new icons to qngctrl.

        Implemented number of satellites control in qngctrl.

        Implemented new math library called math/math-cobs.[ch] implementing Consistent Overhead
        Byte Stuffing. We use COBS to byte stuff our packet content when dumping, making sure we
        have no framing delimiters in the packet. libng does automatically COBS decode the packet
        content after framing.

        libng now outputs NGCTRL + NGCTRL2 versions to stderr on ng_uart_open().

        Fixed wrong longitude scaling (gps_lon_deg2m) in qngctrl.

        Massive revamp and refactorisation of ctrl navigation stuff: All general navigation
        stuff moved to ctrl-nav.[ch]. That module implements everything to handle and store
        home + target position. It has set methods for home, target, relative target, target
        to current position and it has action methods to activate/deactivate position hold and
        coming home. All set methods check for gps & enough satellites before executing their
        function. ctrl-amir-ng and actions use the general ctrl-nav api to manipulate 
        home & target.

        Implemented 10 new tunes for satellites detection beep output. Added 1min timer tick
        function ctrl_nav_tick_min(). Automatically playing sat tune as long as not enough
        satellites have been found. Implemented beeps up to 10 satellites. Will play the tune
        all minutes for now.

        Added DUMP_FLIGHTSTATE_CNT containing the number of available flightstates to dump.h.
        This allows to check for invalid flightstates.

        Implemented GPSMap::flightstateName() in qngctrl which checks the flightstate for valid
        values and returns a pointer to the flightstate's name or to unknown if the flightstate
        is not known. Now also initializing GPSMap::flightstate to LANDED. Fixed center of
        gps map.

        Matze fixed the HMC compass driver and added SVER in amir-ng for FC_HW based compass 
        rotation. Driver is ready for beta testing.

        Implemented a prelimary waypoint table: "show waypoints" works. Implemented new parameter
        type for int16_t called "w" for word. Implemented parameter setting for the new waypoint
        parameters shown by "show waypoints". Added conf_validate_waypoint_index(). Implemented
        waypoints data in global config set. Added new pointer "confwp" allowing easy access to
        the data structure. Storing home position, next waypoint and the waypoint data. Added
        zero defaults. Implemented prelimary "nav relwaypoint" command do inspect and set
        waypoints relative to home. Improved boot messages of i2c actor scan. Implemented
        prelimary "nav waypoint <rlat> <rlon> <rheight> <dwell> <action> <arg>".

        Moved float3232 cs.out.home_[lat|lon] to confwo.home.[lat|lon] and changed all code
        accordingly. We now have a persistent home position. Waypoints may be -+32km from the
        home position. Targets & waypoints get adjusted on home position changes. Keep in mind
        that the home position MAY NOT change more than +-32km for this to work! Implemented
        "nav pos2target". Implemented "nav clear" which clears all waypoints. Added Wooz's
        waypoint icons. Implemented waypoint icon loading. Setting and clearing waypoints in
        GPSMap works. 

        Waypoint adding works: In qngctrl as well as on the NGOS side. when a new waypoint is
        set, It's communicated from GPSMap to ngctrl using signals, which in turn uses NGCTRL2 
        to inform NGOS of the new waypoint to add.

        Implemented new packet type DUMP_PKG_WAYPOINTS. Moved typedef ctrl_nav_waypoint_t to
        dump.h and renamed to dump_nav_waypoint_t. ctrl-nav.g redefines the symbol
        ctrl_nav_waypoint_t. Moved ctrl-nav defines to dump.h so that they are available to
        qngctrl. Added dump once requests for DUMP_PKG_WAYPOINTS whenever the waypoints change.
        Added ctrl_nav_waypoint_action_name[] to ng.h. Only store first position after enough 
        satellites as home position if we do not have a home position stored. We will move the
        home position to the current gps position when we do a spinup.

        Improved stderr output on DUMP_PKG_TARGET packet in qngctrl. Fixed waypoint add trigger
        code, not to issue a add signal, when all waypoint slots have been used up.

        gen.daily.sh now also creates -serial.exe files of the hex files.

        Fetching of already configured waypoints on the NGOS side works. All configured
        waypoints show up on the map and the next free waypoint slot gets set accordingly.
        Clearing target when receiving a empty target packet from NGOS to keep in sync.

        The new button "Goto Waypoint" in qngctrl works and cycles the view trough all
        available waypoints. Button add waypoints now gets disabled when no more free waypoint
        slots are available. Changed colors for ufo location to orange.

        Added version number HW-0.23-mini to version.[ch].

        Implemented waypoint routing in NGOS, Introduced 3 new flightstates called
        CTRL_FS_GPS_WAYPOINT_REACH_FWD. CTRL_FS_GPS_WAYPOINT_REACH_REV,
        CTRL_FS_GPS_WAYPOINT_DWELL. These allow us to implement a new navigation algorithm 
        called NAVIGATE_TO_WAYPOINT in amir-ng. Depending on action and dwell time a NG will
        reach a waypoint, dwell for the requested time and then reach the next waypoint until
        there are no more defined waypoints. Cycling trough the waypoints may be done forward
        or backward depending on flightstate.

        Implemented missing uart1_putint().

        Fixed orientation of nick calibration (which was upside down) and fixed calibration on
        right edge which did not decrease by 5 as it should but only by 2. Calibration now is
        tested and works.

        Implemented new behavior actions: nav.fly.waypoints.fwd(on/off, reset yes/no), 
        nav.fly.waypoints.rev(on/off, reset yes/no), nav.store.waypoint(dwell_time, action). 

        Implemented low level functions: 
        ctrl_nav_fly_waypoints_fwd(restart), ctrl_nav_fly_waypoints_rev(restart), 
        ctrl_nav_set_waypoint_to_current_position(dwell_time, action, action_arg).

        Implemented new shell commands "nav fly-waypoints-fwd [restart]" and 
        "nav fly-waypoints-rev [restart]".

        Matze added temperature sensor support to 12Bit ADC.

        Extended qngctrl gui & gps map with "reach waypoints (fwd)" and "read waypoints (rev)" 
        including send signals.

        Implemented full two word command completion in NGOS. Improved command completion: now 
        atomatically adding a space behind the word if it was an exact match. Prefix command 
        completion now also for the first command word. Command completion is finished and fully
        functional. Implemented parameter completion (eg. tab after 2 command words). It will
        print the command description alongside with the full command string and its parameter 
        pattern. Command completion now honors TERM.mode which can be user/expert/api. Moved tab
        completion code to separate function. The stuff starts to become quite complex... 

        Made all GPS flightmodes echo success messages. Tested and fixed waypoint flying. 
        Waypoints are numbered 1..N, but indexes are 0..N-1. Waypoint navigation works. NGOS now
        plays a sound whenever reaching a waypoint before it starts dwelling (depending on
        waypoint action). When the dwell time is used up, it flys to the next waypoint. 
        "show nav" shows always the current state. Newly it also shows the relative next
        waypoint, should one be defined.

        Renamed "show conf" table to "controller configuration".

        Added Spida's Eagle files as ng-usb-r1.[sch|brd].

        Volker added folder for Gerber files, edited solder stop on top and bottom, created and
        checked Gerber files.

        Implemented toggle fly waypoints fwd/rev slots and actions in qngctrl. Waypoint flying 
        can now be enabled and disabled in qngctrl.

        Implemented NGCTRL2 protocol packet type DUMP_PKG_NEXT_WAYPOINT informing a NGCTRL2 
        client in the event of next waypoint changes.

        Implemented new NGOS command "nav next-waypoint".

        Setting and receiving of next waypoint in qngctrl works.

        Corrected "dump behaviors" and "diff behaviors" to first delete their slot and then add
        the behavior to restore exactly as before. Implemented "dump waypoints" and 
        "diff waypoints" and fixed naming convention in ctrl-nav.[ch].

        Next waypoint now is marked with a red circle in qngctrl if it exists.

        Volker added ng-bee.

        Stefan changed qngctrl not to crash if pictures are not available. Added all icons to
        Makefile. Moved icons to new directory also in source folder (this way the automatic 
        resource file finder works correctly).

        Timo added NGlight version with two 8pin picoblades, compatible to 0.22-mini and 
        camctrl pinouts.

        Fixed missing nick gyro value in NGCTRL2 packet.

        Ralf added a system.pri entry in qngctrl for libqwt that should work for qwt5 and qwt6 in
        path /usr/lib, changed Qt::MiddleButton to Qt::MidButton because my QT wants that.

        Added Wooz's newest selected target waypoint icon.

        Matze added new command 'init venus' to initialize a connected Venus GPS.

        Increased temporary packet buffer in libng.
        Increased temporary NGCTRL2 packet buffer size to make sure the size is big enough even
        when we have a transmission error and several packets do not get recognized.

        Moved selected target icon to a better position and moved its layer behind the waypoint 
        icon in qngctrl.

        Fixed altitude kalman filter. Fixed 'debug filter' command. Fixed M_xxx() defines which
        needed brackets around each argument, to make sure that an argument like f(2+2) will be
        used as (2+2)*x. Corrected behavior action ctrl.altitude.hold() to only activate when 
        not landed.

        Extended variable descriptions of controller amir-ng.

        Implemented our own autoscaling for certain graphs: Baro pressure and height get shown 
        using the new scaling. This makes sure, we always see sensible graphs. Coupled dump 
        checkbox of baro + height, both get transmitted in the same NGCTRL2 packet type.

        Implemented preference dialog window in qngctrl and rewrote all code to use it.

        Improved error handling in qngctrl: should an icon file be missing, it gets
        announced with a critical message box and qngctrl exits with status 1.

        Improved connect routine in libng: Whatever dump state NGOS is in, we are able to 
        recover and reconnect. No resets are needed anymore, should a client exit without
        shutting down the dump protocol. We always recover.

        Implemented closeEvent() in qngctrl mainwindow, allowing the application to gracefully
        shutdown, should the use press the close button. All simulations will be stopped,
        logging will be stopped, the NGCTRL2 protocol will be stopped and then the application
        quits.

        Fixed in-qngctrl browser, fixed link checking, fixed device path for click2flash. 
        No more exceptions on browser windows.

        We now ignore "sim on" when NGOS is not landed.

        Implemented cs.out.navT, which contains the navigational (AH - altitude hold) throttle
        influence in amir + amir-ng controller.

        Ajusted controller + hal qualities. 

        Fixed navigational control which did not show the correct waypoint.

        Extended NGCTRL2 poll API. Changed poll function to contain a max packet counter. 
        We no longer segfault when too many packets get received at the same time but
        return and the next poll will return the rest.

        Increased packet type array in qngctrl to 60 entries. This assures that we have
        enough space, even for a worst case 50ms poll. Fixed coupeling of dump height + 
        dump baro checkboxes. Added checkbox to 3ds model tab. It's coupled with the
        angle plot dump checkbox (eg. it dumps the same data packet and so needs to be
        switched on only once). Force parameter reload on connect in qngctrl.

        Fixed and adapted parameter configuration tab to NGCTRL2.

        Volker created a first hw-0.23-mini-r1 folder for upcoming changes.
        
        Removed QwtCompass from GPS Map in qngctrl. The navigational control is sufficent.


0.63	Bumped version number to 0.63.

        Refactored "uavpset commands" into uavpset.c. Refactored libng, splitted ngctrl stuff 
        into ngctrl.c. Cloned ngctrl subproject of ng-tools to ngctrl2 and made it compiling.
        
        Implemented 'api ngctrl-v2-list-types' and 'api ngctrl-v2-request <type> <intervall>'. 
        We are now able to dump in NGCTRL-V2 format.

        Extended libng with a prelimary ngctrl2 protocol support. The essential parts work.

        Ngctrl2 works for requesting gyro data with output to the console, 
        eg. "ngctrl2 -l -r reg:intervall".

        Finished NGCTRL2 printf parser. It now knows all packet types and is able to print
        all 11 packet types known today. Extended ng_ngctrl2_packet_poll() to return number 
        of parsed packets and a list of packet types received.

        Implemented "api ngctrl-v2-version". Current version is version 1.

        Switched qngctrl from NGCTRL1 to NGCTRL2. Dumping works wonderful.

        Implemented NGCTRL packet type DUMP_PKG_POS_HOLD which contains the position hold 
        target location. Implemented NGCTRL2 packet type DUMP_PKG_FLIGHT_STATE which contains
        the controller flight state, which also signals PH and CH. Implemented packet type
        DUMP_PKG_POS_HOLD and DUMP_PKG_FLIGHTSTATE in all NGCTRL2 parsers.

        Implemented dump_ngctrl_v2_dump_once(dump_pkg_type_t type) using negative intervals
        for asynchronous NGCTRL2 packets.

        Behavior action nav.position.hold(on|off) now automatically sends a single 
        TUNE_NAV_POSITION_HOLD and DUMP_PKG_FLIGHTSTATE NGCTRL2 packet, on all terminals
        where NGCTRL2 is running. Implemented dump_ngctrl_v2_dump_once(DUMP_PKG_FLIGHTSTATE)
        wherever the flight state changes. Also added dump_ngctrl_v2_dump_once(DUMP_PKG_POS_HOLD)
        where necessary. Splitted NGCTRL2 debug packet into two packet types.

        Improved libng's ng_ngctrl2_initialization() by reading answer to init commands. 
        Improved ng_ngctrl2_request(), now reading answer to command before returning.
        Improved configuration parsing in qngctrl. 

        Added new controller quality CTRL_QUALITY_DEPRECIATED and changed quality of controller
        amir-ng to CTRL_QUALITY_FLYING. 

        Replaced CTRL_QUALITY_* defines with typedef enum ctrl_quality_t.
        Replaced CTRL_FS_* defines with typedef enum ctrl_flightstate_t.
        Replaced CTRL_SCALING_* defines with typedef enum ctrl_scaling_state_t.
        Dropped CTRL_CONTROLLER_* defines, they are not used.
        Made elements of ctrl_args_t const.

        Reimplemented out-of-order NGCTRL2 packet DUMP_PKG_FLIGHTSTATE. We now check for new 
        flightstate in ctrl_loopstep() and also set the boolean variable
        ctrl_flightstate_changed accordingly.

        Implemented error message in ngctrl2 should no command flag be specified on the 
        command line.

        Pimped qngctrl: Introduced dump interval and dump enable checkbox per scalable plot.
        Removed old global dump interval. Lowered minimal dump interval to 20ms.

        Implemented dump once for NGCTRL2 by using an negative intervall of -1. 
        Fixed typos in device.c comments.

        Fixed all "diff" commands. Crazy but true: 
          (conf_pointer_t)&default_global + offset != (conf_pointer_t)(&default_global + offset) !!!
        Do you see why? ;)

        Improved 'diff all': now showing NGOS version and revision in comments.

        Fixed default behaviors, there was a index error.

        Implemented new behavior ctrl.wobble(amplitude, periode). It will wobble your throttle
        within the given amplitude and periode. Make sure not to use periodes < 500ms or your
        NG will gain height!

        Implemented shell warning when enabling simulation with HAL "none" and when enabling
        actors with HAL "none" saying that this HAL does not produce actor data and can not fly.

        Improved timeout handling in libng's ng_send() and ng_receive().

        Implemented ctrl.wink.nick(amplitude,period) and ctrl.wink.roll(amplitude,period). 
        They modulate a sinus with given amplitude and period onto nick and roll sticks. Untested.

        Implemented behavior condition while.flying.rc.pot.binary(). Added a flight state check to
        ctrl.wobble() and ctrl.wink.nick/roll(). All three behavior action will beep an error
        should they be issued while the flightstate is landed or spinup.

        Fixed scaling for ctrl.wink.nick(amplitude,period) and ctrl.wink.roll(amplitude,period). 
        Amplitude is now 8bit rc (will be scaled to 12bit) and period is given in [100ms].

        Matze fixed LED signals for receiver detection, Fixed register name, implemented blinking
        (detected receiver, but no valid signal) for dsl dual channel signal detection, fixed
        whitespaces, fixed blink frequency.

        Fixed Ierr for integral and HH PID. 
        Correctly recognize ranges: nick[-16000..16000], roll[-8000..8000], yaw[-16000..16000]. 
        This assures that Ierr will be correct for >90/>180 degree cases.

        Ralf changed serial port flags in libng to work better with bluetooth, implemented 
        different bluetooth flag for Bluetooth UART devices in libng and qngctrl.

        HW-0.22-r2-mini has been added to the hardware folders.

        Implemented new behavior conditions when.landed.rc.stick.left.edge(edge) and 
        when.landed.rc.stick.right.edge(edge) which trigger when respective stick is at 
        edge [all|top|bottom|left|right].
        Implemented new behavior action ctrl.calibrate.acc.by.stick(stick) where stick 
        is [left|right]. It allows us to calibrate the acc vector using the rc sticks.

        Matze implemented device detection for PCA9685. Implemented 'set pca9685 [channel] [value]' 
        and I2C FSM  to controll 16 pwm outputs for bling bling. 
        Implemented 'set pca9685 [channel] [value]' and I2C FSM to controll 16 pwm outputs
        for bling bling. Implemented action actor.pca9685.light to controll the pca via
        behaviors and changed terminal command from 'set' to 'tune'. Also added the old 'set led' 
        command to the new 'tune' command group.
        Bugfixes & new action actor.pca9685.dim.light. Implemented action actor.pca9685.set.scheme,
        so set predefined color schemes on PWM channel 0-11 via behavior. First implementation of
        actio actor.pca9685.set.sequence, needs to be tested.

        Implemented new behavior action ctrl.hh([yes|no]).

        Added flight state CTRL_FS_LOOPING and fixed amir and amir-ng controller to fly should
        they see an unknown flight state.

        Implemented behavior action ctrl.flip(front|back|left|right).

        Michael fixed battery voltage calculation of print battery cammand. Replaced calcultion
        in ctrl.c against function get_battery_voltage.

        Added new files ctrl_amir_ng_flip.[ch] containing code for the new flip implementation
        depending on flight state and added files to Makefile.am. The amir-ng controller now 
        calls flight state depandant flip functions.

        Implemented prelimary flip code. Do not use, you will trash your copter currently!

        Patched qngctrl to work with qwt6

        Implemented rate limits. Can be enabed with the global parameter CTRL.use.rate.limit.
        We need to check out angular rate limits in-flight.
        
        Created gen.daily, a small script to automatically generate daily builds with and
        without usb bootloader.

        Replaced when.landed.rc.left.stick.edge(edge) and when.landed.rc.right.stick.edge(edge)
        with when.landed.rc.stick.edge(stick, edge).

        Improved "print acc".

        Moved ACC[nick|roll|yaw]corr from conf to global and gave them new meaning. They are 
        set by ctrl.calibrate.acc.by.stick(stick) and represent the addition calibration used 
        to hoover on the spot. Introduced new ACC[nick|roll|yaw]cal parameters which represents
        the default absolute calibration of the ACC which gets set by 'calibrate acc' and
        'calibrate all' as well as by left stick top right. Both parameters get calulcated
        into the used ACC value ACCresult[]/ACCmean[].

        Implemented behavior condition when.rc.stick.edge.and.pot(stick,edge,pot). It now zeros
        rc values in HOOK_INPUT_RC making sure the copter does not nick/roll while the pot is 
        triggered.

        Hotfixed qngctrl1: The switch from qwt5 to qwt6 seems to have broken the autoscaling
        feature. Dunno why... :( I have disabled autoscaling by default for now.

        Added missing HAL parameters for HAL x8X.

        Updated manage_licenses.sh script & foreign friends db. 
        Added license to build_arm-toolchains.sh script.
        Updated all licenses: added website url, changed copyright year to 2011.

        Refactored actor_scan_actors_task() to try to scan the i2c bus a second time, should
        it not detect devices on the bus.

        The behavior condition when_rc_stick_edge_and_pot((stick, edge, pot) works landed and in 
        simulated flight.

        Added #ifdef around ctrl.flip(). It's not yet consumer ready. You need to define 
        BEHAVIOR_ENABLE_FLIP in behavior.h for ctrl.flip() to be available.

        Reintegrated Matze's branch: Switched PCA configuration to own config struct, implemented
        'diff pca','show pca' &'dump pca'. Also added PCA support to 'diff all' & 'set <key> <val>'.
        And last but not least added, default value for PCA channels in config struct, which will
        be set on startup.

        Reintegrated Florian's branch: Initial commit of spektrum support. Improved scaling - works
        now with 125% travel adj. Needs some fine tuning.

        Matze fixed device detection and added spectrum receiver to IDX list,
        #define DEV_IDX_SPEKTRUM_UART0 63, #define DEV_IDX_SPEKTRUM_UART1 64, also extended dirty 
        register for the PCA from 16 to 32 bit to force the statemachine to a second write of a PCA
        channel value, also added a hysteris for the behavior_action_actor_dim_pca9685 action.

        Implemented two level in-flight calibration: moving the calibration stick halfways increases
        acc vektor by one, moving the calibration stick fullway increases acc vektor by 5.

        Changed default behavior rules to include the new style calibration: 
          05  when.rc.stick.edge.and.pot(right,any,0) => ctrl.calibrate.acc.by.stick(right)
        dropped old style calibration from defaults.

        Corrected POS.Kalman.Baro.R default value so that the height kalman filter works correctly.
        Now guesses at least the right height. Acc gets fused into baro height. Still need to tune this.

        Fixed new style 2 step calibration to only trigger once +1 when moving the stick full way. 
        Full way movement now results in +-5 (eg. +-1 and +-4).

        Fixed 'show stats' when using a mk3mag. It did not show compass statistics.

        Implemented new global parameter called 'CTRL.compass.corr' allowing to turn the measured
        compass value by a certain angle. This allows us to attach the compass in arbitrary 
        orientation.

        Implemented new statistic output: cycle mean frequency. Implemented new controller input
        state information: cycle_period, cycle_hz. Controllers need to handle cycle_period within
        integration code now. This allows us to use dynamic cycle intervals...

        Fixed 8bit->12bit scaling in behavior action ctrl.hoover(), ctrl.ascend() and ctrl.decend().
        The argument was not converted to 12bit.

        Makefiles in qngctrl now check for QWT5/6 libraries and configure library usage accordingly.
        Added QWT5/6 compatibility #ifdef's.

        Matze added pca9685 burst transfer for testing, changed PCA Device ID to 0x80, changed
        single channel to four channel burst mode (not yet stable) and added 'loop pca9685' for
        real time channel overview. Fixed pca9685 ID for pcb rev2. Fixed PCA9685 device index.

        Changed controllers amir and amir-ng to support dynamic closed-loop cycle times. We now
        use cs.in.cycle_period to integrate correctly, even when we skip a closed-loop cycle and
        controller needs to integrate over 2ms or more.

        Improved "loop rc", "loop dsl" and "loop rc", "loop ctrl", "loop adc10", "loop adc12", 
        "loop adc16" and "loop adc24", "loop compass", "loop attitude", "loop acc", "loop position"
        and "loop mk3mag". They print their results all 512 loop cycles now.

        Fixed behavior condition when.rc.pot.tristate(channel, button). Now works as expected.

        HW-0.22-r3-mini has been added to the hardware folders.


0.62    Bumped version number to 0.62.

	Added 4800baud as valid rate to sb ctrl. Allows use of standart GPS receivers.
	Renamed variable f_verbose to ng_f_verbose to avoid linking errors for libng 
	under Win32.

	Volker extended the rc-controller software to support the external rc-controller
	pcb of the NG-mini. Servo PWM -> OK. Tilt compansation -> OK. Fixing small helptext
	failures and added a lot of documentation. Port configuration corrected. 

	On the RCC: instead of cyclic, OCR1x is now updated during COMPx_vect.

	Reactivated sw pwm for servo 2,3,4.

	Attention! On HW0.22 the servo naming is - lets say - not ok.
	The software is 0 based, schematic based on 1 and the PCB labels are just wrong.

        To understand:
	 * SW  PCB SCHEMATIC
	 *  4   1   5
	 *  3   2   4
	 *  0   3   1
	 *  1   4   2 
	 *  2   5   3

	Changed all Makefile.am & configure.ac: We no longer generate static libraries
	per subfolder but instad compile all objects to the src/fc/.obj folder. Changed
	all Makefiles.am to contain specific implicit rules to compile .c to .o using
	that new .obj/ folder defined in configure.ac as OBJDIR. Dependency tracking still
	works (now). Make no longer compiles all objects as seen in the first try.

	Added Volker's hw-0.22-mini PCB and gerber files. Added schematics and board files
	for Dietrich's two and four layer drawings of the quax blc 4428 BLCs. Added the new
	CMOS camera (WVGA) design from Andreas.

	Added functions and behavior actions to set ports and play pattern on IO pins on 
	GP SPI1 connector, Added a special shell command 'rfidcmd'. Corrected a 16bit servo
	error in behaviors. Corrected servo PWM for tilt compensation to work again. Moved 
	rfidcmd and changed action to set behavior variable, which makes it possible to 
	connect actions by behavior definitions, added behavior condition var.equal.clear().

	Tim ported the PicoC library to NGOS. Implemented missing stdlib function. Added 
	'interactive' command to shell. Implemented --enable-picoc to activate picoc based
	behavior programs. Reserved flash sector 25 for picoc code.

	Added -Wno-portability to AM_INIT_AUTOMAKE(). This way we don't get any bugging 
	GNU make portability warnings which do not interest us anyway.

	Reverted the $(OBJDIR) change! NGOS did not startup anymore! We need to find out why
	r5645:5665 does break the NGOS boot process. It seems that linking with $(OBJDIR)/*.o
	instad of linking static libraries strangly does not work out as expected.

	Added tools/toolchain/build-arm-toolchain.sh which is able to fetch and compile an
	ARM toolchain fully automatically. Please note that current NGOS trunk has trouble
	with startup when being compiled with a gcc 4.5.x toolchain. It seems to be an issue
	with 'struct reent'. It seems that gcc 4.5.x with NEWLIB does not correctly setup
	the reebt structure. Found note on "Use _REENT_INIT to initialize the reent structure
	of NEWLIB".

        Added Gerber files for the new Mini-NG. Added Gerber files for CMOS_camera_WVGA.

        Fixed bug in HAL output for hexa HAL, as reported by MacNorth. The reference in the
        hal_list[] table in hal.c was wrong. Corrected.

        Initial import of Nabil's FPGA eagle files.

        Ralf adjusted RC_SUM_MIN_SYN_PULSE to recognize Jeti MK II Receiver. Ralf also added the
        new HW_ID for VER_0_22_mini, changed LED addresses depending on HW_ID.

        Implemented HIC SVNT DRACONES. Fixed error in version.h.

        Added new HW-0.22-mini PDF files.

        Reverted Tim's picoc changes (except the fixes to lpc2148-rom-bl.ld and lpc2148-rom.ld).
        We decided that it uses too much cpu power and we think we will need to build our own
        compiler which generates precompiled binary executable code instad of a picoc interpreter.

        Hopefully fixed ctrl_input()'s version checks for hw-0.22-mini. The code did not yet differ
        between hw-0.22 und hw-0.22-mini. One needs to adapt all SVER() switch checks for a new 
        hardware version type, as these do not match using > or < operators.

        Fixed detection of S3D DSL receivers and of MLINK receivers connected to uart0/1 on LPC:
        some #ifdef checks were broken.

        Fixed missing symbol when S3D is not enabled. Thanks to Dracos-Carazza for discovering the 
        problem.

        Made sure that a change in terminal_const.h will recompile terminal.[ch] making sure the
        changes to the header file will be included without a 'make clean'.

        Added mini-ng schematics as pdf and png to release script.

        Implemented the commands "diff conf", "diff globals" and "diff hal". All of them show the
        CHANGED parameters compared to the basic default configuration.

        Printing of a behavior rule is now modular. Dump and list behavior functions call it.
        Implemented 'diff behaviors'. And now, that we have a diff for conf, globals, hal and
        behaviors implemented the new command 'diff all' which will show everything changed in
        all configurations in a form usable for easy copy and paste.

        Removed "HW.HAL" from HAL configuration. it gets shown in "show globals". This way it will
        not show up two times in "diff all".

        Implemented shell comments. Command lines beginning with "#" will be ignored.
        Added comments to the command "diff all", "diff conf", "diff globals", "diff hal".

        Added a version check for HW_0_22_mini: we have no sensor board on the mini.

        Fixed "show version" to only show FC-HW version and no SB-HW version for the Mini-NG, 
        as we do not have a sensor board on the Mini-NG.

        Implemented --enable-cam-ctrl for the rc-controller. Enabling it will result in a
        cam-ctrl hex file for the Mini-NG.

        Added HW-ID for the Mini-NG-experimental.

        Small RTC fix for the Mini-NG-experimental. Using correct function attributes for 
        rtcISR now. Proven to boot on HW-0.22, HW-0.22-mini and HW-0.22-mini-exp.

        Fixed command "behavior add" to accept multiple spaces between behavior condition and 
        action. Fixed terminal not to output the arguments two times when a unrecognized command
        gets entered.

        Added version check for hw-0.22-mini-exp in ver_init() as the SB HW-ID ADC input is open
        on this hardware revision. wWe now set the SB HW-ID to the FC HW-ID if we detect a 
        hw-0.22-mini-exp FC.

        Dropped unneeded openocd40-jtagkey.cfg and openocd40.cfg. The new OpenOCD-0.4.0 config
        script conf/jtag/openocd40-lpc2148-amontec-unix.cfg sources everything it needs by itself,
        no need to hardcode such stuff. OpenOCD-0.4.0 works when using --enable-openocd4 and
        pointing configure to a openocd4 script file. The default is an Amontec JTAG script file. 
        We need to replace --enable-openocd4 with a version check of the configured openocd binary,
        no need for a configure switch for that.

        Renamed hw-misc/cam-controller to hw-misc/mini-cam-controller.

        Ralf fixed camera attitde control again, hopefully for ever.

        Fixed configure: it looked for openocd40.cfg which no longer exists and is unneeded. We 
        have single file jtag configurations, containing all oocd script includes and the flash-script
        needed to flash.

0.61    Changed all rc channel related stuff from 8bit to 12bit. Scaling
        rc-sum from 8bit to 12bit, scaling dsl from 10bit to 12bit. Already
        tested dsl on lpc and rc-controller. It works. 

        Changed RC.fact.[nick|roll|yaw] to 4, 4, 5 to compensate. Changed all
        RC signal related variables from 8bit to 12bit.

        Michael added an m-link telemtry parser. Implemented a channel array
        of struct which allows simple adding of telemetry variables.

        Added "sb.uart.baud" NGPP register for sb-controller. Can not be used
        to change baud rate for now, as this need a "conf store" and "reboot".

        Ralf corrected display in print dsl and loop dsl for 12bit values.
        Corrected rcsum with 12bit values.

        Added windows executable for lpc21isp.exe to trunk.
        Fixed release.sh to add lpc21isp.exe to the binary release.

        Fixed openocd config file related bug in ngos usb bootloader.

        Fixed RANLIB problem in lib/nmeap-0.3 spotted by Nabil: configure.ac
        now exports RANLIB and AR with correct arm-elf- prefix. Added 
        Makefile.am in lib/nmeap-0.3 to make sure the exported symbols are 
        available in Makefile.

        Fixed HAL quadX for controller amir-ng. cs.in.w[NR]_sens were not 
        turned by 45 degrees. Also fixed HAL quadR, quad45 and x8X for amir-ng.

        Michael added support for olimex-jtag (currently hardcoded script and 
        define in Makefile). support for _sbrk, hacked into main.c, will move
        to syscalls.* later on.

        Eliminated cs.in.w[NRY]_b and adapted all controllers and HALs.
        Eliminated cs.in.w[NRY]_raw and adapted all controllers and HALs.
        Eliminated cs.in.a[NRY]_b and adapted all controllers and HALs.
        Please test all controllers and HALs extensivly!

        Implemented CRC checksums for config slots to make sure we never load a 
        corrrupted configuration. CRC checksum gets calculated and stored inside
        the configuration slot when storing the configuration. Loading of a slot
        will only be done, when the contained CRC checksum matches the newly
        calculated one.

        Switched rc-ctrl dsl from 2x 5-channel ngpp requests to 5x 2-channel 
        ngpp requests. Restructured i2c0_input_prepare() for rc-ctrl as a switch()
        statement (resulting in only one % operation instad of several) and changed 
        mpx code to do 5x 2channel reqeusts similar to the dsl code. 

        Corrected version comment. We need R25 = 7.25 to get 400mV.

        Adapted default hover throttle to new rc range (12bit).

        Fixed small bug introduced with --enable-rc-s3d: two of the c files did 
        not pick up AM_CFLAGS and so did not see the -DUSE_S3D_DSL. Fixed 
        rc-controller problem when using s3d on uart1 and dsl on uart0.

        Stefan added autoreconfig to the maintainer release.sh script after 
        patching configure scripts with svn revision number (avoids missing 
        REVISION definition)

        Changed release.sh to check for exit codes of run programs and raport 
        problems found. It now also checks if the work folder already exists and
        contains a valid subversion working copy. If so, it will only revert and 
        update that WC instad of doing a fresh checkout. Now checking installation
        folders beforehand and deleting existing folders found.

        Update INSTALL documentations, synchronized sb/rc-controller Makefiles.

        Andreas added an untested tricopter HAL. It's the first HAL using a servo 
        besides the i2c actors. The HAL is untested and marked as 'only for test 
        purposes'. Integrated the new HAL in the relevant tables in hal.c.

        Added conf file for OpenOCD USB JTAG adapter, changed debug level to d2
        for jtag flashing.

        Ralf changed default dump interval and timer range.

        Adjusted RC.fact.xx with factor 10, default is x10.
        WARNING to all beta testers: adjust RC.fact.xx settings!

        Added Marc's new flat-8 okto HAL called 'f8' and 'f8X'. Marked them as
        'only for testing purposes'. Fixed small typo in rc device names.

        Ralf fixed a bug in amir-ng HH mode, HH mode now flyable but flips at 
        90 degree, still in testing.

        Fixed warnings in make distclean target of ngos. Extended release.sh to
        support --source-release and --binary-release at the same time.

        Multiplied default values for rc_sum_jitter and rc_yaw_jitter by 16 as
        we now use 12bit rc values. Fixed typo in command help. 
        Fixed rc_sum_jitter to 12bit.

        Fixed release.sh so that it does not mix windows and linux cli binaries
        in one folder.

0.60    Tim ported libng to Windows. 

        Michael fixed 'api ngctrl-dump' command. Arguments are working properly now.
        Added HW.led-swap which allows to swap the LEDs (left<->right). Optimzed 
        ads1255 handling. Switched to continues read, which elimates one FSMstate
        and a NOP delay within the ISR. Added a RESET command at init of ADS1255.
        The reset starts selfcalibration and ensures proper startup. Prepared eeprom
        conf storage, similar to sb controller, not yet finished.

        Amir changed controller amir-ng and switched the angle conversation for nick 
        and roll: nick (pitch) now correctly has range -90..90 degrees as it's coming
        from a asin().

        Amir implemented "HW.gyro.scaling" allowing to scale the gyro measurement in
        promilles. This looks very promising! Be sure to use qngctrl to make sure
        gyro integration has identical scaling as the acc (eg. verify that when pitching
        for 45 degrees the reached angle in qngctrl is reached and hold like a plateau
        and that the acc does not have to pull the integral somewhere else!).

        Changed ACC_MEANCNT from 128 to 32. The delay was too big and irritated our
        filters. No need for such a large mean. Gyro scaling now works and we have 
        wonderfull angles.

        Timo implemented optional usage of openocd 0.4.x configurations (instead of
        openocd-0.3.x). openocd-0.4 configuration files will be used when configure
        is called with --enable-openocd4 . 

        Fixed small jtag flash problem introduced in r4823.

        'conf store' on RCC is working now. Michael finished command 'edit servo [0..4]'. 
        settings can be changed with keyboard. zeropos, lower limit, upperlimit, zeropos
        and direction. So far only variables are written.

        Implemented new controller parameters KalmanDCM_Corr_weightNR, 
        KalmanDCM_Corr_weightY for controller amir-ng. The decide on the weight of 
        the two corrections calculated (nick/roll-correction and yaw-correction). 
        Activated compass. Compass now points towards north with angle 0. Compass yaw
        drift stabilization with attitude compensation seems to work. Optimized compass
        yaw drift compensation: only calculating new correction every 20th cycle.
        Splitted calculation into 3 parts, each done in a separate cycle. Added 
        cs.in.Y_n calculation so that old compass commands work.

        Moved location of CTRL.use.* parameters in show conf in controller amir.

        Lowered ACC_MEANCNT to 1. we do not want any delays.

        Implemented three separate scaling parameters HW.gyro.scale.N, HW.gyro.scale.R,
        HW.gyro.scale.Y for gyro scaling. Please take care! Gyro scaling is most
        important for good performance of the filters! Be sure to check qngctrl and
        make sure that gyro integration is scaled exactly the same as the guessed
        angles! You can verify this by moving your NG from attitude 1 to attitude 2
        while checking that the angles 'jump' from angle 1 to 2 and do net get pulled
        into any direction afterwards, meaning you draw "plateaus" in qngctrl's graphs.

        Extended maximal shell command line length to 160 characters.

        Ralf implemented new behavior conditions: when.rc.sticks.both, 
        when.landed.rc.sticks.both, when.rc.sticks.both.delay,
        when.landed.rc.sticks.both.delay. cleanup in stick behavior conditions.

        Many improvements in the amir-ng controller. Attitude and orientation
        essentially work, also with attitude compensated compass support. GPS
        position estimation works as well using 3x Kalman filters guessing
        position and velocity. GPS navigation tries to calculate the deviation
        angle to the target position... see debug output.

        Extended qngctrl to support a dump intervall in [ms]. It can be configured
        using the GUI and gets stored with the other parameters in ~/.config. 
        Replaced the nice copter model from Wooz with a simple tie flighter model
        which while not looking as sexy as the previous model at least turns
        correctly around all three axes. So us to trigger
        a behavior action by hand from a shell. Added alias 'do' for 'behavior do'.

        Impe second system.

        Fixed GPS tick for statistics. Now correctly checking gps meta data and ticking

0.59    Added missing behaviors 30-40 to default settings. Fixed typo in behavior
        description.                                                             

        Using signed fixpoint datatype for gps positions on the SBC. Implemented
        binary fixpoint value for longitude/latitude. Cleanup in SBC print position
        command. Bug fix in speed parsing on the SBC. Green LED on the SBC represents
        hearth-beat.                                                                 

        Enabled ACC validation. Always validating if aN or aR are < 100. atan2() 
        is near zero anyway in that case. Lowered ACC.valid to 125 which represents 
        0.125g.                                                                     

        Applied Nabil's patch: We are now checking the timer value and we mark the
        rcsum receiver as disappeared when we do not receive any irqs within 200ms.

        Stefan added position fields to NGPP and fixed/extended NGPGG debug commands
        to 32bit                                                                    

        Implemented prelimary ACT S3D DSL support. Status and signal packets are
        understood now (except for the 0x1E packet type which is TL812 encoded, 
        does someone know what TL812 could mean?). A new command 'debug dsl' has 
        been impemented and shows the last commands and last signal data. Extended 
        the device table with ACT S3D devices on uart0/1 and on dsl0/1. Extended   
        device table with nmea gps on SBC which has been made working by Stefan.   

        Implemented behavior action rc.clear.bearing() for Darkriver and similar 
        minded folks who want to reset their bearing calibration before each start

        Fixed version on the RCC which was truncated by a float/preprocessor problem.

        Fixed 32bit NGPP transfers. Code cleanup in ngpp_values(): now using one 
        memcpy() instad of several in a loop. Implemented a NGPP calibrate register
        on the SBC. Implemented a new shell command called 'calibrate compass' which
        uses NGPP to issue a calibrate command to the SBC. We do not yet display the
        calibrated limits. NGPP initated compass calibration works and correctly    
        signals calibrated/not-calibrated state using the leds and the device table.

        Implemented distinct devices for calibrated/uncalibrated compass.

        Removed MM3 spike handling for now.

        Implemented HW.uart0.bootmsg and HW.uart1.bootmsg global parameters.
        Implemented behavior action ctrl.set.bat.minimum(x).                

        Refactored compass_calibration_task() and moved stop condition independant
        code to compass_calibration_step(pid, end). Created a second task called  
        compass_ngpp_calibration_task() which uses the same compass_calibration_step()
        function with a different stop condition.                                     

        Fixed device table indexes.

        Updated cs.in structure for efficient gps data format. Now copying GPS data
        from SBC to cs.in structure. The command 'print position' command supports 
        the new fields. Fixed gps action to work with GPS connected at the SBC.    

        Implemented 'print time' and 'print date' showing GPS date and time.
        Enabled gps track for sensorboard gps. Implemented a 'loop position'
        command.                                                            

        Moved device activation from fsm_busscan to calling userspace context for 
        I2C0 and I2C1.                                                            

        Implemented ACT S3D DSL in rc-dsl.c with polling commands and a new parser
        for the new protocol called s3d-parser.pl. Implemented ACT S3D DSL on     
        the RCC.                                                                  

        Ported kalman1d-float3232.c to kalman1dpos-float3232.c. Tried to change 
        the single integrating Kalman filter to a double integrating filter by  
        analyzing it's internal workings and substituting dt by dt2 everywhere. 
        No idea if this is mathematical sound... ;)                             

        Implemented a prelimary GPS controller: Now using a two kalman1dpos Kalman
        filters to filter latitude and longitude and fuse it with the two times   
        integrated acceleration values. Implemented "debug amir-gps pos",         
        "debug amir-gps ph", "debug amir-gps kalman-long" and                     
        "debug amir-gps kalman-lat".                                              

        Improved position Kalman filters. Implemented cs.in.gps_new (signals when
        new GPS data is available) and ctrl_gps_position_tick. Introduced 3 new  
        controller variables for the position Kalman filters.                    

        Implemented the command "reboot" and extended kalman1dpos_float3232_dump()
        to show the Kalman gains.                                                 

        Extended ngctrl dump protocol with GPS lat/long and guessed lat/long.

        Now parsing NMEA sentence to temporary variables to avoid transmission
        of unfinished parsed data. Now useing predict time delta for position 
        Kalmann dt which works a lot better.                                  

        Implemented new ngctrl dumping in libng and extended qngctrl with a
        position tab for GPS debugging. Now sending position in > [cm] precision.
        Extended the ngctrl protocol with a checksum                             

        Changed crt.s to point IRQ and FIQ handlers to abort slots. This should
        make the system reboot instad of hang should the IRQ or FIQ interrupt  
        vector be called. Introduced 2 new abort types to mark these cases.    

        Improved the output of the commandz "abort regs".

        Implemented new Makefile target called 'fc-debug-jtag' and 'debug-jtag'.
        Re-enabled IRQ_Routing() and changed it to return immediately. This     
        should get rid of our spurious interrupt problem as the VIC will generate
        a non-vectored interrupt when he receives a vectored one exactly in that 
        moment when the interrupt gets disabled.                                 

        Implemented spurious interrupts statistics in "show stats". The command 
        "reset stats" now also resets the spurious irq counters.                

        Implemented GPS spike filter. We do not allow more than 5m/s change which
        is aequivalent to 200km/h. Made GPS data fetching dependant an           
        dev_detected_byidx(DEV_IDX_SBCTRL_GPS).                                  

        Changed ctrl_input() to use ngpp_values() instad of ngpp_value() which 
        is faster. Activated all SBC tests.                                    

        Fixed led readout bug (position/compass led toggle each other now).
        Implemented new field "newdata" to announce new gps data. Copy data only
        if all sentence are parsed. Lock position data to avoid race conditions 
        with ngpp.                                                              

        Eliminated several possible race conditions for uart0 and uart1.

        Fixed "debug ngppslots" to correctly display unknown NGPP slot status.
        Implemented "debug nggppusage" which counts the NGPP slots usage in the
        last 100ms.                                                            

        Splitted ngpp_register_read() for lat/lon into two single 
        ngpp_register_read() for lat and lon separately. Splitted 10 byte DSL 
        NGPP requests to RCC into two 5 bytes requests.                       

        Revamped ctrl_dump(): it no longer uses the NEWLIB layer's write()
        function to dump data, but outputs directly into the buffers of the 
        respective monitor.                                                 

        Enabled GPS altitude parsing, announce new data if new RMC sentence
        data are available. Update position filter when new position data are
        available. Expanded "debug amir-gps pos" command.                    

        Found the integral problem: Our kalman initialization fix was - trough 
        correct - also the problem. Initializing the diagonal elements of P with
        a real float3232(1) instad of 1 results in the problem. Reverted the    
        change for now, until we understand what's going on. This way we have   
        our precision back.                                                     

        Implemented 'debug amir-kalman kalman-[NRY]' to debug the Kalman
        initialization problem.                                         

        Fixed DSL0/DSL1 problem Ralf found. Now using the defines 
        SC_MONITOR_UART0 and SC_MONITOR_UART1 to identify the monitors.
        DSL data part 1 and part 2 get read in different cycles now.   

        Implemented a global cycle counter in cs.in.cycle. It counts from 0 
        to 999. This will allow us to get rid of all those local cycle counters
        used.                                                                  

        Added ubuntu qwt support for qngctrl.

        Added debug command for exact float3232 multiplication.

        Revamped uart.c: Now using makros to disable/enable the uart's TX IRQ.

        Removed dead code. Removed non working baudrates.

        Removed the branch to 0x00000000 in abort_reboot_callback() and let the
        watchdog do the reset. For some reason the inline assembler command does
        not work with Mario's toolchains. Regarding a Keil doc. a reset via the 
        watchdog should therefore be favored.                                   

        Implemented gps movements simulation hack. It's dirty code, don't puke.

        Avoiding a 64-bit division (long long), it wasn't needed on the SBC in 
        compass.c (32-bit was enouth). Found a solution with bitshift was possible
        for GPS position. Fixed small bugs in SBC's configure.ac, we now generate 
        a map file.                                                               

        Fixed servo settings description. 

        Improved SBC locking by disabling interrupts. Implemented configuration of
        UART on SB-Controller (solves ticket 180).                                

        Moved all functions from armVIC.c to armVIC.h as "static inline". This will
        speedup the disable/enable-interrupt calls.                                

        Rewrote UART0 support to use a ring buffer without disabling ANY interrupts. 
        Hopefully the new code is race free now, please test extensivly!             

        Fixed usbfifo_put() by reordering ringbuffer code. Rewrote uart1 similar to 
        uart0. We no longer enable/disable interrupts but correctly use a ringbuffer
        and two pointers.                                                           

        Added NGcon and NGusb pdf documentation.

        Reordered output of "show stats": first [ticks] then [bytes].

        Changed i2c0_ngpp_register_write() and i2c0_ngpp_register_read() not to 
        output errors using iprintf() via NEWLIB layer, which fails anyway, but 
        instad return -1 and count errors in the ngpp layer. We now output      
        ngpp_register_read() and ngpp_register_write() error counters in        
        "show stats". We still will output an error using iprintf() when no more
        ngpp slots are available... we will have to change this later.          

        Improved output of 'debug ngppslots' and made it more consistent by 
        copying the slot before starting to output it's content.            

        Adapted compass tick statistics to NGPP compass queries.

        Axel fixed the USB stack's overflow problem by implemented usb_putch(),
        usb_putch_blocking() and usb_getch() with same interface as uart functions
        and using the blocking versions in syscalls.c like we do for the UARTs.   

        Tim added an initial commit of qngctrl2.

        Implemented a global parameter called hw_use_gps and changed all code paths
        to use it.                                                                 

        Ralf improved S3D DSL parsing, added a scan cmd and  added correct device
        detection.                                                               

        Fixed a lot of warnings found by gcc-4.5.0. Except for -pedantic we are 
        clean now.                                                              

        Timo added preliminary debian packages for qngctrl. The packages are not
        yet debian-compliant, have no manpages and install pictures into /usr/bin.

        Volker added a first schematics and layout of the mini-NG hw-0.22-r1-mini.

        Extended lpc2148-rom.ld with a .ARM.extab* .gnu.linkonce.armextab.* section
        which is needed for eabi support according to Tim.                         

        Markus added 5.8GHz ng-video display brd and sch.

        Stefan added arm-none-eabi gcc target support (new arm abi).

        Timo fixed some whitespace problems in source files.

        Amir implemented a new controller called amir-ng. It's implements a DCM
        (direction cosine matrix) based SO(3) integration and uses it in a Kalman
        predict to integrate orientation changes in the linear SO(3) manifold. The
        controller implements a 3x 2-state Kalman filter for drift compensation.
        Implemented the debug command 'debug amir-ng'.

        We now show GCC and NEWLIB version in show version.

        Added stk500 flash targets for rc controller, added --with-stk500-port
        option for SBC and RCC.

        Moved PT1 compensation and DTC to HAL, added CTRL.use.acc, CTRL.use.compass
        and CTRL.use.gps (this allows us to enable the hardware and don't let it use
        by the controller).

        Ralf optimized the JTAG config file for the OPENOCD-USB adapter.

        Changed stack size for abort stack to 4 bytes (abort handler don't use any
        stack), removed old unused interrupt handler.

        Renamed "show [rc|rcsum|dsl]" to "print [rc|rcsum|dsl]".

        Updated sensor mean calculation to a power of 2 (optimizes division).

        Stefan implemented a new 2 state Kalman for position estimation.

        Implemented a new PID controller for controller amir-ng. Don't use it yet,
        it does not yet work as expected.

        Stefan implemented compass calibration as settings (allows dumping and set
        configuration by hand). Increased SBC buffer size for uart to allow several
        set commands without overflow. Now marking compass as calibrated as soon
        as we set our configuration.

        Amir implemented not yet working yaw correction using raw compass magnetic
        field measurement in controller amir-ng.

        Fixed a bug in ctrl_input, compass data is now fetched without gps too.

        Fixed when.rc.landed.stick.* behavior condition which also triggered while
        flying even trough it should only trigger in flight state landed.

        Stefan fixed ctrl-amir not to use position information when position
        controller is disabled.

        Install qngctrl resources to /usr/share/qngctrl.

        Fixed a bug in ctrl-amir-ng which stored the correction as integer instad
        of the matrix data type. The new controller should stabilize correctly now.

        Implemented more debug output into "debug amir-ng kalman".

        Implemented new behavior conditions while.rc.flying.signal.lost() and
        when.rc.flying.signal.lost().

        Scaled acc measurement to [1g] instad of [1milli-g] in ctrl-amir-ng and
        fixed a bug in inovation calculation as well as in covarance calculation.
        Bias guessing now seems to work. We need to find good kalman parameters now.
        Extended debug commands to doubles.

        Fixed a sign problems in DCM integration in controller amir-ng.

        Switched back from double to float. Ajusted default parameters for DCM kalman.
        Fixed small conversation problems and float3232 defines. All filter parameters
        should now have an impact.

        Fixed yaw bug which hit Taarek. Correctly rolling over yaw now in amir-ng.

	Disabled GPS support in controller amir as it's not yet flight-ready.


0.58	Cleanup in ctrl_input(): cleaned 0.21/0.22 case.

        Added named behavior arguments for ctrl.set.hw.hal().

        Changed valid RSSI level for DSL to > 5 instad of > 80.

        Changed ACC mean calculation. now calculating running mean over
        100 cycles instad of 10.

        Fixed yaw drift. We calculate the yaw bias while landed and spinup.
        We do not update it while flying. Changed yaw handling in ctrl-amir:
        We now use as->headingY to hold yaw to its value and we constantly
        set as->headingY to cs.out.Y while abs(cs.in.rcY) > 2.
        Note that we need strong yaw parameters.
        I did my tests with P.yaw=200, D.yaw=0, I.yaw=80.

        Improved stick handling for rc mode different from mode 2:
        We now limit top-most and bottom-most positions of vertical rc sticks
        specially and set the corresponding horizontal rc stick to zero there,
        to allow special stick positions in the corners.

        Activated and tested CTRL_AMIR_YAW_SMOTHING. it seems to improve the
        motor signals. Please test extensively!

        Implemented RC.yaw.jitter and renamed RC.death.zone to RC.sum.jitter.

	Raised behavior slots from 30 to 40.

	Added cli tool lpc21iap.exe to flash using USB under Windows.

0.57	Fixed a data type problem in 'blc' HAL. It should be possible now
        to correctly set the values with 'set BLC1 60' for example.      

        Fixed bug in X8X HAL which prevented HAL.fact.top and HAL.fact.bottom
        to be set to non-integer values. Fixed. Now validates for floats.    

        Fixed a small bug in the flash-ng-isp.bat script which gets used to
        create windows executables. Fixed bug in flash-ng.sh which prevented
        the file ngos-serial.sh from working.

        Extended autotools suite to build exe files for the usb bootloader.
        Fixed usb bootloader isp exe file.

        Fixed a small bug in blc-hal, which prevented actors > 1 for moving.

        Changed autotools suite to support --enable-ctrl-wolferl, --enable-ctrl-bh,
         --enable-ctrl-amir. We are now able to build NGOS without any higher
        controllers in preparation of the source code release. The Makefiles will
        not traverse not included controller folders. This will allow us to exclude
        these controller folders from the source release... ;)

        Now, dodge that boy! :D

        Extended autotools suite. We no longer include higher math when not
        including higher controllers.

        Updated default values for 'set defaults'.

        Fixed beeper default for HW >= 0.21. Fixed per-HAL dating bug in
        ctrl-wolferl. Fixed bug in "conf store" and "conf load" index check.

        Applied Thomas + Nabil's patch for libng: They found better TIO config
        for the uart connection setup. Made B460800 dependant on it's existence
        as this baudrate does not exist on MacOSX.

        Updated qngctrl.pro which will now install the qngctrl binary to /usr/local/bin.

        Implemented "api ngctrl-dump2" for testing of a different communication
        protocol for dumping.

        Corrected blink signals for actor: it will signal i2c errors, nacks and i2c
        buserror with a red D6.

        Added HW.HAL to global variables, so that one does not forget to set it.
        "show hal" will show the same variable.

        Implemented named behavior arguments. You need to use "set defaults"!
        Attention: The second argument for all stick conditions DID CHANGE.
        Added more behavior arguments and implemented ctrl.set.pt1.comp(on|off)
        which allows us to switch PT1 compensation on and off while flying.
        Extended behavior condition and action help texts and adapted them to
        named arguments. Also implemented named behavior arguments for behavior
        dumps as we can parse named arguments anyway now.

        Implemented dump interval. The command "api ngctrl-dump" now supports a
        dump interval in [ms] as the second argument. The default is 10ms.

        Added support for --enable-ctrl-pt1 which will allow us to release without
        pt1 compensation. Added ctrl-amir-ng and --enable-ctrl-amir-ng. Extended
        configure.ac to check for the needed controller sources. Configure will fail
        when the needed sources can not be found. Added output at the end of
        configure showing which controllers will be included.

        Implemented actor maximum delta limiting for HAL quadcopter. The new HAL
        parameter is called "HAL.actor.max.delta". the current default is set to 255
        which essentially disables actor limiting.

        Implemented RC stick mode support: we now support stick configurations in
        mode 1, 2, 3 and 4. default is mode 2

0.56    Did a lot of cleanup in preparation of a source release. Hopefully
	everything still works. Please test excessivly!

	Fixed a bug in DSL on UART0/1. The index to rc_dsl[] was wrong and shifted
	by 1. Corrected and works now.

	Implemented a D amplifier. Activated it and disabled D smothing.
	The new D amplification works very well and the graphs look great!

	Attention: Make sure to lower you D values by factor 4!

	Implemented a new HAL called 'blc'. It's a BLC test HAL used to test
	BL controllers functions. It needs 0 actors to be happy and it has
	a HAL parameter for each actor slot. By setting these HAL parameters
	the use is able to set single output values for actors. The values
	get output directly to the available actors.

	Attention: HAL indexes have changed! Please adapt your behaviors if used!

	Fixed a small bug in yaw handling when no compass was used.

0.55	Implemented an X8 oktocopter coax HAL called X8X to fly coax oktocopter in 
        X-formation. Thanks to Paul for his contribution!

	Implemented prelimary VDRIVE2 support on UART1/2. Currently understands
	"vdrive status" and "vdrive dir" which shows the current directory of a
	attached USB stick.

        Fixed a bug in i2c1_write_actor_data() which did not signal an error when
        finding an actor address of zero and dropped an IRQ which led to the
        statemachine never finishing. Extended initial actor address table to
        8 actors to support more yge30i controllers.

        Fixed small problems in X8 and X8X HALs.

        Implemented more VDRIVE2 support. We now support the commands "ls", "cat",
        "cd", "rm", "vdrive openW", "vdrive openR", "vdrive write", "vdrive close".
        Plugging and unplugging a stick while the NGOS runs works as well.

        Fixed a bug in the device table definition. This resulted in DSL0/DSL1
        not working on the rc-controller. This is a regression introduced in NGOS 0.54.

        Fixed a bug in rc-controller data fetching using NGPP. We fetched data with
        a wrong byte-offset and so DSL0 data was garbled. This showed up after the
	above bug was fixed.

        Fixed a version handling bug which prevented NGPP fetches to the rc-controller
        as soon as the SB got unplugged. NGPP now works perfectly to the rc-controller
        even when no sensor board is attached. Thanks to Falstaff for testing this! 

0.54	Implemented new PT1 compensation: The new compensation uses the parameters
	K1, T1.up and T1.down. This allows to use different T1 parameters for     
	increasing and decreasing the thrust.                                     

	Changed unit of T1.up and T1.down to [ms] and adapted default values.
	Please make sure you enter milliseconds now for T1.up and T1.down!   

	Fixed rc-mixer default behavior on signal loss. The rc-mixer's default
	behavior is to hold the signal for 2 seconds and then fall back to minimal
	fail safe signals, meaning zero for all channels.                         

	Fixed while.rc.signal.loss(delay) and when.rc.signal.loss(delay) behavior
	conditions to correctly interpret the argument as number of 20ms cycles  
	to pass until the condition triggers. The default behavior rules contain 
	a rule which overrides the default behavior with a ctrl.decend(10) after 
	500ms (25 cycles).                                                       

	qNGctrl now contains options to enable, configure and disable the proxy
	feature of the internal browser.                                       

	Ralf extended the rc mixer with a new device rcsums3d. When selected for
	RC.dev.pri or RC.dev.sec the faster S3D timing will be used for the rcsum
	input of the NG. This allows the rc mixer to automatically switch to the 
	right timing according to the configured rcsum/rcsums3d device.          

	Implemented X8 HAL and associated DTC8 limiter function. The HAL is marked
	for testing purposes and has not yet been flown! Take care when using it! 
	Thanks to Paul for contributing the basic code for it.                    

	Cleanup in GPS code. NMEA GPS detection and death count works again.

	Extended device table with bl-ctrl style actors 7 - 16 allowing HALs
	with more actors.                                                   

	Added bl-style controller devices 7..16 to device table so that HALs
	with more actors correctly detect them.                             

	Added support for NGPP on LPC, SB-Controller and RC-Controller side.
	It all works. New command 'show ngpp [rcctrl|sbctrl]' which dumps all 
	NGPP register of the device and their current values.                 

	Setting NGPP registers by name now works for the sb-ctrl and the rc-ctrl.
	The new command is called "set ngpp <var> <val>".                        

	Finished NGPP support. Data transfer from and to sb-controller and 
	rc-controller now work. We now have support for DSL0 and DSL1 on   
	the rc-controller, we have servo control on the rc-controller dependant
	on the servo opmode, we have servo attitude compensation on the        
	rc-controller and we have compass support on the sb-controller. We     
	support device detection across the different cpus and we act dependant
	on the detected devices. NGPP communication to the rc-controller is    
	optimized and should no good rssi be detected we stop fetching the     
	useless dsl channel data. We also support full servo control from the  
	FC by changing the servo opmode register.                              

	Changed the help system. We now have group of commands.

	Consolidated 'set ngpp <key> <val>' with 'set <key> <val>'. We are now 
	able to use 'set <key> <val>' for config keys, global keys, hal keys,  
	and (that's new) NGPP register name keys.                              

	Fixed HAL parameters for X8 and Y6. Now the two hal parameters
	HAL.fact.[top|bottom] work as expected.

	Changed ngos shell command from 'uavpset ctrl' to 'api uavpset' to
	comply to new command naming convention. Renamed 'uavpset ctrl'
	to 'api uavpset'. Changed also all "uavpset ctrl" to "api uavpset"
	and all "ngctrl xxx" to "api ngctrl-xxx".

	Implemented behavior actions rcctrl.set.nick.corr(pot),
	rcctrl.set.roll.corr(pot) and rcctrl.set.servo(servo, pot) and
	implemented support for attitude.nick_corr and attitude.roll_corr
	ngpp registers.

	Fixed when.rc.pot.changed() which triggered too often because of
	jitter. We now are able to override the servo attitude compensation
	with a pot allowing us to point the cam while doing servo attitude
	compensation! Also improved when.rc.throttle.changed() behavior
	condition. no longer triggers because of +- jitter.

	Implemented behavior action rcctrl.set.servo.opmode(mode). It sets
	the servo operation mode. 0 means attitude compensation, 1 means
	FC controlled.

	Heading attitude compensation starts to work.

	Fixed the bug which MiniMikro found in "set RC.dev.primary/secondary".
	We should now correctly verify and parse the argument and set the
	right value.

	Changed behavior commands. We now have: "behavior add <rule>",
	"behavior delete <index>", "behavior clear" (deletes ALL behaviors)
	and "behavior print".

	Added command "man" as an alias to "help" and "?".

	Extended version table with HW-0.22 to support the new HW-ID for
	FC-0.22 and SB-0.22.

	Changed battery scaling version dependant: HW-0.22 has a scaling
	factor of 10. HW-0.21 and smaller had a scaling factor of 4.125.
	The smaller scaling allows us to go up to 4S.

	Improved "show version". It now displays the version and revision
	of all CPUs using NGPP. It no longer shows an error message if one
	of the peripherial controllers does not get detected, It just does
	not show it in the version list.

	Improved "show actors". Improved boot messages. Now showing number
	of actors activated too.

	Boot messages now get shown on uart0 and uart1. Still pondering if
	we also want them on usb0.

	Changed "debug rcctrl register [read|write]" to "debug rcctrl reg [read|write]".

	Extended i2c0_nggp_fetch_devreg_and_mark_detected(wait) to use
	timer_sleep() instad of ngpp_wait() when called with wait=1. This
	assures that we will not hang during boot should a peripherial CPU
	get detected but the i2c bus is blocked (because of not written
	atmel fuses for example). It will timeout now, not detect the
	devices and fail without hanging.

	Adjusted battery voltage calculation for HW 0.22.

	Now signaling timer overruns using LEDB_GREEN. Whenever we have
	two timer overruns in a row, we light the led. "reset stats" will
	clear it. Reduced number of gyro samples from 12 to 8. this makes
	sure we have enough time, even with GPS, compass and 3 receivers
	connected.

        Fixed maximum slot number allowed in "reset conf".

0.53	Michael fixed a bug in rc-sum.c which showed up when using his new 
	multiplex royal pro remote control. A quick scope trace showed that
	this remote is sending a continues rectangled frequency of 1.25khz while
	activing the transmitter. After a short while the correct PPM signal
	appears. This caused an overflow in the puls/channel detection, which 
	is fixed now.

	Implemented "enable actor", "disable actor" and "show actors". These
	commands allow the user to disable single or multiple actors for testing
	purposes. Please note: Activating the controller after a spinup with
	deactivated actors is very dangerous and because of that the NG will 
	switch off the controller should it be activated with deactivated actors.

	Made yaw helper integral more stable.

	Fixed typo in quadcopterX HAL. Thanks to MarkusBec for spotting it!

	Now initializing PT1 compensation in the controller reset. This assures that 
	the second spinup has the same preconditions as the first. The PT1 
	compensation can be configured and switched on and off.

	Added new qngctrl commands and extended them for qngctrl.
	Extended qngctrl - to many changes to list them here.

	Small fixes to HAL output in "show hal".

	Markus added the new a Y6 HAL.

	Implemented P dampening in ctrl-amir: The 3 new parameter P.damp.trig, 
	P.damp.clear and P.damp.gradient control it.

	Implemented HAL parameters. Use "show hal" to see them. HW.HAL moved from the
	globals parameters to the HAL parameters. HAL parameters are HAL dependant.
	Added two new HAL parameter to the Y6 HAL. They allow to configure the throttle
	factor for the two propeller layer.

	Implemented new SISO PT1 compensation. Thanks to Tensor for engineering it!
	HW.PT1.comp.k1 will control the compensation factor. The new compensation uses
	the parameters K1, T1.up and T1.down. This allows to use different time 
	constants for increasing and decreasing the thrust.

	Changed unit of T1.up and T1.down to [ms] and adapted default values.
	Please make sure you enter milliseconds now for T1.up and T1.down!

	The whole PT1 compensation uses now a generic interface for up to 16 actors. 
	Implemented PT1 compensation in Y6 and Reverse HAL too. Changed all HALs to 
	use the new interface.

	Changed PD controller part in ctrl-amir to use 2bit more of the gyro signal.
	This results in changed P and D parameters! You need to divede them by 4.
	Furthermore we scaled the P and D parameters by factor 10. So you need to
	multiply them by 10.

	Implemented argument for while.rc.signal.loss(x). x specifies the number of 20ms 
	cycles which need to pass before the condition triggers. Changed rc mixer to
	automatically fall into a hold mode on signal loss which then falls in a failsafe
	mode after 1 secibd with throttle on minimum and nick, roll and yaw set to zero.
	Changed the default behavior rule on signal loss to trigger after 500ms and 
	execute ctrl.hoover(10) from then on. This makes sure the default failsafe mode
	always gets overwritten when it triggers after 1 second. This has to be taken
	into account when creating different while.rc.signal.loss(x) rules.

	Fixed a small bug which crashed the shell when an unknown parameter gets used
	in a 'set <var> <val>' command.

	Fixed a small volatile bug which could crash the code when no signal was found.

	Cleanup in SPI statemachine, Ben switched MAX queries to 16bit transfers.

	Implemented "set defaults [adxr10"|adxr12"|mlx10"|mlx12"]".

	Extended the 'show actors' command to also show number of detected and needed 
	actors as well as their detected addresses besides the actor activation state. 
	Users won't have to use 'scan actors' for that in the future. Also extended 
	'show hal' to show the number of detected actors beside the number of needed 
	actors.

	Axel and Amir reimplemented lpcusb with newest HEAD of trunk. Moved away from
	NAK interrupts and implemented and registered a frame handler instad.

	qNGctrl now supports a configurable baudrate setting.Extended qNGctrl with 
	vertical scroll bars and historical data. 

	Calculating the D_err differently with more bits in ctrl-amir. 
	Attention: you need to adjust you D parameter! Be sure to divide it by 4! 
	The new D_err contains more bits and more noise. multiplying that with the
	lower D parameter yields better results than using a D_err with less bits.

	Merged Axel's fixes in the i2c statemachines. This fixes several internal 
	problems. Axel introduced a new common i2c module which is shared between
	the two i2c bus drivers. Lots of cleanup in the i2c code.

0.52	Implemented --device and --baud in ngctrl. ngctrl now correctly 
	initializes the device with the needed baudrate.

	Fixed problem in configure.ac which detected Windows executables wrong.

	Fixed libng and ngctrl to work with /dev/rfcomm0 as well. Implemented 
	the new ngctrl flags --device and --baud. ngctrl now can use any device.

	Michael implemented the spi0 statemachine to sample and read the ADC24 
	value from the barometric sensor. Michael also added averaging. He added 
	the two new shell commands called "loop adc24" and "print adc24". He also
	made the output signal unipolar. The handler issues a ads1255 self 
	calibration cmd at startup. He implemented adc24 statistics. The data 
	aquisition is now triggered by the data ready irq pin. The ADC24_MEANCNT
	is set to 100.

	Renamed release folder "cmd" to "cli".

	Implemented CTRL_AMIR_KALMAN_HEIGHT which controlls if a Kalman filter 
	gets used for height control. Implemented a two times integrating 
	Bucy-Kalman Filter for height and a PID closed-loop controller which 
	controls throttle. Both can be switched off by defines. This also includes 
	a new debug interface for ngctrl. furthermore ngctrl has been switched 
	from the old uavpset debug interface to the new ngctrl debug interface 
	able to support 32bit debug values.

	Implemented a new behavior action called ctrl.altitude.hold() which will set 
	a new altitude fix when called with 1 and reset it when called with 0. It
	allows to add two behavior rules which switch on altitude hold and switch 
	it off again. We tested this and it works. Good parameters need to be found.

	Fixed a small problem with KalmanCycle. Found out that we essentially use
	a Cycle of 3. fixed the bug and the cycle variable now define the real cycle 
	number which defaults to 3 for now.

	Fixed typo in kalman1d_float3232_update(). Thanks to Tensor for spotting 
	the bug! The corrected algorithm now converges very nicly and has an angle 
	error of 0.045 degrees when standing still. Changed kalman1d_float3232_init() 
	to include the gyro bias. This allows us to initialize the gyro bias 
	accordingly which will help to reach the steady state earlier.	

	Changed ctrl-amir to start the kalman filters at startup. It initializes 
	the filters when the first controller reset happens and already runs the
	Kalman filters in flight state landed. This makes sure the gyro bias is
	calculated at the time of spinup/flying.

	Changed ctrl_loopstep() to automatically reset the controller when comming
	from ANY flight stateinto flight state LANDED. This assures that everything 
	gets reset after a flight... even the Kalman filters and their biases.

	Changed yaw Kalman filter to no longer update while flying and just integrate
	with the calculated bias from the non-flight phases as long as we do not have
	a heading at hand. Seems to work remarkable well. It's similar stable as the
	smothed yaw integral but a lot more exact. Now initializing the Kalman filter 
	with their previous biases when the controller gets reset. That way we never
	loose our bias.

	Changed ctrl_limit_dtc4() to have a lowest value of 0 while landed and spinup
	but a lowest value of conf.Tidle in all other flight modes.

	Switched back to -O2 from -Os. It seems -Os creates crappy code! I noticed 
	that the calibration code suddenly got called TWO times, without reason! Also 
	noted that i could not remove a not executed code line without breaking the
	hex file! Switching back to -O2 or -O1 fixed the problem... so it IS
	optimization related. We will continue with -O2... seems the most sensible 
	flag for now.

	Patrick added a check for isatty()/_isatty() which differs between different 
	NEWLIB versions. syscalls.c gets compiled accordingly. He also fixed the 
	Amontec/Olimex checks in configure.ac for Windows and Unix.

	Patrick added the missing part values to the sensor board schematics (in
	particular sallen-key resistor and capacitor values, crystal oscillator 
	frequencies, other missing resistor values). Apart from that he also 
	created	a little table in the schematics which lists possible sallen-key 
	filter cut-off frequencies and the required capacitor values. All those 
	changes asked for a new part list and PDF documents. Added wiki page 
	PartLists/0.20 as partlists.pdf. It includes the actual partlists for 0.20
	as of today. 

	Patrick fixed all bugs from the SB bug list (footprints, labeling et all) 
	and did a cleanup of the hw-0.21 folder. He removed old 0.20 panels and
	the mm3 board.

	Extended release script to contain FC+SB schematics and a PDF of the wiki
	partlists. Added usbser.[inf|sys] to release script.
	
	Markus updated the 0.20 board plans with the current values and 
	generated new PDF files for them.

	Added a small java tool called jngctrl which is able to visualize the
	current angles of the NG. The code now outputs the nick/roll/yaw angles 
	in degrees and in the internal integer format to the shell console while 
	turning the model according to the current angles.

	Added correction in ACC2INT3232_ROLL/NICK() which incorrectly handled the 
	angle and changed the value range. Fixed atan2() to work in all quadrants. 
	Implemented a float3232 asin() function which takes a float3232 as argument 
	and returns a float3232. Simplified ACC2INT3232_NICK() and ACC2INT3232_ROLL().

	Implemented float3232 log() and rewrote PRESSURE32322HEIGHTM3232() to use
	float3232 instad of floats. Extended log-table from 64x 64bit-float3232 to
	128x 64bit-float3232. This makes it exact enough to give a hight +-10m from
	the float log()-height. We do a linear aproximation between table entries 
	to improve it further and to reduce memory usage. We use a 7bit table width
	and 8bit fraction which is used for linear aproximation. We now calculate 
	the height +-2m as the float log() implementation which is ok with a sensor
	which has 130m absolute error.

	The amir controller now is able to use the height Kalman while still using
	not more than 346us. 

	Added factor 100 to z-PID divisor since we switched from [m] to [mm] in
	cs.out.z. Extended help text of the ctrl.altitude.hold(x) action.

	Reduced GPS in-ram tracking points to 60. It simply does not make sense to 
	store the stuff in-ram and it hinders "store conf" from functioning since 
	that needs 4kb RAM just for that.

	Lowering I2C1 actor bus speed to 100kHz while scanning the bus to make sure 
	we see all devices. Afterwards we switch the bus back to 400kHz. 

	Changed ADC10 sampling from automatic burst mode (resulting in 21 samples 
	per cycle) to triggered burst mode with a 10Hz sampling frequency. This 
	reduces the IRQ storm and gives us a lot more time. we do not need more
	to sample the battery, do we?

	Changed usage of HW.use.acc. It now signals if ctrl_input() should use the
	real ACC measurements or if it should supplement [0,0,-1000] as fake 
	measurement. This allows to switch off the ACC for all types of controllers.

	Reduced ACC_MEANCNT from 100 to 10. Increased ACC_CALIBRATE_MEANCNT 
	from 50 to 100. Increased log() table from 128 to 256 entries and increased 
	linear aproximation from 8bit to 10bit. 

	Increased ADC16_MEANCNT from 8 to 16. this results in much smother gyro values.

	Started marking constant strings as "const char * const" which moves the 
	string contents to the .text section which resides in flash, not in ram. 
	Added a new Makefile target "fc-ram" which shows the symbols using ram 
	sorted by size.

	Implemented body to earth transformation of a[NRY]_b to aY_e in ctrl-amir. 
	Rhis reflects the change rate of the height in the eart system measured by
	the acc in the body system. Added new command "debug trans" to 
	debug body->earth transformation.

	Fixed DSL on UART1. Added output of total slot number in "list conf". Extended
	DSL protocol documentation.

	Implemented the new command "scan dsl [uart0|uart1]" which does a frequency 
	scan on DSL receivers and displays the RSSI of all channels.

	Renamed the 3 Kalman parameters to Kalman.Angle.Q, Kalman.Bias.Q, 
	Kalman.Acc.R and changed all refering code.

	Implemented help texts in "show conf" and "show globals". Renamed all 
	configuration parameters globaly according to new standard.

	Implemented HAL framework. The framework calls input & output HAL
	functions now. Implemented input HAL transformation in hal_quadcopterX_input() 
	which turns w[NR], a[NR] and Y_n by -45 degrees. This allows us to use a 
	normaly oriented FC to fly in X mode.

	Raised quadcopterX hal quality to FLYING.

	The Kalman-Bucy filter for the height now uses the aY_e (meaning the 
	z-component of the acc measurement after transforming it from the body 
	to the earth system). Introduced new config parameters KalmanZ_L[123] 
	which configure the height Kalman-Bucy filter. 

	Changed "loop rc" and "print rc" to include channel names.

	Improved float3232_log() by using all 64bit of the table for fractional
	parts. We now have a table with of 8bit and a interpolation with of 24bit. 

	Extended ngctrl by --flowctrl which switches on flow controll for devices
	like /dev/rfcomm0. Flow control is switched off by default as one can not
	use it with /dev/ttyUSB0.

	Markus and Patrick finished routing on the new HW-0.21 boards. Next 
	Quality Assurement must give it's ok... ;)

	Left stick top-right now only calibrates the Acc and does NO 'store conf'
	anymore! You have to add a behavior rule 
	"add behavior when.rc.stick.left(1,0) conf.store(0)" to have 'store conf'
	on a stick again!

	Implemented 'dump behaviors' which dumps the current behaviors as script. 
	Also implemented 'delete behaviors' which is the first command a behavior
	dump contains, to clear the table before setting it to new values. 
	Extenden 'dump all' to also include 'dump behaviors'.

	Switched ADS SPI bus speed to 1.875mhz instad of 3.75mhz. Ben found out 
	that the ADS wants 1.92Mhz max!	SPI initialization will be done at
	1.875mhz spi clock for all devices.

	Implemented new global configuration variable HW.gyro.type and associated
	variable global.hw_gyro_type. The variable has a special validation function
	which parses "mlx", "adxr300" and "adxr610" to 6670, 5000 and 6000. 
	Changed ctrl_input() to use hw_gyro_type to scale gyro measurements.

	Esden finished the huge work of changing all header files from CC-NC to 
	GPLv3. Furthermore he added management scripts which allow us to rewrite
	all header's dates when the year changes.

	Markus added NGcon a small PCB as a SerCon replacement.

	Changed callbacks: they now happen at 0s (no callback, 1 beep), 
	2.5s (spi0), 5s (actor,2 beep), 7.5s (calibration, 3 beep) and 10s (i2c0). 

	Ben added a BTS555 adapter board PCB.

	Added new parameter to kalman_update() which allows to switch off the bias
	update. Introduced new config parameter KalmanLimit which decides the limit
	used to decide if we are stationary or not. Ro decide the gyro measurements 
	on nick and roll get compared with the KalmanLimit and if its bigger, the 
	bias will not get updated. Setting the limit to 32000 will disable bias
	freezing and setting it to 1 will freeze the bias as soon as the NG moves.

	Changed Kalman.Limit default from 15 to 1: this results in no bias guessing
	while dynamic flight which results in better biases. 

	Changed yaw kalman to only update the bias while landed and not updating it
	while in spinup or flying: this results in the yaw bias correctly guessed 
	and never changed while flying. updating yaw with helper integral as in the 
	old code. This worked best without a compass. 

	Added a short beep when switching the height-hold closed-loop on and off.

	No longer updating the angle kalman while roll is bigger than 70 degrees. 
	This assures stability from -180 to +180 degree on nick, roll and yaw axes.

	Implemented new behavior action ctrl.set.hw.hal() which allows to set 
	HW.HAL as a behavior action. This will allow in flight HAL switching...  ;)

	Changed while_battery_low() to check the previous state and only alert 
	if previous and current measurement say the battery is too low. This 
	assures that no battery alert happens when startin up and will hide very 
	short (<20ms) drops below the defined voltage level.

	Increased UART0/1 RX buffer size from 64 to 512 bytes for both uarts. 
	This uses 1k ram but allows pasting a full config setting into the shell. 
	As long	as we do not need the ram for other stuff, lets use it for that.

	Implemented a reverse HAL called quadcopterR: It reverses flight direction,
	meaning the front becomes the back and left becomes right. This will
	allow a beginner to fly backwards...

	Fixed behavior condition when.rc.pot.tristate() which did not correctly
	recognize one of the states.

	Introduced P.z.limit and P.z.upfact. P.z.limit limits the correction of
	throttle to that max value. P.z.upfact is a percentual value multiplied 
	with the correction if the correction reduces the throttle, meaning when 
	we are too height.

	Implemented behavior action conf.load(x) which allows to load a 
	configuration slot.

	Implemented shar archive creation: we now generate a wolferl-ng.sh which
	is a shar archive containing wolferl-ng.[bin|elf], lpc21iap, lpc21isp, 
	openocd and flash-ng.sh which will get automatically started when calling
	the shell script and which allows to flash with an aribitrary serial device
	for which it prompts.

0.51	LED blinking now is flight state dependant. It blinks slow in LANDED
	phase, it blinks faster in the SPINUP phase and it blinks really fast
	in the FLIGHT phase. LED will cycle trough on startup to assure all
	LEDs are working fine. Added support for duo-LEDs.

	Cleanup in i2c-actor.c, removed dead code.

	Implemented new command "sound [on|off|invert]" to make sure the user
	can control the sound output with inverted and not inverted beepers
	even different as expected for that version.

	Implemented a new task based I2C state machine for the I2C0 sensor bus. 
	It allows arbitrary devices to use the bus simultaniously. In fact it 
	implements two stacked state machines similar to our I2C actor. At first
	only a I2C bus scan FSM is implemented. More FSM will follow.

	Michael activated the I2C slave code in the rc-controller firmware. We
	are able to see the rc-controller using the new bus scan FSM actiavted
	with the "scan i2c" command.

	Autotoolized the rc-controller source code. It now contains a clean GNU 
	configure. The autotool suite generates elf, hex and eep output files.
	Added new Makefile targets "rc-flash-dragon", "rc-read-flash-dragon"
	and "rc-flash-fuses".

	Added Atmel 644p to the device table. Implemented Atmel probing in 
	i2c0-sensor.c. Implemented hacky solution for MAX probing: if one of 
	the ADX/MLX samples look ok and it's associated sensor gets marked as 
	detected the MAX gets marked as well, since without it the sample never 
	would have been possible.

	Implemented new axis de-coupling code without poles thanks to Tensor!
	We tested the new axis de-coupling code and it works perfectly! Where
	we had an error of 90 degrees before, we suddenly have none! Please note
	that we implemented it using real exact sin/cos tables.

	Implemented Axis.decoupling controller configuration variable which 
	enables or disables axis decoupling. Added a global configuration 
	variable HW.use.sound with possible values normal|off|inverted. 
	The command "set defaults" will initialize the variable according 
	to the FC HW ID.

	Changed ACC_MEANCNT from 3 to 100 in ctrl-amir.c. We now calculate the 
	ACC measurement mean over 100 closed-loop cycles and we do sample only
	one ACC sample per cycle. This results in smother ACC angles. 

	Fixed "uavpset ctrl" which crashed when given wrong arguments.

	Implemented a new UNIX library libng.a and a command line tool called
	"ngctrl" which uses the library to implement a UNIX command line client
	to access the NG, execute commands and dump debug data to a file or to
	the screen. The new tool supports the arguments --show-version, --log, 
	--log-to-file <file>, --execute <cmd> and --help as well as short one
	key arguments.

	Implemented a new HAL (hardware abstraction layer). It consists of an 
	output HAL which allows the controllers to work without knowledge of the 
	pysical motor configuration. The configured HAL defines the number of 
	actors used for that HAL. The HAL gets configured with the global 
	configuration parameter HW.HAL. Currently the HALs 'none', 'quadcopter' 
	and 'quadcopterX' are implemented. Oktokopter HALs and Heli HALs will 
	follow. The new command 'list hal' shows the available HALs and their 
	description. After configuring a certain HAL it can be inspected using 
	the command 'show hal'. This command shows the description and help text 
	of the corresponding HAL, shows the needed actor number and describes 
	the motor number and its pysical location. The i2c-actor was rewritten 
	to be able to supply an arbitrary number of actors defined by the 
	configured HAL.

	Axel changed the timer tick behaviour: we now switch to system mode 
	after a timer IRQ, making the controller code interruptable. This is
	the proper apporach, since it makes it possible for all communication
	busses to work in parallel to the controller. Removed obsolete swi.[sh]
	(this was experimental for newlib angel swi stuff). Implemented SWI
	system calls. These are necessary if the user task wants to modify the
	CPSR register, e.g. for disabling interrupts. Adapted conf_store() to
	use a system call for flash writing. Reduced size of the supervisor mode
	stack. This gives us significantly more free memory for the user mode
	tasks. 

	Bugfix: corrected number of entries needed when CONF_HOOVER isset. 
	Bugfix: clear match 0 interrupt at the top of the ISR, which now enables
	        the interrupts before the dispatching is being done. 
	Bugfix: more boundary checks.

	Axel implemented an ass-kicking exception handling: All registers are being 
	saved into a reset-resistant memory area on abort interrupts (prefetch 
	abort, data abort, undefined instruction). After this, the board is being
	soft-resetted, allowing high level terminal commands like 
	abort_print_saved_regs() to be used.

	Amir fixed HW.acc.horizontal: it now possible to change the acc orientation 
	without having to reset the processor. the store acc correction gets zeroed 
	when the orientation changes to make sure no strange correction takes place
	and a notice gets issued to the controlling tty.

	Implemented --with-openocd-amontec-bin besides --with-openocd-amontec-exe
	and --with-openocd-olimex-bin besides --with-openocd-olimex-exe. This allows
	us to generate Windows double click flash executables for JTAG under Linux.

0.50	The new DSL protocol allows to use ATC SPCM receivers. We tested this
	and the addition range of 2bits (SPCM is 10bit instad of 8bit) allow
	very smooth stick positioning,

	HW-0.20 was finished, panalized and produced. First boards are being
	built. A new tree called HW-0.21 was created for further development.

	The DSL protocoll was fully decoded and documented. Hardcoded GPS 
	support has been removed and replaced by UART operation mode dependant
	decoding in the ISR. The GPS modus of the UART now gets triggerd just 
	the the	same way as the DSL modus.

	A third shell has been implemented and gets started on UART1.       

	Implemented HW ID probing and FC and SB hardware version detection.
	Extended the command "show version" and added the command "debug version".
	The code now is runtime dependant on the different detected hardware id's.

	Fixed a bug in the behavior action actor.play.melody() used for the
	default battery alert behavior rule.

	Changed configure process and Makefiles to be able to build Windows
	self-flashing executable under Unix. Serial self-flashing executable
	generation now works under Unix.

	Rewrote SPI0 stack. It now supports tasks and different state machines
	for different devices. Added support for the MAX1167 16bit ADC and the
	LISL. Added probing of devices and device table marking. ADS, MAX and
	LISL get detected. ADX or MLX gyros get detected and marked in the
	modules callback task. Implemented temperature sensor readout.

	Rewrote "loop acc" and "loop adc16". Renamed "loop adc" to "loop adc10".
	Added "print adc16" and rewrote "print acc".

	Michael added a prelimary firmware for the rc-controller. It's able to
	provide shell access on all UART ports, detects automatically plugged in
	DSL receivers and displays the DSL status with the duo-leds attached.

	Servo output with 5 ports, sum-signal rc input and DSL input with two 
	UARTs works fine on the rc-controller now.

0.41	Implemented ACT DSL support. Any ACT DSL rc receiver can be used
	with the NG now. The DSL port of the receiver needs to be connected
	to one of the two UARTs. Even two receivers at the same time are 
	possible. We will implement DSL diversity later on. 

	A new configuration variable RC.dev.primary and RC.dev.secondary
	was introduced which chooses the input source from "RC", 
        "DSL on UART0" and "DSL on UART1" for the primary and secondary RC 
	input device.

	The new commands "show dsl status" and "show dsl channels" show the DSL 
	link's status and their channels. The command "loop dsl <uart>" will 
	continously show the input channels. The same holds for the RC Sum 
	device if detected.There the commands "loop rcsum" and "show rcsum" 
	will show the channels.

	Both RC Sum and RC DSL devices now show up in the device table and
	can be seen in a "show devices" command. RC Sum will disappear as soon
	as the trasnmission stops, the DSL receivers will disappear only when 
	they get unplugged since they send status packets even when no 
	transmission is received.

	The configuration variable RC.dev.mix chooses how the different RC
	input devices get mixed. On of the possible values is "primary" which 
	only uses the primary input device without any mixing. There's also 
	a possible value of "secondary" using the secondary device without mixing. 
	Another possible value is "ts-mix" which does trainer/student by mixing
	both the primary and the seconday device. A different mode of trainer/student
	can be choosen by setting the variable to "ts-switch". In this mode
	a behavior rule's condition will trigger the behavior action 
	rc.trainer.mode(m) which will choose the trainer or student mode as
	configured. The new behavior condition when.rc.pri.pot.binary(x,y)
	allows to trigger on the primary input device only.

	Implemented GPS statistics. As soon as a fix is found the min/max
	of longitude, latitude, altitude, speed and satellites get stored.
	The new command "gps track statistics" shows the current stats.

	More Airwave carrier boards have been added to the project.

	HW-0.20 was pushed forward and the new flight control and sensor
	board designs are nearly finished. 

0.40	Implemented GPS tracking. The new commands "gps track start", 
	"gps track stop", "gps track clear", "gps track dump kml" and
	"gps track status" allow to track GPS paths using the attached
	NMEA GPS on UART1. The dump command will dump the recorded path
	as an KML XML File which can be loaded into Google Earth for example.

	GPS positions get compressen when stored as GPS track. Since we 
	currently need to store the track in RAM we try to reduce the memory
	needed. Instad of storing doubles for longitude, latitude and altitude
	we only store the first point in that resolution and store the rest
	of the points as relative data using only 2 bytes.

	Implemented GPS tracking start/stop behavior action.

	The NG console new supports line editing. Cursor key left and right are
	supported. Currently the console is in overwrite mode. Implemented
	ctrl-w for word-kill as well. Overwrite mode as well as insert mode is
	supported. The console now correctly recognizes the keys insert, home, 
        delete, end, page up and page down. We also support ctrl-a, ctrl-e as
	known from Emacs. The key ctrl-c will cancel current input.

	Several new Airwave carrier boards have been added to the project.

	The new hardware revision 0.20 reaches completion. 

0.39	Introduced rc.fact.[nick|roll|yaw] to be able to better control stick
	ranges. Big code cleanup in ctrl-amir. Factored controlling blocks to 
	separate files for PID, Kalman, Tranformation and Limiting.

        A new MM3 breakout board was added to HW-0.15. 
	Optimized gyro calibration to decrease the calibration error.

	Fixed small bugs in i2c-actor.c. The statemachine now looks clean and
	healthy, thanks to Bernd. Improved Kalman filters in ctrl-amir by using
	better default filter parameters.

0.38	We now support YGEi and Holger bl controllers.

	Replaced i2c-actor.c with a new implementation which implements a full
	I2C stack. The new statemachine supports multiple statemachines and allows
	to switch between them. This allows to implement I2C scans and different
	protocols using the same statemachine. The low level statemachine implements
	all available I2C states.

	Implemented rudimentary hardware abstraction layer inside i2c-actor.c 
	which allows to use YGEi and Holger bl controllers transparently. The
	bl controllers get detected by the bus scan and the controller motor
	values get automatically scaled correctly dependant on the bl controller
	types.

	The power-on but bl-ctrl red bug has been eliminated by using the YGEi
	addresses direct after power-on and switching to the holder addresses
	after the bus scan and probing.

	Implemented untested new behavior conditions and actions concerning
	variables and bit fields.

0.37	Implemented 'behaviors'. A behavior rule consists of a condition and a
	related action, which gets activated when the associated condition returns
	true. We reimplemented all stick and button actions as behaviors. The
	currently defined 11 default rules reimplement everything we had before.

	The list as of currently defined behaviors looks like this:

	    No  Condition                       Action

            00  rc.stick.left(-1, -1)   =>      ctrl.calibrate(0)
	    01  rc.stick.left(1, -1)    =>      ctrl.calibrate(1)
	    02  rc.stick.left(-1, 1)    =>      actor.motors(0)
	    03  rc.stick.left(1, 1)     =>      actor.motors(1)
	    04  rc.stick.right(0, -1)   =>      ctrl.switch.ctrl(1)
	    05  rc.stick.right(0, 1)    =>      ctrl.switch.ctrl(0)
	    06  rc.stick.right(1, 0)    =>      ctrl.switch.conf(1)
	    07  rc.stick.right(-1, 0)   =>      ctrl.switch.conf(0)
	    08  rc.button.on(0)         =>      ctrl.calibrate(2)
	    09  rc.signal.lost()        =>      actor.motors(0)
	    10  battery.low()           =>      actor.play.melody(14)

	    11 behavior rules defined. 9 behavior slots free.

	 Currently there are 20 behavior slots. We will increase the slot
	 count when more conditions and actions will be available

0.36	Implemented UAV-side RC calibration using channel Pot1. By pressing Pot1
	the NG stores the current nick and roll RC values. The controller 'amir'
	then automatically adapts this correction slowly (1 point per 200ms) until
	it has corrected to the stored values. This works very well.

	Implemented yaw limiting depending on throttle. This guarantees no jumps 
	when landing and keeps yaw influence in a sensible range. 

0.35	Implemented axis coupeling. Improved calibration check when starting motors.
	Fixed a bug in guavpset which prevented correct numerical display of the
	received data. guavpset now seems fully functional and already proved quite
	usefull.

	Changed rc influence. dRC/dt now influences P and RC influences I. This
	results in smother transitions.

	Implemented beep after init. Rewrote 'edit' command as task and fixed it.
	Fixed i2c HMC compass sensor readout and added compass support to the
	controller 'amir'. Improved Kalman for yaw. It now holds to the compass
	value if enabled. 

	Removed a lot of legacy code from controller 'amir'.

	Fixed LISL detection. Now uses the who-am-i register for detection. 
	Implemented delayed sensor and actor scans as tasks. This assures
	that all sensors and actors get found, even after a powercycle.

	Implemented 'guavpset'. It's our new GTK2 Debug Application for Linux.
	It also allows to send commands to the board and it's able to save 
	the resulting graphs as PNG pictures.

	Implemented a bearing-hold controller. It uses a PD controller while moving
	and a PID controller when it holds its bearing.

	Implemented RC calibration by RC using channel Pot1.

	Implemented configuration slots and there corresponding commands 'list conf',
	'load conf X' and 'store conf X'. Global and controller variables get stored
	together in each slot. We are using 4kb of flash for configurations which
	results in approximatly 14 slots currently.

	Implemented compass support. It can be activated and deactivated using
	a global variable.

	Fixed a lot of bugs and added a lot of small improvements.

0.34	Full source code redesign. Partitioned source code into subdirectories and
	added a full autosuite to the source. In the future the source needs to be
	compiled with './configure; make'. All makefile targets have been reimplemented
	and can be used from their respective subdirectories. 

	Added a lot of configure flags. Be sure to check ./configure --help in the
	source/Wolferl-NG folder.

	Fixed direction of yaw for Kalman filtering in controller 'amir'.
	Controller 'test' now just forwards the sticks.

0.33	Implemented cooperative task framework in task.[ch]. Reimplemented the two
	terminals as two cooperative tasks running the same function code using
	a different instance of state variables. The framework supports the feature
	of adding new tasks which put the current task in a waiting state until
	the new task terminates. This allows for interface takeover of commands
	which implement new protocols. It also allows to implement blocking commands
	in the cooperative task framework without blocking other tasks.

	Implemented a new Makefile taget called 'wolferl-ng.exe' which generates
	three auto-flashing Windows executable from the compiled wolferl-ng.bin by 
	using the free 7ZIP compressor. You need 7ZIP and 7ZIP-Extras installed on 
	a Windows PC to be able to use this new target. It generates 
	'wolferl-ng-ajtag.exe', 'wolferl-ng-ojtag.exe' and 'wolferl-ng-serial.exe'.
	They are self-extracting auto-flashing Windows executables for Amontec JTAG,
	Olimex JTAG and serial (ISP) flashing.

	Implemented a 1D Kalman filter for yaw. It calculates the yaw angle by 
	integrating wY. It gets updated and hold to its value by the integrated rcY.

0.32	Bugfix version. Improved lots of implemented functions. Improved calibration.
        Added calibration checks before motor start. Implemented controller switching.
	Added trim parameters. Made yaw stick stronger. Fixed lots of small parser 
	bugs. Removed obsole config parameters.	

0.31	Improved Kalman version. First real flights using the 'kalman1d' controller
	were successfully completed. 

0.30	First Kalman version implementing the 'kalman1d' controller.

0.29	Improved PID controller 'wolferl'. First outdoor flights done

0.25	First flying version. Using a normal PID controller implemented 
	in the 'wolferl' controller.

