USB clean up
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 31 Mar 2015 05:05:52 +0000 (14:05 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 31 Mar 2015 05:05:52 +0000 (14:05 +0900)
ChangeLog
README
src/usb_conf.h
src/usb_ctrl.c
src/usb_desc.c

index 3583e85..a3ab6b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2015-03-31  Niibe Yutaka  <gniibe@fsij.org>
+
+       * src/usb_conf.h (ICC_NUM_INTERFACES, HID_NUM_INTERFACES)
+       (HID_NUM_INTERFACES, VCOM_NUM_INTERFACES, MSC_NUM_INTERFACES)
+       (NUM_INTERFACES): Define here (moved from usb_desc.c).
+       (ICC_INTERFACE, HID_INTERFACE, VCOM_INTERFACE_0, VCOM_INTERFACE_1)
+       (MSC_INTERFACE): New.
+       * src/usb_ctrl.c (gnuk_setup_endpoints_for_interface)
+       (usb_cb_setup, usb_cb_ctrl_write_finish): Use *_INTERFACE.
+       * src/usb_desc.c (gnukConfigDescriptor): Likewise.
+
 2015-03-06  Niibe Yutaka  <gniibe@fsij.org>
 
        * src/ecc-edwards.c (eddsa_sign_25519): Return 0.
diff --git a/README b/README
index 70c5d76..83e8595 100644 (file)
--- a/README
+++ b/README
@@ -544,7 +544,7 @@ See doc/note/firmware-update.
 Git Repositories
 ================
 
-Please use: https://anonscm.debian.org/cgit/gnuk/
+Please use: https://anonscm.debian.org/cgit/gnuk/gnuk/
 
 You can get it by:
  
@@ -570,6 +570,14 @@ Information on the Web
 
 Please visit: http://www.fsij.org/gnuk/
 
+Please see the FST-01 support pages:
+
+    http://www.gniibe.org/category/fst-01.html
+
+Please consider to join Gnuk-users mailing list:
+
+    https://lists.alioth.debian.org/mailman/listinfo/gnuk-users
+
 
 Your Contributions
 ==================
@@ -580,5 +588,6 @@ to FSIJ (if possible).
 
 Foot note
 ==========
+
 * NUK(R) is a registered trademark owend by MAPA GmbH, Germany.
 -- 
index 2fb0424..c9c67d6 100644 (file)
@@ -4,6 +4,29 @@
 #define __USB_CONF_H
 
 #define NUM_STRING_DESC 7
+#define ICC_NUM_INTERFACES 1
+#define ICC_INTERFACE 0
+#ifdef HID_CARD_CHANGE_SUPPORT
+#define HID_NUM_INTERFACES 1
+#define HID_INTERFACE 1
+#else
+#define HID_NUM_INTERFACES 0
+#endif
+#ifdef ENABLE_VIRTUAL_COM_PORT
+#define VCOM_NUM_INTERFACES 2
+#define VCOM_INTERFACE_0 (ICC_NUM_INTERFACES + HID_NUM_INTERFACES)
+#define VCOM_INTERFACE_1 (ICC_NUM_INTERFACES + HID_NUM_INTERFACES + 1)
+#else
+#define VCOM_NUM_INTERFACES 0
+#endif
+#ifdef PINPAD_DND_SUPPORT
+#define MSC_NUM_INTERFACES 1
+#define MSC_INTERFACE (ICC_NUM_INTERFACES + HID_NUM_INTERFACES + VCOM_NUM_INTERFACES)
+#else
+#define MSC_NUM_INTERFACES 0
+#endif
+#define NUM_INTERFACES (ICC_NUM_INTERFACES + HID_NUM_INTERFACES \
+                       + VCOM_NUM_INTERFACES + MSC_NUM_INTERFACES)
 
 #if defined(USB_SELF_POWERED)
 #define USB_INITIAL_FEATURE 0xC0   /* bmAttributes: self powered */
index 67b102e..00979dc 100644 (file)
@@ -103,22 +103,12 @@ vcom_port_data_setup (uint8_t req, uint8_t req_no, uint16_t value)
 
   return USB_UNSUPPORT;
 }
-
-#define VCOM_NUM_INTERFACES 2
-#else
-#define VCOM_NUM_INTERFACES 0
 #endif
 
 #ifdef PINPAD_DND_SUPPORT
 #include "usb-msc.h"
-#define MSC_NUM_INTERFACES 1
-#else
-#define MSC_NUM_INTERFACES 0
 #endif
 
-#define NUM_INTERFACES (2+VCOM_NUM_INTERFACES+MSC_NUM_INTERFACES)
-#define MSC_INTERFACE_NO (2+VCOM_NUM_INTERFACES)
-
 uint32_t bDeviceState = UNCONNECTED; /* USB device status */
 
 #define USB_HID_REQ_GET_REPORT   1
