| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Typedefs | Functions
Flash operations
DFU bootloader

## Typedefs
typedef fs_cb_t | dfu_flash_callback_t
| fstorage event handler function for DFU fstorage operations. More...

## Functions
uint32_t | nrf_dfu_flash_init (bool sd_enabled)
| Function for initializing the flash module. More...
fs_ret_t | nrf_dfu_flash_store (uint32_t const *p_dest, uint32_t const *const p_src, uint32_t len_words, dfu_flash_callback_t callback)
| Function for storing data to flash (with or without the SoftDevice enabled). More...
fs_ret_t | nrf_dfu_flash_erase (uint32_t const *p_dest, uint32_t num_pages, dfu_flash_callback_t callback)
| Function for erasing data from flash (with or without the SoftDevice enabled). More...
void | nrf_dfu_flash_error_clear (void)
| Function for clearing an error that has occurred during fstorage operations.
fs_ret_t | nrf_dfu_flash_wait (void)
| Function for waiting for an event from fstorage. More...

## Detailed Description

## Typedef Documentation

typedef fs_cb_t dfu_flash_callback_t

fstorage event handler function for DFU fstorage operations.

This function is intended to be registered to the fstorage module as the event handler for all DFU flash operations. When each flash operation has completed or failed this function will be called.

See fs_cb_t for implementation details.

## Function Documentation

fs_ret_t nrf_dfu_flash_erase | ( | uint32_t const * | p_dest,
|  | uint32_t | num_pages,
|  | dfu_flash_callback_t | callback
| ) |  |

Function for erasing data from flash (with or without the SoftDevice enabled).

Parameters

  [in] | p_dest | The address of the first byte to be deleted.
  [in] | num_pages | The number of flash pages to be deleted.
  [in] | callback | Pointer to the callback function.

Return values

  FS_SUCCESS | If the operation was successful.
  FS_ERR_UNALIGNED_ADDR | If `p_dest` is not aligned to a page boundary.
  FS_ERR_INVALID_ADDR | If `p_dest` does not point to the start of a flash page or the operation would go beyond the flash memory boundary.
  FS_ERR_NOT_INITIALIZED | If the fstorage module is not initialized.
  FS_ERR_INVALID_CFG | If the initialization of the fstorage module is invalid.
  FS_ERR_NULL_ARG | If `p_dest` is NULL.
  FS_ERR_INVALID_ARG | If `num_pages` is zero.
  FS_ERR_QUEUE_FULL | If the internal operation queue of the fstorage module is full.

uint32_t nrf_dfu_flash_init | ( | bool | sd_enabled | ) |

Function for initializing the flash module.

You can use this module with or without a SoftDevice:

- If the module is initialized with the SoftDevice enabled flag set, the fstorage module is used as back end for all flash operations. Flash storage calls are asynchronous; the SoftDevice manages when the actual operation in flash is done.
- If the module is initialized with the SoftDevice enabled flag not set, the non-volatile memory controller (NVMC) driver handles the flash operations by directly accessing flash. These operations are synchronous.

Parameters

  [in] | sd_enabled | Set the flash handling to run with or without the SoftDevice enabled.

Return values

  NRF_SUCCESS | If the operation was successful.
  NRF_ERROR_INVALID_STATE | If the fstorage module could not be initiated or the SoftDevice could not set the event handler.

fs_ret_t nrf_dfu_flash_store | ( | uint32_t const * | p_dest,
|  | uint32_t const *const | p_src,
|  | uint32_t | len_words,
|  | dfu_flash_callback_t | callback
| ) |  |

Function for storing data to flash (with or without the SoftDevice enabled).

Warning
  The content to be stored must be kept at `p_src` until the operation is complete. Without SoftDevice, the operation is complete when the function returns. With SoftDevice, the operation is complete when the fstorage event is received.

Parameters

  [in] | p_dest | Pointer to the address where the data should be stored.
  [in] | p_src | Pointer to the address where the data should be copied from. This address can be in flash or RAM.
  [in] | len_words | The number of words to be copied from `p_src` to `p_dest`.
  [in] | callback | Pointer to the callback function.

Return values

  FS_SUCCESS | If the operation was successful.
  FS_ERR_FAILURE_SINCE_LAST | If an error occurred in another transaction and fstorage cannot continue before the event has been dealt with.
  FS_ERR_UNALIGNED_ADDR | If `p_src` or `p_dest` is not word-aligned. Ensure that the address pointed to is divisible by four.
  FS_ERR_INVALID_ARG | If `len_words` is zero. It is not possible to write zero words.
  FS_ERR_NULL_ARG | If `p_src` or `p_dest` is NULL.
  FS_ERR_NOT_INITIALIZED | If the fstorage module is not initialized.
  FS_ERR_INVALID_CFG | If the initialization of the fstorage module is invalid.
  FS_ERR_QUEUE_FULL | If the internal operation queue of the fstorage module is full.

fs_ret_t nrf_dfu_flash_wait | ( | void |  | ) |

Function for waiting for an event from fstorage.

This function halts execution until an event is received from the SoftDevice. You can use this function to halt execution until a flash operation has completed, to prevent tampering with the source data until fstorage is done with it.

Return values

  FS_SUCCESS | If the operation was successful.
  FS_ERR_FAILURE_SINCE_LAST | If an error has occurred in another transaction and fstorage cannot continue before the event has been dealt with.