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.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew 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__