Fix of #11354: Function '_write_r' of ESP32's newlibc does not write the output of function 'write(STDIO_FILENO, ...)' to the UART interface. To fix this problem, module 'newlib_syscalls_default' is now used by default. Function '_write_r' of module 'newlib_syscalls_default' uses 'stdio_write' which in turn uses 'uart_write' if module 'stdio_uart' is used which is now the default case for ESP32.
The hifive1 has only 16kB of memory. The tests tries to allocate 12
thread stacks with 1kB (default) stacksize each. The corresponding
malloc() fails for the last two threads, making the test fail silently.
Set a delay of three seconds at the beginning of the test. Otherwise,
the node will send a neighbour solicitation with a blank link local
address, it won't receive a reply, and the test will fail.
This patch is a reduced version of an earlier one, with the bare minimum
required to be able to run the test and get the release going.
Original description:
atoi() cannot detect errors. Many implementation return zero on error
and that is what was being checked here, making the "udp send" command
unable to parse integer values of zero. On top of this, the behavior on
errors does not seem to be specified in the standard (so it is not even
correct to check for zero even when zero is not an accepted value, like
for a port number).
The result of all this is that sending UDP packets of zero length (as
required by the Release Specs) was not possible.
This patch replaces atoi by strlen, which allows for robust error detection.
Sending zero length packets is possible.
Calling send() or write() on a connected UDP socket raises a
kernel panic in posix_sockets.c, line 215, because _sockaddr_to_ep()
is called from socket_sendto() with address set to NULL.
This change modifies socket_sendto() to
* Check if the UDP socket is connected when the address argument
is NULL.
* If connected, use the stored remote endpoint for sock_udp_send().
This commit cleans up magic number and defines bitfields.
Adds error codes for ADDR/DATA NACK and ARBLOSS
Adds error handling, it corrects when an error occurs
Protects from flags that could lockup the bus
c25519[1] is a library optimized for embedded applications handling ed25519
signing and x25519 crypto. It uses significantly less memory and flash
compared to TweetNaCl and is significantly faster when used on a
samr21-xpro
[1]: https://www.dlbeer.co.nz/oss/c25519.html