Add two new items in module's dependency:
- recommends: a recommended module tells the sorting algo that if the module is found, it should be sorted accordingly. It is useful for optional dependencies, like shell or mission in some modules
- suggests: if a functionality is not provided by the user, a module can suggest a list of modules that can provide them. It is a convenient way to have "default" modules.
As a result the former autoload node is removed and replaced by suggested modules.
* Add ChibiOS USB Serial.
* do not terminate shell thread on read error.
* build usb serial
* Condition for building usb_ser_hw.c
* match UART buffer size
* include USB serial in uart module.
* Shell dependency on uart.
* Add missing attribute in DTD.
* Add setting to enable USB storage.
* Allows to use USB serial with logger.
* Allow defining USB_RX_BUFFER_SIZE.
There is no longer a separated FBW in normal operation for fixedwing,
only a single AP task/thread.
The code for main_ap is now factorized for all firmwares.
Dual MCU support (separated AP and FBW) is still possible, based on the
rotorcraft implementation and intermcu pprzlink messages. Relevant code
is also factorized and available in all firmwares.
The recovery mode (in case of hard fault) is still available for
fixedwing with ChibiOS implementation.
Only intermcu_uart is supported at the moment. Other options (spi/can)
might be added back in the future if really used.
Some other evolution are made:
- in the radio_control and actuators modules, now integrated to AP and
using ABI messages
- the message parsing on datalink event (defined in module) that is now
properly filtering the messages based on their class and allowing to
have multiple callbacks for the same message
- cleaning the part of code that were using the old intermcu fixedwing
interface
- support depends, conflicts and provides nodes, all under a 'dep' node
- autoload are kept for now and are not moved yet
- modules are updated for new dep format
- it is now required that module's name and filename are the same
When adding a test node to a makefile section, with required compilation
flags, include and other options, all the files (not arch dependent
files) can be compiled with a TAP compatible program, included in the
standard tests of the CI servers.
Not all module's XML files are converted, but a large part of the most
important parts are already covered. More will be added later. The
number of tested airframes (full compilation of all targets) have been
reduced to speed the CI compile time but still covers the relevant
architecture and boards.
The main benefit is that the overall coverage is already better than
before as previous test aircraft were compiling more or less the same
part of the airborne code, while this new mechanism is more efficient to
test modules not included in any config.
- calling init functions will be done later, it needs to be attached to
the FBW part
- add 'cond' attribute option to more nodes in module makefile section
* [imu] convert imu subsystems to modules
Also
- get rid of explicit imu init|event|periodic calls in main
- each imu implementation has their own imu_x_init/event/periodic
* [imu] fix some imu modules
* [imu] fix bad paths
* [imu] add imu_common module that every implementation autoloads
and put body_to_imu settings in imu_common module
* [imu] fix imu_ardrone2
* [conf] add imu_common settings module in conf_example and conf_tests
Start working on #940
This replaces
```xml
<depend require="foo|bar" conflict="baz"/>
```
with
```xml
<depends>foo,bar</depends>
<conflicts>baz</conflicts>
```
and now allows to specify OR dependencies with | (pipe) similaro to Debian depends:
```xml
<depends>foo,bar,this|that</depends>
```
which would depend on: foo AND bar AND (this OR that)
modules developpers can provide
- a description of the module
- a list of the configuration variables and flags (configure and define)
- a list of sections to add to the airframe file