New field 'Board'
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 14 Jul 2015 12:02:32 +0000 (21:02 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 14 Jul 2015 12:13:43 +0000 (21:13 +0900)
src/main.c
src/neug.c
tool/neug_check.py

index 9bb31a1..975a218 100644 (file)
@@ -226,7 +226,7 @@ uint8_t neug_passwd[33] __attribute__ ((section(".passwd"))) = {
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 };
-static uint8_t passwd_data[33];
+static uint8_t usbbuf[64];
 
 #define DEFAULT_PASSWD "12345678"
 #define DEFAULT_PASSWD_LEN 8
@@ -236,10 +236,10 @@ static void set_passwd (void)
   flash_unlock ();
   if (neug_passwd[0] != 0xff)
     flash_erase_page ((uint32_t)neug_passwd);
-  if (passwd_data[0] == DEFAULT_PASSWD_LEN
-      && !memcmp (passwd_data + 1, DEFAULT_PASSWD, DEFAULT_PASSWD_LEN))
+  if (usbbuf[0] == DEFAULT_PASSWD_LEN
+      && !memcmp (usbbuf + 1, DEFAULT_PASSWD, DEFAULT_PASSWD_LEN))
     return;
-  flash_write ((uint32_t)neug_passwd, passwd_data, passwd_data[0] + 1);
+  flash_write ((uint32_t)neug_passwd, usbbuf, usbbuf[0] + 1);
 }
 
 static uint32_t rbit (uint32_t v)
@@ -290,10 +290,10 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, uint16_t value,
        set_passwd ();
       else if (req_no == USB_NEUG_EXIT)
        {
-         if ((neug_passwd[0] == 0xff && passwd_data[0] == DEFAULT_PASSWD_LEN
-              && !memcmp (passwd_data + 1, DEFAULT_PASSWD, DEFAULT_PASSWD_LEN))
-             || (neug_passwd[0] == passwd_data[0]
-                 && !memcmp (neug_passwd+1, passwd_data+1, neug_passwd[0])))
+         if ((neug_passwd[0] == 0xff && usbbuf[0] == DEFAULT_PASSWD_LEN
+              && !memcmp (usbbuf + 1, DEFAULT_PASSWD, DEFAULT_PASSWD_LEN))
+             || (neug_passwd[0] == usbbuf[0]
+                 && !memcmp (neug_passwd+1, usbbuf+1, neug_passwd[0])))
            {
              chopstx_mutex_lock (&usb_mtx);
              fsij_device_state = FSIJ_DEVICE_NEUG_EXIT_REQUESTED;
@@ -452,8 +452,8 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
            }
          else if (req_no == USB_NEUG_SET_PASSWD && len <= 32)
            {
-             passwd_data[0] = len;
-             usb_lld_set_data_to_recv (passwd_data + 1, len);
+             usbbuf[0] = len;
+             usb_lld_set_data_to_recv (usbbuf + 1, len);
              return USB_SUCCESS;
            }
          else if (req_no == USB_NEUG_EXIT && len <= 32)
@@ -466,8 +466,8 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
                }
              chopstx_mutex_unlock (&usb_mtx);
 
-             passwd_data[0] = len;
-             usb_lld_set_data_to_recv (passwd_data + 1, len);
+             usbbuf[0] = len;
+             usb_lld_set_data_to_recv (usbbuf + 1, len);
              return USB_SUCCESS;
            }
        }
@@ -550,6 +550,23 @@ usb_cb_get_descriptor (uint8_t rcp, uint8_t desc_type, uint8_t desc_index,
          str = sys_version;
          size = sizeof (sys_version);
          break;
+       case 7:
+         {
+           int i;
+           str = usbbuf;
+           for (i = 0; i < (int)sizeof (usbbuf)/2 - 2; i++)
+             {
+               if (sys_board_name[i] == 0)
+                 break;
+
+               usbbuf[i*2+2] = sys_board_name[i];
+               usbbuf[i*2+3] = 0;
+             }
+           usbbuf[0] = i*2 + 2;
+           usbbuf[1] = USB_STRING_DESCRIPTOR_TYPE;
+           size = i*2 + 2;
+         }
+         break;
        default:
          return USB_UNSUPPORT;
        }
index 7cfb501..9dde205 100644 (file)
@@ -280,8 +280,6 @@ uint16_t neug_rc_max;
 uint16_t neug_p64_max;
 uint16_t neug_p4k_max;
 
-#include "board.h"
-
 static void noise_source_cnt_max_reset (void)
 {
   neug_err_cnt = neug_err_cnt_rc = neug_err_cnt_p64 = neug_err_cnt_p4k = 0;
index 52f776b..e1a77a9 100755 (executable)
@@ -3,7 +3,7 @@
 """
 neug_check.py - a tool to check NeuG device
 
-Copyright (C) 2012 Free Software Initiative of Japan
+Copyright (C) 2012, 2015 Free Software Initiative of Japan
 Author: NIIBE Yutaka <gniibe@fsij.org>
 
 This file is a part of NeuG, a TRNG implementation.
@@ -90,7 +90,7 @@ def com_devices():
                                 alt.interfaceProtocol == COM_PROTOCOL_0:
                             yield dev, config, alt
 
-field = [ '', 'Vendor', 'Product', 'Serial', 'Revision', 'Config', 'Sys' ]
+field = ['', 'Vendor', 'Product', 'Serial', 'Revision', 'Config', 'Sys', 'Board']
 
 def main():
     com = None
@@ -106,7 +106,7 @@ def main():
     if not com:
         raise ValueError("No NeuG Device Present")
     print("")
-    for i in range(1,7):
+    for i in range(1,8):
         s = com.get_string(i, 512)
         print("%9s: %s" % (field[i], s))
     print("")