blob: b98ff5975a55422dab166a805001d1f5f2d48ec4 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001
2/*****************************************************************************
3* Copyright Statement:
4* --------------------
5* This software is protected by Copyright and the information contained
6* herein is confidential. The software may not be copied and the information
7* contained herein may not be used or disclosed except with the written
8* permission of MediaTek Inc. (C) 2016
9*
10* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
11* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
12* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
13* AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
14* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
15* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
16* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
17* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
18* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
19* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
20* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
21* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
22*
23* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
24* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
25* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
26* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
27* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
28*
29* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
30* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
31* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
32* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
33* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
34*
35*****************************************************************************/
36/*************************************************************
37*
38* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
39*
40* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
41*
42* Copyright (c) 2002-2010 VIA Telecom, Inc. All rights reserved.
43*
44*************************************************************/
45#ifndef UIMAPI_H
46#define UIMAPI_H
47/*****************************************************************************
48
49 FILE NAME: uimapi.h
50
51 DESCRIPTION:
52
53 This file contains all constants and typedefs needed to interface
54 with the UIM unit via the Exe mail service routines.
55
56
57*****************************************************************************/
58
59#include "kal_public_defs.h"
60#include "kal_public_api.h"
61#include "sbp_public_utility.h"
62
63#include "sysapi.h"
64#include "pswnam.h"
65#include "pswcustom.h"
66#include "uim_nvram.h"
67
68#include "uim_msgid.h"
69#include "sim_ps_struct_public.h"
70#include "sim_ps_msgid.h"
71#include "sim_public_enum_public.h"
72
73#include "c2k_irat_msg_struct.h"
74
75/*------------------------------------------------------------------------
76 * Define constants
77 *------------------------------------------------------------------------*/
78#define C2K_MOD_UIM_PROXY MOD_UIM_PROXY
79
80#define SW_OK 0x9000
81
82#define MAX_NUM_OF_GID 20
83#define C2K_HRPD_NAI_LEN 72
84
85#define MAX_SUPPORT_SIM_TOTAL SUPPORT_SIM_TOTAL
86
87#define UTK_TIMER_MANAGER_NUM 8
88
89/* 5 bytes header: CLA, INS, P1, P2, Lc */
90#define CUIM_APDU_REQ_HDR_LEN 5
91/* 261 - 5 = 256 */
92#define CUIM_APDU_REQ_BODY_MAX_LEN APDU_REQ_MAX_LEN - CUIM_APDU_REQ_HDR_LEN
93/* 258 - 2 bytes status word SW1 and SW2 = 256 */
94#define CUIM_APDU_RSP_MAX_LEN APDU_RSP_MAX_LEN - 2
95
96#ifdef MTK_DEV_C2K_IRAT
97#define UICC_ATR_MAX_LEN 40
98#define UICC_BASIC_LCH 0 /* Basic Logical Channel */
99#define UICC_AID_MAX_LEN 16
100#define UICC_APP_LABEL_LEN 32
101#endif
102
103#ifdef MTK_CBP
104#define MAXALPHALENGTH 40
105#else
106#define MAXALPHALENGTH 21
107#endif
108#define MAXSMSMSGLENGTH 253
109
110#define UIM_PARAM_P_LEN 64
111#define UIM_PARAM_G_LEN 20
112#define UIM_MAX_BS_RESULT_LEN 64
113#define UIM_MAX_PARAM_SIZE 200
114#define UIM_MAX_OTA_DATA_BURST_SIZE 255
115#define UIM_MAX_EF_NUM 6
116
117#define UIM_SIM_SC_ADDRESS_LENGTH 0x0a
118#define UIM_SIM_STATUS_OK 0
119#define UIM_SIM_STATUS_NO_SIM 1
120#define UIM_SIM_STATUS_NO_PIN 2
121#define MAX_NUMBER_BCD_LEN 10
122
123#ifdef MTK_CBP
124#define MAX_EFPL_SIZE 8 * 2 /* Each language indicator takes 2 bytes, 8 languages should be supported at maximum according to spec C.R1001 */
125#define MAX_NUMBER_FDN_BCD_LEN 20
126#define UIM_EXT2_REC_ADD_DATA_TYPE 0x2
127#define UIM_EXT2_REC_CALL_PARTY_SUBADD_TYPE 0x1
128#define UIM_EXT2_REC_FREE_TYPE 0x0
129
130#define UIM_ECC_NUMBER_BCD_LEN 3
131#define MAX_ECC_LIST 10
132#endif
133#define C2K_EF_SF_EUIMID_SIZE 7
134
135#define SESSIONID_LSH(id) (id << 5) // the LSB 5 bits are DFIndex, and the MSB 3 bits are SessionID
136#define SESSIONID_RSH(id) (id >> 5)
137#define DFINDEX(idx) (idx & 0x1f)
138
139/* UTK Command Tag Definitions */
140#define UTK_COMMAND_DETAILS_TAG 0X81
141#define UTK_DEVICE_IDENT_TAG 0X02
142#define UTK_RESULT_TAG 0X83
143#define UTK_DURATION_TAG 0X04
144#define UTK_ALPHA_IDENT_TAG 0X05
145#define UTK_ADDRESS_TAG 0X06
146#define UTK_CAPA_CONF_PARA_TAG 0X07
147#define UTK_SUB_ADDRESS_TAG 0x08
148#define UTK_CDMA_SMS_TPDU_TAG 0X48
149#define UTK_TEXT_STR_TAG 0X0D
150#define UTK_TONE_TAG 0X0E
151#define UTK_ITEM_TAG 0X0F
152#define UTK_ITEM_IDENT_TAG 0X10
153#define UTK_RESP_LENGTH_TAG 0X11
154#define UTK_FILE_LIST_TAG 0X12
155#define UTK_LOCATION_INFO_TAG 0X13
156#define UTK_IMEI_TAG 0X14
157#define UTK_HELP_REQUEST_TAG 0X15
158#define UTK_NET_MEASU_RESULT_TAG 0X16
159#define UTK_DEFAULT_TEXT_TAG 0X17
160#define UTK_ITEM_NEXT_ACT_INDIC_TAG 0X18
161#define UTK_EVENT_LIST_TAG 0X19
162#define UTK_LOCATION_STATUS_TAG 0x1B
163#define UTK_ICON_IDENT_TAG 0X1E
164#define UTK_ITEM_ICON_IDENT_LIST 0X1F
165#define UTK_TIMER_ID_TAG 0X24
166#define UTK_TIMER_VALUE_TAG 0X25
167#define UTK_IMMEDIATE_RESP_TAG 0X2B
168#define UTK_LANGUAGE_TAG 0X2D
169#define UTK_DATE_TIME_TAG 0X26
170#if defined (__TC10__) && defined (__TC10_IPC_CDMA_SUPPORT__)
171#define UTK_BC_REPEAT_INDICATOR_TAG 0X2A
172#endif
173#define UTK_DTMF_STRING_TAG 0X2C
174#define UTK_AID_TAG 0x2F
175#define UTK_ACCESS_TECHNOLOGY_TAG 0X3F
176
177/*command code*/
178#define UTK_SET_UP_MENU_CMD 0x25
179#define UTK_SET_UP_CALL_CMD 0x10
180#define UTK_SET_UP_SEND_SS 0x11
181#define UTK_SET_UP_SEND_USSD 0x12
182
183#define UTK_REFRESH_CMD 0x01
184#define UTK_MORE_TIME_CMD 0x02
185#define UTK_CDMA_SEND_SMS_CMD 0x13
186#define UTK_SEND_DTMF_CMD 0x14
187#define UTK_GEOGRAPHICAL_LOCATION_REQUEST 0x16
188
189#define UTK_CAUSE_TAG 0x1A
190#define UTK_TRANSACTION_IDENTIFIER_TAG 0x1C
191#define UTK_PLAY_TONE_CMD 0x20
192#define UTK_DISPLAY_TEXT_CMD 0x21
193#define UTK_GET_INPUT_CMD 0x23
194#define UTK_SELECT_ITEM_CMD 0X24
195#define UTK_POLL_INTERVAL_CMD 0x03
196#define UTK_POLLING_OFF_CMD 0x04
197#define UTK_SETUP_EVENT_LIST 0x05
198#define UTK_SESSION_END_CMD 0x81
199#define UTK_PROVIDE_LOCAL_INFORMATION_CMD 0x26
200#define UTK_TIMER_MANAGER_CMD 0x27
201#define UTK_GET_INKEY_CMD 0x22
202
203#define UTK_PERFORM_CARD_APDU 0x30
204#define UTK_POWER_ON_CARD 0x31
205#define UTK_POWER_OFF_CARD 0x32
206#define UTK_GET_READER_STATUS 0x33
207#define UTK_RUN_AT_COMMAND 0x34
208#define UTK_SERVICE_SEARCH 0x45
209#define UTK_GET_SERVICE_INFO 0x46
210#define UTK_DECLARE_SERVICE 0x47
211#define UTK_SET_FRAMES 0x50
212#define UTK_GET_GRAMES_STATUS 0x51
213#define UTK_RETRIEVE_MULTIMEDIA_MSG 0x60
214#define UTK_SUBIT_MULTIMEDIA_MSG 0x61
215#define UTK_DISPLAY_MULTIMEDIA_MSG 0x62
216#define UTK_ACTIVATE 0x70
217#define UTK_CONTACTLESS_STATE_CHANGED 0x71
218#define UTK_COMMAND_CONTAINER 0x72
219#define UTK_ENCAPSULATED_SESSION_CONTROL 0x73
220
221#define UTK_ESN_TAG 0x46
222#define UTK_MEID_TAG 0x6D
223
224#ifdef __CARRIER_RESTRICTION__
225#define UIM_EF_SPN_LENGTH 35
226#endif
227
228#define UIM_CMD_MSG_CLASS 0x0000
229#define UIM_NAM_MSG_CLASS 0x0100
230#define UIM_APP_MSG_CLASS 0x0200
231#define UIM_MNG_MSG_CLASS 0x0300
232
233#define CARD_FAST_RECOVERY_COUNT 3
234
235typedef enum
236{
237 VAL_UIM_CMD_RST_OK = 0x00, /*Command performed successfully*/
238 VAL_UIM_CMD_RST_OK_ICON_NOT_DISPLAYED = 0x4, /* command performed successfully,but request icon could not be displayed */
239 VAL_UIM_CMD_RST_REFRESH_PERFORM_BUT_NAA_NOT_ACTIVE = 0X08,
240 VAL_UIM_CMD_RST_NO_RESP_FROM_USER = 0x12, /*No response from user*/
241 VAL_UIM_CMD_RST_ME_UNABLE = 0x20, /*terminal currently unable to process command*/
242 VAL_UIM_CMD_RST_NET_UNABLE, /*Network currently unable to process command*/
243 VAL_UIM_CMD_RST_USER_NOT_ACCEPT, /*User did not accept the proactive command*/
244 VAL_UIM_CMD_RST_USER_CLEAR_CALL, /*User cleared down call before connection or network release*/
245 VAL_UIM_CMD_RST_CMD_BYD_CAP = 0x30, /*Command beyond terminal's capabilities*/
246 VAL_UIM_CMD_RST_CMD_TYPE_NOT_UND, /*Command type not understood by terminal*/
247 VAL_UIM_CMD_RST_CMD_DATA_NOT_UND, /*Command data not understood by terminal*/
248 VAL_UIM_CMD_RST_CMD_NUM_UNK, /*Command number not known by terminal*/
249 VAL_UIM_CMD_RST_REQ_VAL_MISS = 0x36, /*Error, required values are missing*/
250}ValUimCmdGenRstT;
251
252typedef enum
253{
254 VAL_UIM_CMD_ADD_INF_NO_CAUSE = 0x00, /*No specific cause can be given*/
255 VAL_UIM_CMD_ADD_INF_SCR_BUSY, /*Screen is busy*/
256 VAL_UIM_CMD_ADD_INF_BUSY_CALL, /*terminal currently busy on call*/
257 VAL_UIM_CMD_ADD_INF_NO_SERVICE = 0x04, /*No service*/
258 VAL_UIM_CMD_ADD_INF_ACC_CLASS_BAR = 0x05, /*Access control class bar*/
259 VAL_UIM_CMD_ADD_INF_RADIO_RES_NOT_GRANT=0x06,/*Radio resource not granted*/
260 VAL_UIM_CMD_ADD_INF_NOT_SPEECH_CALL, /*Not in speech call*/
261} ValUimCmdAddInfoT;
262
263#define C2K_UTK_FILE_NUM_MAX 50
264
265/*----------------------------------------------------------------------------
266 BER-TLV Tags
267----------------------------------------------------------------------------*/
268
269typedef enum
270{
271 VAL_UTK_REF_CMD_QUAL_UIM_INIT_FULL_FILE_CHANGE = 0,
272 VAL_UTK_REF_CMD_QUAL_UIM_FILE_CHANGE = 1,
273 VAL_UTK_REF_CMD_QUAL_UIM_INIT_FILE_CHANGE = 2,
274 VAL_UTK_REF_CMD_QUAL_UIM_INIT = 3,
275 VAL_UTK_REF_CMD_QUAL_UIM_RESET = 4,
276 VAL_UTK_REF_CMD_QUAL_UIM_APP_RESET = 5,
277 VAL_UTK_REF_CMD_QUAL_UIM_SESSION_RESET = 6,
278 VAL_UTK_REF_CMD_QUAL_STEERING_ROAMING = 7,
279 VAL_UTK_REF_CMD_QUAL_STEERING_ROAMING_FOR_I_WLAN = 8
280
281}ValUtkRefreshCmdQualT;
282
283typedef enum
284{
285 UTK_PROACTIVE_COMMAND_TAG = 0xD0,
286 UTK_CDMA_SMSPP_DOWNLOAD_TAG = 0xD1,
287 UTK_MENU_SELECTION_TAG = 0xD3,
288 UTK_CALL_CONTROL_TAG = 0xD4,
289 UTK_EVENT_DOWNLOAD_TAG = 0xD6,
290 UTK_TIMER_EXPIR_TAG = 0xD7
291}UtkBerTlvT;
292
293/*----------------------------------------------------------------------------
294 Device Identities
295----------------------------------------------------------------------------*/
296typedef enum
297{
298 UTK_KEYPAD = 0x01,
299 UTK_DISPLAY = 0x02,
300 UTK_EARPIECE = 0x03,
301 UTK_RUIM = 0x81,
302 UTK_TERMINAL = 0x82,
303 UTK_NETWORK = 0x83
304}UtkDeviceT;
305
306typedef enum
307{
308 UIM_MF = 0,
309 UIM_DF_CDMA,
310 UIM_DF_TELECOM,
311 UIM_DF_GSM,
312 UIM_DF_PHS,
313 UIM_DF_CURRENTDF,
314 UIM_DF_CSIM = 7,
315 UIM_DF_USIM,
316 UIM_DF_ISIM,
317/*child DF*/
318 UIM_DF_GLOBALPHB, /*,global phb,7f10/0x5F3A*/
319 UIM_DF_CSIMPHB,/*app phb ,CSIM/0x5F3A*/
320 UIM_DF_USIMPHB,/*app phb ,USIM/0x5F3A*/
321 UIM_DF_GSM_ACCESS, /*0x5F3B*/
322 UIM_DF_MAX_NUM
323} UimDFIndexT;
324
325
326/* UIM APP ID is used to diffirentiate each APP. Either CSIM or RUIM is active for MD3 */
327typedef enum
328{
329 CARD_APP_ID_ISIM,
330 CARD_APP_ID_USIM,
331 CARD_APP_ID_CSIM,
332 CARD_APP_ID_SIM,
333 CARD_APP_ID_RUIM,
334 CARD_APP_ID_MAX_NUM,
335 CARD_APP_INVALID = 0xff
336} UimCardAppIdT;
337
338/*------------------------------------------------------------------------
339* Define UIM message interface constants and structures
340*------------------------------------------------------------------------*/
341#define UIM_MAX_NAI_NUM 16
342
343typedef enum
344{
345 UIM_BOOT_UP_NORMAL = 0,
346 UIM_BOOT_UP_EXCEPTION,
347 UIM_BOOT_UP_NUM
348} UimBootUpModeE;
349
350typedef enum
351{
352 /* 3f00 */
353 C2K_EF_ICCID_IDX,
354 C2K_EF_PL_IDX,
355 C2K_EF_DIR_IDX,
356
357 /* 7F20 for gsm file */
358 C2K_EF_GSM_IMSI_IDX,
359 C2K_EF_GSM_ECC_IDX,
360
361 /* 7F10 for TELECOM file */
362 C2K_T_EF_ADN_IDX,
363 C2K_T_EF_FDN_IDX,
364 C2K_T_EF_CCP_IDX,
365 C2K_T_EF_ECCP_IDX,
366 C2K_T_EF_MSISDN_IDX,
367 C2K_T_EF_SMSP_IDX,
368 C2K_T_EF_SMSS_IDX,
369 C2K_T_EF_LND_IDX,
370 C2K_T_EF_SMSR_IDX,
371 C2K_T_EF_SDN_IDX,
372 C2K_T_EF_EXT_1_IDX,
373 C2K_T_EF_EXT_2_IDX,
374 C2K_T_EF_EXT_3_IDX,
375 C2K_T_EF_BDN_IDX,
376 C2K_T_EF_EXT_4_IDX,
377 C2K_T_EF_PSC_IDX,
378 C2K_T_EF_CC_IDX,
379 C2K_T_EF_PUID_IDX,
380 C2K_T_EF_PBR_IDX,
381
382 /* 7F25 for uim file */
383 C2K_U_EF_ECC_IDX,
384 C2K_U_EF_SPN_IDX,
385 C2K_U_EF_EPRL_IDX,
386 C2K_U_EF_PRL_IDX,
387 C2K_U_EF_OTA_IDX,
388 C2K_U_EF_MECRP_IDX,
389
390 C2K_U_EF_AD_IDX,
391 C2K_U_EF_UIM_ID_IDX,
392 C2K_U_EF_COUNT_IDX,
393 C2K_U_EF_IMSI_M_IDX,
394 C2K_U_EF_IMSI_T_IDX,
395 C2K_U_EF_CDMA_HOME_IDX,
396 C2K_U_EF_ACCOLC_IDX,
397 C2K_U_EF_TERM_IDX,
398 C2K_U_EF_SSCI_IDX,
399 C2K_U_EF_OTAPASPC_IDX,
400 C2K_U_EF_NAMLOCK_IDX,
401 C2K_U_EF_MDN_IDX,
402 C2K_U_EF_CST_IDX,
403 C2K_U_EF_USGIND_IDX,
404 C2K_U_EF_SFEUIMID_IDX,
405 C2K_U_EF_SPCS_IDX,
406 C2K_U_EF_MEID_IDX,
407
408 C2K_U_EF_TMSI_IDX,
409 C2K_U_EF_ZNREGI_IDX,
410 C2K_U_EF_SNREGI_IDX,
411 C2K_U_EF_DISREGI_IDX,
412 C2K_U_EF_SP_IDX,
413 C2K_U_EF_REVISION_IDX,
414 C2K_U_EF_RUIM_PL_IDX,
415 C2K_U_EF_SMS_IDX,
416 C2K_U_EF_SMSP_IDX,
417 C2K_U_EF_SMSS_IDX,
418 C2K_U_EF_SSFC_IDX,
419 C2K_U_EF_MAXPRL_IDX,
420 C2K_U_EF_ME3GPDOPC_IDX,
421 C2K_U_EF_3GPDOPM_IDX,
422 C2K_U_EF_SIPCAP_IDX,
423 C2K_U_EF_MIPCAP_IDX,
424 C2K_U_EF_SIPUPP_IDX,
425 C2K_U_EF_MIPUPP_IDX,
426 C2K_U_EF_SIPSP_IDX,
427 C2K_U_EF_MIPSP_IDX,
428 C2K_U_EF_SIPPAPSS_IDX,
429 C2K_U_EF_PUZL_IDX,
430 C2K_U_EF_MAXPUZL_IDX,
431 C2K_U_EF_HRPDCAP_IDX,
432 C2K_U_EF_HRPDUPP_IDX,
433 C2K_U_EF_CSSPR_IDX,
434 C2K_U_EF_ATC_IDX,
435 C2K_U_EF_BCSMSCFG_IDX,
436 C2K_U_EF_BCSMSPREF_IDX,
437 C2K_U_EF_BCSMSTABLE_IDX,
438 C2K_U_EF_BCSMSP_IDX,
439 C2K_U_EF_DCK_IDX,
440 C2K_U_EF_GID_1_IDX,
441 C2K_U_EF_GID_2_IDX,
442 C2K_U_EF_CDMACNL_IDX,
443 C2K_U_EF_HOMETAG_IDX,
444 C2K_U_EF_GROUPTAG_IDX,
445 C2K_U_EF_MODEL_IDX,
446 C2K_U_EF_SMSCAP_IDX,
447 C2K_U_EF_IPV6CAP_IDX,
448 C2K_U_EF_MIPFLAGS_IDX,
449 C2K_U_EF_TCPCFG_IDX,
450 C2K_U_EF_DATAGENCFG_IDX,
451 C2K_U_EF_3GPDUPPEXT_IDX,
452
453 /* 7FFF for csim file */
454 C2K_C_EF_ECC_IDX,
455 C2K_C_EF_SPN_IDX,
456 C2K_C_EF_EPRL_IDX,
457 C2K_C_EF_PRL_IDX,
458 C2K_C_EF_OTA_IDX,
459 C2K_C_EF_MECRP_IDX,
460
461 C2K_C_EF_AD_IDX,
462 C2K_C_EF_UIM_ID_IDX,
463 C2K_C_EF_COUNT_IDX,
464 C2K_C_EF_IMSI_M_IDX,
465 C2K_C_EF_IMSI_T_IDX,
466 C2K_C_EF_CDMA_HOME_IDX,
467 C2K_C_EF_ACCOLC_IDX,
468 C2K_C_EF_TERM_IDX,
469 C2K_C_EF_SSCI_IDX,
470 C2K_C_EF_OTAPASPC_IDX,
471 C2K_C_EF_NAMLOCK_IDX,
472 C2K_C_EF_MDN_IDX,
473 C2K_C_EF_CST_IDX,
474 C2K_C_EF_USGIND_IDX,
475 C2K_C_EF_SFEUIMID_IDX,
476 C2K_C_EF_SPCS_IDX,
477 C2K_C_EF_EST_IDX,
478 C2K_C_EF_MEID_IDX,
479
480 C2K_C_EF_TMSI_IDX,
481 C2K_C_EF_ZNREGI_IDX,
482 C2K_C_EF_SNREGI_IDX,
483 C2K_C_EF_DISREGI_IDX,
484 C2K_C_EF_SP_IDX,
485 C2K_C_EF_LI_IDX,
486 C2K_C_EF_FDN_IDX,
487 C2K_C_EF_SMS_IDX,
488 C2K_C_EF_SMSP_IDX,
489 C2K_C_EF_SMSS_IDX,
490 C2K_C_EF_SSFC_IDX,
491 C2K_C_EF_MAXPRL_IDX,
492 C2K_C_EF_ME3GPDOPC_IDX,
493 C2K_C_EF_3GPDOPM_IDX,
494 C2K_C_EF_SIPCAP_IDX,
495 C2K_C_EF_MIPCAP_IDX,
496 C2K_C_EF_SIPUPP_IDX,
497 C2K_C_EF_MIPUPP_IDX,
498 C2K_C_EF_SIPSP_IDX,
499 C2K_C_EF_MIPSP_IDX,
500 C2K_C_EF_SIPPAPSS_IDX,
501 C2K_C_EF_PUZL_IDX,
502 C2K_C_EF_MAXPUZL_IDX,
503 C2K_C_EF_HRPDCAP_IDX,
504 C2K_C_EF_HRPDUPP_IDX,
505 C2K_C_EF_CSSPR_IDX,
506 C2K_C_EF_ATC_IDX,
507 C2K_C_EF_BCSMSCFG_IDX,
508 C2K_C_EF_BCSMSPREF_IDX,
509 C2K_C_EF_BCSMSTABLE_IDX,
510 C2K_C_EF_BCSMSP_IDX,
511 C2K_C_EF_DCK_IDX,
512 C2K_C_EF_GID_1_IDX,
513 C2K_C_EF_GID_2_IDX,
514 C2K_C_EF_CDMACNL_IDX,
515 C2K_C_EF_HOMETAG_IDX,
516 C2K_C_EF_GROUPTAG_IDX,
517 C2K_C_EF_SDN_IDX,
518 C2K_C_EF_EXT_2_IDX,
519 C2K_C_EF_EXT_3_IDX,
520 C2K_C_EF_ICI_IDX,
521 C2K_C_EF_OCI_IDX,
522 C2K_C_EF_EXT_5_IDX,
523 C2K_C_EF_CCP_2_IDX,
524 C2K_C_EF_MODEL_IDX,
525 C2K_C_EF_SMSCAP_IDX,
526 C2K_C_EF_MIPFLAGS_IDX,
527 C2K_C_EF_3GPDUPPEXT_IDX,
528 C2K_C_EF_IPV6CAP_IDX,
529 C2K_C_EF_TCPCFG_IDX,
530 C2K_C_EF_DATAGENCFG_IDX,
531 C2K_C_EF_PSC_IDX,
532 C2K_C_EF_CC_IDX,
533 C2K_C_EF_PUID_IDX,
534 C2K_C_EF_PBR_IDX,
535 C2K_C_EF_ADN_IDX,
536 C2K_EF_MAX_NUM
537}cuim_file_idx_enum;
538
539typedef enum
540{
541 C2K_C_EF_AD_SFI_ID = 1,
542 C2K_C_EF_CST_SFI_ID,
543 C2K_C_EF_ACCOLC_SFI_ID,
544 C2K_C_EF_IMSI_M_SFI_ID,
545 C2K_C_EF_IMSI_T_SFI_ID,
546 C2K_C_EF_TMSI_SFI_ID,
547 C2K_C_EF_PRL_SFI_ID,
548 C2K_C_EF_SPN_SFI_ID,
549 C2K_C_EF_ECC_SFI_ID,
550 C2K_C_EF_LI_SFI_ID,
551 C2K_C_EF_3GCIK_SFI_ID,
552 C2K_C_EF_CDMA_HOME_SFI_ID,
553 C2K_C_EF_SNREGI_SFI_ID,
554 C2K_C_EF_EPRL_SFI_ID,
555 C2K_C_EF_EST_SFI_ID,
556 C2K_C_EF_ICI_SFI_ID,
557 C2K_C_EF_OCI_SFI_ID,
558 C2K_C_EF_CCP2_SFI_ID
559}cuim_file_sfi_id_enum;
560
561typedef struct
562{
563 kal_uint8 EccNum[UIM_ECC_NUMBER_BCD_LEN];/* ecc number value, encode with BCD format according to C.S0065 */
564}UimEccContactT;
565
566typedef struct
567{
568 kal_uint8 file_num;
569 cuim_file_idx_enum file_list[C2K_UTK_FILE_NUM_MAX];
570 kal_bool phb_file_existed;
571}uimFileListStruct;
572
573typedef enum
574{
575 UIM_UTK_FULL_FILE_CHANGED,
576 UIM_UTK_INIT_WITH_FILE_CHANGED,
577 UIM_UTK_FILE_CHANGED_ONLY
578}uimUtkFileChangeTypeT;
579
580typedef struct
581{
582 uimUtkFileChangeTypeT file_change;
583 kal_uint8 file_num;
584 kal_uint16 file_id[C2K_UTK_FILE_NUM_MAX];
585}uimUtkFileChangedIndMsgT;
586
587typedef struct
588{
589 kal_bool call_connected;
590}uimCallStatusMsgT;
591
592typedef struct
593{
594 kal_bool ims_registered;
595}uimImsRegisterStatusMsgT;
596
597/* Define UIM Rsp MSG information which will be used for UIM Response message */
598typedef struct
599{
600 module_type DestModId;
601 kal_uint32 MsgId;
602 kal_uint8 ChanId;
603} UimRspInfoT;
604
605/* Define UIM msg header format */
606typedef struct
607{
608 UimRspInfoT UimRspInfo;
609} UimMsgHeaderT;
610
611/* Define UIM msg response for UIM_CMD_MSG_CLASS format */
612typedef struct
613{
614 kal_uint32 MsgId;
615 module_type DestModId;
616 kal_uint8 ChanId;
617 kal_bool is_cdma_only_card;/* used only for UTK proactive command */
618 kal_uint8 uim_index; /* used only for UTK proactive command */
619 kal_uint16 cmd_id; /* used only for UTK proactive command */
620 kal_uint16 Sw; /* status word, 0x9000 denotes ACK, 0x0000 denotes FAULT, other value see GSM11.11 */
621 kal_uint16 Len;
622 kal_uint8 Data[CUIM_APDU_RSP_MAX_LEN];
623} UimRspMsgT;
624
625/* Define UIM raw cmd msg command */
626typedef struct
627{
628 kal_uint16 Sw; /* status word, 0x9000 denotes ACK, 0x0000 denotes FAULT, other value see GSM11.11 */
629 kal_uint8 CaveSeqId;
630 kal_uint16 CaveMsgId;
631 kal_uint16 Len;
632 kal_uint8 Data[CUIM_APDU_RSP_MAX_LEN];
633} UimRspToPsMsgT;
634
635/* Define UIM raw cmd msg command */
636typedef struct
637{
638 UimRspInfoT UimRspInfo;
639 kal_uint8 Cmd[5];
640 kal_uint16 Len;
641 kal_uint8 Data[CUIM_APDU_REQ_BODY_MAX_LEN];
642} UimRawCmdMsgT;
643
644typedef struct
645{
646 UimRspInfoT UimRspInfo;
647 kal_uint16 Len;
648 kal_uint8* Data;
649} UimExtendedRawCmdMsgT;
650
651/* Define UIM select msg command */
652typedef struct
653{
654 UimRspInfoT UimRspInfo;
655 kal_bool IsFullPath; //Whether full path from MF
656 kal_uint16 EfId; //Used when IsFullPath = False
657 UimDFIndexT DfIndex; //Used when IsFullPath = False
658 kal_uint8 FullPathLen; //Used when IsFullPath = True
659 kal_uint8 FullPath[8]; //Used when IsFullPath = True
660} UimSelectMsgT;
661/* Define UIM status msg command */
662typedef struct
663{
664 UimRspInfoT UimRspInfo;
665} UimStatusMsgT;
666
667/* Define UIM read record msg command */
668typedef struct
669{
670 UimRspInfoT UimRspInfo;
671 kal_bool IsFullPath; //Whether full path from MF
672 kal_uint16 EfId; //Used when IsFullPath = False
673 UimDFIndexT DfIndex; //Used when IsFullPath = False
674 kal_uint8 FullPathLen; //Used when IsFullPath = True
675 kal_uint8 FullPath[8]; //Used when IsFullPath = True
676 kal_uint8 RecordIndex;
677} UimReadRecordMsgT;
678
679/* Define UIM update record msg command */
680typedef struct
681{
682 UimRspInfoT UimRspInfo;
683 kal_bool IsFullPath; //Whether full path from MF
684 kal_uint16 EfId; //Used when IsFullPath = False
685 UimDFIndexT DfIndex; //Used when IsFullPath = False
686 kal_uint8 FullPathLen; //Used when IsFullPath = True
687 kal_uint8 FullPath[8]; //Used when IsFullPath = True
688 kal_uint8 RecordIndex;
689 kal_uint8 Len;
690 kal_uint8 Data[CUIM_APDU_REQ_BODY_MAX_LEN];
691} UimUpdateRecordMsgT;
692
693/* Define UIM search record msg command */
694typedef struct
695{
696 UimRspInfoT UimRspInfo;
697 kal_bool IsFullPath; //Whether full path from MF
698 kal_uint16 EfId; //Used when IsFullPath = False
699 UimDFIndexT DfIndex; //Used when IsFullPath = False
700 kal_uint8 FullPathLen; //Used when IsFullPath = True
701 kal_uint8 FullPath[8]; //Used when IsFullPath = True
702 kal_uint8 RecordIndex;
703 kal_uint8 Mode;
704 kal_uint8 Len;
705 kal_uint8 Data[CUIM_APDU_REQ_BODY_MAX_LEN];
706} UimSearchRecordMsgT;
707
708/* Define UIM read binary msg command */
709typedef struct
710{
711 UimRspInfoT UimRspInfo;
712 kal_bool IsFullPath; //Whether full path from MF
713 kal_uint16 EfId; //Used when IsFullPath = False
714 UimDFIndexT DfIndex; //Used when IsFullPath = False
715 kal_uint8 FullPathLen; //Used when IsFullPath = True
716 kal_uint8 FullPath[8]; //Used when IsFullPath = True
717 kal_uint16 Offset;
718 kal_uint8 Len;
719} UimReadBinaryMsgT;
720
721/* Define UIM update binary msg command */
722typedef struct
723{
724 UimRspInfoT UimRspInfo;
725 kal_bool IsFullPath; //Whether full path from MF
726 kal_uint16 EfId; //Used when IsFullPath = False
727 UimDFIndexT DfIndex; //Used when IsFullPath = False
728 kal_uint8 FullPathLen; //Used when IsFullPath = True
729 kal_uint8 FullPath[8]; //Used when IsFullPath = True
730 kal_uint16 Offset;
731 kal_uint8 Len;
732 kal_uint8 Data[CUIM_APDU_REQ_BODY_MAX_LEN];
733} UimUpdateBinaryMsgT;
734
735/************************************
736 CHV command message definition
737 ************************************/
738/* verify CHV msg */
739typedef struct
740{
741 UimRspInfoT UimRspInfo;
742 kal_uint8 ChvId; /* Specify the CHV */
743 kal_uint8 ChvLen;
744 kal_uint8 ChvVal[8]; /* CHV value */
745} UimVerifyCHVMsgT;
746
747/* change CHV msg */
748typedef struct
749{
750 UimRspInfoT UimRspInfo;
751 kal_uint8 ChvId; /* Specify the CHV */
752 kal_uint8 OldChvLen;
753 kal_uint8 OldChvVal[8]; /* Old CHV value */
754 kal_uint8 NewChvLen;
755 kal_uint8 NewChvVal[8]; /* New CHV value */
756} UimChangeCHVMsgT;
757
758/* Disable CHV Msg */
759typedef struct
760{
761 UimRspInfoT UimRspInfo;
762 kal_uint8 ChvLen;
763 kal_uint8 Chv1Val[8]; /* CHV1 value */
764} UimDisableCHVMsgT;
765
766/* Enable CHV Msg*/
767typedef struct
768{
769 UimRspInfoT UimRspInfo;
770 kal_uint8 ChvLen;
771 kal_uint8 Chv1Val[8]; /* CHV1 value */
772} UimEnableCHVMsgT;
773
774/* Unblock CHV Msg */
775typedef struct
776{
777 UimRspInfoT UimRspInfo;
778 kal_uint8 ChvId; /* Specify the CHV */
779 kal_uint8 UblkChvLen;
780 kal_uint8 UblkChvVal[8]; /* Unblock CHV value */
781 kal_uint8 NewChvLen;
782 kal_uint8 NewChvVal[8]; /* New CHV value */
783} UimUnblockCHVMsgT;
784
785/***********************************************
786 UTK Commands
787************************************************/
788/* UIM Terminal Profile command */
789typedef struct
790{
791 UimRspInfoT UimRspInfo;
792 kal_uint8 Profile[TERM_PROFILE_LEN]; /* The list of UIM Application Toolkit
793 facilities that are supported by the ME */
794} UimTermProfileMsgT;
795
796/* Define UIM Terminal Response command */
797typedef struct
798{
799 UimRspInfoT UimRspInfo;
800 kal_uint8 Len; /* Length of response data */
801 kal_uint8 Data[CUIM_APDU_REQ_BODY_MAX_LEN]; /* Response data */
802 kal_uint16 CmdId;
803} UimTermRspMsgT;
804
805/* Define UIM Envelope command */
806typedef struct
807{
808 UimRspInfoT UimRspInfo;
809 kal_uint8 Len; /* Length of envelope data */
810 kal_uint8 Data[CUIM_APDU_REQ_BODY_MAX_LEN];/* Envelope data */
811} UimEnvelopeMsgT;
812/***********************************************
813 based OTASP\OPAPA Commands
814 ***********************************************/
815typedef enum
816{
817 BCMCS_TYPE_RETRIEVE_SK = 0x00,
818 BCMCS_TYPE_UPDATE_BAK,
819 BCMCS_TYPE_DELETE_BAK,
820 BCMCS_TYPE_RETRIEVE_SRTP_SK,
821 BCMCS_TYPE_GEN_AUTH_SIGNATURE,
822 BCMCS_TYPE_BCMCS_AUTH,
823 BCMCS_TYPE_INVALID = 0xFF
824} BcmcsTypeT;
825
826typedef struct
827{
828 UimRspInfoT UimRspInfo;
829 kal_uint8 RANDSeed[20];
830 kal_uint8 A_KEY_P_REV;
831 kal_uint8 PLen;
832 kal_uint8 GLen;
833 kal_uint8 PARAM_P[UIM_PARAM_P_LEN];
834 kal_uint8 PARAM_G[UIM_PARAM_G_LEN];
835} UimMSKeyMsgT;
836
837typedef struct
838{
839 UimRspInfoT UimRspInfo;
840 kal_uint8 Len;
841 kal_uint8 Result[UIM_MAX_BS_RESULT_LEN];
842} UimKeyGenMsgT;
843
844typedef struct
845{
846 UimRspInfoT UimRspInfo;
847} UimCommitMsgT;
848
849typedef struct
850{
851 UimRspInfoT UimRspInfo;
852 kal_uint8 Block;
853 kal_uint8 Len;
854 kal_uint8 Data[UIM_MAX_PARAM_SIZE];
855} UimValidateMsgT;
856
857typedef struct
858{
859 UimRspInfoT UimRspInfo;
860 kal_uint8 Block;
861} UimConfigurationMsgT;
862
863typedef struct
864{
865 UimRspInfoT UimRspInfo;
866 kal_uint8 Block;
867 kal_uint8 Len;
868 kal_uint8 Data[UIM_MAX_PARAM_SIZE];
869} UimDownloadMsgT;
870
871typedef struct
872{
873 UimRspInfoT UimRspInfo;
874 kal_uint8 Block;
875 kal_uint16 ReqOffset;
876 kal_uint8 ReqMax;
877} UimSSPRConfigurationMsgT;
878
879typedef struct
880{
881 UimRspInfoT UimRspInfo;
882 kal_uint8 Block;
883 kal_uint8 Len;
884 kal_uint8 Data[UIM_MAX_OTA_DATA_BURST_SIZE];
885} UimSSPRDownloadMsgT;
886
887typedef struct
888{
889 UimRspInfoT UimRspInfo;
890 kal_uint8 Block;
891} Uim3gpdConfigurationRequestMsgT;
892
893typedef struct
894{
895 UimRspInfoT UimRspInfo;
896 kal_uint8 Block;
897 kal_uint8 Len;
898 kal_uint8 Data[UIM_MAX_OTA_DATA_BURST_SIZE];
899} Uim3gpdDownloadRequestMsgT;
900
901typedef struct
902{
903 UimRspInfoT UimRspInfo;
904 kal_uint8 StartStop;
905 kal_uint32 RANDSeed;
906 kal_uint8 Esn[7];
907} UimOTAPAMsgT;
908
909/***********************************************
910 ANSI-41-based Security-Related Commands
911 ***********************************************/
912/* Base station challenge msg command */
913typedef struct
914{
915 UimRspInfoT UimRspInfo;
916 kal_uint32 RandSeed; /* A random number generated by ME */
917 kal_uint8 RandSSD[7]; /* A random number generated by BS, received
918 in Update SSD message */
919 kal_uint8 ProcessCtrl; /* Process control */
920 kal_uint32 Esn; /* Electronic Serial Number */
921} UimBSChallengeMsgT;
922
923/* confirm SSD msg command */
924typedef struct
925{
926 UimRspInfoT UimRspInfo;
927 kal_uint32 AuthBS; /* Value of AUTHBS received in Base Station
928 Challenge Confirmation Order */
929} UimConfirmSSDMsgT;
930
931/* Run Cave msg command */
932typedef struct
933{
934 UimRspInfoT UimRspInfo;
935 kal_uint8 RandType; /* Type of RandVal */
936 kal_uint32 RandVal; /* A random number generated by BS ,
937 Global random challenge or Unique random challenge */
938 kal_uint8 DigLen; /* Length of digit */
939 kal_uint8 Digit[3]; /* A subset of (coded) dialed digits*/
940 kal_uint8 ProcessCtrl; /* Process control */
941 kal_uint32 Esn; /* Electronic Serial Number */
942 kal_uint8 CaveSeqId;
943 kal_uint16 CaveMsgId;
944} UimRunCaveMsgT;
945
946/* Generate Key/VPM msg command */
947typedef struct
948{
949 kal_uint8 VPMFirst; /* First octet of VPM to be output */
950 kal_uint8 VPMLast; /* Last octet of VPM to be output */
951 kal_uint8* KeyDataP; /* the pointer to key buffer */
952 kal_uint8* VPMDataP; /* the pointer to vpm buffer */
953} UimGenerateKeyVPMMsgT;
954
955/* Store ESN_ME */
956typedef struct
957{
958 UimRspInfoT UimRspInfo;
959 kal_uint8 Len;
960 kal_uint8 Esn[7];
961 kal_bool UsageInd;
962} UimStoreEsnMeMsgT;
963
964#if defined (__TC10__) && defined (__TC10_IPC_CDMA_SUPPORT__)
965/* Store ESN_ME for SMS REG */
966typedef struct
967{
968 kal_uint8 Esn[8];
969} UimSmsStoreEsnMeMsgT;
970#endif
971/*******************Related NAM data message************************/
972/* Get Nam data from UIM card */
973typedef struct
974{
975 UimRspInfoT UimRspInfo;
976} UimGetNamDataMsgT;
977
978/* Define Cst and EST sevice list index */
979typedef enum
980{
981 CHV_DISABLE_INDEX = 0, /*CHV disable function*/
982 ADN_INDEX, /*Abbreviated Dialing Numbers*/
983 FDN_INDEX, /*Fixed Dialing Numbers*/
984 SDN_INDEX, /*Service Dialing Numbers (SDN)*/
985 SMS_INDEX, /*Short Message Storage (SMS)*/
986 SMP_INDEX, /*Short Message Storage parameters*/
987 HRPD_INDEX, /*HRPD*/
988 SMSBROADCAST_INDEX,/*Data Download via SMS Broadcast*/
989 SMSPP_INDEX, /*Data Download via SMS-PP*/
990 EUIMID_INDEX, /*SF_EUIMID-based EUIMID*/
991 MEID_INDEX, /*MEID, only used in RUIM*/
992 CALL_CONTROL_INDEX, /*Call Control*/
993 SIP_INDEX, /*3GPD-SIP*/
994 MIP_INDEX, /*3GPD-MIP*/
995 AKA_INDEX, /*AKA*/
996 OCI_INDEX, /*Outgoing Call Information (OCI)*/
997 ICI_INDEX, /*Incoming Call Information (ICI)*/
998 EST_INDEX, /*Enabled Services Table*/
999 OMH_INDEX,
1000 IPV6_INDEX, /* IPv6 */
1001 MESSAGE_3GPD_EXT_INDEX, /* message and 3GPD extensions */
1002 EXT2_INDEX,
1003 GID1_INDEX,
1004 GID2_INDEX,
1005 ECST_MAX_NUM
1006}UimECstIndexT;
1007
1008/* NAM structure in UIM */
1009typedef struct
1010{
1011 kal_uint8 COUNTsp; /* Call Count */
1012 kal_bool IMSI_M_Valid; /* IMSI_M */
1013 IMSIType IMSI_Mp;
1014 kal_bool IMSI_T_Valid; /* IMSI_T */
1015 IMSIType IMSI_Tp;
1016 kal_uint8 ASSIGNING_TMSI_ZONE_LENsp; /* TMSI */
1017 kal_uint8 ASSIGNING_TMSI_ZONEsp[ CP_MAX_TMSI_ZONE_LEN ];
1018 kal_uint32 TMSI_CODEsp;
1019 kal_uint32 TMSI_EXP_TIMEsp;
1020 kal_uint16 HOME_SIDp; /* Analog Home SID */
1021 kal_uint8 EXp; /* Analog Operational Parameters */
1022 kal_uint32 NXTREGsp; /* Analog Location and Registration Indicators */
1023 kal_uint16 SIDsp;
1024 kal_uint16 LOCAIDsp;
1025 kal_bool PUREGsp;
1026 kal_uint16 SIDp[MAX_POSITIVE_SIDS]; /* CDMA Home SID, NID */
1027 kal_uint16 NIDp[MAX_POSITIVE_SIDS];
1028 kal_uint8 NUM_POSITIVE_SID_NIDp;
1029 ZoneList ZONE_LISTsp; /* CDMA Zone-Based Registration Indicators */
1030 SidNidList SID_NID_LISTsp; /* CDMA System/Network Registration Indicators */
1031 kal_int32 BASE_LAT_REGsp; /* CDMA Distance-Based Registration Indicators */
1032 kal_int32 BASE_LONG_REGsp;
1033 kal_uint16 REG_DIST_REGsp;
1034 kal_uint8 ACCOLCp; /* access overload class */
1035 kal_uint8 MOB_TERM_HOMEp;/* Call Termination Mode Preferences */
1036 kal_uint8 MOB_TERM_SIDp;
1037 kal_uint8 MOB_TERM_NIDp;
1038 kal_uint8 SLOT_CYCLE_INDEXp;/* Suggested Slot Cycle Index */
1039 kal_uint16 FIRSTCHPp; /* Analog Channel Preferences */
1040 kal_uint16 FCCA;
1041 kal_uint16 FCCB;
1042 kal_uint8 NUM_FCC_SCAN;
1043 kal_bool ALLOW_OTAPA; /* OTAPA/SPC_Enable */
1044 kal_bool NAM_LOCKp; /* NAM_LOCK */
1045 kal_uint8 MDN_NUM_DIGITS; /* EF Mobile Directory Number */
1046 kal_uint8 Mdn[16];
1047 kal_uint32 UimId; /* UIMID */
1048 kal_uint8 ECST[ECST_MAX_NUM]; /*bit 0: allocated or not,bit 1: service activated or not*/
1049 kal_bool SF_EUIMID_UsageInd;
1050 kal_uint8 SF_EUIMID[C2K_EF_SF_EUIMID_SIZE];
1051 kal_bool UIM_ID_UsageInd;
1052 kal_uint8 PREF_SERV_BAND0p;/* Service Preferences */
1053 kal_uint8 SPC_Status;
1054} UimNamT;
1055
1056/* Response data structure of MSG_ID_UIM_GET_NAM_DATA_MSG */
1057typedef struct
1058{
1059 UimNamT UimNam; /* Nam data in UIM */
1060} UimGetNamDataRspMsgT;
1061
1062/* Request the update of NAM */
1063typedef struct
1064{
1065 UimRspInfoT UimRspInfo;
1066 UimNamT UimNam;
1067} UimUpdateNamDataMsgT;
1068
1069/* Response of the update of NAM */
1070typedef struct
1071{
1072 kal_bool Ack;
1073} UimUpdateNamDataRspMsgT;
1074
1075typedef struct
1076{
1077 kal_uint16 Sw; /* status word, 0x9000 denotes ACK, 0x0000 denotes FAULT, other value see GSM11.11 */
1078 kal_uint16 Len;
1079 kal_uint8 CST[ECST_MAX_NUM]; /* Refer to UimECstIndexT for each Service Option */
1080 kal_bool IsCardReady;
1081 kal_uint16 IsCSIMCard; /* 0 for UIM, 1 for CSIM */
1082} UimGetCstRspMsgT;
1083
1084/*****************************************************************************
1085 * Phonebook
1086 ****************************************************************************/
1087typedef enum
1088{
1089 PHB_STOR_LND = 0x6f44, /*EFLND (Last number dialled)*/
1090 PHB_STOR_ADN = 0x6f3a, /*EFADN (Abbreviated dialling numbers)*/
1091 PHB_STOR_FDN = 0x6f3b, /*EFFDN (Fixed dialling numbers)*/
1092 PHB_STOR_SDN = 0x6f49, /*EFSDN (Service Dialling Numbers)*/
1093 PHB_STORE_EXT2 = 0x6f7a,
1094 PHB_STORE_EXT2_UIM = 0x6f4b,
1095 PHB_STOR_FILE_COUNT
1096} UimPhbStorFileT; /* phonebook storage */
1097
1098typedef enum /* phonebook storage */
1099{
1100 PHB_GLOBAL = 0, /*global phb*/
1101 PHB_CSIM = 1, /*Csim phb*/
1102 PHB_USIM = 2, /*Usim phb*/
1103 PHB_ISIM = 3, /*Isim phb*/
1104 PHB_MAX_LEVEL
1105} UimPhbLevelT;
1106
1107/* Request phone book records Params*/
1108typedef struct
1109{
1110 UimRspInfoT UimRspInfo;
1111 UimPhbStorFileT FileType;
1112 UimPhbLevelT PhbLevel;
1113} UimGetPhbRecParamsMsgT;
1114
1115/* Response data structure of MSG_ID_UIM_GET_PHB_REC_PARAMS_MSG */
1116typedef struct
1117{
1118 kal_bool Ack;
1119 UimPhbStorFileT FileType;
1120 kal_uint16 PhbRecCount;
1121 kal_uint8 PhbPerRecSize;
1122#ifdef MTK_CBP
1123 kal_bool FdnEnabled;
1124 kal_uint8 FdnRecCount;
1125 kal_uint8 FdnRecSize;
1126#endif
1127} UimGetPhbRecParamsRspMsgT;
1128
1129/* Request a record of phone book */
1130typedef struct
1131{
1132 UimRspInfoT UimRspInfo;
1133 UimPhbStorFileT FileType;
1134 kal_uint8 RecordIndex;
1135 UimPhbLevelT PhbLevel;
1136} UimGetPhoneRecMsgT;
1137
1138/*Response data structure of MSG_ID_UIM_GET_PHB_REC_MSG */
1139typedef struct
1140{
1141 kal_bool Ack;
1142 UimPhbStorFileT FileType;
1143 kal_bool IsFree;
1144 kal_uint8 RecordIndex;
1145 kal_uint8 AlphaIdentifier[MAXALPHALENGTH];
1146 kal_uint8 PhoneNumber[MAX_NUMBER_BCD_LEN];
1147 kal_uint8 TON;
1148 kal_uint8 NPI;
1149} UimGetPhoneRecRspMsgT;
1150
1151
1152 /* Request the update of a record of phone book */
1153typedef struct
1154{
1155 UimRspInfoT UimRspInfo;
1156 UimPhbStorFileT FileType;
1157 kal_uint8 RecordIndex;
1158 kal_uint8 AlphaIdentifier[MAXALPHALENGTH];
1159 kal_uint8 PhoneNumber[MAX_NUMBER_BCD_LEN];
1160 kal_uint8 TON;
1161 kal_uint8 NPI;
1162 UimPhbLevelT PhbLevel;
1163} UimUpdatePhoneRecMsgT;
1164
1165
1166/* Response data of MSG_ID_UIM_UPDATE_PHB_REC_MSG */
1167typedef struct
1168{
1169 kal_bool Ack;
1170 UimPhbStorFileT FileType;
1171 kal_uint8 RecordIndex;
1172} UimUpdatePhoneRecRspMsgT;
1173
1174/*Request to erase a record of phone book */
1175typedef struct
1176{
1177 UimRspInfoT UimRspInfo;
1178 UimPhbStorFileT FileType;
1179 kal_uint8 RecordIndex;
1180 UimPhbLevelT PhbLevel;
1181} UimErasePhoneRecMsgT;
1182
1183/* Response data of MSG_ID_UIM_ERASE_PHB_REC_MSG */
1184typedef struct
1185{
1186 kal_bool Ack;
1187 UimPhbStorFileT FileType;
1188 kal_uint8 RecordIndex;
1189} UimErasePhoneRecRspMsgT;
1190
1191
1192/* Request SMS(EFSMS) records sum*/
1193typedef struct
1194{
1195 UimRspInfoT UimRspInfo;
1196} UimGetSmsRecParamsMsgT;
1197
1198/* Response data structure of UIM_GET_SMS_REC_ PARAMS _MSG */
1199typedef struct
1200{
1201 kal_bool Ack;
1202 kal_uint8 SmsRecCount;
1203 kal_uint8 SmsPerRecSize;
1204 kal_uint8 SmsNullRecLen;
1205 kal_uint8 SmsNullRec[CUIM_APDU_RSP_MAX_LEN]; /*pointer to record status*/
1206} UimGetSmsRecParamsRspMsgT;
1207
1208/* Request a record of SMS */
1209typedef struct
1210{
1211 UimRspInfoT UimRspInfo;
1212 kal_uint8 RecordIndex;
1213} UimGetSmsRecMsgT;
1214
1215/*Response data structure of MSG_ID_UIM_GET_SMS_REC_MSG*/
1216typedef struct
1217{
1218 kal_bool Ack;
1219 kal_uint8 RecordIndex;
1220 kal_uint8 Status;
1221 kal_uint8 MsgLen;
1222 kal_uint8 MsgData[CUIM_APDU_RSP_MAX_LEN];
1223} UimGetSmsRecRspMsgT;
1224
1225 /* Request the update of SMS record */
1226typedef struct
1227{
1228 UimRspInfoT UimRspInfo;
1229 kal_uint8 RecordIndex;
1230 kal_uint8 Status;
1231 kal_uint8 MsgLen;
1232 kal_uint8 MsgData[CUIM_APDU_REQ_BODY_MAX_LEN];
1233} UimUpdateSmsRecMsgT;
1234
1235 /* Response data of MSG_ID_UIM_UPDATE_SMS_REC_MSG*/
1236typedef struct
1237{
1238 kal_bool Ack;
1239 kal_uint8 RecordIndex;
1240} UimUpdateSmsRecRspMsgT;
1241
1242 /* Request Erase SMS record */
1243typedef struct
1244{
1245 UimRspInfoT UimRspInfo;
1246 kal_uint8 RecordIndex;
1247} UimEraseSmsRecMsgT;
1248
1249 /* Response data of MSG_ID_UIM_ERASE_SMS_REC_MSG*/
1250typedef struct
1251{
1252 kal_bool Ack;
1253 kal_uint8 RecordIndex;
1254} UimEraseSmsRecRspMsgT;
1255
1256#ifdef MTK_CBP
1257/* Request the capability of SMS */
1258typedef struct
1259{
1260 UimRspInfoT UimRspInfo;
1261} UimGetSmsCapMsgT;
1262
1263/*Response data structure of MSG_ID_UIM_GET_SMS_CAP_MSG */
1264typedef struct
1265{
1266 kal_uint8 RetryPeriod;
1267 kal_uint8 RetryInterval;
1268 kal_uint8 Flags;
1269 kal_uint8 PrefSO;
1270} UimGetSmsCapRspMsgT;
1271#endif
1272
1273/***************End of APP API about PhoneBook and SMS***************/
1274
1275#ifdef MTK_DEV_C2K_IRAT
1276/*****************************************
1277 define the types for UIM Bluetooth SAP
1278******************************************/
1279typedef enum
1280{
1281 BTSAP_PRO_TYPE_0 = 0x00, /*Transport protocol type T=0*/
1282 BTSAP_PRO_TYPE_1 = 0x01, /*Transport protocol type T=1*/
1283 BTSAP_PRO_TYPE_0_1 = 0x02, /*Transport protocol type T=0 and T=1*/
1284 BTSAP_PRO_TYPE_INVALID = 0xFF, /* Invalid transport protocol type*/
1285}BtsapProTypeT;
1286
1287/******************Bluetooth SAP related msg************************/
1288typedef struct
1289{
1290 UimRspInfoT UimRspInfo;
1291} UimBtsapConnectMsgT,
1292 UimBtsapDisconnectMsgT,
1293 UimBtsapPowerOffMsgT;
1294
1295typedef struct
1296{
1297 kal_uint16 result;
1298} UimBtsapDisconnectRspMsgT,
1299 UimBtsapPowerOffRspMsgT;
1300
1301typedef struct
1302{
1303 UimRspInfoT UimRspInfo;
1304 BtsapProTypeT transport_protocol_type;
1305} UimBtsapPowerOnMsgT,
1306 UimBtsapResetMsgT;
1307
1308typedef struct
1309{
1310 kal_uint16 result;
1311 BtsapProTypeT current_transport_protocol_type;
1312 kal_uint16 atr_len;
1313 kal_uint8 atr[40];
1314} UimBtsapPowerOnRspMsgT,
1315 UimBtsapResetRspMsgT;
1316
1317typedef struct
1318{
1319 kal_uint16 result;
1320 BtsapProTypeT current_transport_protocol_type;
1321 BtsapProTypeT supported_transport_protocol_type_capability;
1322 kal_uint16 atr_len;
1323 kal_uint8 atr[40];
1324} UimBtsapConnectRspMsgT;
1325
1326typedef struct
1327{
1328 UimRspInfoT UimRspInfo;
1329 BtsapProTypeT transport_protocol_type;
1330 kal_uint16 apdu_req_len;
1331 kal_uint8 apdu_req[APDU_REQ_MAX_LEN];
1332} UimBtsapTransferApduMsgT;
1333
1334typedef struct
1335{
1336 kal_uint16 result;
1337 kal_uint16 apdu_rsp_len;
1338 kal_uint8 apdu_rsp[APDU_RSP_MAX_LEN];
1339} UimBtsapTransferApduRspMsgT;
1340/***************End of bluetooth SAP related msg***************/
1341#endif
1342
1343
1344/*********************************
1345Get Uim Card status
1346*********************************/
1347#define NO_CARD 0x00
1348#define UIM_CARD 0x01
1349#define SIM_CARD 0x02
1350#define UIM_SIM_CARD (UIM_CARD|SIM_CARD)
1351#define UICC_CARD 0x04
1352#define CSIM_CARD 0x10
1353#define USIM_CARD 0x20
1354#define ISIM_CARD 0x40
1355#define UNKNOWN_CARD 0x80
1356
1357#define SIM_SWITCH_NO_RESET 0xa0
1358#define UIM_INIT_BUSY 0xb0
1359#define UIM_CARD_TYPE_CHANGE 0xc0
1360
1361#ifdef MTK_CBP
1362#define CSIM_USIM_CARD (UICC_CARD|CSIM_CARD|USIM_CARD)
1363#define USIM_ISIM_CARD (UICC_CARD|USIM_CARD|ISIM_CARD)
1364#define CSIM_USIM_ISIM_CARD (UICC_CARD|CSIM_CARD|USIM_CARD|ISIM_CARD)
1365#endif
1366#define CARD_NOT_READY 0x100
1367#define CT_CARD 0x400
1368#define CT_UIM_CARD (CT_CARD|UIM_CARD)
1369#define CT_UIM_SIM_CARD (CT_CARD|UIM_SIM_CARD)
1370#define CT_UICC_CARD (CT_CARD|UICC_CARD)
1371#ifdef MTK_CBP
1372#define CT_CSIM_CARD (CT_UICC_CARD|CSIM_CARD)
1373#define CT_CSIM_USIM_CARD (CT_UICC_CARD|CSIM_USIM_CARD)
1374#define CT_CSIM_USIM_ISIM_CARD (CT_UICC_CARD|CSIM_USIM_ISIM_CARD)
1375#endif
1376
1377/*Can not get card type because of PIN status(CHV1_ENABLED_NOT_VERIFIED or CHV1_BLOCKED or CHV1_DEADLOCKED).
1378 Application needs check CHV status to decide next step(input PIN/input PUK/deadcard) . */
1379#define NEED_PIN_CARD 0x1000
1380#ifdef MTK_DEV_C2K_IRAT
1381#define MD1_PIN_NEEDED_CARD 0x2000
1382#define MD1_CARD_LOCKED 0x5000
1383#endif
1384
1385#ifdef __CARRIER_RESTRICTION__
1386#define UML_LOCKED_CARD 0x8000
1387#define UML_CARD_REBOOT 0x8080
1388#endif
1389
1390typedef kal_uint16 UimCardTypeT;
1391/*CardStatus is compatible with the current design,but need different process to support new card type*/
1392typedef kal_uint16 CardStatusT;
1393
1394typedef enum
1395{
1396 UICC_NOT_INITIALIZED = 0, /* Initial state after powerup */
1397 UICC_BOOTUP, /* UICC driver is trying to establish initial link */
1398 UICC_READY, /* UICC link established and nominal */
1399 UICC_NOT_READY, /* UICC link never established. Could be no UICC card */
1400 UICC_LINK_FAILURE, /* Initialization completed but lost UICC link afterwards */
1401} UiccCardStatusType;
1402
1403typedef enum{
1404 CHV1_DISABLED,
1405 CHV1_ENABLED_NOT_VERIFIED,/*Waiting for correct chv1 entry*/
1406 CHV1_ENABLED_VERIFIED, /* chv is enabled and verified */
1407 CHV1_BLOCKED, /*Waiting for UNBLOCK1 entry and new PIN1 code*/
1408 CHV1_DEADLOCKED, /* card is deadlocked */
1409#ifdef __CARRIER_RESTRICTION__
1410 CHV1_DISABLED_EXT_UML, /*chv disabled and locked by uml*/
1411 CHV1_ENABLED_VERIFIED_EXT_UML, /*chv verified and locked by uml*/
1412#endif
1413 CHV1_STATUS_ENUM_MAX,
1414} ChvStatusT;
1415
1416#ifdef MTK_CBP
1417/* Indicates whether UIC is OMH card type */
1418typedef enum{
1419 UIM_IS_NOT_OMH_CARD = 0,
1420 UIM_IS_OMH_CARD = 1,
1421 UIM_OMH_CARD_UNKNOWN
1422} UimOmhCardTypeT;
1423
1424/* Indicates whether IMSI_M is programmed in UIM*/
1425typedef enum{
1426 IMSI_M_NOT_PROGRAMMED = 0,
1427 IMSI_M_PROGRAMMED = 1,
1428 IMSI_M_PROGRAM_STATE_UNKNOWN,
1429} UimImsiMProgramStateT;
1430
1431#ifdef __CARRIER_RESTRICTION__
1432typedef struct
1433{
1434 kal_uint8 len_of_gid1;
1435 kal_uint8 gid1[MAX_NUM_OF_GID];
1436 kal_uint8 len_of_gid2;
1437 kal_uint8 gid2[MAX_NUM_OF_GID];
1438}uim_gid_struct;
1439#endif
1440
1441/* Define IMSI_M state ind message Struct */
1442typedef struct
1443{
1444 UimImsiMProgramStateT UimImsiMProgramState;
1445} UimImsimProgramStateIndMsgT;
1446#endif
1447
1448typedef struct
1449{
1450 kal_uint8 atChannel;
1451 kal_uint8 sim_index;
1452} ValAtCmdInfoT;
1453/* Request uim card status */
1454typedef struct
1455{
1456 UimRspInfoT UimRspInfo;
1457 ValAtCmdInfoT atInfo;
1458} UimCardStatusRecMsgT;
1459
1460 /* Response to uim card status*/
1461typedef struct
1462{
1463 CardStatusT CardStatus;
1464 ChvStatusT ChvStatus;
1465#ifdef MTK_DEV_C2K_IRAT
1466 kal_bool UsimAppExisted;
1467 kal_bool RemoteSimSwtichStart;/* dynamic remote sim switch happen or not */
1468#endif
1469 kal_uint8 Pin1Count;
1470 kal_uint8 Pin2Count;
1471 kal_uint8 Puk1Count;
1472 kal_uint8 Puk2Count;
1473 ValAtCmdInfoT atInfo;
1474#ifdef __CARRIER_RESTRICTION__
1475 kal_uint8 SlotId;
1476#endif
1477} UimCardStatusRspMsgT;
1478
1479/************************************
1480 APP CHV message definition
1481 ************************************/
1482typedef enum
1483{
1484 UIM_CHV_1 = 1,
1485 UIM_CHV_2
1486} UimChvIdT;
1487
1488/* verify CHV msg */
1489typedef struct
1490{
1491 UimRspInfoT UimRspInfo;
1492 UimChvIdT ChvId; /* Specify the CHV */
1493 kal_uint8 ChvLen;
1494 kal_uint8 ChvVal[8]; /* CHV value */
1495#ifdef MTK_DEV_C2K_IRAT
1496 kal_bool LocalPin; /* Whether use local PIN from NV */
1497#endif
1498 ValAtCmdInfoT atInfo;
1499} UimAppVerifyCHVMsgT;
1500
1501typedef struct
1502{
1503 UimRspInfoT UimRspInfo;
1504 UimChvIdT ChvId; /* Specify the CHV */
1505 kal_uint8 OldChvLen;
1506 kal_uint8 OldChvVal[8]; /* Old CHV value */
1507 kal_uint8 NewChvLen;
1508 kal_uint8 NewChvVal[8]; /* New CHV value */
1509 ValAtCmdInfoT atInfo;
1510} UimAppChangeCHVMsgT;
1511
1512typedef struct
1513{
1514 UimRspInfoT UimRspInfo;
1515 kal_uint8 Chv1Len;
1516 kal_uint8 Chv1Val[8]; /* CHV1 value */
1517 ValAtCmdInfoT atInfo;
1518} UimAppDisableCHVMsgT;
1519
1520typedef struct
1521{
1522 UimRspInfoT UimRspInfo;
1523 kal_uint8 Chv1Len;
1524 kal_uint8 Chv1Val[8]; /* CHV1 value */
1525 ValAtCmdInfoT atInfo;
1526} UimAppEnableCHVMsgT;
1527
1528typedef struct
1529{
1530 UimRspInfoT UimRspInfo;
1531 UimChvIdT ChvId; /* Specify the CHV */
1532 kal_uint8 UblkChvLen;
1533 kal_uint8 UblkChvVal[8]; /* Unblock CHV value */
1534 kal_uint8 NewChvLen;
1535 kal_uint8 NewChvVal[8]; /* New CHV value */
1536 ValAtCmdInfoT atInfo;
1537} UimAppUnblockCHVMsgT;
1538
1539/* Define CHV operation response result */
1540typedef enum
1541{
1542 UIM_CHV_SUCCESS =0,
1543 UIM_CHV_NOT_INITIALIZE, /* no CHV initialized */
1544 UIM_CHV_FAILURE_AND_PERMIT_ATTEMPT, /* unsuccessful CHV/UNBLOCK CHV verification, at least one attempt left */
1545 UIM_CHV_CONTRADICTION_WITH_CHV_STATUS, /* in contradiction with CHV status */
1546 UIM_CHV_CONTRADICTION_WITH_INVALIDATION_STATE, /* in contradiction with invalidation status */
1547 UIM_CHV_FAILURE_AND_NO_ATTEMPT, /*unsuccessful CHV/UNBLOCK CHV verification, no attempt left;CHV/UNBLOCK CHV blocked*/
1548 UIM_CHV_FAILURE_RECOVERY, /*fast recovery during CHV process*/
1549 UIM_CHV_FAILURE_INSUFFICIENT_MEMORY, /* UICC returns 9210 for CHV command*/
1550 UIM_CHV_FAILURE
1551}UimChvResultT;
1552
1553/* APP CHV operation response message */
1554typedef struct
1555{
1556 UimChvResultT Result;
1557 kal_uint16 SW;
1558 ValAtCmdInfoT atInfo;
1559 CardStatusT CardStatus;
1560 ChvStatusT ChvStatus;
1561 kal_uint8 Pin1Count;
1562 kal_uint8 Pin2Count;
1563 kal_uint8 Puk1Count;
1564 kal_uint8 Puk2Count;
1565} UimAppChvRspMsgT;
1566
1567/************************************
1568 UIM_MNG_MSG_CLASS message definition
1569 ************************************/
1570
1571/* Register/Deregister the notify message of UIM status changed */
1572typedef struct
1573{
1574 UimRspInfoT UimRspInfo;
1575 kal_bool Register;
1576} UimNotifyRegisterMsgT;
1577
1578/* Uim notify message */
1579typedef struct
1580{
1581 UiccCardStatusType Status;
1582 kal_bool RemoteSimSwtichStart;/* dynamic remote sim switch happen or not */
1583 CardStatusT CardStatus; /* notify card status directly only when card is not ready */
1584 ChvStatusT ChvStatus;
1585 UimNamT namData;
1586 kal_bool nam_valid;
1587 kal_uint8 ef_ota_len;
1588 kal_uint8 ef_ota_data[255];
1589 kal_uint8 pin1_count;
1590 kal_uint8 puk1_count;
1591 kal_uint8 pin2_count;
1592 kal_uint8 puk2_count;
1593 kal_bool iccid_valid;
1594 kal_uint8 iccid[10];
1595
1596 uim_access_option_enum sim_index;
1597 kal_bool is_uicc_card;
1598 kal_bool is_omh_card;
1599 kal_bool is_utk_refresh;
1600 kal_bool is_fdn_enabled;
1601 kal_bool is_gsm_imsi_valid;
1602 kal_uint8 gsm_imsi[9];
1603 kal_uint8 utk_refresh_qualifier;
1604#ifdef __CARRIER_RESTRICTION__
1605 kal_bool is_cdma_only_card;
1606 kal_bool spn_valid;
1607 kal_uint8 ef_spn_data[UIM_EF_SPN_LENGTH];
1608 uim_gid_struct gid_info;
1609 kal_uint8 sim_slot_id;
1610#endif
1611} UimNotifyMsgT;
1612
1613typedef struct
1614{
1615 UimRspInfoT UimRspInfo;
1616 kal_uint8 ChapId;
1617 kal_uint8 NAIEntryId;
1618 kal_uint8 ChallengeLen;
1619 kal_uint8 *pChallengeData;
1620} Uim3GSipChapReqMsgT;
1621
1622typedef struct
1623{
1624 UimRspInfoT UimRspInfo;
1625 kal_uint8 NAIEntryId;
1626 kal_uint16 RRQLen;
1627 kal_uint8 *pRRQData;
1628} Uim3GMipMNHAAuthReqMsgT;
1629
1630typedef struct {
1631 UimRspInfoT UimRspInfo;
1632 kal_uint16 PreRRQLen;
1633 /*including Preceding Mobile IP data ||MN AAA Extension Header(Type, Subtype, Length, SPI), can be programmed into Lc already*/
1634 kal_uint8 *pPreRRQData;
1635} Uim3GMipRRQHashReqMsgT;
1636
1637typedef struct {
1638 UimRspInfoT UimRspInfo;
1639 kal_uint8 NAIEntryId;
1640 kal_uint16 ChallengeLen;
1641 kal_uint8 *pChallengeData;
1642} Uim3GMipMNAAAAuthReqMsgT;
1643
1644typedef struct {
1645 UimRspInfoT UimRspInfo;
1646 kal_uint8 RandLen;
1647 kal_uint8* Rand; /*RANDA*/
1648 kal_uint8 AutnLen; /* Length of AUTN (L1) */
1649 kal_uint8* Autn; /* AUTN*/
1650} Uim3GAkaAuthReqMsgT;
1651
1652typedef struct {
1653 UimRspInfoT UimRspInfo;
1654 kal_uint8 ChapId;
1655 kal_uint8 ChallengeLen;
1656 kal_uint8 *pChallengeData;
1657 kal_bool bFallbackCave;
1658 /*Indicate the type of Username is a complete NAI or MDN, if MDN, HLP will generate NAI based on it*/
1659 kal_bool *bNAI;
1660 kal_uint8 *UserNameLen;
1661 kal_uint8 *UserName;
1662} UimHlpAccessChapReqMsgT;
1663
1664typedef struct {
1665 UimRspInfoT UimRspInfo;
1666} Uim3GPDOPCGetMsgT;
1667
1668typedef struct {
1669 UimRspInfoT UimRspInfo;
1670 kal_uint8 opMode;
1671} Uim3GPDOPCUpdateMsgT;
1672
1673typedef struct {
1674 UimRspInfoT UimRspInfo;
1675} Uim3GPDOPMGetMsgT;
1676
1677typedef struct {
1678 UimRspInfoT UimRspInfo;
1679 kal_uint8 opMode;
1680} Uim3GPDOPMUpdateMsgT;
1681
1682typedef struct {
1683 UimRspInfoT UimRspInfo;
1684} Uim3GPDSIPCapGetMsgT;
1685
1686typedef struct {
1687 UimRspInfoT UimRspInfo;
1688} Uim3GPDMIPCapGetMsgT;
1689
1690typedef struct {
1691 UimRspInfoT UimRspInfo;
1692} Uim3GPDSIPUPPGetMsgT;
1693
1694typedef struct {
1695 UimRspInfoT UimRspInfo;
1696} Uim3GPDMIPUPPGetMsgT;
1697
1698typedef struct {
1699 UimRspInfoT UimRspInfo;
1700} Uim3GPDSIPSPGetMsgT;
1701
1702typedef struct {
1703 UimRspInfoT UimRspInfo;
1704 kal_uint8 ActNAIEntryIndex;
1705} Uim3GPDSIPSPUpdateMsgT;
1706
1707typedef struct {
1708 UimRspInfoT UimRspInfo;
1709} Uim3GPDMIPSPGetMsgT;
1710
1711typedef struct {
1712 UimRspInfoT UimRspInfo;
1713} Uim3GPDIMSIGetMsgT;
1714
1715typedef struct {
1716 UimRspInfoT UimRspInfo;
1717} Uim3GPDADGetMsgT;
1718
1719typedef struct {
1720 UimRspInfoT UimRspInfo;
1721 kal_uint8 ActNAIEntryIndex;
1722 kal_uint8 NumAddActNAI;
1723 kal_uint8 AddActNaiEntryIndex[UIM_MAX_NAI_NUM];
1724} Uim3GPDMIPSPUpdateMsgT;
1725
1726typedef struct {
1727 UimRspInfoT UimRspInfo;
1728} Uim3GPDSIPPAPSSGetMsgT;
1729
1730#ifdef MTK_CBP
1731typedef struct {
1732 UimRspInfoT UimRspInfo;
1733} Uim3GPDUppExtGetMsgT;
1734#endif
1735
1736typedef struct {
1737 kal_uint8 NAIEntryIndex;
1738 kal_uint8 SSLen;
1739 kal_uint8 SS[72];
1740} SipPapSST;
1741
1742typedef struct {
1743 UimRspInfoT UimRspInfo;
1744 kal_uint8 NumNAI;
1745 SipPapSST SipPapSSRec[UIM_MAX_NAI_NUM];
1746} Uim3GPDSIPPAPSSUpdateMsgT;
1747
1748typedef struct {
1749 UimRspInfoT UimRspInfo;
1750 kal_uint16 FileSize;
1751} UimUsimFileDataGetMsgT;
1752
1753typedef struct
1754{
1755 UimRspInfoT UimRspInfo;
1756 kal_uint16 EfId;
1757 UimDFIndexT DfIndex;
1758} UimGetEFPropertyMsgT;
1759
1760typedef enum
1761{
1762 UIM_FILE_TRANSPARENT = 0,
1763 UIM_FILE_FIXED = 1,
1764 UIM_FILE_CYCLIC = 3,
1765 UIM_FILE_UNKNWON_STRUCT
1766}UimEfStructureT;
1767
1768typedef struct
1769{
1770 kal_bool Ack;
1771 kal_uint16 FileId;
1772 kal_uint16 FileSize;
1773 UimEfStructureT EFStructure;
1774 kal_uint8 RecordLen;
1775} UimGetEFPropertyRspMsgT;
1776
1777typedef struct
1778{
1779 kal_uint16 TimeInterval; /* uint is "s", if =0: polling off */
1780} UimProactivePollingMsgT;
1781
1782typedef struct
1783{
1784 UimRspInfoT UimRspInfo;
1785 kal_uint8 ChapId;
1786 kal_uint8 ChallengeLen;
1787 kal_uint8 pChallengeData[CUIM_APDU_REQ_BODY_MAX_LEN];
1788} UimHrpdMD5AuthMsgT;
1789
1790typedef enum
1791{
1792 UICC_PARM_SET_FACTORY_MODE,
1793 UICC_PARM_GET_FACTORY_MODE,
1794 UICC_PARM_OPERATION_ID_END_LIST
1795} UiccParmOperationId;
1796
1797typedef enum
1798{
1799 UICC_PARM_MIN_VALUE,
1800 UICC_PARM_MAX_VALUE,
1801 UICC_PARM_DEFAULT_VALUE,
1802 UICC_PARM_CUSTOM_VALUE,
1803 UICC_PARM_OP_TYPE_LIST_END
1804} UiccParmOperationType;
1805
1806typedef enum
1807{
1808 UICC_PARM_OPERATION_SUCCESS,
1809 UICC_PARM_OPERATION_FAIL_READ_NOT_ALLOWED,
1810 UICC_PARM_OPERATION_FAIL_WRITE_NOT_ALLOWED,
1811 UICC_PARM_OPERATION_PARAMETER_NOT_SUPPORTED,
1812 UICC_PARM_OPERATION_INTERFACE_NOT_SUPPORTED,
1813 UICC_PARM_OPERATION_FAIL_VALUE_OUT_OF_RANGE
1814} UiccParmAccessResultCode;
1815
1816typedef struct
1817{
1818 kal_bool Mode;
1819} UiccFactoryMode_APIStruct;
1820
1821typedef struct
1822{
1823 UimRspInfoT UimRspInfo;
1824 kal_uint8 OperMode; /*1: init; 0:terminate*/
1825 kal_uint8 Aid[16];
1826} UimAppInitTermMsgT;
1827
1828typedef enum
1829{
1830 Info_ATRGet =0,
1831 Info_Max
1832} UimExtInfoId;
1833
1834typedef struct
1835{
1836 UimRspInfoT UimRspInfo;
1837 UimExtInfoId infoid;
1838} UimExtSimInfoGetT;
1839
1840typedef struct
1841{
1842 UimRspInfoT UimRspInfo;
1843 kal_uint8 Aid_len;
1844 kal_uint8 Aid[16];
1845} UiccLogicChanOpenT;
1846
1847typedef struct
1848{
1849 UimRspInfoT UimRspInfo;
1850 kal_uint8 Sessionid;
1851} UiccLogicChanCloseT;
1852
1853typedef struct
1854{
1855 UimRspInfoT UimRspInfo;
1856 kal_uint8 RecordIndex;
1857} UimGetSimMdnRecMsgT;
1858
1859typedef struct
1860{
1861 kal_bool Ack;
1862 kal_uint8 RecordIndex;
1863 kal_uint8 MdnLen;
1864 kal_uint8 Mdn[MAX_NUMBER_BCD_LEN+1]; /* First byte is TON|NPI. */
1865} UimGetSimMdnRecRspMsgT;
1866
1867typedef struct
1868{
1869 UimRspInfoT UimRspInfo;
1870} UimResetMsgT;
1871
1872#ifdef MTK_DEV_C2K_IRAT
1873typedef enum
1874{
1875 UIM_REFRESH_CSIM_INIT,
1876 UIM_REFRESH_CARD_RESET,
1877 UIM_REFRESH_FILE_CHANGE,
1878 UIM_REFRESH_SESSION_RESET
1879}UimRefreshTypeT;
1880
1881typedef struct
1882{
1883 UimRspInfoT UimRspInfo;
1884 UimRefreshTypeT RefreshType;
1885} UimUtkRefreshMsgT;
1886
1887typedef struct
1888{
1889 kal_bool Success;
1890} UimUtkRefreshRspMsgT;
1891#endif
1892
1893typedef struct
1894{
1895 kal_bool Ack;
1896} UimResetRspMsgT;
1897
1898#ifdef MTK_CBP
1899typedef struct
1900{
1901 UimRspInfoT UimRspInfo;
1902 kal_bool ActiveFdn;
1903 UimChvIdT ChvId; /* Specify the CHV */
1904 kal_uint8 ChvLen;
1905 kal_uint8 ChvVal[8]; /* CHV value */
1906} UimSetFdnStatusMsgT;
1907
1908typedef enum
1909{
1910 UIM_FDN_SET_OK,
1911 UIM_FDN_SET_PIN2_REQUIRED,
1912 UIM_FDN_SET_PIN2_PUK,
1913 UIM_FDN_SET_CARD_NOT_SUPPORTED,
1914 UIM_FDN_VERIFY_PIN2_FAIL,
1915 UIM_FDN_OPEATION_NOT_ALLOWED,
1916 UIM_FDN_UNKNOWN
1917}UimFdnSetCauseT;
1918
1919typedef struct
1920{
1921 UimFdnSetCauseT SetCause;
1922 kal_bool FdnEnabled;
1923 kal_bool Pin2Updated;
1924 kal_uint8 Pin2Count;
1925 kal_uint8 Puk2Count;
1926} UimSetFdnStatusRspMsgT;
1927
1928typedef struct
1929{
1930 UimRspInfoT UimRspInfo;
1931} UimGetFdnStatusMsgT;
1932
1933typedef struct
1934{
1935 kal_bool FdnEnabled;
1936} UimGetFdnStatusRspMsgT;
1937
1938/*Response data structure of MSG_ID_UIM_GET_FDN_REC_MSG */
1939typedef struct
1940{
1941 kal_bool Ack;
1942 UimPhbStorFileT FileType;
1943 kal_bool IsFree;
1944 kal_uint8 RecordIndex;
1945 kal_uint8 AlphaIdentifier[MAXALPHALENGTH];
1946 kal_uint8 PhoneNumber[MAX_NUMBER_FDN_BCD_LEN];
1947 kal_uint8 TON;
1948 kal_uint8 NPI;
1949} UimGetFdnRecRspMsgT;
1950
1951typedef struct
1952{
1953 UimRspInfoT UimRspInfo;
1954 UimPhbStorFileT FileType;
1955 kal_uint8 RecordIndex;
1956 kal_uint8 AlphaIdentifier[MAXALPHALENGTH];
1957 kal_uint8 PhoneNumber[MAX_NUMBER_FDN_BCD_LEN];
1958 kal_uint8 TON;
1959 kal_uint8 NPI;
1960 UimPhbLevelT PhbLevel;
1961} UimUpdateFdnRecMsgT;
1962
1963typedef struct
1964{
1965 kal_bool Ack;
1966 UimPhbStorFileT FileType;
1967 kal_uint8 RecordIndex;
1968} UimUpdateFdnRecRspMsgT;
1969
1970typedef struct
1971{
1972 kal_uint8 NumOfEccList;
1973 UimEccContactT EccList[MAX_ECC_LIST];
1974} UimEccListIndMsgT;
1975#endif
1976
1977#ifdef MTK_DEV_C2K_IRAT
1978typedef struct
1979{
1980 UimRspInfoT UimRspInfo;
1981 kal_bool ChangeSuccess;
1982} UimFileChangeRspMsgT;
1983
1984typedef struct
1985{
1986 uim_access_option_enum SimAccessOption;
1987 kal_bool UnlockTestSim;
1988 kal_bool ClearLocalPin;
1989}UimSimAccessOptionMsgT;
1990
1991#endif
1992
1993#ifndef __CARRIER_RESTRICTION__
1994typedef struct
1995{
1996 kal_uint8 len_of_gid1;
1997 kal_uint8 gid1[MAX_NUM_OF_GID];
1998 kal_uint8 len_of_gid2;
1999 kal_uint8 gid2[MAX_NUM_OF_GID];
2000}uim_gid_struct;
2001#endif
2002
2003typedef enum
2004{
2005 C2K_UIM_CARD_INSIDE,
2006 C2K_UICC_CSIM_INSIDE
2007} C2kCardtypeT;
2008
2009typedef struct
2010{
2011 C2kCardtypeT VsimcardType; /* uicc_card_type_enum, 0: Not init, 1:SIM, 2:USIM for now */
2012} c2kVsimProfileT;
2013
2014/* c2k vsim data length */
2015#define EF_META_SIZE 32
2016#define EF_DATA_SIZE 32
2017
2018#define MAX_VSIM_PROFILE_NUM 2
2019#define DF_META_DATA_LEN 23
2020#define EF_META_DATA_LEN 15
2021#define EF_FILE_DATA_START sizeof(UimVsimFileMetaT)
2022
2023typedef struct
2024{
2025 kal_uint8 fcp_length;
2026 kal_uint8 fcp_tmp[31];
2027}UimVsimFileMetaT;
2028
2029typedef struct
2030{
2031 UimVsimFileMetaT meta_data;
2032 kal_uint8 current_file_idx[2];
2033 kal_uint8 sim_status[DF_META_DATA_LEN]; /* Store SIM status of current DF */
2034}VsimUimCardContextT;
2035
2036typedef struct
2037{
2038 /* The first 32 bytes */
2039 kal_uint8 fcp_length;
2040 kal_uint8 fcp_tmp[95];
2041 /* ------32 bytes ------ */
2042}CsimVsimFileMetaT;
2043
2044typedef struct
2045{
2046 CsimVsimFileMetaT meta_data;
2047 kal_uint8 aid_len;
2048 kal_uint8 aid[16];
2049 kal_uint8 csim_status_len; /* Store USIM status len*/
2050 kal_uint8 csim_status[95]; /* Store USIM status*/
2051}VsimCsimCardContextT;
2052
2053typedef struct
2054{
2055 kal_bool vsimIsOn;
2056 kal_uint8 usedProfileIdx;
2057 c2kVsimProfileT profile[MAX_VSIM_PROFILE_NUM];
2058 VsimUimCardContextT uimCardInfo;
2059 VsimCsimCardContextT csimCardInfo;
2060}UimVsimContextT;
2061
2062typedef struct
2063{
2064 kal_bool is_imsi_valid;
2065 kal_uint8 imsi[9];
2066 kal_bool is_ad_valid;
2067 kal_uint8 ad[4];
2068}uim_gsm_file_info_struct;
2069
2070typedef enum
2071{
2072 UIM_CARD_MTS = 1,
2073 UIM_CARD_TATA,
2074 UIM_CARD_RELIANCE,
2075 UIM_CARD_CARRIER_INVALID
2076}UimCarrierT;
2077
2078
2079extern UimCardTypeT UimGetCardType(void);
2080extern UimCarrierT UimGetCardCaiier(void);
2081extern kal_uint8* UimGetCsimAid(void);
2082extern kal_bool UimIsOmhCard(void);
2083extern kal_bool UimNeedUnlockTestSim(void);
2084
2085#ifdef MTK_PLT_ON_PC
2086extern void UimSetCardType(UimCardTypeT type);
2087#endif
2088
2089extern kal_bool cuim_is_dual_sim_mode(void);
2090
2091#define CARD_IS_UICC() ((sbp_query_md_feature_data_for_c2k(SBP_DATA_RUIM) != SBP_RUIM_DISABLED) && ((UimGetCardType() & (UICC_CARD)) == UICC_CARD))
2092#define CARD4CDMA_IS_UICC() ((sbp_query_md_feature_data_for_c2k(SBP_DATA_RUIM) != SBP_RUIM_DISABLED) && ((UimGetCardType() & (UICC_CARD)) == UICC_CARD))
2093#define CARD_IS_OMH() (UimIsOmhCard() == KAL_TRUE)
2094#define IsUsimCard ((UimGetCardType() & (USIM_CARD)) == USIM_CARD)
2095
2096#ifdef __cplusplus
2097extern "C" {
2098#endif
2099
2100#define UiccDbmIsUimModeDisabled() UimDbmIsUimModeDisabled()
2101extern kal_bool UimDbmIsUimModeDisabled(void);
2102
2103#ifdef __cplusplus
2104}
2105#endif
2106#endif /* UIMAPI_H */
2107/**Log information: \main\4 2012-04-06 05:34:47 GMT pzhang
2108** modify contact uim interface**/
2109/**Log information: \main\SMART\1 2013-04-22 02:37:48 GMT shirleyli
2110** HREF#22159:add function UimGetCSTValueByIndex into INC file for CSS access**/
2111/**Log information: \main\Trophy\Trophy_mwang_href22200\1 2013-05-09 02:54:33 GMT mwang
2112** HREF#22200:Add the support for CT UICC card.**/
2113/**Log information: \main\Trophy\2 2013-05-09 03:14:40 GMT cshen
2114** href#22200**/
2115/**Log information: \main\Trophy\Trophy_xjyang_href22322\1 2013-12-03 07:25:53 GMT xjyang
2116** href#22322 Ôö¼ÓUICCÀàÐÍ**/
2117/**Log information: \main\Trophy\3 2013-12-03 07:33:28 GMT cshen
2118** href#22322**/
2119/**Log information: \main\Trophy\Trophy_yzhang_href22324\1 2013-12-05 09:30:45 GMT yzhang
2120** HREF#22324:India MTS/TATA ESN Tracking SMS requirement**/
2121/**Log information: \main\Trophy\4 2013-12-06 02:32:21 GMT cshen
2122** href#22324**/
2123/**Log information: \main\Trophy\Trophy_xding_href22331\1 2013-12-10 07:18:06 GMT xding
2124** HREF#22331, ºÏ²¢MMCÏà¹Ø¹¦Äܵ½Trophy baselineÉÏ**/
2125/**Log information: \main\Trophy\5 2013-12-10 08:33:44 GMT jzwang
2126** href#22331:Merge MMC latest implementation from Qilian branch.**/
2127/**Log information: \main\Trophy\Trophy_xjyang_href22336\1 2013-12-23 02:32:17 GMT xjyang
2128** HREF#22336**/
2129/**Log information: \main\Trophy\6 2013-12-23 02:48:23 GMT cshen
2130** href#22336**/
2131/**Log information: \main\Trophy\9 2014-01-17 10:10:39 GMT xxing
2132** HREF#22414**/
2133