show mode and errors
authorNIIBE Yutaka <gniibe@fsij.org>
Wed, 3 Oct 2012 04:51:02 +0000 (13:51 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Wed, 3 Oct 2012 04:51:02 +0000 (13:51 +0900)
ChangeLog
src/main.c
src/neug.h
src/random.c

index fc93043..bd44bc6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2012-10-03  Niibe Yutaka  <gniibe@fsij.org>
 
+       * src/main.c (USB_NEUG_GET_INFO): New.
+
+       * tool/neug_check.py: Show mode and errors.
+
        * src/adc_stm32f103.c (adc_lld_serve_rx_interrupt)
        (adc_start_conversion): Filter by CRC32.
        * src/random.c (ep_init, ep_fill_wbuf, ep_process): Filter by CRC32.
index 8a7dec1..824d2b8 100644 (file)
@@ -231,7 +231,7 @@ static const uint8_t *const mem_info[] = { &_regnual_start,  &__heap_end__, };
 #define USB_FSIJ_MEMINFO         0
 #define USB_FSIJ_DOWNLOAD        1
 #define USB_FSIJ_EXEC            2
-#define USB_NEUG_GET_ERR_COUNT 254
+#define USB_NEUG_GET_INFO      254
 #define USB_NEUG_EXIT          255 /* Ask to exit and to receive reGNUal */
 
 enum {
@@ -384,11 +384,19 @@ neug_setup (uint8_t req, uint8_t req_no,
              usb_lld_set_data_to_send (mem_info, sizeof (mem_info));
              return USB_SUCCESS;
            }
-         else if (req_no == USB_NEUG_GET_ERR_COUNT)
+         else if (req_no == USB_NEUG_GET_INFO)
            {
-             extern uint16_t neug_err_count;
+             if (index == 0)
+               usb_lld_set_data_to_send (&neug_mode, sizeof (uint8_t));
+             else if (index == 1)
+               usb_lld_set_data_to_send (&neug_err_cnt, sizeof (uint16_t));
+             else if (index == 2)
+               usb_lld_set_data_to_send (&neug_err_cnt_rc, sizeof (uint16_t));
+             else if (index == 3)
+               usb_lld_set_data_to_send (&neug_err_cnt_p64, sizeof (uint16_t));
+             else if (index == 4)
+               usb_lld_set_data_to_send (&neug_err_cnt_p4k, sizeof (uint16_t));
 
-             usb_lld_set_data_to_send (&neug_err_count, sizeof (uint16_t));
              return USB_SUCCESS;
            }
        }
index 7c12aa1..dd22619 100644 (file)
@@ -7,6 +7,12 @@
 #define NEUG_MODE_RAW         1
 #define NEUG_MODE_RAW_DATA    2
 
+extern uint8_t neug_mode;
+extern uint16_t neug_err_cnt;
+extern uint16_t neug_err_cnt_rc;
+extern uint16_t neug_err_cnt_p64;
+extern uint16_t neug_err_cnt_p4k;
+
 void neug_init (uint32_t *buf, uint8_t size);
 void neug_prng_reseed (void);
 uint32_t neug_get (int kick);
index baff71a..d9b8e11 100644 (file)
@@ -214,7 +214,10 @@ static const uint32_t *ep_output (int mode)
 #define ADAPTIVE_PROPORTION_4096   4
 
 uint8_t neug_err_state;
-uint16_t neug_err_count;
+uint16_t neug_err_cnt;
+uint16_t neug_err_cnt_rc;
+uint16_t neug_err_cnt_p64;
+uint16_t neug_err_cnt_p4k;
 
 static void noise_source_error_reset (void)
 {
@@ -224,7 +227,14 @@ static void noise_source_error_reset (void)
 static void noise_source_error (uint32_t err)
 {
   neug_err_state |= err;
-  neug_err_count++;
+  neug_err_cnt++;
+
+  if ((err & REPETITION_COUNT))
+    neug_err_cnt_rc++;
+  if ((err & ADAPTIVE_PROPORTION_64))
+    neug_err_cnt_p64++;
+  if ((err & ADAPTIVE_PROPORTION_4096))
+    neug_err_cnt_p4k++;
 
 #include "board.h"
 #if defined(BOARD_FST_01)
@@ -376,7 +386,7 @@ static uint32_t rb_del (struct rng_rb *rb)
   return v;
 }
 
-static uint8_t neug_mode;
+uint8_t neug_mode;
 
 /**
  * @brief  Random number generation from ADC sampling.