summaryrefslogtreecommitdiff
path: root/src/drivers/ao_trng_send.c
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2017-09-18 20:46:47 -0600
committerBdale Garbee <bdale@gag.com>2017-09-18 20:46:47 -0600
commit3ead5d54135003702f771191d2c53abb584d1695 (patch)
tree03f812123642d41215fbc67ff6a308fb2906d77a /src/drivers/ao_trng_send.c
parentb94d18396f050b61a5671b4239d2a3eb9b7a835c (diff)
parent216ea6388a75c46891dc4687a2eb0c97dc63b136 (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.c16
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));
}