November 6, 2018 (Final)
October 23, 2018 (Planned)
Those can now be found in Apache NimBLE repository. Transient packages in core repository are provided for backward compatibility with existing targets.
Previous version of package is available as
hw/mcu/nordic/nrf52xxx-compat, however all users are strongly encouraged to migrate custom BSPs to new package as the old code will no longer be maintained and will be eventually removed.
For more information see below.
Two new APIs were added to the log subsystem. They can be enabled by setting sysconfig variables LOG_STORAGE_INFO and LOG_STORAGE_WATERMARK, respectively, to 1.
set_watermark which allows setting the watermark on log (by index). This information is used to calculate the size of entries logged after the watermark, thus allowing the marking of last read item and unread items .
The watermark for each log is persisted in config and restored on reboot.
The option to keep statistics for the number of log entries written, logs filtered out because of log level settings, log entries dropped due to log collection not fetching (clearing) them on time, and errors while writing has been added. The sysconfig setting to enable this option is LOG_STATS.
Support has been added for encrypted flash (e.g. external SPI flash). The implementation allows you to encrypt by partitions. The hal_flash API exposes encrypt/decrypt operations on a pseudo flash device which is split into a common part and architecture-specific part. The first architecture-specific part supported is the Nordic nRFf51 and nRF52 platforms. Such a split allows the developer to leverage cryptographic hardware acceleration, if available in the platforms.
A common set of error codes for the I2C HAL and a new
hw/util/i2cn library (as in I2C-n logic for n retries) has been added. The dev-list discussion can be found here: https://lists.apache.org/thread.html/bd2b854cbf7d6e0811fff33177c85fa1435dff7f1fb3c8baab6061e0@%3Cdev.mynewt.apache.org%3E
The API enables the use of config_fcb engine as a generic key-value storage without the need to use config module. It makes it possible to read and write any key at any time and they are immediately persisted and loaded directly from FCB so there is no need to store them in RAM.
"Sensor error listeners" can be registered with a sensor. When a read from a sensor fails, all error listeners that match the read attempt are notified of the error.
Mbed TLS 2.13.0 introduces several new features improving DTLS support over low-bandwidth, high latency networks with high packet loss. It also has a security fix and other features.
SEGGER Real-Time Transfer (RTT) support was updated to provide better integration with Apache Mynewy. Changes include:
An interface lock has been added for the
led_itf. It can be used for the interface structure for any driver e.g. the battery. If a BSP shares an interface particularly I2C, it can initialize and set a mutex for shared interface access.
hw/mcu/nordic/nrf52xxx package was refactored to cleanup the peripherals code in BSPs. Changes include:
All existing BSPs for nRF52xxx boards are converted to use new package.
Travis Continuous Integration (CI) can now be used to build and test Apache Mynewt on both Linux and OSX systems. The following can be performed:
newt test all -e net/oic/test,net/ip/mn_socket/test
newt build all on simple targets prepared for all apps in
mynewt-nimble repositories. Most of these targets use nrf52840pdk BSPs and a few use other BSPs. The
bletest app is excluded as it is very outdated.
A HAL watchdog monitor has been added which tries to dump system state before HAL watchdog fires. A check has been added to check that the watchdog timeout is at least 4 seconds when this monitor is enabled.
The relevant syscfgs are
OS_IDLE_TICKLESS_MS_MAX (in milliseconds).
A generic task-allocation mechanism has been added to the
test/runtest library. When a unit test needs a new task, it requests one from runtest. When a test completes, runtest suspends all the allocated tasks. The number of generic tasks are no longer limited to four and adding new unit tests is simpler.
SysView can now be used to trace/profile any user-defined events. Event identifier is any number selected by user - SysView client will match start/stop traces for each identifier and display execution time as well as run count.
Console handles queue of available line events and triggers flow control on UART automatically.
A transient package is an empty package that simply links to another package. It enables easier, backwards-compatible upgrade path when moving or renaming packages. Every time transient package is included in build,
newt will emit a warning which encourages to change configuration to use linked package instead. Transient package can be defined as follows:
pkg.name: old-package pkg.type: transient pkg.link: @repo/target-package
It is now possible to have two debug sessions open from the same machine. "newt debug" can now have a session with JLink as well as openocd simultaneously open. One example of its use is for debugging a BLE session between a central and a peripheral.
newt debug slinky_nrf52 --extrajtagcmd "-port 5431 -select usb=682148664"
Newt now warns/returns an error if you use any repository that is incompatible with the current newt version.
>newt info Error: This version of newt (1.3.0) is incompatible with your version of the apache-mynewt-core repo (1.4.1); Please upgrade your newt tool to version 1.4.0
It will also warn/return error when you try to install/upgrade a repository to a version that is not compatible with current newt.
create-imagecommand to allow generation of encrypted images. RSA-OAEP encryption scheme is used to encrypt the AES-128 encryption key.