@@ -142,7 +132,7 @@ static uint16_t hid_report;
 static void
 gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
 {
-  if (interface == 0)
+  if (interface == ICC_INTERFACE)
     {
       if (!stop)
        {
@@ -158,7 +148,7 @@ gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
        }
     }
 #ifdef HID_CARD_CHANGE_SUPPORT
-  else if (interface == 1)
+  else if (interface == HID_INTERFACE)
     {
       if (!stop)
        usb_lld_setup_endpoint (ENDP7, EP_INTERRUPT, 0, 0, ENDP7_TXADDR, 0);
@@ -167,14 +157,14 @@ gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
     }
 #endif
 #ifdef ENABLE_VIRTUAL_COM_PORT
-  else if (interface == 2)
+  else if (interface == VCOM_INTERFACE_0)
     {
       if (!stop)
        usb_lld_setup_endpoint (ENDP4, EP_INTERRUPT, 0, 0, ENDP4_TXADDR, 0);
       else
        usb_lld_stall_tx (ENDP4);
     }
-  else if (interface == 3)
+  else if (interface == VCOM_INTERFACE_1)
     {
       if (!stop)
        {
@@ -190,7 +180,7 @@ gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
     }
 #endif
 #ifdef PINPAD_DND_SUPPORT
-  else if (interface == MSC_INTERFACE_NO)
+  else if (interface == MSC_INTERFACE)
     {
       if (!stop)
        usb_lld_setup_endpoint (ENDP6, EP_BULK, 0,
@@ -328,7 +318,7 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
     }
   else if (type_rcp == (CLASS_REQUEST | INTERFACE_RECIPIENT))
     {
-      if (index == 0)
+      if (index == ICC_INTERFACE)
        {
          if (USB_SETUP_GET (req))
            {
@@ -353,7 +343,7 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
            }
        }
 #ifdef HID_CARD_CHANGE_SUPPORT
-      else if (index == 1)
+      else if (index == HID_INTERFACE)
        {
          switch (req_no)
            {
@@ -386,11 +376,11 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
        }
 #endif
 #ifdef ENABLE_VIRTUAL_COM_PORT
-      else if (index == 2)
+      else if (index == VCOM_INTERFACE_0)
        return vcom_port_data_setup (req, req_no, value);
 #endif
 #ifdef PINPAD_DND_SUPPORT
-      else if (index == MSC_INTERFACE_NO)
+      else if (index == MSC_INTERFACE)
        {
          if (USB_SETUP_GET (req))
            {
@@ -433,7 +423,7 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, uint16_t value,
 #ifdef HID_CARD_CHANGE_SUPPORT
   else if (type_rcp == (CLASS_REQUEST | INTERFACE_RECIPIENT))
     {
-      if (index == 1 && req_no == USB_HID_REQ_SET_REPORT)
+      if (index == HID_INTERFACE && req_no == USB_HID_REQ_SET_REPORT)
        {
          if ((hid_report ^ hid_report_saved) & HID_LED_STATUS_CARDCHANGE)
            ccid_card_change_signal (CARD_CHANGE_TOGGLE);
index 5b3eac8..96d0007 100644 (file)
@@ -75,37 +75,27 @@ static const uint8_t gnukDeviceDescriptor[] = {
 };
 
 #define ICC_TOTAL_LENGTH (9+9+54+7+7+7)
-#define ICC_NUM_INTERFACES 1
 
 #ifdef HID_CARD_CHANGE_SUPPORT
 #define HID_TOTAL_LENGTH (9+9+7)
-#define HID_NUM_INTERFACES 1
 #else
 #define HID_TOTAL_LENGTH   0
-#define HID_NUM_INTERFACES 0
 #endif
 
 #ifdef ENABLE_VIRTUAL_COM_PORT
 #define VCOM_TOTAL_LENGTH (9+5+5+4+5+7+9+7+7)
-#define VCOM_NUM_INTERFACES 2
 #else
 #define VCOM_TOTAL_LENGTH   0
-#define VCOM_NUM_INTERFACES 0
 #endif
 
 #ifdef PINPAD_DND_SUPPORT
 #define MSC_TOTAL_LENGTH (9+7+7)
-#define MSC_NUM_INTERFACES 1
 #else
 #define MSC_TOTAL_LENGTH   0
-#define MSC_NUM_INTERFACES 0
 #endif
 
 #define W_TOTAL_LENGTH (ICC_TOTAL_LENGTH + HID_TOTAL_LENGTH     \
                        + VCOM_TOTAL_LENGTH + MSC_TOTAL_LENGTH)
-#define NUM_INTERFACES (ICC_NUM_INTERFACES + HID_NUM_INTERFACES \
-                       + VCOM_NUM_INTERFACES + MSC_NUM_INTERFACES)
-
 
 
 /* Configuation Descriptor */
@@ -122,7 +112,7 @@ static const uint8_t gnukConfigDescriptor[] = {
   /* Interface Descriptor */
   9,                            /* bLength: Interface Descriptor size */
   USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
-  0,                            /* bInterfaceNumber: Index of this interface */
+  ICC_INTERFACE,                /* bInterfaceNumber: Index of this interface */
   0,                            /* Alternate setting for this interface */
   3,                            /* bNumEndpoints: Bulk-IN, Bulk-OUT, Intr-IN */
   USB_ICC_INTERFACE_CLASS,
@@ -207,7 +197,7 @@ static const uint8_t gnukConfigDescriptor[] = {
   /* Interface Descriptor */
   9,                            /* bLength: Interface Descriptor size */
   USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
-  0x01,                  /* bInterfaceNumber: Number of Interface */
+  HID_INTERFACE,  /* bInterfaceNumber: Number of Interface */
   0x00,                  /* bAlternateSetting: Alternate setting */
   0x01,                  /* bNumEndpoints: One endpoint used */
   0x03,                  /* bInterfaceClass: HID */
@@ -236,7 +226,7 @@ static const uint8_t gnukConfigDescriptor[] = {
   /* Interface Descriptor */
   9,                         /* bLength: Interface Descriptor size */
   USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
-  0x02,                  /* bInterfaceNumber: Number of Interface */
+  VCOM_INTERFACE_0,     /* bInterfaceNumber: Index of Interface */
   0x00,                  /* bAlternateSetting: Alternate setting */
   0x01,                  /* bNumEndpoints: One endpoints used */
   0x02,                  /* bInterfaceClass: Communication Interface Class */
@@ -247,14 +237,13 @@ static const uint8_t gnukConfigDescriptor[] = {
   5,                       /* bLength: Endpoint Descriptor size */
   0x24,                            /* bDescriptorType: CS_INTERFACE */
   0x00,                            /* bDescriptorSubtype: Header Func Desc */
-  0x10,                            /* bcdCDC: spec release number */
-  0x01,
+  0x10, 0x01,              /* bcdCDC: spec release number */
   /*Call Managment Functional Descriptor*/
   5,       /* bFunctionLength */
   0x24,            /* bDescriptorType: CS_INTERFACE */
   0x01,            /* bDescriptorSubtype: Call Management Func Desc */
   0x03,            /* bmCapabilities: D0+D1 */
-  0x02,            /* bDataInterface: 2 */
+  VCOM_INTERFACE_1,        /* bDataInterface */
   /*ACM Functional Descriptor*/
   4,       /* bFunctionLength */
   0x24,            /* bDescriptorType: CS_INTERFACE */
@@ -264,8 +253,8 @@ static const uint8_t gnukConfigDescriptor[] = {
   5,            /* bFunctionLength */
   0x24,                 /* bDescriptorType: CS_INTERFACE */
   0x06,                 /* bDescriptorSubtype: Union func desc */
-  0x01,                 /* bMasterInterface: Communication class interface */
-  0x02,                 /* bSlaveInterface0: Data Class Interface */
+  VCOM_INTERFACE_0,     /* bMasterInterface: Communication class interface */
+  VCOM_INTERFACE_1,     /* bSlaveInterface0: Data Class Interface */
   /*Endpoint 4 Descriptor*/
   7,                          /* bLength: Endpoint Descriptor size */
   USB_ENDPOINT_DESCRIPTOR_TYPE,           /* bDescriptorType: Endpoint */
@@ -277,7 +266,7 @@ static const uint8_t gnukConfigDescriptor[] = {
   /*Data class interface descriptor*/
   9,                          /* bLength: Endpoint Descriptor size */
   USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
-  0x03,                           /* bInterfaceNumber: Number of Interface */
+  VCOM_INTERFACE_1,     /* bInterfaceNumber: Index of Interface */
   0x00,                           /* bAlternateSetting: Alternate setting */
   0x02,                           /* bNumEndpoints: Two endpoints used */
   0x0A,                           /* bInterfaceClass: CDC */
@@ -303,11 +292,7 @@ static const uint8_t gnukConfigDescriptor[] = {
   /* Interface Descriptor.*/
   9,                         /* bLength: Interface Descriptor size */
   USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
-#ifdef ENABLE_VIRTUAL_COM_PORT
-  0x04,                                /* bInterfaceNumber.                */
-#else
-  0x02,                                /* bInterfaceNumber.                */
-#endif
+  MSC_INTERFACE,               /* bInterfaceNumber. */
   0x00,                                /* bAlternateSetting.               */
   0x02,                                /* bNumEndpoints.                   */
   0x08,                                /* bInterfaceClass (Mass Stprage).  */