The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_VBLUNO51/TOOLCHAIN_GCC_ARM/nrf_drv_rng.h@171:3a7713b1edbc, 2018-11-08 (annotated)
- Committer:
- AnnaBridge
- Date:
- Thu Nov 08 11:45:42 2018 +0000
- Revision:
- 171:3a7713b1edbc
- Parent:
- TARGET_NRF51_DK/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_11/drivers_nrf/rng/nrf_drv_rng.h@169:a7c7b631e539
mbed library. Release version 164
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 163:e59c8e839560 | 1 | /* Copyright (c) 2015 Nordic Semiconductor. All Rights Reserved. |
AnnaBridge | 163:e59c8e839560 | 2 | * |
AnnaBridge | 163:e59c8e839560 | 3 | * The information contained herein is property of Nordic Semiconductor ASA. |
AnnaBridge | 163:e59c8e839560 | 4 | * Terms and conditions of usage are described in detail in NORDIC |
AnnaBridge | 163:e59c8e839560 | 5 | * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. |
AnnaBridge | 163:e59c8e839560 | 6 | * |
AnnaBridge | 163:e59c8e839560 | 7 | * Licensees are granted free, non-transferable use of the information. NO |
AnnaBridge | 163:e59c8e839560 | 8 | * WARRANTY of ANY KIND is provided. This heading must NOT be removed from |
AnnaBridge | 163:e59c8e839560 | 9 | * the file. |
AnnaBridge | 163:e59c8e839560 | 10 | * |
AnnaBridge | 163:e59c8e839560 | 11 | */ |
AnnaBridge | 163:e59c8e839560 | 12 | |
AnnaBridge | 163:e59c8e839560 | 13 | #ifndef NRF_DRV_RNG_H__ |
AnnaBridge | 163:e59c8e839560 | 14 | #define NRF_DRV_RNG_H__ |
AnnaBridge | 163:e59c8e839560 | 15 | |
AnnaBridge | 163:e59c8e839560 | 16 | #include <stdbool.h> |
AnnaBridge | 163:e59c8e839560 | 17 | #include <stdint.h> |
AnnaBridge | 163:e59c8e839560 | 18 | |
AnnaBridge | 163:e59c8e839560 | 19 | #include "nrf_rng.h" |
AnnaBridge | 163:e59c8e839560 | 20 | #include "sdk_errors.h" |
AnnaBridge | 163:e59c8e839560 | 21 | #include "nrf_drv_config.h" |
AnnaBridge | 163:e59c8e839560 | 22 | |
AnnaBridge | 163:e59c8e839560 | 23 | /** |
AnnaBridge | 163:e59c8e839560 | 24 | * @addtogroup nrf_rng RNG HAL and driver |
AnnaBridge | 163:e59c8e839560 | 25 | * @ingroup nrf_drivers |
AnnaBridge | 163:e59c8e839560 | 26 | * @brief Random number generator (RNG) APIs. |
AnnaBridge | 163:e59c8e839560 | 27 | * @details The RNG HAL provides basic APIs for accessing the registers of the random number generator. |
AnnaBridge | 163:e59c8e839560 | 28 | * The RNG driver provides APIs on a higher level. |
AnnaBridge | 163:e59c8e839560 | 29 | * |
AnnaBridge | 163:e59c8e839560 | 30 | * @defgroup nrf_drv_rng RNG driver |
AnnaBridge | 163:e59c8e839560 | 31 | * @{ |
AnnaBridge | 163:e59c8e839560 | 32 | * @ingroup nrf_rng |
AnnaBridge | 163:e59c8e839560 | 33 | * @brief Driver for managing the random number generator (RNG). |
AnnaBridge | 163:e59c8e839560 | 34 | */ |
AnnaBridge | 163:e59c8e839560 | 35 | |
AnnaBridge | 163:e59c8e839560 | 36 | /**@brief Struct for RNG configuration. */ |
AnnaBridge | 163:e59c8e839560 | 37 | typedef struct |
AnnaBridge | 163:e59c8e839560 | 38 | { |
AnnaBridge | 163:e59c8e839560 | 39 | bool error_correction; /**< Error correction flag. */ |
AnnaBridge | 163:e59c8e839560 | 40 | uint8_t interrupt_priority; /**< interrupt priority */ |
AnnaBridge | 163:e59c8e839560 | 41 | } nrf_drv_rng_config_t; |
AnnaBridge | 163:e59c8e839560 | 42 | |
AnnaBridge | 163:e59c8e839560 | 43 | /**@brief RNG default configuration. */ |
AnnaBridge | 163:e59c8e839560 | 44 | #define NRF_DRV_RNG_DEFAULT_CONFIG \ |
AnnaBridge | 163:e59c8e839560 | 45 | { \ |
AnnaBridge | 163:e59c8e839560 | 46 | .error_correction = RNG_CONFIG_ERROR_CORRECTION, \ |
AnnaBridge | 163:e59c8e839560 | 47 | .interrupt_priority = RNG_CONFIG_IRQ_PRIORITY, \ |
AnnaBridge | 163:e59c8e839560 | 48 | } |
AnnaBridge | 163:e59c8e839560 | 49 | |
AnnaBridge | 163:e59c8e839560 | 50 | /** |
AnnaBridge | 163:e59c8e839560 | 51 | * @brief Function for initializing the nrf_drv_rng module. |
AnnaBridge | 163:e59c8e839560 | 52 | * |
AnnaBridge | 163:e59c8e839560 | 53 | * @param[in] p_config Initial configuration. Default configuration used if NULL. |
AnnaBridge | 163:e59c8e839560 | 54 | * |
AnnaBridge | 163:e59c8e839560 | 55 | * @retval NRF_SUCCESS Driver was successfully initialized. |
AnnaBridge | 163:e59c8e839560 | 56 | * @retval NRF_ERROR_INVALID_STATE Driver was already initialized. |
AnnaBridge | 163:e59c8e839560 | 57 | * @retval NRF_ERROR_INVALID_LENGTH Pool size have to be a power of 2. |
AnnaBridge | 163:e59c8e839560 | 58 | * @retval NRF_ERROR_SOFTDEVICE_NOT_ENABLED SoftDevice is present, but not enabled. |
AnnaBridge | 163:e59c8e839560 | 59 | */ |
AnnaBridge | 163:e59c8e839560 | 60 | ret_code_t nrf_drv_rng_init(nrf_drv_rng_config_t const * p_config); |
AnnaBridge | 163:e59c8e839560 | 61 | |
AnnaBridge | 163:e59c8e839560 | 62 | /** |
AnnaBridge | 163:e59c8e839560 | 63 | * @brief Function for uninitializing the nrf_drv_rng module. |
AnnaBridge | 163:e59c8e839560 | 64 | */ |
AnnaBridge | 163:e59c8e839560 | 65 | void nrf_drv_rng_uninit(void); |
AnnaBridge | 163:e59c8e839560 | 66 | |
AnnaBridge | 163:e59c8e839560 | 67 | /** |
AnnaBridge | 163:e59c8e839560 | 68 | * @brief Function for getting the number of currently available random bytes. |
AnnaBridge | 163:e59c8e839560 | 69 | * |
AnnaBridge | 163:e59c8e839560 | 70 | * @param[out] p_bytes_available The number of bytes currently available in the pool. |
AnnaBridge | 163:e59c8e839560 | 71 | * |
AnnaBridge | 163:e59c8e839560 | 72 | * @retval NRF_SUCCESS If the number of available random bytes was written to p_bytes_available. |
AnnaBridge | 163:e59c8e839560 | 73 | */ |
AnnaBridge | 163:e59c8e839560 | 74 | ret_code_t nrf_drv_rng_bytes_available(uint8_t * p_bytes_available); |
AnnaBridge | 163:e59c8e839560 | 75 | |
AnnaBridge | 163:e59c8e839560 | 76 | /** |
AnnaBridge | 163:e59c8e839560 | 77 | * @brief Function for querying the capacity of the application random pool. |
AnnaBridge | 163:e59c8e839560 | 78 | * |
AnnaBridge | 163:e59c8e839560 | 79 | * @param[out] p_pool_capacity The capacity of the pool. |
AnnaBridge | 163:e59c8e839560 | 80 | * |
AnnaBridge | 163:e59c8e839560 | 81 | * @retval NRF_SUCCESS If the capacity of the pool was written to p_pool_capacity. |
AnnaBridge | 163:e59c8e839560 | 82 | */ |
AnnaBridge | 163:e59c8e839560 | 83 | ret_code_t nrf_drv_rng_pool_capacity(uint8_t * p_pool_capacity); |
AnnaBridge | 163:e59c8e839560 | 84 | |
AnnaBridge | 163:e59c8e839560 | 85 | /** |
AnnaBridge | 163:e59c8e839560 | 86 | * @brief Function for getting the vector of random numbers. |
AnnaBridge | 163:e59c8e839560 | 87 | * |
AnnaBridge | 163:e59c8e839560 | 88 | * @param[out] p_buff Pointer to uint8_t buffer for storing the bytes. |
AnnaBridge | 163:e59c8e839560 | 89 | * @param[in] length Number of bytes to take from the pool and place in p_buff. |
AnnaBridge | 163:e59c8e839560 | 90 | * |
AnnaBridge | 163:e59c8e839560 | 91 | * @retval NRF_SUCCESS If the requested bytes were written to p_buff. |
AnnaBridge | 163:e59c8e839560 | 92 | * @retval NRF_ERROR_NO_MEM If no bytes were written to the buffer |
AnnaBridge | 163:e59c8e839560 | 93 | * because there were not enough bytes available in p_buff. |
AnnaBridge | 163:e59c8e839560 | 94 | * @retval NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES If no bytes were written to the buffer |
AnnaBridge | 163:e59c8e839560 | 95 | * because there were not enough bytes available in the pool. |
AnnaBridge | 163:e59c8e839560 | 96 | */ |
AnnaBridge | 163:e59c8e839560 | 97 | ret_code_t nrf_drv_rng_rand(uint8_t * p_buff, uint8_t length); |
AnnaBridge | 163:e59c8e839560 | 98 | |
AnnaBridge | 163:e59c8e839560 | 99 | /** |
AnnaBridge | 163:e59c8e839560 | 100 | * @brief Blocking function for getting an arbitrary array of random numbers. |
AnnaBridge | 163:e59c8e839560 | 101 | * |
AnnaBridge | 163:e59c8e839560 | 102 | * @note This function may execute for a substantial amount of time depending on the length of the buffer |
AnnaBridge | 163:e59c8e839560 | 103 | * required and on the state of the current internal pool of random numbers. |
AnnaBridge | 163:e59c8e839560 | 104 | * |
AnnaBridge | 163:e59c8e839560 | 105 | * @param[out] p_buff Pointer to uint8_t buffer for storing the bytes. |
AnnaBridge | 163:e59c8e839560 | 106 | * @param[in] length Number of bytes place in p_buff. |
AnnaBridge | 163:e59c8e839560 | 107 | * |
AnnaBridge | 163:e59c8e839560 | 108 | * @retval NRF_SUCCESS If the requested bytes were written to p_buff. |
AnnaBridge | 163:e59c8e839560 | 109 | */ |
AnnaBridge | 163:e59c8e839560 | 110 | ret_code_t nrf_drv_rng_block_rand(uint8_t * p_buff, uint32_t length); |
AnnaBridge | 163:e59c8e839560 | 111 | |
AnnaBridge | 163:e59c8e839560 | 112 | /** |
AnnaBridge | 163:e59c8e839560 | 113 | *@} |
AnnaBridge | 163:e59c8e839560 | 114 | **/ |
AnnaBridge | 163:e59c8e839560 | 115 | #endif // NRF_DRV_RNG_H__ |