ChibiOS/HAL  7.0.3
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  */
65 void trng_lld_init(void) {
66 
67 #if PLATFORM_TRNG_USE_TRNG1 == TRUE
68  /* Driver initialization.*/
69  trngObjectInit(&TRNGD1);
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  */
80 void trng_lld_start(TRNGDriver *trngp) {
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  */
101 void trng_lld_stop(TRNGDriver *trngp) {
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  */
129 bool 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.
Definition: hal_trng_lld.c:65
void trng_lld_stop(TRNGDriver *trngp)
Deactivates the TRNG peripheral.
Definition: hal_trng_lld.c:101
void trng_lld_start(TRNGDriver *trngp)
Configures and activates the TRNG peripheral.
Definition: hal_trng_lld.c:80
HAL subsystem header.
bool trng_lld_generate(TRNGDriver *trngp, size_t size, uint8_t *out)
True random numbers generator.
Definition: hal_trng_lld.c:129
void trngObjectInit(TRNGDriver *trngp)
Initializes the standard part of a TRNGDriver structure.
Definition: hal_trng.c:68
TRNGDriver TRNGD1
TRNGD1 driver identifier.
Definition: hal_trng_lld.c:41
USBOutEndpointState out
OUT EP0 state.
Definition: hal_usb_lld.c:61
Structure representing a TRNG driver.
Definition: hal_trng.h:83
trngstate_t state
Driver state.
Definition: hal_trng.h:87