diff options
| author | Bdale Garbee <bdale@gag.com> | 2017-09-18 20:46:47 -0600 |
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2017-09-18 20:46:47 -0600 |
| commit | 3ead5d54135003702f771191d2c53abb584d1695 (patch) | |
| tree | 03f812123642d41215fbc67ff6a308fb2906d77a /src/drivers/ao_trng_send.c | |
| parent | b94d18396f050b61a5671b4239d2a3eb9b7a835c (diff) | |
| parent | 216ea6388a75c46891dc4687a2eb0c97dc63b136 (diff) | |
Merge branch 'branch-1.8' into debian
Diffstat (limited to 'src/drivers/ao_trng_send.c')
| -rw-r--r-- | src/drivers/ao_trng_send.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/drivers/ao_trng_send.c b/src/drivers/ao_trng_send.c index b1227aaa..7cda053d 100644 --- a/src/drivers/ao_trng_send.c +++ b/src/drivers/ao_trng_send.c @@ -153,10 +153,20 @@ ao_trng_send(void) ao_crc_reset(); - ao_delay(TRNG_ENABLE_DELAY); - for (s = 0; s < AO_TRNG_START_WAIT; s++) { - if (ao_trng_get_cooked(buffer[0])) + int i; + uint16_t min, max; + uint16_t buf[AO_USB_IN_SIZE>>1]; + + ao_trng_get_raw(buf); + min = max = buf[0]; + for (i = 1; i < (AO_USB_IN_SIZE>>1); i++) { + uint16_t v = buf[i]; + if (v < min) min = v; + if (v > max) max = v; + } + /* Wait for at least 10 bits of range */ + if ((uint16_t) (max - min) >= 1024) break; ao_delay(AO_MS_TO_TICKS(10)); } |
