view cdg-hybrid/cdginc/uicc.h @ 606:de936aea260a

FFS: added Multi-ID support for Samsung flash chips needed for GTM900 target support
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 17 Jun 2019 19:23:57 +0000
parents e7a67accfad9
children
line wrap: on
line source

/*
+--------------------------------------------------------------------------+
| PROJECT : PROTOCOL STACK                                                 |
| FILE    : uicc.h                                                         |
| SOURCE  : "sap\8010_136_SIMDRV_SAP.pdf"                                  |
| LastModified : "2004-06-10"                                              |
| IdAndVersion : "8010.136.03.009"                                         |
| SrcFileTime  : "Thu Nov 29 09:27:56 2007"                                |
| Generated by CCDGEN_2.5.5A on Fri Oct 14 21:41:52 2016                   |
|           !!DO NOT MODIFY!!DO NOT MODIFY!!DO NOT MODIFY!!                |
+--------------------------------------------------------------------------+
*/

/* PRAGMAS
 * PREFIX                 : SIMDRV
 * COMPATIBILITY_DEFINES  : NO
 * ALWAYS_ENUM_IN_VAL_FILE: YES
 * ENABLE_GROUP: YES
 * CAPITALIZE_TYPENAME: NO
 */

#ifndef UICC_INCLUDE
#define UICC_INCLUDE


#define PUB_L1_MISC_ENTER__Uicc_H

#define PUB_L1_MISC_ENTER__FILENAME _Uicc_H
#define PUB_L1_MISC_ENTER__Uicc_H__FILE_TYPE CDGINC
#define PUB_L1_MISC_ENTER__Uicc_H__LAST_MODIFIED _2004_06_10
#define PUB_L1_MISC_ENTER__Uicc_H__ID_AND_VERSION _8010_136_03_009

#define PUB_L1_MISC_ENTER__Uicc_H__SRC_FILE_TIME _Thu_Nov_29_09_27_56_2007

#include "pub_L1_misc_enter.h"

#undef PUB_L1_MISC_ENTER__Uicc_H

#undef PUB_L1_MISC_ENTER__FILENAME


/*
 * Enum to value table VAL_reset_return_val
 * CCDGEN:WriteEnum_Count==30
 */
#ifndef UICC_VAL_RESET_RETURN_VAL_CLASS
#define UICC_VAL_RESET_RETURN_VAL_CLASS
enum 
{
  UICC_SIM_INSERTED              = 0x0,           /* A SIM is inserted and ATR/PPS was successful */
  UICC_SIM_NOT_INSERTED          = 0x1,           /* No SIM inserted (hardware detected) */
  UICC_INVALID_CARD              = 0x2,           /* Card is not responding or gives unintelligible answers, communications time out. */
  UICC_ME_FAILURE                = 0x3,           /* Power management related problems, e.g. voltage selection */
  UICC_IMPROPER_CALL_BACK        = 0x4,           /* simdrv_register function called with pointer improperly set, e.g. NULL. */
  UICC_ME_READER_NOT_AVAILABLE   = 0x5            /* The reader requested is not available */
};
typedef Uint8 Uicc_ValResetReturnVal;
#endif /* UICC_VAL_RESET_RETURN_VAL_CLASS */

/*
 * Enum to value table VAL_len
 * CCDGEN:WriteEnum_Count==32
 */
#ifndef UICC_VAL_LEN_CLASS
#define UICC_VAL_LEN_CLASS
enum 
{
  UICC_VAL_LEN__RANGE_MIN        = 0x0,           /* minimum                        */
  UICC_VAL_LEN__RANGE_MAX        = 0x100,         /* maximum                        */
  UICC_LENGTH_UNKNOWN            = 0xffff         /* Indicating that the length expected is unknown. */
};
typedef Uint16 Uicc_ValLen;
#endif /* UICC_VAL_LEN_CLASS */

/*
 * Enum to value table VAL_sw1_2
 * CCDGEN:WriteEnum_Count==34
 */
#ifndef UICC_VAL_SW_1_2_CLASS
#define UICC_VAL_SW_1_2_CLASS
enum 
{
  UICC_ERR_NOCARD                = 0x1,           /* No SIM inserted (hardware detected) */
  UICC_ERR_NOT_RESET             = 0x2,           /* A reset has not been performed on the driver with the requested Id. */
  UICC_ERR_ME_FAIL               = 0x3,           /* Unrecoverable ME failure (for instance interrupt fails to occur) */
  UICC_ERR_RETRY_FAIL            = 0x4,           /* ME/SIM communication failed after certain retries, SIM reset required */
  UICC_ERR_PARAM_WRONG           = 0x5            /* A driver function is called with invalid parameters */
};
typedef Uint8 Uicc_ValSw1_2;
#endif /* UICC_VAL_SW_1_2_CLASS */

