On `native` when using `vfs` the `fmt` print functions do not work.
This is because the `fmt` module uses the `write()` system call which
is bend by the `native_vfs` module to use `vfs_write()`. However,
`native` does not use a `stdio` module to print. Instead, it just
writes to the hosts standard I/O directly. As such, STDIN, STDOUT, and
STDERR are never initialized for `vfs` so `vfs` does not recognize
`STDIN_FILENO`, `STDOUT_FILENO` and `STDERR_FILENO` as valid file
descriptors.
This test case showcases this bug.
Add an example that implements an external board based on native.
It relies on 'BOARDSDIR' and uses common files from 'RIOT/boards'
through 'RIOTBOARDS'.
This application also works with the docker integration.
Previously, the test would start sending the first test commands right
at the beginning. This fails on boards whose UART is not ready at that
point.
This PR makes the test script explicitly wait for the prompt to be
ready.
Using the shell to run unittests allows not needing
to wait for a string at the start of the test which
makes the test independent having the application reset
after the terminal is open.
Using the shell to run unittests allows not needing
to wait for a string at the start of the test which
makes the test independent having the application reset
after the terminal is open. The same goes for triggering
sending UDP test pkts.
The `periph_backup_ram` test expects the CPU to enter Deep Sleep, wake up
(causing a CPU reset) increment a counter and go back to sleep.
Introducing a requirement on interaction after reset breaks the test.
The test application now prints in a loop the input character. In case
stdin is not ready yet after startup this lets the possibility to try to
send several time a character before failing.
The automatic test is now more robust on platforms where stdin takes
time before it gets in a ready state (some AVR, hifive).
To test if GPIO interrupts can wake the CPU from sleep, configure
BTN0 (if availiable) as a wake-up source.
Pressing the buttong should wake up the CPU.
The ubjson module has a number of quality defects and is unsafe.
Considering CBOR is popular, standarized and supported in RIOT and that
the ubjson implementation is a home-grown one whose API will likely be
unfamiliar to new users, I propose to delete it.
This removal, of course, dows not have to be NOW. We can deprecate it for
one or two releases before.
What's wrong with this module?
- Unsafe: the parsing is done recursively. This is embedded in the API, so it
is not possible to fix it without changing the API. A document with too much
nesting can cause a stack overflow.
- Does not validate writing: it is possible to produce invalid output. From
the docs:
> The library won't complain if you write multiple values that are not
> inside an array or object. The result will just not be properly serialized.
- Poorly tested. As shown by #11702, #11703 the tests were not even detecting
that a False was stored as True.
- In line with the previous remark, see
68dc5b0d6e/tests/unittests/tests-ubjson/tests-ubjson.c (L66-L77)
Why is the following code in the unit tests??
```c
irq_disable();
sched_set_status(data->main_thread, STATUS_PENDING);
```
- #2175 is still unfixed after 3.5 years.
- Code quality. The code has multiline macros that assign variables and
return. See c332514875/sys/ubjson/ubjson-write.c (L34-L41)
Can we mark it as deprecated this release and sweep it in the following one?
gnrc_sixlowpan_frag_rm_by_datagram() currently doesn't release the
packet in the reassembly buffer entry removed, meaning it puts a leak
into the packet buffer. This changes the tests to check for that error.
The application is mainly to compile-test non-blocking UART
functionality, but some functional testing is also possible.
With non-blocking UART the total runtime of the program is 2100735 µs
on same54-xpro.
With blocking UART the total runtime is 2152407 µs.
- Define test_utils_interactive_sync as DEFAULT_MODULE in Makefile.tests_common
- For tests disabling autoinit, add test_utils_interactive_sync to main
- Add DISABLE_MODULE += test_utils_interactive_sync for tests requiring
sudo, `tests/shell`, `tests/minimal` and `tests/stdin`
- Add shell_commands to tests/periph_wdt and tests/struct_tm_utility to
pull `r` and `s` commands
- Remove includes and usage in `tests/main.c` for tests that where
already using test_utils_interactive_sync
- Since `printf()` is buffered it might not arrive in a single
read to pexpect. Regex which terminate in a group match might
match only some elements, this might break tests that depend
on exact group matching.
The string formatter initially used doesn't seem to be supported by the AVR toolchain. Correctly closing the buffer with a null byte and using plain %s formatter works in all cases
- Use standard RIOT style `ina2xx_params_t` on initialization as explained in
[1] instead of a custom API
- Provided a default configuration via `ina2xx_params_t` as required by [1] that
works fine for the INA219 breakout board and with an optimal resolution that
still covers the whole range of USB high-power devices (500 mA @ 5V) with a
comfortable safe margin.
- Changed initialization procedure to include a device reset and connectivity
test, as required by [1]
- The calibration value is now calculated by the driver
- This simplifies using the driver a lot
- The user can still choose a trade-off between range and resolution that
matches the application requirements, but now among predefined values
- This allows the driver to easily convert the raw data into meaningful
physical data, as the resolution of the raw data is known
- All measurements are provided as meaningful physical data as required by [1]
[1]: https://github.com/RIOT-OS/RIOT/wiki/Guide:-Writing-a-device-driver-in-RIOT
The INA219 has the exact same interface as the INA220 (including values and
semantics of the configuration register). Thus, this driver can be used for
both. The ina220 has been renamed to ina2xx to reflect this and pseudo modules
for the ina220 and ina219 have been added.
The tests doesn't work when length_encoding is above the maximum uint16
value.
Also add a set that checks the right error code is returned with too
small length_encoding.
functional changes:
- enable test to test the driver in SPI mode
style changes and code simplification:
- enable SPI mode
- fixed typos in doxygen
- fixed line length issues
- simplified code
- use fmt for formatting numbers
- use US_PER_SEC instead of magic value
- use named return values provided by driver
- use puts where ever applicable
Newer gcc versions have an option to enable overflow warnings for string operations. This option is enabled by default. For this test, it is necessary to disable this warning if the compiler supports this option.
This test application defines a packages which imports a very simple Arduino library that is used by test application to demonstrate how an Arduino library can be imported as package and used by an application.