USB clean up
This commit is contained in:
11
ChangeLog
11
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>
|
2015-03-06 Niibe Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
* src/ecc-edwards.c (eddsa_sign_25519): Return 0.
|
* src/ecc-edwards.c (eddsa_sign_25519): Return 0.
|
||||||
|
|||||||
11
README
11
README
@@ -544,7 +544,7 @@ See doc/note/firmware-update.
|
|||||||
Git Repositories
|
Git Repositories
|
||||||
================
|
================
|
||||||
|
|
||||||
Please use: https://anonscm.debian.org/cgit/gnuk/
|
Please use: https://anonscm.debian.org/cgit/gnuk/gnuk/
|
||||||
|
|
||||||
You can get it by:
|
You can get it by:
|
||||||
|
|
||||||
@@ -570,6 +570,14 @@ Information on the Web
|
|||||||
|
|
||||||
Please visit: http://www.fsij.org/gnuk/
|
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
|
Your Contributions
|
||||||
==================
|
==================
|
||||||
@@ -580,5 +588,6 @@ to FSIJ (if possible).
|
|||||||
|
|
||||||
Foot note
|
Foot note
|
||||||
==========
|
==========
|
||||||
|
|
||||||
* NUK(R) is a registered trademark owend by MAPA GmbH, Germany.
|
* NUK(R) is a registered trademark owend by MAPA GmbH, Germany.
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -4,6 +4,29 @@
|
|||||||
#define __USB_CONF_H
|
#define __USB_CONF_H
|
||||||
|
|
||||||
#define NUM_STRING_DESC 7
|
#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)
|
#if defined(USB_SELF_POWERED)
|
||||||
#define USB_INITIAL_FEATURE 0xC0 /* bmAttributes: self powered */
|
#define USB_INITIAL_FEATURE 0xC0 /* bmAttributes: self powered */
|
||||||
|
|||||||
@@ -103,22 +103,12 @@ vcom_port_data_setup (uint8_t req, uint8_t req_no, uint16_t value)
|
|||||||
|
|
||||||
return USB_UNSUPPORT;
|
return USB_UNSUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VCOM_NUM_INTERFACES 2
|
|
||||||
#else
|
|
||||||
#define VCOM_NUM_INTERFACES 0
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PINPAD_DND_SUPPORT
|
#ifdef PINPAD_DND_SUPPORT
|
||||||
#include "usb-msc.h"
|
#include "usb-msc.h"
|
||||||
#define MSC_NUM_INTERFACES 1
|
|
||||||
#else
|
|
||||||
#define MSC_NUM_INTERFACES 0
|
|
||||||
#endif
|
#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 */
|
uint32_t bDeviceState = UNCONNECTED; /* USB device status */
|
||||||
|
|
||||||
#define USB_HID_REQ_GET_REPORT 1
|
#define USB_HID_REQ_GET_REPORT 1
|
||||||
@@ -142,7 +132,7 @@ static uint16_t hid_report;
|
|||||||
static void
|
static void
|
||||||
gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
|
gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
|
||||||
{
|
{
|
||||||
if (interface == 0)
|
if (interface == ICC_INTERFACE)
|
||||||
{
|
{
|
||||||
if (!stop)
|
if (!stop)
|
||||||
{
|
{
|
||||||
@@ -158,7 +148,7 @@ gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef HID_CARD_CHANGE_SUPPORT
|
#ifdef HID_CARD_CHANGE_SUPPORT
|
||||||
else if (interface == 1)
|
else if (interface == HID_INTERFACE)
|
||||||
{
|
{
|
||||||
if (!stop)
|
if (!stop)
|
||||||
usb_lld_setup_endpoint (ENDP7, EP_INTERRUPT, 0, 0, ENDP7_TXADDR, 0);
|
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
|
#endif
|
||||||
#ifdef ENABLE_VIRTUAL_COM_PORT
|
#ifdef ENABLE_VIRTUAL_COM_PORT
|
||||||
else if (interface == 2)
|
else if (interface == VCOM_INTERFACE_0)
|
||||||
{
|
{
|
||||||
if (!stop)
|
if (!stop)
|
||||||
usb_lld_setup_endpoint (ENDP4, EP_INTERRUPT, 0, 0, ENDP4_TXADDR, 0);
|
usb_lld_setup_endpoint (ENDP4, EP_INTERRUPT, 0, 0, ENDP4_TXADDR, 0);
|
||||||
else
|
else
|
||||||
usb_lld_stall_tx (ENDP4);
|
usb_lld_stall_tx (ENDP4);
|
||||||
}
|
}
|
||||||
else if (interface == 3)
|
else if (interface == VCOM_INTERFACE_1)
|
||||||
{
|
{
|
||||||
if (!stop)
|
if (!stop)
|
||||||
{
|
{
|
||||||
@@ -190,7 +180,7 @@ gnuk_setup_endpoints_for_interface (uint16_t interface, int stop)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef PINPAD_DND_SUPPORT
|
#ifdef PINPAD_DND_SUPPORT
|
||||||
else if (interface == MSC_INTERFACE_NO)
|
else if (interface == MSC_INTERFACE)
|
||||||
{
|
{
|
||||||
if (!stop)
|
if (!stop)
|
||||||
usb_lld_setup_endpoint (ENDP6, EP_BULK, 0,
|
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))
|
else if (type_rcp == (CLASS_REQUEST | INTERFACE_RECIPIENT))
|
||||||
{
|
{
|
||||||
if (index == 0)
|
if (index == ICC_INTERFACE)
|
||||||
{
|
{
|
||||||
if (USB_SETUP_GET (req))
|
if (USB_SETUP_GET (req))
|
||||||
{
|
{
|
||||||
@@ -353,7 +343,7 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef HID_CARD_CHANGE_SUPPORT
|
#ifdef HID_CARD_CHANGE_SUPPORT
|
||||||
else if (index == 1)
|
else if (index == HID_INTERFACE)
|
||||||
{
|
{
|
||||||
switch (req_no)
|
switch (req_no)
|
||||||
{
|
{
|
||||||
@@ -386,11 +376,11 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_VIRTUAL_COM_PORT
|
#ifdef ENABLE_VIRTUAL_COM_PORT
|
||||||
else if (index == 2)
|
else if (index == VCOM_INTERFACE_0)
|
||||||
return vcom_port_data_setup (req, req_no, value);
|
return vcom_port_data_setup (req, req_no, value);
|
||||||
#endif
|
#endif
|
||||||
#ifdef PINPAD_DND_SUPPORT
|
#ifdef PINPAD_DND_SUPPORT
|
||||||
else if (index == MSC_INTERFACE_NO)
|
else if (index == MSC_INTERFACE)
|
||||||
{
|
{
|
||||||
if (USB_SETUP_GET (req))
|
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
|
#ifdef HID_CARD_CHANGE_SUPPORT
|
||||||
else if (type_rcp == (CLASS_REQUEST | INTERFACE_RECIPIENT))
|
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)
|
if ((hid_report ^ hid_report_saved) & HID_LED_STATUS_CARDCHANGE)
|
||||||
ccid_card_change_signal (CARD_CHANGE_TOGGLE);
|
ccid_card_change_signal (CARD_CHANGE_TOGGLE);
|
||||||
|
|||||||
@@ -75,37 +75,27 @@ static const uint8_t gnukDeviceDescriptor[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define ICC_TOTAL_LENGTH (9+9+54+7+7+7)
|
#define ICC_TOTAL_LENGTH (9+9+54+7+7+7)
|
||||||
#define ICC_NUM_INTERFACES 1
|
|
||||||
|
|
||||||
#ifdef HID_CARD_CHANGE_SUPPORT
|
#ifdef HID_CARD_CHANGE_SUPPORT
|
||||||
#define HID_TOTAL_LENGTH (9+9+7)
|
#define HID_TOTAL_LENGTH (9+9+7)
|
||||||
#define HID_NUM_INTERFACES 1
|
|
||||||
#else
|
#else
|
||||||
#define HID_TOTAL_LENGTH 0
|
#define HID_TOTAL_LENGTH 0
|
||||||
#define HID_NUM_INTERFACES 0
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_VIRTUAL_COM_PORT
|
#ifdef ENABLE_VIRTUAL_COM_PORT
|
||||||
#define VCOM_TOTAL_LENGTH (9+5+5+4+5+7+9+7+7)
|
#define VCOM_TOTAL_LENGTH (9+5+5+4+5+7+9+7+7)
|
||||||
#define VCOM_NUM_INTERFACES 2
|
|
||||||
#else
|
#else
|
||||||
#define VCOM_TOTAL_LENGTH 0
|
#define VCOM_TOTAL_LENGTH 0
|
||||||
#define VCOM_NUM_INTERFACES 0
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PINPAD_DND_SUPPORT
|
#ifdef PINPAD_DND_SUPPORT
|
||||||
#define MSC_TOTAL_LENGTH (9+7+7)
|
#define MSC_TOTAL_LENGTH (9+7+7)
|
||||||
#define MSC_NUM_INTERFACES 1
|
|
||||||
#else
|
#else
|
||||||
#define MSC_TOTAL_LENGTH 0
|
#define MSC_TOTAL_LENGTH 0
|
||||||
#define MSC_NUM_INTERFACES 0
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define W_TOTAL_LENGTH (ICC_TOTAL_LENGTH + HID_TOTAL_LENGTH \
|
#define W_TOTAL_LENGTH (ICC_TOTAL_LENGTH + HID_TOTAL_LENGTH \
|
||||||
+ VCOM_TOTAL_LENGTH + MSC_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 */
|
/* Configuation Descriptor */
|
||||||
@@ -122,7 +112,7 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
/* Interface Descriptor */
|
/* Interface Descriptor */
|
||||||
9, /* bLength: Interface Descriptor size */
|
9, /* bLength: Interface Descriptor size */
|
||||||
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
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 */
|
0, /* Alternate setting for this interface */
|
||||||
3, /* bNumEndpoints: Bulk-IN, Bulk-OUT, Intr-IN */
|
3, /* bNumEndpoints: Bulk-IN, Bulk-OUT, Intr-IN */
|
||||||
USB_ICC_INTERFACE_CLASS,
|
USB_ICC_INTERFACE_CLASS,
|
||||||
@@ -207,7 +197,7 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
/* Interface Descriptor */
|
/* Interface Descriptor */
|
||||||
9, /* bLength: Interface Descriptor size */
|
9, /* bLength: Interface Descriptor size */
|
||||||
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
||||||
0x01, /* bInterfaceNumber: Number of Interface */
|
HID_INTERFACE, /* bInterfaceNumber: Number of Interface */
|
||||||
0x00, /* bAlternateSetting: Alternate setting */
|
0x00, /* bAlternateSetting: Alternate setting */
|
||||||
0x01, /* bNumEndpoints: One endpoint used */
|
0x01, /* bNumEndpoints: One endpoint used */
|
||||||
0x03, /* bInterfaceClass: HID */
|
0x03, /* bInterfaceClass: HID */
|
||||||
@@ -236,7 +226,7 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
/* Interface Descriptor */
|
/* Interface Descriptor */
|
||||||
9, /* bLength: Interface Descriptor size */
|
9, /* bLength: Interface Descriptor size */
|
||||||
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
||||||
0x02, /* bInterfaceNumber: Number of Interface */
|
VCOM_INTERFACE_0, /* bInterfaceNumber: Index of Interface */
|
||||||
0x00, /* bAlternateSetting: Alternate setting */
|
0x00, /* bAlternateSetting: Alternate setting */
|
||||||
0x01, /* bNumEndpoints: One endpoints used */
|
0x01, /* bNumEndpoints: One endpoints used */
|
||||||
0x02, /* bInterfaceClass: Communication Interface Class */
|
0x02, /* bInterfaceClass: Communication Interface Class */
|
||||||
@@ -247,14 +237,13 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
5, /* bLength: Endpoint Descriptor size */
|
5, /* bLength: Endpoint Descriptor size */
|
||||||
0x24, /* bDescriptorType: CS_INTERFACE */
|
0x24, /* bDescriptorType: CS_INTERFACE */
|
||||||
0x00, /* bDescriptorSubtype: Header Func Desc */
|
0x00, /* bDescriptorSubtype: Header Func Desc */
|
||||||
0x10, /* bcdCDC: spec release number */
|
0x10, 0x01, /* bcdCDC: spec release number */
|
||||||
0x01,
|
|
||||||
/*Call Managment Functional Descriptor*/
|
/*Call Managment Functional Descriptor*/
|
||||||
5, /* bFunctionLength */
|
5, /* bFunctionLength */
|
||||||
0x24, /* bDescriptorType: CS_INTERFACE */
|
0x24, /* bDescriptorType: CS_INTERFACE */
|
||||||
0x01, /* bDescriptorSubtype: Call Management Func Desc */
|
0x01, /* bDescriptorSubtype: Call Management Func Desc */
|
||||||
0x03, /* bmCapabilities: D0+D1 */
|
0x03, /* bmCapabilities: D0+D1 */
|
||||||
0x02, /* bDataInterface: 2 */
|
VCOM_INTERFACE_1, /* bDataInterface */
|
||||||
/*ACM Functional Descriptor*/
|
/*ACM Functional Descriptor*/
|
||||||
4, /* bFunctionLength */
|
4, /* bFunctionLength */
|
||||||
0x24, /* bDescriptorType: CS_INTERFACE */
|
0x24, /* bDescriptorType: CS_INTERFACE */
|
||||||
@@ -264,8 +253,8 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
5, /* bFunctionLength */
|
5, /* bFunctionLength */
|
||||||
0x24, /* bDescriptorType: CS_INTERFACE */
|
0x24, /* bDescriptorType: CS_INTERFACE */
|
||||||
0x06, /* bDescriptorSubtype: Union func desc */
|
0x06, /* bDescriptorSubtype: Union func desc */
|
||||||
0x01, /* bMasterInterface: Communication class interface */
|
VCOM_INTERFACE_0, /* bMasterInterface: Communication class interface */
|
||||||
0x02, /* bSlaveInterface0: Data Class Interface */
|
VCOM_INTERFACE_1, /* bSlaveInterface0: Data Class Interface */
|
||||||
/*Endpoint 4 Descriptor*/
|
/*Endpoint 4 Descriptor*/
|
||||||
7, /* bLength: Endpoint Descriptor size */
|
7, /* bLength: Endpoint Descriptor size */
|
||||||
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
|
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
|
||||||
@@ -277,7 +266,7 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
/*Data class interface descriptor*/
|
/*Data class interface descriptor*/
|
||||||
9, /* bLength: Endpoint Descriptor size */
|
9, /* bLength: Endpoint Descriptor size */
|
||||||
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
|
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
|
||||||
0x03, /* bInterfaceNumber: Number of Interface */
|
VCOM_INTERFACE_1, /* bInterfaceNumber: Index of Interface */
|
||||||
0x00, /* bAlternateSetting: Alternate setting */
|
0x00, /* bAlternateSetting: Alternate setting */
|
||||||
0x02, /* bNumEndpoints: Two endpoints used */
|
0x02, /* bNumEndpoints: Two endpoints used */
|
||||||
0x0A, /* bInterfaceClass: CDC */
|
0x0A, /* bInterfaceClass: CDC */
|
||||||
@@ -303,11 +292,7 @@ static const uint8_t gnukConfigDescriptor[] = {
|
|||||||
/* Interface Descriptor.*/
|
/* Interface Descriptor.*/
|
||||||
9, /* bLength: Interface Descriptor size */
|
9, /* bLength: Interface Descriptor size */
|
||||||
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */
|
||||||
#ifdef ENABLE_VIRTUAL_COM_PORT
|
MSC_INTERFACE, /* bInterfaceNumber. */
|
||||||
0x04, /* bInterfaceNumber. */
|
|
||||||
#else
|
|
||||||
0x02, /* bInterfaceNumber. */
|
|
||||||
#endif
|
|
||||||
0x00, /* bAlternateSetting. */
|
0x00, /* bAlternateSetting. */
|
||||||
0x02, /* bNumEndpoints. */
|
0x02, /* bNumEndpoints. */
|
||||||
0x08, /* bInterfaceClass (Mass Stprage). */
|
0x08, /* bInterfaceClass (Mass Stprage). */
|
||||||
|
|||||||
Reference in New Issue
Block a user