|  | /** | 
|  | * @file random.h | 
|  | * | 
|  | * @brief Public APIs for the random driver. | 
|  | */ | 
|  |  | 
|  | /* | 
|  | * Copyright (c) 2016 ARM Ltd. | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  | #ifndef __RANDOM_H__ | 
|  | #define __RANDOM_H__ | 
|  |  | 
|  | /** | 
|  | * @brief Random Interface | 
|  | * @defgroup random_interface Random Interface | 
|  | * @ingroup io_interfaces | 
|  | * @{ | 
|  | */ | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #include <zephyr/types.h> | 
|  | #include <device.h> | 
|  |  | 
|  | /** | 
|  | * @typedef random_get_entropy_t | 
|  | * @brief Callback API to get entropy. | 
|  | * | 
|  | * See random_get_entropy() for argument description | 
|  | */ | 
|  | typedef int (*random_get_entropy_t)(struct device *dev, | 
|  | u8_t *buffer, | 
|  | u16_t length); | 
|  |  | 
|  | struct random_driver_api { | 
|  | random_get_entropy_t get_entropy; | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * @brief Get entropy from the random driver. | 
|  | * | 
|  | * Fill a buffer with entropy from the random driver. | 
|  | * | 
|  | * @param dev Pointer to the random device. | 
|  | * @param buffer Buffer to fill with entropy. | 
|  | * @param length Buffer length. | 
|  | * @retval 0 on success. | 
|  | * @retval -ERRNO errno code on error. | 
|  | */ | 
|  | static inline int random_get_entropy(struct device *dev, | 
|  | u8_t *buffer, | 
|  | u16_t length) | 
|  | { | 
|  | const struct random_driver_api *api = dev->driver_api; | 
|  |  | 
|  | __ASSERT(api->get_entropy, "Callback pointer should not be NULL"); | 
|  | return api->get_entropy(dev, buffer, length); | 
|  | } | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | /** | 
|  | * @} | 
|  | */ | 
|  |  | 
|  | #endif /* __RANDOM_H__ */ |