153 lines
7.2 KiB
C
153 lines
7.2 KiB
C
/* ----------------------------------------------------------------------------
|
|
* 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 ICC_PRESENT+ICC_CHANGE
|
|
|
|
// 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
|
|
|