/* * Copyright (c) 2015 - 2016, Freescale Semiconductor, Inc. * Copyright 2016 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef __USB_DEVICE_DESCRIPTOR_H__ #define __USB_DEVICE_DESCRIPTOR_H__ /******************************************************************************* * Definitions ******************************************************************************/ #define USB_DEVICE_SPECIFIC_BCD_VERSION (0x0200U) #define USB_DEVICE_DEMO_BCD_VERSION (0x0101U) #define USB_DEVICE_CLASS (0x00U) #define USB_DEVICE_SUBCLASS (0x00U) #define USB_DEVICE_PROTOCOL (0x00U) #define USB_DEVICE_MAX_POWER (0x32U) #define USB_DESCRIPTOR_LENGTH_CONFIGURATION_ALL (sizeof(g_UsbDeviceConfigurationDescriptor)) #define USB_DESCRIPTOR_LENGTH_STRING0 (sizeof(g_UsbDeviceString0)) #define USB_DESCRIPTOR_LENGTH_STRING1 (sizeof(g_UsbDeviceString1)) #define USB_DESCRIPTOR_LENGTH_STRING2 (sizeof(g_UsbDeviceString2)) #define USB_DESCRIPTOR_LENGTH_STRING3 (sizeof(g_UsbDeviceString3)) #define USB_DEVICE_CONFIGURATION_COUNT (1U) #define USB_DEVICE_STRING_COUNT (4U) #define USB_DEVICE_LANGUAGE_COUNT (1U) #define USB_DEVICE_CCID_CLASS (0x0BU) #define USB_DEVICE_CCID_SUBCLASS (0x00U) #define USB_DEVICE_CCID_PROTOCOL (0x00U) #define USB_DEVICE_CCID_SMART_CARD_CONFIGURE_INDEX (1U) #define USB_DEVICE_CCID_SMART_CARD_INTERFACE_COUNT (1U) #define USB_DEVICE_CCID_SMART_CARD_INTERFACE_INDEX (0U) #define USB_DEVICE_CCID_SMART_CARD_ENDPOINT_COUNT (3U) #define USB_DEVICE_CCID_SMART_CARD_ENDPOINT_BULK_IN (1U) #define USB_DEVICE_CCID_SMART_CARD_ENDPOINT_BULK_OUT (2U) #define USB_DEVICE_CCID_SMART_CARD_ENDPOINT_INTERRUPT_IN (3U) #define FS_INTERRUPT_IN_PACKET_SIZE (8U) #define HS_INTERRUPT_IN_PACKET_SIZE (8U) #define FS_INTERRUPT_IN_INTERVAL (8U) #define HS_INTERRUPT_IN_INTERVAL (7U) #define FS_BULK_IN_PACKET_SIZE (64U) #define HS_BULK_IN_PACKET_SIZE (64U) #define FS_BULK_OUT_PACKET_SIZE (64U) #define HS_BULK_OUT_PACKET_SIZE (64U) #define USB_DEVICE_CCID_VERSION (0x0110U) #define USB_DEVICE_CCID_SMART_CARD_MAX_SLOTS (1U) #define USB_DEVICE_CCID_SMART_CARD_SLOT_INDEX (0U) #define USB_DEVICE_CCID_SMART_CARD_VOLTAGE_SUPPORT (USB_DEVICE_CCID_DESCRIPTOR_VOLTAGE_SUPPORT_BM_3V) #define USB_DEVICE_CCID_SMART_CARD_PROTOCOLS \ (USB_DEVICE_CCID_DESCRIPTOR_PROTOCOLS_BM_T0) #define USB_DEVICE_CCID_SMART_CARD_DEFAULT_CLOCK (0x00000DFCU) /* KHz */ #define USB_DEVICE_CCID_SMART_CARD_MAXIMUM_CLOCK (USB_DEVICE_CCID_SMART_CARD_DEFAULT_CLOCK) /* KHz */ #define USB_DEVICE_CCID_SMART_CARD_NUM_CLOCK_SUPPORTED (0U) #define USB_DEVICE_CCID_SMART_CARD_DATA_RATE (0x00002580U) /* bps */ #define USB_DEVICE_CCID_SMART_CARD_MAXIMUM_DATA_RATE (USB_DEVICE_CCID_SMART_CARD_DATA_RATE) /* bps */ #define USB_DEVICE_CCID_SMART_CARD_NUM_DATA_RATE_SUPPORTED (0U) #define USB_DEVICE_CCID_SMART_CARD_MAX_IFSD (900U) #define USB_DEVICE_CCID_SMART_CARD_SYNCH_PROTOCOLS (0x00000000U) #define USB_DEVICE_CCID_SMART_CARD_MECHANICAL (USB_DEVICE_CCID_DESCRIPTOR_MECHANICAL_BM_NO) #define USB_DEVICE_CCID_SMART_CARD_FEATURES_INTERNAL \ (USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_NO | USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_AUTO_VOLTAGE_SELECTION | \ USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_AUTO_FREQUENCY_CHANGE | \ USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_AUTO_BAUD_RATE_CHANGE | \ USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_AUTO_VOLTAGE_SELECTION | \ USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_SHORT_EXTENDED_APDU_LEVEL_EXCHANGES | \ 0 ) #if 0 USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_TPDU_LEVEL_EXCHANGES | \ USB_DEVICE_CCID_DESCRIPTOR_FEATURES_BM_SHORT_APDU_LEVEL_EXCHANGES) #endif #define USB_DEVICE_CCID_SMART_CARD_FEATURES (USB_DEVICE_CCID_SMART_CARD_FEATURES_INTERNAL) #define USB_DEVICE_CCID_SMART_CARD_MAX_MESSAGE_LENGTH (USB_DEVICE_CONFIG_CCID_MAX_MESSAGE_LENGTH) #define USB_DEVICE_CCID_SMART_CARD_CLASS_GET_RESPONSE (0x00U) #define USB_DEVICE_CCID_SMART_CARD_CLASS_ENVELOPE (0x00U) #define USB_DEVICE_CCID_SMART_CARD_LCD_LAYOUT (0x0000U) #define USB_DEVICE_CCID_SMART_CARD_PIN_SUPPORT (USB_DEVICE_CCID_DESCRIPTOR_PIN_SUPPORT_BM_NO) #define USB_DEVICE_CCID_SMART_CARD_MAX_BUSY_SLOTS (0x01U) /******************************************************************************* * API ******************************************************************************/ /* Configure the device according to the USB speed. */ extern usb_status_t USB_DeviceSetSpeed(usb_device_handle handle, uint8_t speed); /* Get device descriptor request */ usb_status_t USB_DeviceGetDeviceDescriptor(usb_device_handle handle, usb_device_get_device_descriptor_struct_t *deviceDescriptor); /* Get device configuration descriptor request */ usb_status_t USB_DeviceGetConfigurationDescriptor( usb_device_handle handle, usb_device_get_configuration_descriptor_struct_t *configurationDescriptor); /* Get device string descriptor request */ usb_status_t USB_DeviceGetStringDescriptor(usb_device_handle handle, usb_device_get_string_descriptor_struct_t *stringDescriptor); /* Get hid descriptor request */ usb_status_t USB_DeviceGetHidDescriptor(usb_device_handle handle, usb_device_get_hid_descriptor_struct_t *hidDescriptor); /* Get hid report descriptor request */ usb_status_t USB_DeviceGetHidReportDescriptor(usb_device_handle handle, usb_device_get_hid_report_descriptor_struct_t *hidReportDescriptor); /* Get hid physical descriptor request */ usb_status_t USB_DeviceGetHidPhysicalDescriptor(usb_device_handle handle, usb_device_get_hid_physical_descriptor_struct_t *hidPhysicalDescriptor); #endif /* __USB_DEVICE_DESCRIPTOR_H__ */