diff options
author | Bdale Garbee <bdale@gag.com> | 2015-07-15 16:43:50 -0600 |
---|---|---|
committer | Bdale Garbee <bdale@gag.com> | 2015-07-15 16:43:50 -0600 |
commit | 643c2fb03833d658320f476ef731bbb06fe3cc31 (patch) | |
tree | 878c9df5dbd9bab9169becea4e06e8bae3529541 /src/usbtrng-v2.0/ao_usbtrng.c | |
parent | e41786fb384892961a6547e17812a24314ce9623 (diff) | |
parent | 271f56a41c7e785b0fab7e572325df842d104277 (diff) |
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Diffstat (limited to 'src/usbtrng-v2.0/ao_usbtrng.c')
-rw-r--r-- | src/usbtrng-v2.0/ao_usbtrng.c | 56 |
1 files changed, 3 insertions, 53 deletions
diff --git a/src/usbtrng-v2.0/ao_usbtrng.c b/src/usbtrng-v2.0/ao_usbtrng.c index e1f43cdd..42713b6e 100644 --- a/src/usbtrng-v2.0/ao_usbtrng.c +++ b/src/usbtrng-v2.0/ao_usbtrng.c @@ -18,58 +18,7 @@ #include <ao.h> #include <ao_adc_fast.h> #include <ao_crc.h> - -static void -ao_trng_fetch(void) -{ - static uint16_t *buffer[2]; - uint32_t kbytes = 1; - uint32_t count; - int usb_buf_id; - int i; - uint16_t *buf; - uint32_t *rnd; - - if (!buffer[0]) { - buffer[0] = ao_usb_alloc(); - buffer[1] = ao_usb_alloc(); - if (!buffer[0]) - return; - } - - ao_cmd_decimal(); - if (ao_cmd_status == ao_cmd_success) - kbytes = ao_cmd_lex_u32; - else - ao_cmd_status = ao_cmd_success; - usb_buf_id = 0; - count = kbytes * (1024/AO_USB_IN_SIZE); - - ao_crc_reset(); - - ao_led_on(AO_LED_GREEN); - while (count--) { - buf = buffer[usb_buf_id]; -// printf ("before get: head %3d tail %3d running %d\n", ao_adc_ring_head, ao_adc_ring_tail, ao_adc_running); flush(); - rnd = (uint32_t *) ao_adc_get(AO_USB_IN_SIZE); /* one 16-bit value per output byte */ -// printf ("after get: head %3d tail %3d running %d\n", ao_adc_ring_head, ao_adc_ring_tail, ao_adc_running); flush(); - for (i = 0; i < 32; i++) - *buf++ = ao_crc_in_32_out_16(*rnd++); - ao_adc_ack(AO_USB_IN_SIZE); -// printf ("after ack: head %3d tail %3d running %d\n", ao_adc_ring_head, ao_adc_ring_tail, ao_adc_running); flush(); - ao_led_toggle(AO_LED_GREEN|AO_LED_RED); - ao_usb_write(buffer[usb_buf_id], AO_USB_IN_SIZE); - ao_led_toggle(AO_LED_GREEN|AO_LED_RED); - usb_buf_id = 1-usb_buf_id; - } - ao_led_off(AO_LED_GREEN|AO_LED_RED); - flush(); -} - -static const struct ao_cmds usbtrng_cmds[] = { - { ao_trng_fetch, "f <kbytes>\0Fetch a block of numbers" }, - { 0, NULL }, -}; +#include <ao_trng.h> void main(void) { @@ -86,7 +35,8 @@ void main(void) ao_usb_init(); - ao_cmd_register(usbtrng_cmds); + ao_trng_init(); + ao_led_off(AO_LED_RED); ao_start_scheduler(); |