/*
 * Enum to value table VAL_cla
 * CCDGEN:WriteEnum_Count==36
 */
#ifndef UICC_VAL_CLA_CLASS
#define UICC_VAL_CLA_CLASS
enum 
{
  UICC_GSM_CLASS_BYTE            = 0xa0,          /* GSM Class byte according to [GSM 11.11 / 3GPP 51.011] */
  UICC_UMTS_CLASS_BYTE           = 0x80,          /* UMTS Class byte according to [ETSI 102 221 10.1.2] */
  UICC_UICC_CLASS_BYTE           = 0x0            /* UICC Class byte according to [ISO 7816-4] */
};
typedef Uint8 Uicc_ValCla;
#endif /* UICC_VAL_CLA_CLASS */

/*
 * Enum to value table VAL_ins
 * CCDGEN:WriteEnum_Count==38
 */
#ifndef UICC_VAL_INS_CLASS
#define UICC_VAL_INS_CLASS
enum 
{
  UICC_INS_SELECT                = 0xa4,          /* Select Instruction             */
  UICC_INS_STATUS                = 0xf2,          /* Status Instruction             */
  UICC_INS_READ_BINARY           = 0xb0,          /* Read Binary Instruction        */
  UICC_INS_UPDATE_BINARY         = 0xd6,          /* Update Binary Instruction      */
  UICC_INS_READ_RECORD           = 0xb2,          /* Read Record Instruction        */
  UICC_INS_UPDATE_RECORD         = 0xdc,          /* Update Record Instruction      */
  UICC_INS_SEEK                  = 0xa2,          /* Seek Instruction               */
  UICC_INS_INCREASE              = 0x32,          /* Increase Instruction           */
  UICC_INS_VERIFY_CHV            = 0x20,          /* Verify Chv Instruction         */
  UICC_INS_CHANGE_CHV            = 0x24,          /* Change Chv Instruction         */
  UICC_INS_DISABLE_CHV           = 0x26,          /* Disable Chv Instruction        */
  UICC_INS_ENABLE_CHV            = 0x28,          /* Ensable Chv Instruction        */
  UICC_INS_UNBLOCK_CHV           = 0x2c,          /* Unblock Chv Instruction        */
  UICC_INS_INVALIDATE            = 0x4,           /* Invalidate Instruction         */
  UICC_INS_REHABILITATE          = 0x44,          /* Rehabilitate Instruction       */
  UICC_INS_AUTHENTICATE          = 0x88,          /* Run GSM Algorithm (2/2.5G) / Authenticate (3G) Instruction */
  UICC_INS_TERMINAL_PROFILE      = 0x10,          /* Terminal Profile Instruction   */
  UICC_INS_ENVELOPE              = 0xc2,          /* Envelope Instruction           */
  UICC_INS_FETCH                 = 0x12,          /* Fetch Instruction              */
  UICC_INS_TERMINAL_RESPONSE     = 0x14,          /* Terminal Response Instruction  */
  UICC_INS_GET_RESPONSE          = 0xc0           /* Get Response Instruction       */
};
typedef Uint8 Uicc_ValIns;
#endif /* UICC_VAL_INS_CLASS */

/*
 * Enum to value table VAL_voltage_select
 * CCDGEN:WriteEnum_Count==40
 */
#ifndef UICC_VAL_VOLTAGE_SELECT_CLASS
#define UICC_VAL_VOLTAGE_SELECT_CLASS
enum 
{
  UICC_REQ_VOLTAGE_SEL           = 0x0,           /* The SIM reader driver shall perform voltage selection */
  UICC_OMIT_VOLTAGE_SEL          = 0x1            /* The SIM reader driver shall restart with the current voltage */
};
typedef Uint8 Uicc_ValVoltageSelect;
#endif /* UICC_VAL_VOLTAGE_SELECT_CLASS */

/*
 * Enum to value table VAL_config_requested
 * CCDGEN:WriteEnum_Count==42
 */
#ifndef UICC_VAL_CONFIG_REQUESTED_CLASS
#define UICC_VAL_CONFIG_REQUESTED_CLASS
enum 
{
  UICC_OMIT_CONFIG_CHARACTERISTICS = 0x0,         /* PS Shall not retrieve Configuration Characteristics */
  UICC_REQUEST_CONFIG_CHARACTERISTICS = 0x1       /* PS Shall retrieve Configuration Characteristics */
};
typedef Uint8 Uicc_ValConfigRequested;
#endif /* UICC_VAL_CONFIG_REQUESTED_CLASS */

/*
 * Enum to value table VAL_reader_id
 * CCDGEN:WriteEnum_Count==44
 */
