I am using the FDS functions to save needed data to flash and retrieve it when needed. The init, writing, and reading all function correctly. However I am running into trouble with the garbage collection function.
When there is nothing written to flash the gc returns a value of 0 in the event handler. A value of 0 is FDS_SUCCESS if I correctly understand.
But if there is data written, gc returns a value of 0x06 in the event handler. According to fds.h (pasted below) that error is FDS_ERR_NO_OPEN_RECORDS. I am not sure why the gc function is returning with that error, I didn't think that was a valid error code for the gc function.
I have triple checked my code for any fds open calls that are not paired with a fds close call and do not have any.
I have also tested that when the gc returns with an error of 6, that the flash memory is not erased, as a memory full condition that exists before running gc still exists.
I would appreciate any help or suggestions.
nRF51822 chip, SDK 11.0, s130 v2.0.1
enum
{
FDS_SUCCESS = NRF_SUCCESS, //!< The operation completed successfully.
FDS_ERR_OPERATION_TIMEOUT, //!< Error. The operation timed out.
FDS_ERR_NOT_INITIALIZED, //!< Error. The module has not been initialized.
FDS_ERR_UNALIGNED_ADDR, //!< Error. The input data is not aligned to a word boundary.
FDS_ERR_INVALID_ARG, //!< Error. The parameter contains invalid data.
FDS_ERR_NULL_ARG, //!< Error. The parameter is NULL.
FDS_ERR_NO_OPEN_RECORDS, //!< Error. The record is not open, so it cannot be closed.
FDS_ERR_NO_SPACE_IN_FLASH, //!< Error. There is no space in flash memory.
FDS_ERR_NO_SPACE_IN_QUEUES, //!< Error. There is no space in the internal queues.
FDS_ERR_RECORD_TOO_LARGE, //!< Error. The record exceeds the maximum allowed size.
FDS_ERR_NOT_FOUND, //!< Error. The record was not found.
FDS_ERR_NO_PAGES, //!< Error. No flash pages are available.
FDS_ERR_USER_LIMIT_REACHED, //!< Error. The maximum number of users has been reached.
FDS_ERR_CRC_CHECK_FAILED, //!< Error. The CRC check failed.
FDS_ERR_BUSY, //!< Error. The underlying flash subsystem was busy.
FDS_ERR_INTERNAL, //!< Error. An internal error occurred.
};