If we get a large (e.g. /62) prefix from e.g. DHCPv6, we can split it
into subnets automatically to configure downstream interfaces.
This allows for automatic configuration of daisy-chained nodes or
nodes connected in a tree topology.
To enable the feature, a new pseudo-module `gnrc_ipv6_auto_subnets` is
provided.
Previously, external modules had to be individually added to both
EXTERNAL_MODULE_DIRS and USEMODULE. If those where not in sync, this
resulted in build errors.
With this commit, search folders for external modules are added to
EXTERNAL_MODULE_DIRS instead. So lets say the file system structure is
like this
```
└── /path/to/external/modules
├── mod_a
│ ├── Makefile
│ ├── Makefile.dep
│ ├── Makefile.include
│ ├── foo.c
│ └── include
│ └── external_module.h
└── mod_b
├── Makefile
└── bar.c
```
One now adds `/path/to/external/modules` to EXTERNAL_MODULES and only
with `USEMODULE += mod_a` the corresponding module, dependencies and
include settings are actually used. Hence, it is possible to configure
`EXTERNAL_MODULE_DIRS` from `~/.profile` or `~/.bashrc` once and never
needs to worry about them again.
By running make compile-commands a `compile_commands.json` in the RIOT base
directory. With the environment variable `COMPILE_COMMANDS` the path of
this file can be changed to a custom location.
The `compile_commands.json` will contain the exact compile command, but
as additional flag `-I/usr/$(TARGET)/include` is added to work around
`clangd` not being able to locate the newlib system headers. The
additional includes can be overwritten using the environment variable
`COMPILE_COMMANDS_EXTRA_INCLUDES`.
In analogy to the existing GPIO mappings, this provides (write-only)
SAUL entries for PWM'd LEDs in a single-LED (as SAUL_ACT_DIMMER) and an
RGB (as SAUL_ACT_RGB_LED) mode.
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
The previous favicon was a 35x40 png file. Some (if not all) browsers
stretch the icon to a square. This stretched the original favicon
without keeping the aspect ratio. This commit replaces the favicon with
a square 128x128 png image.
This extends the 'Advanced build system tricks' section with a make
script to select the board debugger and serial based on the USB serial
number as reported by the device. This solution is different from the
udev-rule solution as it doesn't require administrative permissions.
Change driver guide to expect drivers to return negative errno codes instead of
enums for error codes. Those have the following advantages:
- More efficient implementation of POSIX compatibility wrappers:
- In case of error, just an `errno = -retval; return -1` is needed
- Better interoperability
- A lot of code within RIOT and in external code is doing so already.
Applying this consistently allows passing error codes through, rather
than translating between errno codes and custom enum values
- Not reinventing the wheel
- Defining and documenting custom error codes for each driver is unneeded
effort
- The error classes that device driver have to report are largely the same.
There is no reason to have dozens of error codes for an input/output
error, each with a unique spelling a programmer needs to memorize
This changes the prefixes of the symbols generated from USEMODULE and
USEPKG variables. The changes are as follow:
KCONFIG_MODULE_ => KCONFIG_USEMODULE_
KCONFIG_PKG_ => KCONFIG_USEPKG_
MODULE_ => USEMODULE_
PKG_ => USEPKG_
- Add libstdcpp feature to indicate a platform is providing a libstdc++
implementation ready for use
- The existing cpp feature now only indicates a working C++ toolchain without
libstdc++. (E.g. still useful for the Arduino compatibility layer.)
- Added libstdcpp as required feature were needed
- Added some documentation on C++ on RIOT
move and resize results if they are not within the document-window
modify the search result display with some javascript patching
(in page grease(tamper)monkey approach)
Added a new section, Appendix D, to describe a few key aspects
while exposing a macro to Kconfig.
Co-authored-by: Leandro Lanzieri <leandro.lanzieri@haw-hamburg.de>
- Add the new EXTERNAL_BOARD_DIRS variable that can contain a space separated
list of folders containing external boards
- Introduce $(BOARDDIR) as shortcut for $(BOARDSDIR)/$(BOARD)
- Map the existing BOARDSDIR to the new approach
- If BOARDSDIR is provided by the user, it will be added to
EXTERNAL_BOARD_DIRS for backward compatibility. (And a warning is issued
to encourage users migrating to EXTRA_BOARDS.)
- BOARDSDIR is updated after the board is found to "$(BOARDDIR)/..".
- Useful for `include $(BOARDSDIR)/common/external_common/Makefile.dep`
- Provides backward compatibility
An application/test/module that requires one feature out of a set of
alternatives (let's say either periph_uart, periph_spi, or periph_i2c) can
request this now using:
FEATURES_REQUIRED_ANY += periph_uart|periph_spi|periph_i2c
This adds information regarding the usage of Kconfig from an user
perspective and in-depth information on how Kconfig is currently
integrated to RIOT's build system.
Currently now margin between the return value and its description are added in
return value tables generated with the @retval command. This adds a 2em margin,
which is consistent with the margin after parameter names in the parameter
table.
- Added the file to `riot.doxyfile`
- Shortened the header to display properly
- Added `[TOC]` to let doxygen create a table of contents
- Added manual anchors to the headers for consistency with other doc files
- Use @code and @endcode for code blocks (using fenced blocks doesn't parse
with the Doxygen version used by the CI)
- Changed a numbered list containing code blocks to regular text, as the code
blocks as list items are not parsed correctly
- Enforce 80 chars per line limit
- Fixed some typos
- Removed trailing whitespace
- Added markdown syntax for code highlight in two cases
- Reduced the TODO section heading from level 1 to level 2
==> No content changes
This commit adds a README.md to the testing folder.
It explains the basic about how to run a test with testrunner.
It adds a reference so it will be displayed on the doxygen docs.
There currently is not obvious documentation for running tests.
lessc (node-less) and lesscpy do not produce the same output.
There are some minor whitespace +-1 in color values which
are not important but the output file is not stable
However lesscpy removes comments and so the license of the output file
As it produces an invalid file it support is dropped.
https://lesscpy.readthedocs.io/en/latest/#differences-from-less-js
To be able to include *_params.h in docuementation, STRIP_FROM_INC_PATH has to be empty. Otherwise, a number of warnings are thrown if *_params.h files with same names exist in different directories.
Add a documentation page for advanced low level tricks.
Document the `RIOT_MAKEFILES_GLOBAL_PRE` and
`RIOT_MAKEFILES_GLOBAL_POST`.
I could not work around to have `$(RIOTBASE)/Makefile.include` in the
doc as the `$()` part was removed, so I kept with `$RIOTBASE` for now.
It demonstrates:
* Adding a module with source code
* Setting a header include directory
* Adding dependences, which are evaluated before other modules dependencies
If the application compiles, everything is ok.
Process `Makefile.include` for external modules. It is included after the others
so it could overwrite some of the configuration if wanted.
Process `Makefile.dep` for external modules. It is included before the others so
it could be parsed before setting 'default' values to dependencies.