Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
rng_arch.c
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017 Michal Podhradsky <mpodhradsky@galois.com>
3 *
4 * This file is part of Paparazzi.
5 *
6 * Paparazzi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * Paparazzi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Paparazzi; see the file COPYING. If not, write to
18 * the Free Software Foundation, 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 *
21 */
22
27#include "mcu_periph/rng.h"
28#include <libopencm3/stm32/rcc.h>
29#include <libopencm3/stm32/rng.h>
30
32
33void rng_init(void) {
35 rng_enable();
36 // dont forget to throw away the first generated number
38}
39
44
45// Return true only if we got a new number
46// that is different from the previous one
48 uint32_t tmp = 0;
49 if (rng_get_random(&tmp) && (tmp != last)) {
50 last = tmp;
51 *rand_nr = tmp;
52 return true;
53 } else {
54 return false;
55 }
56}
57
58// Wait until we get a new number that is different
59// from the previous one. We can wait forever here if
60// the clocks are not setup properly.
63 while (tmp == last) {
65 }
66 last = tmp;
67 return tmp;
68}
void rng_deinit(void)
Definition rng_arch.c:82
bool rng_get(uint32_t *rand_nr)
Definition rng_arch.c:89
uint32_t rng_wait_and_get(void)
Definition rng_arch.c:104
void rng_init(void)
Definition rng_arch.c:77
uint16_t foo
Definition main_demo5.c:58
arch independent Random Number Generator API
uint32_t last
Definition rng_arch.c:31
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.