mesh updates under Zephyr


Our devices are provisioned via mesh shell, not over the air so we have to pass the IV index to the mesh provisioning command
However, because the current IV index is not known ( no public API that I could find ) index 0 is always passed
As a result if a node is provisioned with iv index 0 after the network IV index has been updated, the newly provisioned device goes on the RPL list and stays there forever, and its messages are not delivered to the application model layer.

We thought that it might be  possible to disable IV updates or RPL altogether

However 

Zephyr has hard coded IV update parameters in net.h

 How many hours in between updating IVU duration */
#define BT_MESH_IVU_MIN_HOURS      96
#define BT_MESH_IVU_HOURS          (BT_MESH_IVU_MIN_HOURS /     \
				    CONFIG_BT_MESH_IVU_DIVIDER)
#define BT_MESH_IVU_TIMEOUT        K_HOURS(BT_MESH_IVU_HOURS)

Questions

1. Is there a public API to get the current IV index from a provisioned device?
2. Is there a way to disable IV updates altogether?
3. How does the mesh Zephyr mesh stack handle a situation where an IV index was updated while a device is out of range or powered off?
Its index would be out of sync and it would go on the RPL list - is that so? 

Thanks

Andy

Parents Reply Children
No Data
Related