I am currently using Mesh SDK 4.2.0 and I could successfully write and read reliably from the flash using a second flash manager instance used in parallel with the flash manager instance used by the Mesh stack.
flash_manager_wait() is being called in my app before almost if not all operations with the flash, namely when I use flash_manager_entry_read or flash_manager_entry_commit. I am running into a mesh_assert problem that points me to a recursion check on bearer_event.c, line 370: NRF_MESH_ASSERT(!s_recursion_guard);
It seems as this is a known problem as the lines above have the following contents: "TODO: The recursion guard can be removed when the call to bearer_event_handler() is removed from flash_manager_wait()."
What are the operations that require a call for flash_manager_wait()? Is there is a way to escape this mesh assert by not waiting for the flash to be free if it is already waiting? (I suppose this is the problem)
Should I just place a while (!flash_manager_is_stable()){} in place of all calls for flash_manager_wait()? Is this the correct thing to do when using a second flash manager instance?