ChibiOS/HAL 9.0.0
hal_trng_lld.c
Go to the documentation of this file.
1/*
2 ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15*/
16
17/**
18 * @file hal_trng_lld.c
19 * @brief PLATFORM TRNG subsystem low level driver source.
20 *
21 * @addtogroup TRNG
22 * @{
23 */
24
25#include "hal.h"
26
27#if (HAL_USE_TRNG == TRUE) || defined(__DOXYGEN__)
28
29/*===========================================================================*/
30/* Driver local definitions. */
31/*===========================================================================*/
32
33/*===========================================================================*/
34/* Driver exported variables. */
35/*===========================================================================*/
36
37/**
38 * @brief TRNGD1 driver identifier.
39 */
40#if (PLATFORM_TRNG_USE_TRNG1 == TRUE) || defined(__DOXYGEN__)
42#endif
43
44/*===========================================================================*/
45/* Driver local variables and types. */
46/*===========================================================================*/
47
48/*===========================================================================*/
49/* Driver local functions. */
50/*===========================================================================*/
51
52/*===========================================================================*/
53/* Driver interrupt handlers. */
54/*===========================================================================*/
55
56/*===========================================================================*/
57/* Driver exported functions. */
58/*===========================================================================*/
59
60/**
61 * @brief Low level TRNG driver initialization.
62 *
63 * @notapi
64 */
65void trng_lld_init(void) {
66
67#if PLATFORM_TRNG_USE_TRNG1 == TRUE
68 /* Driver initialization.*/
70#endif
71}
72
73/**
74 * @brief Configures and activates the TRNG peripheral.
75 *
76 * @param[in] trngp pointer to the @p TRNGDriver object
77 *
78 * @notapi
79 */
81
82 if (trngp->state == TRNG_STOP) {
83 /* Enables the peripheral.*/
84#if PLATFORM_TRNG_USE_TRNG1 == TRUE
85 if (&TRNGD1 == trngp) {
86
87 }
88#endif
89 }
90 /* Configures the peripheral.*/
91
92}
93
94/**
95 * @brief Deactivates the TRNG peripheral.
96 *
97 * @param[in] trngp pointer to the @p TRNGDriver object
98 *
99 * @notapi
100 */
102
103 if (trngp->state == TRNG_READY) {
104 /* Resets the peripheral.*/
105
106 /* Disables the peripheral.*/
107#if PLATFORM_TRNG_USE_TRNG1 == TRUE
108 if (&TRNGD1 == trngp) {
109
110 }
111#endif
112 }
113}
114
115/**
116 * @brief True random numbers generator.
117 * @note The function is blocking and likely performs polled waiting
118 * inside the low level implementation.
119 *
120 * @param[in] trngp pointer to the @p TRNGDriver object
121 * @param[in] size size of output buffer
122 * @param[out] out output buffer
123 * @return The operation status.
124 * @retval false if a random number has been generated.
125 * @retval true if an HW error occurred.
126 *
127 * @api
128 */
129bool trng_lld_generate(TRNGDriver *trngp, size_t size, uint8_t *out) {
130
131 (void)trngp;
132 (void)size;
133 (void)out;
134
135 return true;
136}
137
138#endif /* HAL_USE_TRNG == TRUE */
139
140/** @} */
void trng_lld_init(void)
Low level TRNG driver initialization.
bool trng_lld_generate(TRNGDriver *trngp, size_t size, uint8_t *out)
True random numbers generator.
void trng_lld_start(TRNGDriver *trngp)
Configures and activates the TRNG peripheral.
void trng_lld_stop(TRNGDriver *trngp)
Deactivates the TRNG peripheral.
void trngObjectInit(TRNGDriver *trngp)
Initializes the standard part of a TRNGDriver structure.
Definition hal_trng.c:68
struct hal_trng_driver TRNGDriver
Type of a structure representing a TRNG driver.
Definition hal_trng.h:59
TRNGDriver TRNGD1
TRNGD1 driver identifier.
@ TRNG_READY
Definition hal_trng.h:52
@ TRNG_STOP
Definition hal_trng.h:51
HAL subsystem header.
USBOutEndpointState out
OUT EP0 state.
Definition hal_usb_lld.c:61
trngstate_t state
Driver state.
Definition hal_trng.h:86