Changelog
2022-05
This is a Long-Term Support release.
Upcoming Breaking Change
With the next release of IOWA, the configuration flags IOWA_SECURITY_LAYER_TINYDTLS, IOWA_SECURITY_LAYER_MBEDTLS, IOWA_SECURITY_LAYER_MBEDTLS_PSK_ONLY, IOWA_SECURITY_LAYER_MBEDTLS_OSCORE_ONLY will be deprecated. The configuration flag IOWA_SECURITY_LAYER_USER will be the default.
The samples secure_client_mbedtls3, secure_client_mbedtls2, and secure_client_tinydtls provides a feature equivalent integration with Mbed TLS and tinydtls. They also serve as a basis for integration with other TLS/DTLS libraries.
New Features
- It is now possible to set the access rights of a LwM2M Server to all known Objects at once by calling
iowa_client_acl_rights_server_set()
with IOWA_LWM2M_ID_ALL as the Object ID. - Add a new API
iowa_client_get_server_configuration()
to retrieve a LwM2M Server setting. - More LwM2M Server settings are accessible, including the CoAP retransmission parameters. See
iowa_server_setting_id_t
. - IOWA generates new events of type IOWA_EVENT_SERVER_SETTING_CHANGED when a LwM2M Server setting is modified by a LwM2M operation on the LwM2M Server Object. See
iowa_event_t
. - The provided implementations of the Location Object (ID: 6) and the IPSO Location Object (ID: 3336) have new APIs
iowa_client_location_update_with_time()
,iowa_client_location_update_full_with_time()
,iowa_client_gps_update_location_with_time()
, andiowa_client_gps_update_location_full_with_time()
allowing the caller to specify the measurement timestamp. - Add a new API `iowa_coap_peer_proxied_get() to perform a GET through a forward-proxy.
Breaking Change
- The value IOWA_IPSO_LEVEL_CONTROL is no longer part of the enumeration
iowa_IPSO_ID_t
. To manipulate an IPSO level sensor, please use the IPSO Dimmer Object APIs. Note that the IPSO Level Control Object was renamed "Dimmer" in the LwM2M Registry.
Behavior Changes
- When a Response is bigger than the connection MTU, and IOWA_COAP_BLOCK_SUPPORT is defined, IOWA will now return the first block of the response instead of returning a 4.13 (Request Entity Too Large) code.
- The
iowa_server_info_t
structure now contains the LwM2M protocol version used by the LwM2M Server.
SDK Changes
- Some internal functions were renamed to avoid conflicts.
- Add three new samples illustrating how to integrate with a DTLS/TLS security library, one using Mbed TLS 3.1, one using Mbed TLS 2.28, and one using tinydtls.
- The sample custom_object_multiple_instances, illustrating how to manage multiple instances of a custom LwM2M Object, was simplified and documented.
Bug Fixes
- Fix a bug where corrupted data retrieved from the notification storage queues may lead to out-of-range memory accesses or value underflows.
- Fix a bug where a Notification bigger than the connection MTU was not correctly sent as the first block of a CoAP Block-Transfer.
- Fix a potential crash when handling a Observation on a multiple resource with no instance in Clients with no support of the Observe-Composite operation.
- Fix a bug where IOWA was returning an error to the LwM2M Server cancelling the Firmware Update process. The Firmware Update process was however cancelled correctly.
- Fix a bug where a Server lifetime or binding modified by calling
iowa_client_set_server_configuration()
was not automatically saved when IOWA_STORAGE_CONTEXT_AUTOMATIC_BACKUP is defined. - Fix a bug where the Access Control List Object Instances where not correctly restored when loading a context. The saved access control rights were however still enforced.