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

FDS delete multiple records

I call the following function to delete old FDS records before I write a new record. It works well if I have only one old record. But when there are multiple records, it stops the application. RTT viewer shows it has gone through fds_record_delete() for each record, but only the oldest one is deleted. RTT viewer also prints fatal error, but my breakpoint in app_error.c is not called.

Here is the RTT viewer printout:

 0> APP:INFO:Deleted record ID: 8 
 0> APP:INFO:Deleted record ID: 9 
 0> APP:INFO:Deleted record ID: 10 
 0> APP:INFO:Deleted record ID: 11 
 0> APP:INFO:Deleted record ID: 12 
 0> APP_ERROR:ERROR:Fatal

Here is the code:

static ret_code_t fds_test_find_and_delete (void)
{
    #define FILE_ID     0x1111
	#define REC_KEY     0x2222
	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, REC_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
	ret_code_t ret = fds_gc();
	if (ret != FDS_SUCCESS)
	{
			return ret;
	}
	return NRF_SUCCESS;
 }

Another question is I see record ID counts up every time I write a new one. The old ID is not reused even the record is deleted. Is there an up limit for the count? What will happen if it counts to the limit?