This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Add data field 'Firmware length' in Mesh event 'NRF_MESH_EVT_DFU_START'

Mesh core is aware of the total length of DFU package.
Why Application hasn't this data?

DFU packet DFU start has data field Firmware length (see here)
Mesh data structure m_transfer_state:dfu_transfer_state_internal_t has field total_segments (see: /nrf5-mesh/mesh/dfu/src/nrf_mesh_dfu.c:106)

But
Mesh Event NRF_MESH_EVT_DFU_START omits this important data in its structure nrf_mesh_evt_dfu_t::start (see: /nrf5-mesh/mesh/core/api/nrf_mesh_events.h:238)
And even public function nrf_mesh_dfu_state_get reports only progress percentage (see: /nrf5-mesh/mesh/dfu/src/nrf_mesh_dfu.c:894)

Could you please pass total length of DFU package to Application in next SDK for Mesh releases?
I need it to check, if whole firmware will feet into allocated bank and App segment

  • Hi,

    I need it to check, if whole firmware will feet into allocated bank and App segment

    The bootloader is already handling the task of allocating the swap area. You will receive an invalid data error if the firmware is too big. This way the application does not need to get involved and that's why we don't need to pass the firmware length. The source code of the bootloader is available under mesh/bootloader/src if you want to take a look.

    Best regars,

    Marjeris

Related