| 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
Modules | Data Structures | Macros | Functions
RNG driver
RNG HAL and driver

Driver for managing the random number generator (RNG). More...

## Modules
| RNG peripheral driver configuration

## Data Structures
struct | nrf_drv_rng_config_t
| Struct for RNG configuration. More...

## Macros
#define | NRF_DRV_RNG_DEFAULT_CONFIG
| RNG default configuration. More...

## Functions
ret_code_t | nrf_drv_rng_init (nrf_drv_rng_config_t const *p_config)
| Function for initializing the nrf_drv_rng module. More...
void | nrf_drv_rng_uninit (void)
| Function for uninitializing the nrf_drv_rng module.
ret_code_t | nrf_drv_rng_bytes_available (uint8_t *p_bytes_available)
| Function for getting the number of currently available random bytes. More...
ret_code_t | nrf_drv_rng_pool_capacity (uint8_t *p_pool_capacity)
| Function for querying the capacity of the application random pool. More...
ret_code_t | nrf_drv_rng_rand (uint8_t *p_buff, uint8_t length)
| Function for getting the vector of random numbers. More...
ret_code_t | nrf_drv_rng_block_rand (uint8_t *p_buff, uint32_t length)
| Blocking function for getting an arbitrary array of random numbers. More...

## Detailed Description

Driver for managing the random number generator (RNG).

## Macro Definition Documentation

#define NRF_DRV_RNG_DEFAULT_CONFIG

Value:
{ \
.error_correction = RNG_CONFIG_ERROR_CORRECTION, \
.interrupt_priority = RNG_CONFIG_IRQ_PRIORITY, \
}

RNG default configuration.

## Function Documentation

ret_code_t nrf_drv_rng_block_rand | ( | uint8_t * | p_buff,
|  | uint32_t | length
| ) |  |

Blocking function for getting an arbitrary array of random numbers.

Note
  This function may execute for a substantial amount of time depending on the length of the buffer required and on the state of the current internal pool of random numbers.

Parameters

  [out] | p_buff | Pointer to uint8_t buffer for storing the bytes.
  [in] | length | Number of bytes place in p_buff.

Return values

  NRF_SUCCESS | If the requested bytes were written to p_buff.

ret_code_t nrf_drv_rng_bytes_available | ( | uint8_t * | p_bytes_available | ) |

Function for getting the number of currently available random bytes.

Parameters

  [out] | p_bytes_available | The number of bytes currently available in the pool.

Return values

  NRF_SUCCESS | If the number of available random bytes was written to p_bytes_available.

ret_code_t nrf_drv_rng_init | ( | nrf_drv_rng_config_t const * | p_config | ) |

Function for initializing the nrf_drv_rng module.

Parameters

  [in] | p_config | Initial configuration. Default configuration used if NULL.

Return values

  NRF_SUCCESS | Driver was successfully initialized.
  NRF_ERROR_INVALID_STATE | Driver was already initialized.
  NRF_ERROR_INVALID_LENGTH | Pool size have to be a power of 2.
  NRF_ERROR_SOFTDEVICE_NOT_ENABLED | SoftDevice is present, but not enabled.

ret_code_t nrf_drv_rng_pool_capacity | ( | uint8_t * | p_pool_capacity | ) |

Function for querying the capacity of the application random pool.

Parameters

  [out] | p_pool_capacity | The capacity of the pool.

Return values

  NRF_SUCCESS | If the capacity of the pool was written to p_pool_capacity.

ret_code_t nrf_drv_rng_rand | ( | uint8_t * | p_buff,
|  | uint8_t | length
| ) |  |

Function for getting the vector of random numbers.

Parameters

  [out] | p_buff | Pointer to uint8_t buffer for storing the bytes.
  [in] | length | Number of bytes to take from the pool and place in p_buff.

Return values

  NRF_SUCCESS | If the requested bytes were written to p_buff.
  NRF_ERROR_NO_MEM | If no bytes were written to the buffer because there were not enough bytes available in p_buff.
  NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES | If no bytes were written to the buffer because there were not enough bytes available in the pool.