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;
}
}
}