[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6
MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF modem version: NA
Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/interface/protocol/l4_c2k/valuimapi.h b/mcu/interface/protocol/l4_c2k/valuimapi.h
new file mode 100644
index 0000000..e8e5073
--- /dev/null
+++ b/mcu/interface/protocol/l4_c2k/valuimapi.h
@@ -0,0 +1,1784 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2016
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2005-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef VALUIMAPI_H
+#define VALUIMAPI_H
+/*****************************************************************************
+
+ FILE NAME: valuimapi.h
+
+ DESCRIPTION:
+
+ This file contains all constants and typedefs needed by
+ valuimapi.c. It provides the main UIM functions to VAL layer.
+
+
+*****************************************************************************/
+#include "uimapi.h"
+#include "valapi.h"
+#include "valphbapi.h"
+#include "valsmsapi.h"
+#ifdef MTK_DEV_C2K_IRAT
+#include "valutkapi.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define VAL_CHV_MAX_INPUT_NUM 3
+#define VAL_CHV_UNBLOCK_MAX_INPUT_NUM 10
+#define VAL_UIM_MAX_REG_IDS 2
+#define VAL_UIM_MAX_MDN_COUNT 10
+#ifdef MTK_CBP
+/* according to 3.4.34 of TIA/EIA-95-B of C.S0023 */
+#define VAL_MAX_DIGITS_IN_EF_MDN 15
+
+#define VAL_UIM_MAX_FULLPATH_LENGTH 8
+#define VAL_UIM_MAX_RECORD_NUM 20
+
+#define VAL_UIM_ICCID_LEN 21
+#endif
+#define VAL_UIM_MAX_SMSVP_COUNT 4
+
+/* CHV Status read from UIM card */
+typedef struct
+{
+ CardStatusT CardStatus;
+ ChvStatusT ChvStatus;
+#ifdef MTK_DEV_C2K_IRAT
+ kal_bool UsimAppExisted;
+#endif
+ kal_uint8 ChvSum; /* Sum of CHV attempt */
+ kal_uint8 PukSum; /* Sum of UNBLOCK CHV attempt */
+ kal_uint8 Chv1LeftCount;
+ kal_uint8 Chv2LeftCount;
+ kal_uint8 Puk1LeftCount;
+ kal_uint8 Puk2LeftCount;
+#ifdef __CARRIER_RESTRICTION__
+ kal_uint8 SlotId;
+#endif
+} ValChvStatusT;
+
+typedef struct
+{
+ kal_bool AppInfoValid;
+ kal_uint8 Channel_Id;
+ kal_uint8 Protocol_Id;
+ kal_uint8 AID_Len;
+ kal_uint8 AID[UICC_AID_MAX_LEN];
+ kal_uint8 APP_Label_Len;
+ kal_uint8 APP_Label[UICC_APP_LABEL_LEN];
+ kal_bool PIN1_Enabled;
+ kal_bool PIN2_Enabled;
+ kal_uint8 PIN1_Count;
+ kal_uint8 PIN2_Count;
+ kal_uint8 PUK1_Count;
+ kal_uint8 PUK2_Count;
+ kal_uint8 ChvStatus;
+#ifdef __CARRIER_RESTRICTION__
+ kal_uint8 SlotId;
+#endif
+ kal_uint16 CardStatus;
+}ValCardAppInfoT;
+
+#ifdef MTK_DEV_C2K_IRAT
+extern kal_uint8 ValUimInfoReadStatus;
+
+#define VAL_UIM_SP_NAME_READ_MASK 0x01
+#define VAL_UIM_MDN_READ_MASK 0x02
+#define VAL_UIM_ICCID_READ_MASK 0x04
+#define VAL_UIM_NAM_DATA_READ_MASK 0x08
+#define VAL_UIM_INFO_ALL_READ_MASK 0x0F
+
+#define UIM_UTK_MENU_SIZE 256
+
+typedef enum
+{
+ VAL_UTK_SMS_FILE_COMPLETED = 0x1,
+ VAL_UTK_HLP_FILE_COMPLETD = 0x2,
+ VAL_UTK_ALL_FILE_COMPLETED_MASK = 0x3
+}ValUimUtkFileMaskTypeT;
+
+typedef enum
+{
+ VAL_CAT_TYPE_STK,
+ VAL_CAT_TYPE_UTK,
+ VAL_CAT_TYPE_NUM
+} ValCatTypeE;
+
+typedef enum
+{
+ VAL_UTK_HANDLE_BY_TE, /* CMD and TR handled by AP/MMI */
+ VAL_UTK_HANDLE_BY_SIM, /* CMD and TR handled by modem. But some cmd might need TE involve ex: STKCALL,STKSS,.. */
+ VAL_UTK_HANDLE_NULL
+}ValUtkCmdCfgE;
+
+typedef enum
+{
+ UTK_NO_TIMER_STATUS = 0,
+ UTK_TIMER_RUNNING,
+ UTK_TIMER_NOT_RUNNING,
+ UTK_TIMER_STOPPED,
+ UTK_TIMER_TIMED_OUT
+} UtkTimerStatusT;
+
+typedef struct
+{
+ kal_uint32 UtkTimerValue;
+ UtkTimerStatusT UtkTimerStatus;
+ kal_uint32 StartTime;
+}UtkTimerManagerT;
+
+
+enum
+{
+ UTK_FILE_ADN = 0x6F3A,
+ UTK_FILE_FDN = 0x6F3B,
+ UTK_FILE_SMS = 0x6F3C,
+ UTK_FILE_SPN = 0x6F41,
+ UTK_FILE_MDN = 0x6F44,
+ UTK_FILE_CST = 0x6F32,
+ UTK_FILE_EST = 0x6F75,
+ UTK_FILE_ICCID = 0x2FE2,
+ UTK_FILE_HRPDCAP = 0x6F56,
+ UTK_FILE_HRPDUPP = 0x6F57,
+ UTK_FILE_ME3GPD = 0x6F48,
+ UTK_FILE_3GPDOPM = 0x6F49,
+ UTK_FILE_SIPCAP = 0x6F4A,
+ UTK_FILE_MIPCAP = 0x6F4B,
+ UTK_FILE_SIPUPP = 0x6F4C,
+ UTK_FILE_MIPUPP = 0x6F4D,
+ UTK_FILE_SIPSP = 0x6F4E,
+ UTK_FILE_MIPSP = 0x6F4F,
+ UTK_FILE_SIPPAPSS = 0x6F50,
+ UTK_FILE_MIPFLAGS = 0x6F78,
+ UTK_FILE_C_MIPFLAGS = 0x6F84,
+ UTK_FILE_SIPUPPEXT = 0x6F7D,
+ UTK_FILE_MIPUPPEXT = 0x6F80,
+ UTK_FILE_TCPCONFIG = 0x6F79,
+ UTK_FILE_C_TCPCONFIG = 0x6F88,
+ UTK_FILE_DGC = 0x6F7A,
+ UTK_FILE_C_DGC = 0x6F89,
+ UTK_FILE_IPV6CAP = 0x6F77,
+ UTK_FILE_C_IPV6CAP = 0x6F87
+ /* add other files here */
+};
+
+#define VAL_UIM_FILE_LIST_MAX 50
+
+typedef struct
+{
+ kal_uint8 FileCount;
+ kal_uint16 FileId[VAL_UIM_FILE_LIST_MAX];
+}ValUimFileListT;
+
+#endif
+
+/* Define CHV type */
+typedef enum
+{
+ VAL_CHV1 = 1,
+ VAL_CHV2
+} ValChvIdT;
+
+/* Define CHV operation response result */
+typedef enum
+{
+ VAL_CHV_OP_SUCCESS = 0,
+ VAL_CHV_NOT_INITIALIZE, /* no CHV initialized */
+ VAL_CHV_OP_FAILURE_AND_PERMIT_ATTEMPT, /* unsuccessful CHV/UNBLOCK CHV verification, at least one attempt left */
+ VAL_CHV_OP_CONTRADICTION_WITH_CHV_STATUS, /* in contradiction with CHV status */
+ VAL_CHV_OP_CONTRADICTION_WITH_INVALIDATION_STATE, /* in contradiction with invalidation status */
+ VAL_CHV_OP_FAILURE_AND_NO_ATTEMPT, /*unsuccessful CHV/UNBLOCK CHV verification, no attempt left;CHV/UNBLOCK CHV blocked*/
+ VAL_CHV_OP_FAILURE_RECOVERY, /*fast recovery during CHV process*/
+ VAL_CHV_FAILURE_INSUFFICIENT_MEMORY, /* UICC returns 9210 for CHV command*/
+ VAL_CHV_OP_FAILURE /*failure caused by other causes */
+} ValChvOpResultT;
+
+#ifdef CHV_DEBUG
+/* test message */
+typedef struct
+{
+ kal_uint8 ChvId; /* Specify the CHV */
+ kal_uint8 ChvLen;
+ kal_uint8 ChvVal[8]; /* CHV value */
+} ValChvTstReqVerifyMsgT;
+/* change CHV msg */
+typedef struct
+{
+ kal_uint8 ChvId; /* Specify the CHV */
+ kal_uint8 OldChvLen;
+ kal_uint8 OldChvVal[8];/* Old CHV value */
+ kal_uint8 NewChvLen;
+ kal_uint8 NewChvVal[8];/* New CHV value */
+} ValChvTstReqChangeMsgT;
+
+/* Disable CHV Msg */
+typedef struct
+{
+ kal_uint8 ChvLen;
+ kal_uint8 Chv1Val[8]; /* CHV1 value */
+} ValChvTstReqDisableMsgT;
+
+/* Enable CHV Msg */
+typedef struct
+{
+ kal_uint8 ChvLen;
+ kal_uint8 Chv1Val[8]; /* CHV1 value */
+} ValChvTstReqEnableMsgT;
+
+/* Unblock CHV Msg */
+typedef struct
+{
+ kal_uint8 ChvId; /* Specify the CHV */
+ kal_uint8 UblkChvLen;
+ kal_uint8 UblkChvVal[8];/* Unblock CHV value */
+ kal_uint8 NewChvLen;
+ kal_uint8 NewChvVal[8]; /* New CHV value */
+} ValChvTstReqUnblockMsgT;
+
+#endif /* CHV_DEBUG */
+
+/*********UIM Short Message Service Parameters structure***********/
+typedef struct
+{
+ kal_uint8 RecLen;
+ kal_uint8 RecData[127];
+}ValUimSmsParamRecT;
+
+/******************** UIM MDN structures***************************/
+/* Val MDN buffer structure(MDN is BCD type) */
+typedef struct
+{
+ kal_uint8 MdnLen;
+ kal_uint8 Mdn[8];
+} ValUimMdnT;
+
+/* Val MDN structure(MDN is kal_char type) */
+typedef struct
+{
+ kal_uint8 MdnLen;
+ kal_uint8 Mdn[NAM_MAX_MDN_DIGITS];
+} ValUimMdnRecT;
+
+/****** Val Uim notify register event *****/
+typedef enum
+{
+ VAL_UIM_EVENT_NOTIFY_REGISTER
+} ValUimEventIdT;
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* ETS Test Messages */
+typedef struct
+{
+ kal_uint8 nIndex;
+} ValUimGenericMsgT;
+
+typedef struct
+{
+ kal_uint8 nIndex;
+ kal_uint8 Name[MAXALPHALENGTH];
+ kal_uint8 PhNum[21];
+} ValUimUpdatePhbRecMsgT;
+
+typedef struct
+{
+ kal_uint8 nIndex;
+ kal_uint8 nStatus;
+ kal_uint8 MsgData[255];
+ kal_uint8 MsgLen;
+} ValUimUpdateSmsRecMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+} ValChvMsgT;
+
+typedef struct
+{
+ kal_bool status;
+} ValChvStatusMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 ChvId;
+ kal_uint8 ChvLen;
+ kal_uint8 Chv[8];
+} ValChvVerifyMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 ChvId;
+ kal_uint8 OldChvLen;
+ kal_uint8 OldChv[8];
+ kal_uint8 NewChvLen;
+ kal_uint8 NewChv[8];
+} ValChvChangeMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 Chv1Len;
+ kal_uint8 Chv1[8];
+} ValChvEnableDisableMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 ChvId;
+ kal_uint8 UnblockChvLen;
+ kal_uint8 UnblockChv[8];
+ kal_uint8 NewChvLen;
+ kal_uint8 NewChv[8];
+} ValChvUnblockMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+} ValUimGetMaxMdnRecsMsgT;
+
+typedef struct
+{
+ kal_uint8 numRecs;
+} ValUimNumRecsMsgT;
+
+typedef struct
+{
+ kal_uint8 Encoding;
+ kal_uint8 Language;
+ kal_uint16 StringLen;
+ kal_char String[32];
+} SPNameT;
+
+typedef struct
+{
+ SPNameT SPName;
+ kal_bool IsValidData;
+} ValSPNameT;
+
+
+/*get gsm imsi data*/
+#define VAL_UIM_GSM_IMSI_LEN 9
+
+typedef struct
+{
+ ExeRspMsgT RspMsg;
+ kal_bool ImsiValid;
+ kal_uint8 ImsiData[VAL_UIM_GSM_IMSI_LEN];
+}ValUimGsmImsiRspMsgT;
+
+typedef enum
+{
+ TYPE_RAND = 0,
+ TYPE_RANDU =1
+}ValRandTypeT;
+
+typedef enum
+{
+ VAL_UIM_NT_UNKNOWN = 0,
+ VAL_UIM_NT_INTERNATIONAL,
+ VAL_UIM_NT_NATIONAL,
+ VAL_UIM_NT_NETWORK_SPECIFIC,
+ VAL_UIM_NT_SUBSCRIBER,
+ VAL_UIM_NT_RESERVED,
+ VAL_UIM_NT_ABBREVIATED = 6
+} ValUimNumberTypeT;
+
+typedef enum
+{
+ VAL_UIM_NP_UNKNOWN = 0,
+ VAL_UIM_NP_ISDN_TELEPHONY,
+ VAL_UIM_NP_RESERVED2,
+ VAL_UIM_NP_DATA,
+ VAL_UIM_NP_TELEX,
+ VAL_UIM_NP_RESERVED5,
+ VAL_UIM_NP_RESERVED6,
+ VAL_UIM_NP_RESERVED7,
+ VAL_UIM_NP_RESERVED8,
+ VAL_UIM_NP_PRIVATE = 9
+} ValUimNumberPlanT;
+
+typedef enum
+{
+ VAL_UIM_READ_BINARY = 0xB0,
+ VAL_UIM_READ_RECORD = 0xB2,
+ VAL_UIM_UPDATE_BINARY = 0xD6,
+ VAL_UIM_UPDATE_RECORD = 0xDC,
+ VAL_UIM_STORE_ESN = 0xDE,
+ VAL_UIM_STATUS = 0xF2,
+ VAL_UIM_ENVELOPE = 0xC2,
+ VAL_UIM_TERM_PROFILE = 0x10,
+ VAL_UIM_TERM_RESPONSE = 0x14,
+ VAL_UIM_SELECT_FILE = 0xA4,
+ VAL_UIM_GET_RESPONSE = 0xC0,
+ VAL_UIM_SEARCH_RECORD = 0xA2
+ /* Reserved */
+}ValUimCmdT;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef enum
+{
+ VAL_UIM_BT_CONNECT = 0,
+ VAL_UIM_BT_DISCONNECT,
+ VAL_UIM_BT_POWER_ON,
+ VAL_UIM_BT_POWER_OFF,
+ VAL_UIM_BT_RESET,
+ VAL_UIM_BT_APDU,
+ VAL_UIM_BT_INVALID_CMD
+}ValBTCmdT;
+#endif
+
+typedef struct
+{
+ kal_bool Ack; /* KAL_TRUE: Operation is successful, KAL_FALSE: File doesn't exist or operation is error */
+ kal_uint8 SDNRecCount;
+} ValUimSDNParamsT;
+
+typedef struct
+{
+ kal_bool Ack; /* KAL_TRUE: Operation is successful, KAL_FALSE: File doesn't exist or operation is error */
+ kal_bool IsFree;
+ kal_uint8 RecordIndex;
+ kal_uint8 AlphaIdentifier[VAL_PHB_MAX_ALPHA_LENGTH];
+ kal_uint8 PhoneNumber[VAL_PHB_MAX_PHONE_LENGTH];
+ kal_uint8 TON;
+ kal_uint8 NPI;
+} ValUimSDNRecT;
+
+typedef struct
+{
+ kal_uint8 DisCond; /*display condiction*/
+ kal_uint8 Encoding; /* character encoding*/
+ kal_uint8 LangInd; /*language indication */
+ kal_uint8 Name[32];
+} ValUimProviderName;
+
+#define VAL_UIM_MAX_ADDRESS_NUM 20
+/* Address (8.1) */
+typedef struct
+{
+ ValUimNumberPlanT Npi;
+ ValUimNumberTypeT Ton;
+ kal_uint8 Len;
+ kal_uint8 Number[VAL_UIM_MAX_ADDRESS_NUM];
+} ValUimAddressT;
+
+typedef enum
+{
+ VAL_UIM_SETUP_CALL_ONIDLE, /* set up call, but only if not currently busy on another call */
+ VAL_UIM_SETUP_CALL_ONIDLE_REDIALABLE, /*set up call, but only if not currently busy on another call, with redial*/
+ VAL_UIM_SETUP_CALL_HOLDABLE, /*set up call, putting all other calls (if any) on hold */
+ VAL_UIM_SETUP_CALL_HOLDABLE_REDIALABLE, /*set up call, putting all other calls (if any) on hold, with redial*/
+ VAL_UIM_SETUP_CALL_DISCONNECTABLE, /*set up call, disconnecting all other calls (if any)*/
+ VAL_UIM_SETUP_CALL_DISCONNECTABLE_REDIALABLE /*set up call, disconnecting all other calls (if any), with redial*/
+} ValUimCallTypeT;
+
+typedef struct
+{
+ ValUimCallTypeT CallType;
+ ValUimAddressT Address;
+ kal_uint32 Duration; /* ms */
+}ValUimSetUpCallT;
+
+typedef struct
+{
+ kal_uint8 UtkSmsLen;
+ kal_uint8 *UtkSmsBufferP;
+ kal_uint8 UtkSmsTR;
+ ValUimAddressT UtkSmsAddress;
+ kal_bool additionInfo_existed;
+ kal_uint8 additionalInfo;
+ kal_bool utkIconDisplayed;
+ kal_uint8 utkSmsMode;
+}utkSmsInfoT;
+
+typedef struct
+{
+ ValUimSetUpCallT utkCallCmd;
+ kal_uint8 utkCallTR;
+ kal_bool additionInfo_existed;
+ kal_uint8 additionalInfo;
+ kal_bool utkIconDisplayed;
+ kal_uint8 rspAtChan;
+}utkCallInfoT;
+
+#if defined (__TC10__) && defined (__TC10_IPC_CDMA_SUPPORT__)
+typedef enum{
+ UTK_PROA_STATE_NULL,
+ UTK_PROA_STATE_WAITING_TR,
+ UTK_PROA_STATE_WAITING_SESSION_END
+}UtkProacmStateE;
+#endif
+
+typedef struct
+{
+ ValCatTypeE CatType;
+ kal_uint8 StoredUtkMenu[UIM_UTK_MENU_SIZE];
+ kal_uint16 UtkMenuLen;
+
+ kal_uint16 CmdId; /*defined by MD1*/
+ kal_uint8 CmdNum;
+ kal_uint8 CmdType;
+ kal_uint8 CmdQualifier;
+ UtkTimerManagerT UtkTimerManager[UTK_TIMER_MANAGER_NUM];
+ kal_timerid UtkTimer[UTK_TIMER_MANAGER_NUM];
+ kal_bool RecvTerminalRspFromAp;
+ utkSmsInfoT utkSmsInfo;
+ utkCallInfoT utkCallInfo;
+#if defined (__TC10__) && defined (__TC10_IPC_CDMA_SUPPORT__)
+ UtkProacmStateE proactiveCmdState;
+ kal_uint8 currProactiveCmd;
+ kal_bool pendEvtDownloadDataValid;
+ ValUtkSetupEventDataT pendEvtDownloadData;
+#endif
+}ValUimUtkInfoT;
+
+typedef enum
+{
+
+ UIM_FILE_TYPE_INVALID = 0x00,
+ UIM_FILE_TYPE_MF,
+ UIM_FILE_TYPE_DF,
+ UIM_FILE_TYPE_EF,
+ UIM_FILE_TYPE_EF_TRANSPARENT,
+ UIM_FILE_TYPE_EF_CYCLIC,
+ UIM_FILE_TYPE_EF_LINEARFIXED,
+} UimFileTypeT;
+
+typedef struct
+{
+ kal_uint16 sw;
+ kal_uint8 file_fcp_len;
+ kal_uint8* file_fcp;
+}ValCacheFcpInfoT;
+
+typedef struct
+{
+ kal_bool binary_valid;
+ kal_uint16 sw;
+ kal_uint16 cached_binary_len;
+ kal_uint8* cached_binary_content;
+}ValCacheBinaryInfoT;
+
+typedef struct
+{
+ kal_bool record_valid;
+ kal_uint8 record_index;
+ kal_uint8 record_len;
+ kal_uint16 sw;
+ kal_uint8* record_data;
+}ValCacheRecordInfoT;
+
+typedef struct
+{
+ kal_uint8 file_record_num;
+ ValCacheRecordInfoT cached_record_content[VAL_UIM_MAX_RECORD_NUM]; /*first two bytes for SW*/
+}ValCacheRecordInfoListT;
+
+
+typedef struct
+{
+ kal_bool is_used;
+ UimFileTypeT file_type;
+ kal_uint8 file_path_len;
+ kal_uint8 file_path[VAL_UIM_MAX_FULLPATH_LENGTH];
+ kal_bool file_fcp_valid;
+ ValCacheFcpInfoT fcp_info;
+ union
+ {
+ ValCacheBinaryInfoT binary_info;
+ ValCacheRecordInfoListT record_info;
+ } file_content_info;
+}ValCacheUimFileT;
+
+typedef struct
+{
+ kal_uint16 PduLen;
+ kal_uint8* PduData;
+}ValExtendedPduT;
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimInit
+
+ DESCRIPTION:
+
+ Create ValUimEvtLock.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ None
+
+*****************************************************************************/
+void ValUimInit( void );
+
+#if 0
+/* under construction !*/
+#endif
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimGetMaxMdnRecNum
+
+ DESCRIPTION:
+
+ It's invoked to Get the number of EF MDN record in UIM card.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ Num: the number of MDN record.
+
+*********************************************************************************/
+kal_uint8 ValUimGetMaxMdnRecNum( void );
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimGetMdnRec
+
+ DESCRIPTION:
+
+ It's invoked to Get MDN record.
+
+ PARAMETERS:
+
+ Index: Record index, start from 1.
+ MdnRecP: Returned Mdn pointer.
+
+ RETURNED VALUES:
+
+ KAL_TRUE: this operation is successful.
+ KAL_FALSE: failure.
+
+*********************************************************************************/
+kal_bool ValUimGetMdnRec( kal_uint8 Index,
+ ValUimMdnRecT* MdnRecP );
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimUpdateMdnRec
+
+ DESCRIPTION:
+
+ This routine sends Update Record(6F44) message to the UIM task.
+ PARAMETERS:
+
+ Index: Record index, start from 1.
+ Len: MDN length
+ MdnP: Point to MDN buffer.
+
+ RETURNED VALUES:
+
+ KAL_TRUE: this operation is successful.
+ KAL_FALSE: failure.
+
+*********************************************************************************/
+kal_bool ValUimUpdateMdnRec( kal_uint8 Index,
+ kal_uint8 Len,
+ kal_uint8* MdnP );
+
+/*********************************************************************************
+
+ FUNCTION NAME: ValUimDelMdnRec
+
+ DESCRIPTION:
+
+ This routine sends Update Record(6F44) message to the UIM task.
+
+ PARAMETERS:
+
+ Index: Record index, start from 1.
+
+ RETURNED VALUES:
+
+ KAL_TRUE: this operation is successful.
+ KAL_FALSE: failure.
+
+**********************************************************************************/
+kal_bool ValUimDelMdnRec( kal_uint8 Index );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimMdnDeliverMsg
+
+ DESCRIPTION:
+
+ Deliver UIM MDN response messages. It is used by valtask.
+
+ PARAMETERS:
+
+ MsgId: received message id
+ MsgP: message
+ MsgSize: message size
+
+ RETURNED VALUES:
+
+ None
+
+*****************************************************************************/
+void ValUimMdnDeliverMsg( kal_uint32 MsgId,
+ void* MsgP,
+ kal_uint32 MsgSize );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValChvGetStatus
+
+ DESCRIPTION:
+
+ This routine sends UIM Get Status message to the UIM task, and saves callback
+ function's pointer in order to process CHV state when the response from the
+ UIM is received.
+
+ PARAMETERS:
+
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Get Status Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValChvGetStatus( void(*ChvCallbackP)(ValChvStatusT) );
+
+#ifdef MTK_DEV_C2K_IRAT
+/*****************************************************************************
+
+ FUNCTION NAME: ValLocalChvVerify
+
+ DESCRIPTION:
+
+ This routine sends verify CHV message to the UIM task
+
+ PARAMETERS:
+
+ ChvId: CHV1 or CHV2
+
+ RETURNED VALUES:
+
+ none
+
+*****************************************************************************/
+void ValLocalChvVerify( ValChvIdT ChvId);
+#endif
+/*****************************************************************************
+
+ FUNCTION NAME: ValChvVerify
+
+ DESCRIPTION:
+
+ This routine sends App verify CHV message to the UIM task, and saves callback
+ function's pointer in order to process the result when the response from the
+ UIM is received.
+
+ PARAMETERS:
+
+ ChvId: CHV1 or CHV2
+ ChvLen: Length of CHV value
+ ChvP: Pointer to CHV value
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Uim App Verify Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValChvVerify( ValChvIdT ChvId,
+ kal_uint8 ChvLen,
+ kal_uint8* ChvP,
+ void (*ChvCallbackP)(ValChvOpResultT) );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValChvChange
+
+ DESCRIPTION:
+
+ This routine sends App change CHV message to the UIM task, and saves callback
+ function's pointer in order to process the result when the response from the
+ UIM is received.
+
+ PARAMETERS:
+
+ ChvId: CHV1 or CHV2
+ OldChvLen: Length of old CHV value
+ OldChvP: Pointer to old CHV value
+ NewChvLen: Length of new CHV value
+ NewChvP: Pointer to new CHV value
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Uim App change Chv Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValChvChange( ValChvIdT ChvId,
+ kal_uint8 OldChvLen,
+ kal_uint8* OldChvP,
+ kal_uint8 NewChvLen,
+ kal_uint8* NewChvP,
+ void (*ChvCallbackP)(ValChvOpResultT) );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValChvDisable
+
+ DESCRIPTION:
+
+ This routine sends App disable CHV message to the UIM task, and saves callback
+ function's pointer in order to process the result when the response from
+ the UIM is received.
+
+ PARAMETERS:
+
+ Chv1Len: Length of CHV1 value
+ Chv1P: Pointer to CHV1 value
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Uim App Disable Chv Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValChvDisable( kal_uint8 Chv1Len,
+ kal_uint8* Chv1P,
+ void (*ChvCallbackP)(ValChvOpResultT) );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValChvEnable
+
+ DESCRIPTION:
+
+ This routine sends App enable CHV message to the UIM task, and saves callback
+ function's pointer in order to process the result when the response from
+ the UIM is received.
+
+ PARAMETERS:
+
+ Chv1Len: Length of CHV1 value
+ Chv1P: Pointer to CHV1 value
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Uim App Enable Chv Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValChvEnable( kal_uint8 Chv1Len,
+ kal_uint8* Chv1P,
+ void (*ChvCallbackP)(ValChvOpResultT) );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimEnableChvBySimIndex
+
+ DESCRIPTION:
+ Send Enable CHV to UIM.
+
+*****************************************************************************/
+kal_bool ValUimEnableChvBySimIndex(kal_uint8 chan,
+ kal_uint8 simIndex,
+ kal_uint8 Chv1Len,
+ kal_uint8* Chv1P);
+
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimDisableChvBySimIndex
+
+ DESCRIPTION:
+ Send Disable CHV to UIM.
+
+*****************************************************************************/
+kal_bool ValUimDisableChvBySimIndex(kal_uint8 chan,
+ kal_uint8 simIndex,
+ kal_uint8 Chv1Len,
+ kal_uint8* Chv1P);
+
+
+
+
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimUnblockChvBySimIndex
+
+ DESCRIPTION:
+ Send Unblock CHV to UIM.
+
+ PARAMETERS:
+
+ ChvId: CHV1 or CHV2
+ UnblockChvLen: Length of UNBLOCK CHV value
+ UnblockChvP: Pointer to UNBLOCK CHV value
+ NewChvLen: Length of new CHV value
+ NewChvP: Pointer to new CHV value
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Uim App Unbolck chv Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValUimUnblockChvBySimIndex(kal_uint8 chan,
+ kal_uint8 simIndex,
+ ValChvIdT ChvId,
+ kal_uint8 UnblockChvLen,
+ kal_uint8* UnblockChvP,
+ kal_uint8 NewChvLen,
+ kal_uint8* NewChvP);
+
+
+
+/*****************************************************************************
+
+ FUNCTION NAME: ChvUnblock
+
+ DESCRIPTION:
+
+ This routine sends App unblock CHV message to the UIM task, and saves callback
+ function's pointer in order to process the result when the response from
+ the UIM is received.
+
+ PARAMETERS:
+
+ ChvId: CHV1 or CHV2
+ UnblockChvLen: Length of UNBLOCK CHV value
+ UnblockChvP: Pointer to UNBLOCK CHV value
+ NewChvLen: Length of new CHV value
+ NewChvP: Pointer to new CHV value
+ ChvCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: Uim App Unblock Chv Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValChvUnblock( ValChvIdT ChvId,
+ kal_uint8 UnblockChvLen,
+ kal_uint8* UnblockChvP,
+ kal_uint8 NewChvLen,
+ kal_uint8* NewChvP,
+ void (*ChvCallbackP)(ValChvOpResultT) );
+
+/********************************************************************************
+ FUNCTION NAME: ValUimSPNameInit
+ DESCRIPTION:
+ This routine initiates the procedure of reading
+ service provider name parameters of the UIM.
+ PARAMETERS:
+ UimCallbackP: Pointer to callback function
+ RETURNED VALUES:
+ KAL_TRUE: Uim read sp name Msg has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+*********************************************************************************/
+kal_bool ValUimSPNameInit(void (*UimCallbackP)(void *));
+/*****************************************************************************
+
+ FUNCTION NAME: ValChvDeliverMsg
+
+ DESCRIPTION:
+
+ Deliver CHV response message. It is used by valtask.
+
+ PARAMETERS:
+
+ MsgId: received message id
+ MsgP: message
+ MsgSize: message size
+
+ RETURNED VALUES:
+
+ None
+
+*****************************************************************************/
+void ValChvDeliverMsg( kal_uint32 MsgId,
+ void* MsgP,
+ kal_uint32 MsgSize );
+
+void ValUimDeliverMsg( kal_uint32 MsgId,
+ void* MsgP,
+ kal_uint32 MsgSize );
+
+#ifdef __CARRIER_RESTRICTION__
+void ValUmlDeliverMsg( kal_uint32 MsgId,
+ void* MsgP );
+#endif
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimNotifyInit
+
+ DESCRIPTION:
+
+ Create ValUimNotifyEventLock.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ None
+
+*****************************************************************************/
+void ValUimNotifyInit( void );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimRegister
+
+ DESCRIPTION:
+
+ Other task invokes this function to register UIM message functions
+ in Val task.
+
+ PARAMETERS:
+ EventFunc: Callback function
+
+ RETURNED VALUES:
+
+ TRegister ID
+ -1: failed.
+
+*****************************************************************************/
+RegIdT ValUimRegister( ValEventFunc EventFunc );
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimUnregister
+
+ DESCRIPTION:
+
+ Other task invokes this function to unregister UIM Notify Register message functions
+
+ PARAMETERS:
+ RegId: Register ID
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+void ValUimUnregister( RegIdT RegId );
+
+/* Val Uim Phb */
+
+void ValUimGetPhbRecParams( void );
+void ValUimGetPhbRecord( kal_uint8 nIndex );
+void ValUimUpdatePhbRecord( kal_uint8 nIndex,
+ kal_uint8* pName,
+#ifdef MTK_CBP
+ kal_uint8 name_len,
+#endif
+ kal_uint8* pPhNum,
+ ValUimNumberTypeT TON,
+ ValUimNumberPlanT NPI,
+ kal_bool isAtHcpbw);
+void ValUimErasePhbRecord( kal_uint8 nIndex , kal_bool isAtCpbw);
+
+/* Val Uim Sms */
+void ValUimGetSmsRecParams( void );
+void ValUimGetSmsRecord( kal_uint8 nIndex );
+void ValUimUpdateSmsRecord( kal_uint8 nIndex,
+ kal_uint8 nStatus,
+ kal_uint8* pMsgData,
+ kal_uint8 MsgLen );
+void ValUimEraseSmsRecord( kal_uint8 nIndex );
+kal_bool ValGetPrefLang(kal_uint8 *pLang, kal_uint8 *pEncoding);
+//don't modify following Function, brew has referred to it
+kal_bool ValGetUIMId(kal_uint32 *pId);
+
+void ValUimDataRequest( void );
+void ValUimIdEuimidRequest( void );
+void GetUimSPName(void * MsgP);
+void InitAfterPV();
+void ChvCGetStatusCB(ValChvStatusT resultStatus);
+void ValGetNewChvStatusCB(ValChvStatusT resultStatus);
+
+
+
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimSmsVPInit
+
+ DESCRIPTION:
+
+ This routine initiates the procedure of reading Sms parameters of the UIM.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ None.
+
+*********************************************************************************/
+void ValUimSmsVPInit(void);
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimGetSmsVPRecNumProcess
+
+ DESCRIPTION:
+
+ This routine processes VAL_UIM_GET_SMSVP_REC_NUM_MSG response message.
+
+ PARAMETERS:
+
+ RspMsgP: VAL_UIM_GET_SMSVP_REC_NUM_MSG response message structure pointer.
+
+ RETURNED VALUES:
+
+ None.
+
+*********************************************************************************/
+void ValUimGetSmsVPRecNumProcess(UimRspMsgT* RspMsgP);
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimGetMaxSmsVPRecNum
+
+ DESCRIPTION:
+
+ It's invoked to Get the number of SMS PARAMETER record in UIM card.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ Num: the number of SMS PARAMETER record.
+
+*********************************************************************************/
+kal_uint8 ValUimGetMaxSmsVPRecNum(void);
+
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimReadSmsVPProcess
+
+ DESCRIPTION:
+
+ This routine processes VAL_UIM_READ_SMSVP_REC_MSG response message.
+
+ PARAMETERS:
+
+ RspMsgP: VAL_UIM_READ_SMSVP_REC_MSG response message structure pointer.
+
+ RETURNED VALUES:
+
+ None.
+
+*********************************************************************************/
+void ValUimReadSmsVPProcess(UimRspMsgT* RspMsgP);
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimUpdateSMSVPProcess
+
+ DESCRIPTION:
+
+ This routine processes VAL_UIM_UPDATE_SMSVP_REC_MSG response message.
+
+ PARAMETERS:
+
+ RspMsgP: VAL_UIM_UPDATE_SMSVP_REC_MSG response message structure pointer.
+
+ RETURNED VALUES:
+
+ None.
+
+*********************************************************************************/
+void ValUimUpdateSMSVPProcess(UimRspMsgT* RspMsgP);
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimReadSmsVPRec
+
+ DESCRIPTION:
+
+ This routine sends Read Record(6F3D) message to the UIM task.
+
+ PARAMETERS:
+
+ index: Record index, start from 1.
+
+ Result:
+ this Read Record operation is successfully deliveried to UIM driver.
+
+*********************************************************************************/
+void ValUimReadSmsVPRec(kal_uint8 index);
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimUpdateSmsVPRec
+
+ DESCRIPTION:
+
+ This routine sends Update Record(6F3D) message to the UIM task.
+
+ PARAMETERS:
+
+ index: Record index, start from 1.
+ vp: Validity period inputed by client
+
+ RETURNED VALUES:
+
+ KAL_TRUE: this operation is successful to delivery to UIM driver.
+ KAL_FALSE: index is invalide parameter.
+
+*********************************************************************************/
+kal_bool ValUimUpdateSmsVPRec(kal_uint8 index,kal_uint8 vp);
+
+//don't modify following Function, brew has referred to it
+/********************************************************************************
+
+ FUNCTION NAME: ValUimGetMdnRec
+
+ DESCRIPTION:
+
+ It's invoked to SMS Validity Period .
+
+ PARAMETERS:
+
+ index: Record index, start from 1.
+ ptvp: point to the address that store the Validity Period.
+
+ RETURNED VALUES:
+
+ KAL_TRUE: this operation is successful.
+ KAL_FALSE: failure.
+
+*********************************************************************************/
+kal_bool ValUimGetSmsVPRec(kal_uint8 index, kal_uint8* ptvp);
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimRawCmd
+
+ DESCRIPTION:
+
+ It's invoked to send UIM raw command to UIM card.
+
+ PARAMETERS:
+
+ len: Raw command APDU length.
+ CmdApdu: pointer to command APDU.
+ RspInfo: Response message info.
+
+ RETURNED VALUES:
+
+ KAL_TRUE: this operation is successful.
+ KAL_FALSE: failure.
+
+*********************************************************************************/
+kal_bool ValUimRawCmd(kal_uint16 Len, kal_uint8 *CmdApdu, ExeRspMsgT* RspInfoP);
+
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimRunCave
+
+ DESCRIPTION:
+
+ It's invoked to send RUN CAVE command to UIM card.
+
+ PARAMETERS:
+
+ rand: rand value.
+ type: RAND or RANDU.
+ digitLen: digits length.
+ digit: digits, should be digit[6]
+ saveRegister: save registers or not.
+ esn: UimId(if UIM_ID is used for auth.), otherwise, If ME is
+ assigned with MEID,Pseudo-ESN value shall be used. if it's ESN ME
+ and esn is used for auth, esn should be used.
+ RspInfo: response info.
+ RETURNED VALUES:
+ None.
+
+*********************************************************************************/
+void ValUimRunCave(kal_uint32 rand, ValRandTypeT type, kal_uint8 digitLen, kal_uint8 *digit,
+ kal_bool saveRegister, kal_uint32 esn, ExeRspMsgT rspInfo);
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimGenKeyVPM
+
+ DESCRIPTION:
+
+ It's invoked to send Generate Key/VPM command to UIM card.
+
+ PARAMETERS:
+
+ cmeaKey: the pointer to cemakey[8] array
+ vpm: the pointer to VPM[65] array.
+ RETURNED VALUES:
+ None.
+
+ Notes: When Generate Key/VPM command is finished, cmeaKey and vpm will be written
+ by UIM task.
+
+*********************************************************************************/
+void ValUimGenKeyVPM(kal_uint8 *cmeaKey, kal_uint8 *vpm);
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimUpdateSSD
+
+ DESCRIPTION:
+
+ It's invoked to tell UIM do Update SSD operation.
+
+ PARAMETERS:
+
+ randssd: randssd.
+ esn: UimId(if UIM_ID is used for auth.), otherwise, If ME is
+ assigned with MEID,Pseudo-ESN value shall be used. if it's ESN ME
+ and esn is used for auth, esn should be used.
+ rspInfo: response info.
+ RETURNED VALUES:
+ None.
+
+*********************************************************************************/
+void ValUimUpdateSSD(kal_uint8 *randssd, kal_uint32 esn, ExeRspMsgT rspInfo);
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimConfirmSSD
+
+ DESCRIPTION:
+
+ It's invoked to send CONFIRM SSD command to UIM card.
+
+ PARAMETERS:
+
+ authBS: AuthBS.
+ esn: UimId(if UIM_ID is used for auth.), otherwise, If ME is
+ assigned with MEID,Pseudo-ESN value shall be used. if it's ESN ME
+ and esn is used for auth, esn should be used.
+ rspInfo: response info.
+ RETURNED VALUES:
+ None.
+
+*********************************************************************************/
+void ValUimConfirmSSD(kal_uint32 authBS, ExeRspMsgT rspInfo);
+
+/********************************************************************************
+
+ FUNCTION NAME: ValUimMD5Auth
+
+ DESCRIPTION:
+
+ It's invoked to request UIM MD5 auth.
+
+ PARAMETERS:
+
+ chapId: chapId.
+ challengeLen: challenge length, uim supports challenge length up to 16.
+ challenge: challenge array.
+ rspInfo: response info.
+ RETURNED VALUES:
+ None.
+
+*********************************************************************************/
+void ValUimMD5Auth(kal_uint8 chapId, kal_uint8 challengeLen, kal_uint8 *challenge, ExeRspMsgT rspInfo);
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimGetSDNRecParams
+
+ DESCRIPTION:
+ To send a message to UIM to read SDN parameters. User can get SDN parameters
+ in callback function.
+
+ PARAMETERS:
+
+ SDNCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: message to UIM has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValUimGetSDNRecParams(void (*SDNCallbackP)(ValUimSDNParamsT*));
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimGetSDNRecord
+
+ DESCRIPTION:
+ To send a message to UIM to read SDN record. User can get SDN record
+ in callback function.
+
+ PARAMETERS:
+ <nIndex> the phone record index
+ SDNCallbackP: Pointer to callback function
+
+ RETURNED VALUES:
+
+ KAL_TRUE: message to UIM has been sent.
+ KAL_FALSE: error. callback=NULL or other task is doing this operation.
+
+*****************************************************************************/
+kal_bool ValUimGetSDNRecord(kal_uint8 nIndex, void (*SDNCallbackP)(ValUimSDNRecT*));
+ValUimProviderName* ValGetProviderName(void);
+void ValUimReadyInit(UimNotifyMsgT * MsgP);
+void ValUimStoreEsn(kal_uint64 Esn, kal_uint8 Len, kal_bool MEAndUIMMEIDSupported);
+void ValUimGetEsn(void(*GetEsnCallbackP)(kal_uint64));
+kal_bool ValGetMEIDUIMSupported(void);
+kal_bool ValGetSFUIMIDSupported(void);
+kal_uint8 ValUimGetCst(UimECstIndexT index);
+
+/* Used for andriod system */
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimGetUtkCmdFlag
+
+ DESCRIPTION:
+
+ Get UTK CMD flag.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ kal_bool: KAL_TRUE: USE AT+UTKPD to init UTK.
+
+*****************************************************************************/
+kal_bool ValUimGetUtkCmdFlag( void );
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimProfileDownload
+
+ DESCRIPTION:
+
+ Call this function to send TERMINAL PROFILE Command to UIM task.
+
+ PARAMETERS:
+
+ None.
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+void ValUimProfileDownload( void );
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimTerminalRespnse
+
+ DESCRIPTION:
+
+ Call this function to send TERMINAL RESPONSE Command to UIM task.
+
+ PARAMETERS:
+
+ len. data buffer length
+ data: data buffer
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+void ValUimTerminalRespnse(kal_uint8 len, kal_uint8 *data);
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimEnvelope
+
+ DESCRIPTION:
+
+ Call this function to send ENVELOPE Command to UIM task.
+
+ PARAMETERS:
+
+ len. data buffer length
+ data: data buffer
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+ void ValUimEnvelope(kal_uint8 len, kal_uint8 *data,kal_bool is_ap_envelope);
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimConfirmCall
+
+ DESCRIPTION:
+
+ Call this function to confirm if Set Up Call command needs to be executed.
+
+ PARAMETERS:
+
+ Accept:
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+void ValUimConfirmCall( kal_bool Accept);
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValProProactCmdRsp
+
+ DESCRIPTION:
+
+ Call this to give respnose for proactive cmd.
+
+ PARAMETERS:
+
+ Result. General result
+ AddInfo: if result is 0x20, 0x21, need fill in this field.
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+void ValProProactCmdRsp( ValUimCmdGenRstT Result, ValUimCmdAddInfoT AddInfo);
+
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimSmsDownload
+
+ DESCRIPTION:
+
+ To execute UTK SMS PP Download.
+
+ PARAMETERS:
+
+ ApduP : Apdu buffer
+ BufferP : Apdu length
+ TxtMessage: Sms text message buffer
+
+ RETURNED VALUES:
+
+ None.
+
+*****************************************************************************/
+void ValUimSmsDownload( kal_uint8* ApduP, kal_uint8 Len, ValSmsTxtRecordT* TxtMessage);
+
+#ifdef MTK_CBP
+kal_bool ValUimDelMdnRecBySimIndex(kal_uint8 Index, kal_uint8 simIndex);
+kal_bool ValUimUpdateMdnRecBySimIndex(kal_uint8 Index, kal_uint8 Len, kal_uint8* MdnP, kal_uint8 simIndex);
+kal_bool ValUimGetMdnReq(kal_uint8 simIndex);
+kal_bool ValUimGetSidNidReq(kal_uint8 simIndex);
+kal_bool ValUimGetImsiReq(kal_uint8 simIndex, ExeRspMsgT* RspInfo);
+kal_bool ValUimGetChvStatusBySimIndex(kal_uint8 chan, kal_uint8 simIndex);
+kal_bool ValUimVerifyChvByIndex(kal_uint8 chan,
+ kal_uint8 simIndex,
+ kal_uint8 chvId,
+ kal_uint8 chvLen,
+ kal_uint8 chv1Val[8]);
+kal_bool ValUimChangeChvByIndex(kal_uint8 chan,
+ kal_uint8 simIndex,
+ ValChvIdT ChvId,
+ kal_uint8 OldChvLen,
+ kal_uint8* OldChvP,
+ kal_uint8 NewChvLen,
+ kal_uint8* NewChvP);
+
+kal_bool ValUimGetFullPath(kal_uint8* fullPath, kal_uint8* asciistr, kal_uint16 fileId, kal_uint16* pathLen);
+kal_bool ValUimCrsmCrlaCmd(ValUimCmdT Cmd, kal_uint16 FileId, kal_uint8 P1, kal_uint8 P2, kal_uint8 P3,
+ kal_uint8 *DataP, ExeRspMsgT* RspInfo, kal_uint8 sessionId, kal_bool isFullPath, kal_uint8* fullPath, kal_uint16 pathLen, kal_uint8 simIndex, kal_uint8 chanId);
+kal_bool ValUimRawCmdBySimIndex(kal_uint16 Len, kal_uint8 *CmdApdu, ExeRspMsgT* RspInfoP, kal_uint8 simIndex, kal_uint8 chanId);
+kal_bool ValUimExtendedRawCmdBySimIndex(ExeRspMsgT* RspInfoP, kal_uint8 simIndex, kal_uint8 chanId);
+kal_bool ValAtUimGetIccid(kal_uint8 simIndex);
+kal_bool ValAtUimGetAppInfo(kal_uint8 simIndex, kal_uint8 appId);
+kal_bool ValUimGetUimIdReq(kal_uint8 simIndex);
+kal_bool ValAtUimGetCstInfo(kal_uint8 simIndex, kal_uint8 cardType, UimECstIndexT cstIndex);
+#endif
+
+#ifdef MTK_DEV_C2K_IRAT
+void ValProTimerManagerCmdRsp( ValUimCmdGenRstT Result, ValUimCmdAddInfoT AddInfo,kal_uint8 DataLen, kal_uint8 *Adddata);
+void valUimProvideLocationInfoProcess(void);
+void ValUimUtkTimerExpiryMsgPro(kal_uint32 Id);
+void ValUimUtkRefreshRspMsg(UimUtkRefreshRspMsgT *MsgData);
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimFileChangeCompleted
+
+ DESCRIPTION:
+
+ internal help function: send MSG_ID_C2K_UIM_SAT_FILE_CHANGE_RES to UIM task.
+
+ PARAMETERS: ChangeSuccess
+
+ RETURNED VALUES: None.
+
+*****************************************************************************/
+extern void ValUimFileChangeCompleted(ValUimUtkFileMaskTypeT FileMask);
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimUtkRefreshRequest
+
+ DESCRIPTION:
+
+ internal help function: .
+
+ PARAMETERS:
+
+ RETURNED VALUES: None.
+
+*****************************************************************************/
+
+extern void ValUimUtkRefreshRequest(void);
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimUtkRefreshProcess
+
+ DESCRIPTION:
+
+ internal help function: handle UTK Refresh command
+
+ PARAMETERS: ChangeSuccess
+
+ RETURNED VALUES: None.
+
+*****************************************************************************/
+extern kal_bool ValUimUtkRefreshProcess(kal_uint8 *BufDataP,kal_uint8 Len, kal_uint8 *ApIndicator);
+extern kal_bool IsPowerCycleTrigByRefresh(void);
+extern void SetPowerCycleTrigByRefreshFlag(kal_bool flag);
+
+#ifdef FEATURE_UTK
+/*****************************************************************************
+
+ FUNCTION NAME: ValUimEhrpdAuthFailure
+
+ DESCRIPTION:
+
+ PARAMETERS:
+
+ RETURNED VALUES: None.
+
+*****************************************************************************/
+extern void ValUimEhrpdAuthFailure(void);
+#endif
+#endif
+#ifdef MTK_CBP
+extern void ValUimSetFdnStatus(kal_bool ActiveStatus,kal_uint8 ChvLen,kal_uint8 *ChvData);
+extern void ValUimUpdateFdnRecord( kal_uint8 nIndex,
+ kal_uint8* pName,
+ kal_uint8 name_len,
+ kal_uint8* pPhNum,
+ ValUimNumberTypeT TON,
+ ValUimNumberPlanT NPI,
+ kal_bool isAtCpbw);
+extern void ValUimEraseFdnRecord( kal_uint8 nIndex,kal_bool isAtCpbw);
+extern void ValUimGetFdnRecord(kal_uint8 nIndex);
+#endif
+
+#ifdef __CARRIER_RESTRICTION__
+void ValUimNotifyRegisterProcess( void* RspMsgP );
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+/*****************************************************************************
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+*****************************************************************************/
+
+/**Log information: \main\CBP7FeaturePhone\CBP7FeaturePhone_nicholaszhao_href17384\1 2011-07-08 06:09:12 GMT nicholaszhao
+** HREF#17384**/
+/**Log information: \main\CBP7FeaturePhone\4 2011-07-12 09:42:17 GMT marszhang
+** HREF#17384**/
+/**Log information: \main\2 2012-04-06 05:34:48 GMT pzhang
+** modify contact uim interface**/
+