#ifndef UICC_VAL_READER_ID_CLASS
#define UICC_VAL_READER_ID_CLASS
enum 
{
  UICC_VAL_READER_ID__RANGE_MIN  = 0x1,           /* minimum                        */
  UICC_VAL_READER_ID__RANGE_MAX  = 0x2            /* maximum                        */
};
typedef Uint8 Uicc_ValReaderId;
#endif /* UICC_VAL_READER_ID_CLASS */
#define UICC_SIZE_ATR_INFO             (0x21)     
#ifndef UICC_ATR_STRING_INFO_CLASS
#define UICC_ATR_STRING_INFO_CLASS
/*
 * SIM Card Info
 * CCDGEN:WriteStruct_Count==1284
 */
typedef struct
{
  Uint8                     atrStringArrayCount;      /*<  0:  1> counter                                            */
  Uint8                     atrStringArray[UICC_SIZE_ATR_INFO]; /*<  1: 33> SIM Card Answer to reset string                    */
  Uint8                     __dummy0;                 /*< 34:  1> alignment                                          */
  Uint8                     __dummy1;                 /*< 35:  1> alignment                                          */
} Uicc_AtrStringInfo;
#endif /* UICC_ATR_STRING_INFO_CLASS */


/*
 * typedef between var and valtab enums
 */
#ifndef UICC_LEN_CLASS
#define UICC_LEN_CLASS
typedef Uicc_ValLen Uicc_Len;
#endif /* Uicc_Len_CLASS */
#define UICC_MAX_RESULT                (0x100)    
#ifndef UICC_RESULT_INFO_CLASS
#define UICC_RESULT_INFO_CLASS
/*
 * Result Buffer
 * CCDGEN:WriteStruct_Count==1286
 */
typedef struct
{
  Uicc_Len                  len;                      /*<  0:  2> Uicc_Len,  Maximum length of expected data         */
  Uint16                    resultArrayCount;         /*<  2:  2> counter                                            */
  Uint8                     *resultArray;             /*<  4:  4> pointer codetransparent to Result byte             */
} Uicc_ResultInfo;
#endif /* UICC_RESULT_INFO_CLASS */

#define UICC_MAX_DATA_SIZE             (0xff)     
#ifndef UICC_DATA_INFO_CLASS
#define UICC_DATA_INFO_CLASS
/*
 * Data element info
 * CCDGEN:WriteStruct_Count==1288
 */
typedef struct
{
  Uint8                     __dummy0;                 /*<  0:  1> alignment                                          */
  Uint8                     __dummy1;                 /*<  1:  1> alignment                                          */
  Uint8                     __dummy2;                 /*<  2:  1> alignment                                          */
  Uint8                     dataArrayCount;           /*<  3:  1> counter                                            */
  Uint8                     *dataArray;               /*<  4:  4> pointer codetransparent to Data element            */
} Uicc_DataInfo;
#endif /* UICC_DATA_INFO_CLASS */


/*
 * typedef between var and valtab enums
 */
#ifndef UICC_CLA_CLASS
#define UICC_CLA_CLASS
typedef Uicc_ValCla Uicc_Cla;
#endif /* Uicc_Cla_CLASS */
#ifndef UICC_INS_CLASS
#define UICC_INS_CLASS
typedef Uicc_ValIns Uicc_Ins;
#endif /* Uicc_Ins_CLASS */
#ifndef UICC_CMD_HEADER_CLASS
#define UICC_CMD_HEADER_CLASS
/*
 * Transparent command header
 * CCDGEN:WriteStruct_Count==1290
 */
typedef struct
{
  Uicc_Cla                  cla;                      /*<  0:  1> Uicc_Cla,  Class Byte                              */
  Uicc_Ins                  ins;                      /*<  1:  1> Uicc_Ins,  instruction code                        */
  Uint8                     p1;                       /*<  2:  1> Parameter 1 of the SIM APDU                        */
  Uint8                     p2;                       /*<  3:  1> Parameter 2 of the SIM APDU                        */
} Uicc_CmdHeader;
#endif /* UICC_CMD_HEADER_CLASS */

#ifndef UICC_CONFIG_CHARACTERISTICS_CLASS
#define UICC_CONFIG_CHARACTERISTICS_CLASS
/*
 * Configuration Characteristics
 * CCDGEN:WriteStruct_Count==1292
 */
typedef struct
{
  Uint8                     uiccCharacteristics;      /*<  0:  1> UICC Characteristics                               */
  Uint8                     __dummy0;                 /*<  1:  1> alignment                                          */
  Uint8                     __dummy1;                 /*<  2:  1> alignment                                          */
  Uint8                     __dummy2;                 /*<  3:  1> alignment                                          */
} Uicc_ConfigCharacteristics;
#endif /* UICC_CONFIG_CHARACTERISTICS_CLASS */


/*
 * typedef between var and valtab enums
 */
