Switch from GPLv2 to GPLv2+
[fw/altos] / src / usbtrng-v2.0 / ao_usbtrng.c
index 26cfbac92953cc0d9da28d3253199891e328662e..e34babec5f4fdd748871b5e21fa6c05196eefad4 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
 #include <ao.h>
 #include <ao_adc_fast.h>
 #include <ao_crc.h>
-
-static void
-ao_trng_fetch(void)
-{
-       static uint16_t *buffer[2];
-       static uint32_t adc_in[AO_USB_IN_SIZE/2];       /* twice as many as we need */
-       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--) {
-               ao_adc_read((uint16_t *) adc_in, AO_USB_IN_SIZE);
-               rnd = adc_in;
-               buf = buffer[usb_buf_id];
-               for (i = 0; i < 32; i++)
-                       *buf++ = ao_crc_in_32_out_16(*rnd++);
-               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);
-       ao_usb_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)
 {
@@ -84,7 +36,8 @@ void main(void)
 
        ao_usb_init();
 
-       ao_cmd_register(usbtrng_cmds);
+       ao_trng_init();
+
        ao_led_off(AO_LED_RED);
 
        ao_start_scheduler();