nRF51 IoT SDK v. 0.8.0 ---------------------- Highlights: - Added new protocols DNS, SNTP - client roles only. - Added new feature to CoAP Protocol to Observe resources. Refer to https://tools.ietf.org/html/draft-ietf-core-observe-16. - Added examples to exchange data with cloud for both MQTT and CoAP. - Added DTLS support for CoAP using TinyDTLS library for both client and server roles. - Added support for PACKs. - Bug fixes, API and documentation improvement and directory restructure. - Support for 32k RAM variant only. General: The release package when unzipped has the following top-level structure. A brief explanation of the contents of each folder accompanies the structure below. Nordic |-- Documentation // nRF51 IoT SDK HTML documentation. `-- nrf51 |-- components | |-- ble // BLE modules. | |-- drivers_nrf // nRF51 peripheral drivers. | |-- iot // IP stack and other IoT-related modules. | |-- libraries // Common modules. | |-- softdevice // The s1xx_iot SoftDevice and headers. | `-- toolchain // Platform specific startup files and linker scripts. |-- examples | |-- bsp // Board headers. | `-- iot // Various IPv6 example applications. `-- external |-- lwip // Third-party lwIP TCP/IP implementation and porting for nRF51. `-- tinydtls-0.8.1 // Third-party DTLS implementation. Key features: 6LoWPAN and IPSP library - 6LoWPAN compression and decompression. - 6LoWPAN Node role. - Packet flow control. - IPv6 prefix management. - The possibility to integrate in any third-party IPv6 stack. - Can be integrated with an RTOS. Nordic's IPv6 stack - Support for multiple IP addresses. - ICMPv6 module that can be configured to respond automatically to echo requests or handle them in the application by registering a call back. - UDP socket APIs to listen on a port and/or to be a client. - Can be integrated with an RTOS. - DNS client support to resolve host names. - SNTP client to request the time in Unix time format. Additionally, it is possible to request local time with triggering an NTP query. Nordic's CoAP library - CoAP message types CON, NON, ACK, and RESET. - Token matching on responses to a local client generated request. - Endpoint creation as resources. - Automatic lookup of requested endpoint when receiving a remote request. - Endpoint resource function callback to tune response message. - Permission setting on endpoints to select methods to be handled by the endpoint resource callback function. - Automatic generation of .well-known/core link-format discovery string. - Support for observable resources and observing resources. Following toolchains/devices have been used for testing and verification: - ARM: MDK-ARM version 4.72.10, 5.14.0.0 - GCC: gcc-arm-embedded 4.9 2015q1 - Windows 7 SP1 64-bit - Examples that exceed the code size of 32kBytes cannot be compiled with the unlicensed version of MDK-ARM. Supported boards: - New version of nRF51 Dev. Kit (PCA10028) nRF51422-QFAC A0 (AA) (Uses an nRF51422 variant to be able to run ANT examples.) Supported SoftDevices: - s1xx_iot : This software is a prototype version, please refer to the supplied license. Known issues, limitations: - 6LoWPAN Router role and 6LoWPAN Border Router role are not supported. - Currently, received buffer size in the 6LoWPAN library is limited to 1024 bytes. - IPv6 Router role is not supported. - No analysis on radio, resource or other performance metrics has been performed as this is a technology prototype. - It may be observed certain times that the BLE link disconnects and this may appear random to the user. Most often this occurs when receive buffers are unavailable to receive more data from the peer. Current configuration of the library should minimize the frequency of disconnects resulting from this, but cannot be completely ruled out. - Currently no timers are implemented in any of the modules and hence lifetimes of prefixes, contexts, IP addresses etc. are not maintained. - TCP: if both server and client use the lwIP TCP implementation ported for nRF51, closing the port from the client may fail and result in an undefined connection state. - ICMP ping at interval 0.1 seconds with logs enabled results in disconnection due to inadequate receive buffers. - Once BLE link is disconnected, lwIP example applications no longer get a global prefix. The only way to start using the examples with the global prefix again is to restart the application. - When connecting multiple kits to the same Bluetooth dongle on the router, disconnects may be observed. The root cause of this is not completely understood yet. However, changing connection interval on the router to (10ms, 15ms) helps minimize the chances of disconnect. Changes: - NEW Modules : DNS, SNTP, iot_timer - CoAP : API changes and added new feature to support observable resources for both client and server. - MQTT : Bug fixes. - Examples : Added examples for new features including DTLS for CoAP using TinyDTLS library. Added examples to communicate with cloud. - 6LoWPAN library: Receive buffer size increased to 1024 from 128 bytes and bug fixes. - Documentation improvements.