Releases: NordicSemiconductor/IOS-nRF-Mesh-Library
3.1.0
3.0.2
3.0.1
A new major version of nRF Mesh.
Important
Version 3 breaks API compatibility with previous version. Migration is needed, but should not be difficult. See #295 and #323 for details.
Also, the JSON file generated using Export has changed. nRF Mesh app and library will accept old JSONs, but will generate only new ones. The new one is compatible with nRF Mesh 3.0 for Android.
Features
- Scenes support
- Heartbeats support
- Key Refresh Procedure (only in the library, not available in through the sample app)
- Periodic publishing from local node
- Partial export (allows to export only selected nodes, or hide Device Key, so that a Guest could not re-configure nodes)
- Migration to Xcode 12.4 and Swift 5.3
- Migration to CryptoSwift (from OpenSSL) (#322) (which removed last Objective-C code)
Complete list of features and changes is available in #295 and #323.
PS. There is no tag 3.0.0 as it had lint validation issues for CocoaPods release. Please use 3.0.1 instead.
3.0 Beta 1
This release bring a ton of features. Because of that, some API and JSON schema changes were necessary.
Have a look at #295 for more details regarding what has changed.
Note, that this version is not backwards compatible. The JSON file produced by nRF Mesh 3.0 or the underlying library is not compatible with one accepted by nRF Mesh 2.x (including Android version). The nRF Mesh for Android will also be migrated to support the new schema in coming months.
To make that more clear, this is initially released as 3.0-beta1 and will be promoted to 3.0 when Android version is ready.
2.2.3
Improvements:
proxy
property added to theProxyFilter
returns the connected Proxy Node, or nil if no proxy is connected, or the proxy node is unknown.ProxyFilterDelegate
methods will now be called using thedelegateQueue
given as a parameter toMeshNetworkManager
.- The sample app displays the user-given node name in Proxy screen.
- New icons in the sample app.
Bugs fixed:
- Fixed an issue introduced in version 2.2.2 where the app could crash on Proxy tab on disconnection.
2.2.2
IV Index related Improvements:
- IV Index object has been moved from Network Key to Mesh Network. This is a network property, not a subnetwork property.
- IV Index updates fixed. The library will now handle the Secure Network beacon with
updateActive
flag set or high IV Index. The spec-defined time requirements are checked, so at least 96h need to pass in IV Index Normal Operation state and at least 96h in IV Index Update In Progress. The node will not execute more than one IV Index Recovery within a period of 192 hours. - IV Index Test Mode added: see
MeshNetworkManager.ivUpdateTestMode
flag. - A flag to disable limit of 42 when doing IV Recovery. This allows to connect to a network after IV Index changed by more than 42, which can happen at least in 48 weeks since last connection.
Note I: The IV Index changes only when a Secure Network beacon is received. This happens usually when you connect to a Proxy Node, but the Proxy may also relay a SNB sent by another Node.
Note II: To test IV Index Update enabled IV Test Mode. A switch has been added to Settings screen in the sample app. Test Mode allows you to transition IV Index by 1, or change the IV Index Update flag from true to false without the need to wait 96h. It will, however, not allow to transition to higher IV Index without passing the min-time requirement.
Note III: The library will not send Secure Network beacons. It fully relies on other Nodes to initiate the process of updating IV Index. In most applications it will not be a case, as other nodes will reach half sequence number before the app, unless it's constantly connected to the network and sends messages in a loop, which doesn't seem to be probable scenario.
Other improvements:
- Methods to set and get the outgoing sequence number for local Elements have been added (#265) (649fc61).
- Migration to Swift 5.2.
- Disconnect button added in the sample app. Disable Automatic Connection to use.
- Added Mac to podspec.
- App icon refreshed.
- Improved discovering new proxy connection.
Bugs fixed:
- Primary Element's name is not overwritten anymore. What is set in
localElements
should be honored. - Synchronization in
ProxyFilter
andBaseGattBearer
has been fixed (#246).
2.2.1
2.2.0
Improvements:
- Support for proxies with limited Proxy Filter (#212),
- Ensuring disconnection after provisioning.
- Light Lightness, Light CTL and Light HSL messages added to the library,
Bugs fixed:
- Resuming scanning when Automatic Connection is reenabled,
- Connecting to nodes advertising old Network ID during Key Refresh procedure,
- Several potential crashes fixed, including #208,
Version 2.2.0 may slightly break backwards compatibility, as some methods got optional initialiser and at one place a typo was fixed.
2.1.0
2.0.0
The new version is a full rewrite of the library and sample app.
The API has changes and is not backwards compatible with the old one. See documentation for how to implement using the new version. The old mesh configuration should be automatically migrated to the new database format when manager.load()
is called.
Supported features:
- Provisioning devices,
- Node configuration,
- Sending generic and vendor messages (some Generic Messages are not yet implemented) to unicast, group and virtual addresses,
- Proxy Filter configuration
- Management of provisioners, network keys, application keys,
- Configurable network parameters,
- Support for local models on local elements,
- Importing and exporting mesh network configuration (format compatible with Android nRF Mesh),
- Support for local Configuration Server (ability to configure an iPhone from a remote device).
- Handling Secure Network beacons.
Missing features:
- IV Update procedure and sending Secure Network beacons,
- Updating keys in the sample app (this should be doable using the library),
- Not all Generic Messages are implemented,
- Support for Health Server and Clients,
- Hearbeats,
- Remote provisioning (it is now necessary to connect to a device with a Gatt Provisioning Service to be able to provision it)