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

PM_EVT_PEER_DATA_UPDATE_FAILED after deleting records from flash...

Hello, 

I am using nrf52832, having SDK 15.3.0 in Segger Studio IDE. Win10

I am using fds_test_find_and_delete() function, to find and delete particular record from flash.

But i am doing so, my peer manager is throwing error as PM_EVT_PEER_DATA_UPDATE_FAILED and connection is getting lost.

I am aware of that peer manager is also using FDS library to store the bond data. But i dont know why it is getting erase.?

Kindly find the attached function for deleting the record.

 

/*flash data storage delete*/
ret_code_t fds_test_find_and_delete (uint16_t FILE_ID, uint16_t RES_KEY)
{
    fds_record_desc_t   record_desc;
    fds_find_token_t    ftok;

    ftok.page=0;
    ftok.p_addr=NULL;
    // Loop and find records with same ID and rec key and mark them as deleted. 
    while (fds_record_find(FILE_ID, RES_KEY, &record_desc, &ftok) == FDS_SUCCESS)
    {
        fds_record_delete(&record_desc);
        NRF_LOG_INFO("Deleted record ID: %d \r\n",record_desc.record_id);
    }
    // call the garbage collector to empty them, don't need to do this all the time, this is just for demonstration
    ret_code_t ret = fds_gc();
    if (ret != FDS_SUCCESS)
    {
        return ret;
    }
    return NRF_SUCCESS;
}
/**/

Below is the Section placement macros:

FLASH_PH_START=0x0 
FLASH_PH_SIZE=0x80000
RAM_PH_START=0x20000000
RAM_PH_SIZE=0x10000
FLASH_START=0x26000
FLASH_SIZE=0x5a000
RAM_START=0x20002640
RAM_SIZE=0xd9c0

I have used the below FILE_ID and REC_KEY in my code to store the record:

#define FILE_ID_RES     (0xf010)
#define REC_KEY_RES     (0x7010)
#define FILE_ID_WEIGHT  (0xf070)
#define REC_KEY_WEIGHT  (0x7070)
#define FILE_ID_DEVICE  (0xf0A0)
#define REC_KEY_DEVICE  (0x70A0)

Kindly provide the solution for the same..

Related