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

FDS: Not finding records

Hi all!

I´m trying to use FDS to read and write to my nRF51 using the example from Infocenter. The write seems to be OK and returns 0x00. But fds_record_find() returns 0x0A, which is FDS_ERR_NOT_FOUND?

Any ideas on what I do wrong?

My code:

#define FILE_ID     0x1111
#define REC_KEY     0x2222
bool is_fds_initialized = false;

bool fds_initialize_failed = false;
static uint32_t const m_deadbeef = 0xDEADBEEF;

static void write_data()
{
	
	fds_record_t        record;
	fds_record_desc_t   record_desc;
	fds_record_chunk_t  record_chunk;	
	
	// Set up data.
	record_chunk.p_data         = &m_deadbeef;
	record_chunk.length_words   = 1;
	// Set up record.
	record.file_id              = FILE_ID;
	record.key		            = REC_KEY;
	
	record.data.p_chunks		= &record_chunk;
	record.data.num_chunks		= 1;
    
	ret_code_t ret = fds_record_write(&record_desc, &record);
	if (ret != FDS_SUCCESS)
	{
		// Handle error.
		SEGGER_RTT_WriteString(0, "Write failed.\n");
	}	
	
	SEGGER_RTT_WriteString(0, "Data written.\n");
	
}

static void read_data()
{
	
	fds_flash_record_t  flash_record;
	fds_record_desc_t   record_desc;
	fds_find_token_t    ftok;
	ret_code_t			err_code;
	
	memset(&ftok, 0x00, sizeof(fds_find_token_t)); // Zero token before search
	
	// Loop until all records with the given key and file ID have been found.	
	err_code = fds_record_find(FILE_ID, REC_KEY, &record_desc, &ftok);
	if (err_code == FDS_SUCCESS)
	{

		while (err_code == FDS_SUCCESS)
		{
			if (fds_record_open(&record_desc, &flash_record) != FDS_SUCCESS)
			{
				// Handle error.
				SEGGER_RTT_WriteString(0, "Read failed.\n");
			}
		
			// Access the record through the flash_record structure.
			SEGGER_RTT_printf(0, " Founc record:%u\n", &flash_record.p_data);
		
			// Close the record when done.
			if(fds_record_close(&record_desc) != FDS_SUCCESS)
			{
				// Handle error.
				SEGGER_RTT_WriteString(0, "Close failed.\n");
			}
		
			err_code = fds_record_find(FILE_ID, REC_KEY, &record_desc, &ftok);
		
		}		
		
	}
	else
	{
		
		switch (err_code)
		{
		case FDS_ERR_NOT_FOUND :
			SEGGER_RTT_WriteString(0, "Record not found.\n");
			break;
			
		 default:
			SEGGER_RTT_printf(0, " Error in fds_record_find: %u\n", err_code);
			break;
			
		}
		
	}
		
}
Related