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

nrf5_SDK_for_Mesh_v2.1.1, FLASH_MANAGER_PAGE_COUNT_MINIMUM, incomprehensible ASSERT on access.c

Hello,
I'm developing a solution by using MESH SDK : nrf5_SDK_for_Mesh_v2.1.1

There is an ASSERT on access.c in nrf5_SDK_for_Mesh_v2.1.1_src\mesh\access\src\ as below.

/* Verify that the ACCESS_FLASH_PAGE_COUNT is of sufficient size. */
NRF_MESH_STATIC_ASSERT(FLASH_MANAGER_PAGE_COUNT_MINIMUM(ACCESS_FLASH_ENTRY_SIZE, ACCESS_MODEL_STATE_FLASH_SIZE) <= ACCESS_FLASH_PAGE_COUNT);
where ACCESS_MODEL_STATE_FLASH_SIZE is defined as (ALIGN_VAL((sizeof(fm_header_t) + sizeof(access_model_state_data_t)), WORD_SIZE) * ACCESS_MODEL_COUNT)

I don't understand this ASSERT. I think this ASSERT should be changed as below.

NRF_MESH_STATIC_ASSERT(FLASH_MANAGER_PAGE_COUNT_MINIMUM(ACCESS_FLASH_ENTRY_SIZE, ACCESS_MODEL_STATE_FLASH_SIZE_SINGLE) <= ACCESS_FLASH_PAGE_COUNT);
where ACCESS_MODEL_STATE_FLASH_SIZE_SINGLE is (ALIGN_VAL((sizeof(fm_header_t) + sizeof(access_model_state_data_t)), WORD_SIZE))

Because the flash needs space to save not all (largest) entries but a single (largest) entry.
Please let me know if I'm misunderstanding.


Thank you in advance.

Related