#ifndef UICC_RESET_RETURN_VAL_CLASS
#define UICC_RESET_RETURN_VAL_CLASS
typedef Uicc_ValResetReturnVal Uicc_ResetReturnVal;
#endif /* Uicc_ResetReturnVal_CLASS */
#ifndef UICC_LEN_CLASS
#define UICC_LEN_CLASS
typedef Uicc_ValLen Uicc_Len;
#endif /* Uicc_Len_CLASS */
#ifndef UICC_SW_1_2_CLASS
#define UICC_SW_1_2_CLASS
typedef Uicc_ValSw1_2 Uicc_Sw1_2;
#endif /* Uicc_Sw1_2_CLASS */
#ifndef UICC_CLA_CLASS
#define UICC_CLA_CLASS
typedef Uicc_ValCla Uicc_Cla;
#endif /* Uicc_Cla_CLASS */
#ifndef UICC_INS_CLASS
#define UICC_INS_CLASS
typedef Uicc_ValIns Uicc_Ins;
#endif /* Uicc_Ins_CLASS */
#ifndef UICC_VOLTAGE_SELECT_CLASS
#define UICC_VOLTAGE_SELECT_CLASS
typedef Uicc_ValVoltageSelect Uicc_VoltageSelect;
#endif /* Uicc_VoltageSelect_CLASS */
#ifndef UICC_CONFIG_REQUESTED_CLASS
#define UICC_CONFIG_REQUESTED_CLASS
typedef Uicc_ValConfigRequested Uicc_ConfigRequested;
#endif /* Uicc_ConfigRequested_CLASS */
#ifndef UICC_READER_ID_CLASS
#define UICC_READER_ID_CLASS
typedef Uicc_ValReaderId Uicc_ReaderId;
#endif /* Uicc_ReaderId_CLASS */
#ifndef UICC_DUMMY_CLASS
#define UICC_DUMMY_CLASS
/*
 * 
 * CCDGEN:WriteStruct_Count==1294
 */
typedef struct
{
  Puf_PrimHdr primHdr;
  Uicc_AtrStringInfo        *atrStringInfoPtr;        /*<  0:  4> pointer to SIM Card Info                           */
  Uicc_ResetReturnVal       resetReturnVal;           /*<  4:  1> Uicc_ResetReturnVal,  Reset return value           */
  Uint8                     __dummy0;                 /*<  5:  1> alignment                                          */
  Uint8                     __dummy1;                 /*<  6:  1> alignment                                          */
  Uint8                     __dummy2;                 /*<  7:  1> alignment                                          */
  Uicc_ResultInfo           *resultInfoPtr;           /*<  8:  4> pointer to Result Buffer                           */
  Uicc_Len                  len;                      /*< 12:  2> Uicc_Len,  Maximum length of expected data         */
  Uint8                     __dummy3;                 /*< 14:  1> alignment                                          */
  Uint8                     __dummy4;                 /*< 15:  1> alignment                                          */
  Uicc_DataInfo             *dataInfoPtr;             /*< 16:  4> pointer to Data element info                       */
  Uicc_Sw1_2                sw1_2;                    /*< 20:  2> Uicc_Sw1_2,  Status Words                          */
  Uicc_Cla                  cla;                      /*< 22:  1> Uicc_Cla,  Class Byte                              */
  Uicc_Ins                  ins;                      /*< 23:  1> Uicc_Ins,  instruction code                        */
  Uicc_CmdHeader            cmdHeader;                /*< 24:  4> Transparent command header                         */
  Uicc_VoltageSelect        voltageSelect;            /*< 28:  1> Uicc_VoltageSelect,  Perform Voltage Selection     */
  Uint8                     p1;                       /*< 29:  1> Parameter 1 of the SIM APDU                        */
  Uint8                     p2;                       /*< 30:  1> Parameter 2 of the SIM APDU                        */
  Uicc_ConfigRequested      configRequested;          /*< 31:  1> Uicc_ConfigRequested,  Configuration Characteristics requested */
  Uicc_ConfigCharacteristics *configCharacteristicsPtr; /*< 32:  4> pointer to Configuration Characteristics           */
  Uicc_ReaderId             readerId;                 /*< 36:  1> Uicc_ReaderId,  Reader Id                          */
  Uint8                     uiccCharacteristics;      /*< 37:  1> UICC Characteristics                               */
  Uint8                     __dummy5;                 /*< 38:  1> alignment                                          */
  Uint8                     __dummy6;                 /*< 39:  1> alignment                                          */
} Uicc_Dummy;

#define UICC_DUMMY_SIZE() \
( \
  sizeof(Uicc_Dummy) \
)
#endif /* UICC_DUMMY_CLASS */

#define UICC_MIN_RESULT                (0x1)      
#define UICC_MIN_DATA_SIZE             (0x1)      
#define UICC_MAX_READERS               (0x2)      

#include "pub_L1_misc_leave.h"


#endif