Changed implementation to use maps instead of lists to find tree items and meta items. This is probably much better performance wise, and the code gets much cleaner.
Changed the background highlight code to highlight all tree nodes that aren't TopTreeItem:s to enable category items to be highlighted.
Cleaned up some code.
PIOS_Flash_Jedec_EraseChip is called during early
init when the table_magic has changed. This call
happens on CC/CC3D prior to the OS being initialized
so it is not OK to call vTaskDelay() yet.
This was leading to boards locking up (no flashing blue
LED) immediately after jumping to the application when
the table_magic had changed or was being init'd for the
very first time.
Refactored the updating of ChannelUpdateFreq so that it is done only when the actual update rates changes.
The actual update of the servo channel is moved inside the ActuatorTask.
Now the problem happen only in very few cases when modifying update rates.
It is now possible to have 1 to 6 flight mode switch positions
(usefull for guidance, position hold and similar use).
The input channel range is divided into N (1 to 6) zones and each
zone represents a flight mode. Default is 3 zones (backward compatible),
but more can be chosen.
How to use: configure Tx mixers in a way they provide required number
of different values for the same FlightMode channel. For instance,
using Turnigy 9X radio with ER9X firmware, one can create a mixer like
this:
-100 MAX ID0 Manual
R -50 MAX ID1 Stabilized1 (Rate)
R 0 MAX ID2 Stabilized2 (Attitude)
R 50 MAX RUD PositionHold
R 100 MAX ELE ReturnToBase
And set number of flight mode positions to 5. As a result, the 3-pos
switch (ID0, ID1, ID2) will provide first three flight modes, the rudder
D/R switch will override those and enable the 4th flight mode, and
elevator D/R switch will have highest precedence and activate the 5th
flight mode.
This will change the ManualControlSettings objectID.
Extra message context is also useful even when building more
than one target in the same invocation of make.
This example would enable extra context:
make fw_coptercontrol bl_coptercontrol
When building the various all_* targets, it was hard to tell which
board/build-type that each line of output applied to. Now, the
all_* target types will include something like:
CC [fw|cc ] flight/PiOS/STM32F10x/pios_gpio.c
which includes the necessary additional context.
This will help with identifying the context for warnings and errors
when building a group of targets.
Conflicts:
Makefile
The simposix build doesn't work on Windows or Mac so it shouldn't
be in the all_flight build target that is used as a pre-submit
check on all platforms.