BLE Mesh DFU Recovery Question(NCS v2.7.0)

Hello,

I have a question regarding the internal handling of the update recovery process for BLE mesh DFU, specifically within the DFU Server model + BLOB Server model.

I know there's support for a target to recover if it gets rebooted in the middle of an update, and that on the user's end, the transfer recovery callback must be defined and must provide a valid BLOB stream for the server model. But is the write address for the next received chunk automatically stored and restored with the rest of the transfer state so that, upon reboot + recovery, the transfer process can automatically resume at the correct starting location? Or is this something that I'll need to manage in my application? I tried to work it out by looking through the source code and saw that both the DFU Server and the BLOB Server models use their own "store_state" function regularly throughout the transfer process, but it's not immediately clear to me if the write address is part of the stored state.

I ask because I'm providing the BLOB stream in the transfer recovery callback using bt_mesh_blob_io_flash_init(), which takes a parameter representing the "offset into the flash area, in bytes". But after a reboot, I don't have direct access to this offset.

Please let me know if any additional information is needed! Thank you!

Parents
  • Hi Amira,

    I am going to help you with this case, but I am unfamiliar with the BLOB models and its implementation, so I will need some time to read up the specification and source code.
    I should be back in 2 working days unless someone else in the community already answered you then.

    Hieu

Reply
  • Hi Amira,

    I am going to help you with this case, but I am unfamiliar with the BLOB models and its implementation, so I will need some time to read up the specification and source code.
    I should be back in 2 working days unless someone else in the community already answered you then.

    Hieu

Children