| /* ---------------------------------------------------------------------------- |
| * ATMEL Microcontroller Software Support |
| * ---------------------------------------------------------------------------- |
| * Copyright (c) 2008, Atmel Corporation |
| * |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * - Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the disclaimer below. |
| * |
| * Atmel's name may not be used to endorse or promote products derived from |
| * this software without specific prior written permission. |
| * |
| * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR |
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE |
| * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, |
| * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
| * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * ---------------------------------------------------------------------------- |
| */ |
| |
| //------------------------------------------------------------------------------ |
| // Title: cciddriverdescriptors.h |
| // |
| // About: Purpose |
| // Definitions of the descriptors required by the ccid device driver. |
| // DWG_Smart-Card_CCID_Rev110.pdf |
| //------------------------------------------------------------------------------ |
| |
| #ifndef CCID_DRIVER_DESCRIPTORS_H |
| #define CCID_DRIVER_DESCRIPTORS_H |
| |
| //------------------------------------------------------------------------------ |
| // Definitions |
| //------------------------------------------------------------------------------ |
| |
| //------------------------------------------------------------------------------ |
| // Constants: Endpoints |
| // CCID_EPT_DATA_OUT endpoint data out bulk 1 |
| // CCID_EPT_DATA_IN endpoint data in bulk 2 |
| // CCID_EPT_NOTIFICATION endpoint data interupt 3 |
| //------------------------------------------------------------------------------ |
| #define CCID_EPT_DATA_OUT 1 |
| #define CCID_EPT_DATA_IN 2 |
| #define CCID_EPT_NOTIFICATION 3 |
| |
| //------------------------------------------------------------------------------ |
| // USB-ICC protocol |
| //------------------------------------------------------------------------------ |
| // CCID specification version 1.10 |
| #define CCID1_10 0x0110 |
| |
| #define SMART_CARD_DEVICE_CLASS 0x0B |
| // Smart Card Device Class Descriptor Type |
| #define CCID_DECRIPTOR_TYPE 0x21 |
| |
| // Table 5.3-1 Summary of CCID Class Specific Request |
| #define CCIDGenericRequest_ABORT 0x01 |
| #define CCIDGenericRequest_GET_CLOCK_FREQUENCIES 0x02 |
| #define CCIDGenericRequest_GET_DATA_RATES 0x03 |
| |
| // 6.1 Command Pipe, Bulk-OUT Messages |
| #define PC_TO_RDR_ICCPOWERON 0x62 |
| #define PC_TO_RDR_ICCPOWEROFF 0x63 |
| #define PC_TO_RDR_GETSLOTSTATUS 0x65 |
| #define PC_TO_RDR_XFRBLOCK 0x6F |
| #define PC_TO_RDR_GETPARAMETERS 0x6C |
| #define PC_TO_RDR_RESETPARAMETERS 0x6D |
| #define PC_TO_RDR_SETPARAMETERS 0x61 |
| #define PC_TO_RDR_ESCAPE 0x6B |
| #define PC_TO_RDR_ICCCLOCK 0x6E |
| #define PC_TO_RDR_T0APDU 0x6A |
| #define PC_TO_RDR_SECURE 0x69 |
| #define PC_TO_RDR_MECHANICAL 0x71 |
| #define PC_TO_RDR_ABORT 0x72 |
| #define PC_TO_RDR_SETDATARATEANDCLOCKFREQUENCY 0x73 |
| |
| // 6.2 Response Pipe, Bulk-IN Messages |
| #define RDR_TO_PC_DATABLOCK 0x80 |
| #define RDR_TO_PC_SLOTSTATUS 0x81 |
| #define RDR_TO_PC_PARAMETERS 0x82 |
| #define RDR_TO_PC_ESCAPE 0x83 |
| #define RDR_TO_PC_DATARATEANDCLOCKFREQUENCY 0x84 |
| |
| // 6.3 Interrupt-IN Messages |
| #define RDR_TO_PC_NOTIFYSLOTCHANGE 0x50 |
| #define RDR_TO_PC_HARDWAREERROR 0x51 |
| |
| // Table 6.2-2 Slot error register when bmCommandStatus = 1 |
| #define CMD_ABORTED 0xFF |
| #define ICC_MUTE 0xFE |
| #define XFR_PARITY_ERROR 0xFD |
| #define XFR_OVERRUN 0xFC |
| #define HW_ERROR 0xFB |
| #define BAD_ATR_TS 0xF8 |
| #define BAD_ATR_TCK 0xF7 |
| #define ICC_PROTOCOL_NOT_SUPPORTED 0xF6 |
| #define ICC_CLASS_NOT_SUPPORTED 0xF5 |
| #define PROCEDURE_BYTE_CONFLICT 0xF4 |
| #define DEACTIVATED_PROTOCOL 0xF3 |
| #define BUSY_WITH_AUTO_SEQUENCE 0xF2 |
| #define PIN_TIMEOUT 0xF0 |
| #define PIN_CANCELLED 0xEF |
| #define CMD_SLOT_BUSY 0xE0 |
| // User defined 0xC0 to 0x81 |
| // Reserved for futur use 0x80 |
| // not supported incorrect message parameter 0x7F to 0x01 |
| // Command not supported 0x00 |
| |
| // CCID rev 1.1, p.27 |
| #define VOLTS_AUTO 0x00 |
| #define VOLTS_5_0 0x01 |
| #define VOLTS_3_0 0x02 |
| #define VOLTS_1_8 0x03 |
| |
| // 6.3.1 RDR_to_PC_NotifySlotChange |
| #define ICC_NOT_PRESENT 0x00 |
| #define ICC_PRESENT 0x01 |
| #define ICC_CHANGE 0x02 |
| #define ICC_INSERTED_EVENT 0x01 |
| |
| // ICCD: Table 6.1-8 Bitmap for bStatus field |
| #define ICC_BS_PRESENT_ACTIVATED 0x00 // USB-ICC is present and activated |
| #define ICC_BS_PRESENT_NOTACTIVATED 0x01 // USB-ICC is present but not activated |
| #define ICC_BS_NOTPRESENT 0x02 // USB-ICC is virtually not present |
| #define ICC_BS_RFU 0x03 // RFU |
| #define ICC_CS_NO_ERROR (0x00<<6) // Processed without error |
| #define ICC_CS_FAILED (0x01<<6) // Failed, error condition given by bError |
| #define ICC_CS_TIME_EXT (0x02<<6) // Time extension is requested |
| #define ICC_CS_RFU (0x03<<6) // RFU |
| |
| /* |
| #define NO_ERROR 0x00 |
| #define NO_EXTRA_BYTES 0x00 |
| #define CCID_FLAG_INITIAL_VALUE 0x05 |
| #define CCID_EVENT_SIZE 0x02 |
| #define STATUS_MASK 0x41 |
| */ |
| //------------------------------------------------------------------------------ |
| // Structures |
| //------------------------------------------------------------------------------ |
| |
| #endif //#ifndef CCID_DRIVER_DESCRIPTORS_H |
| |