[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/valumlapi.h b/mcu/interface/protocol/l4_c2k/valumlapi.h
new file mode 100644
index 0000000..107282a
--- /dev/null
+++ b/mcu/interface/protocol/l4_c2k/valumlapi.h
@@ -0,0 +1,195 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+/*******************************************************************************
+ * Filename:
+ * ---------
+ * valumlapi.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *==============================================================================*/
+
+#ifndef _VALUMLAPI_H
+#define _VALUMLAPI_H
+
+#ifdef __CARRIER_RESTRICTION__
+/*carrier match type*/
+typedef enum {
+ VAL_UML_CAT_NET, /* restrict by mcc/mnc */
+ VAL_UML_CAT_SPN, /* mcc/mnc and SPN */
+ VAL_UML_CAT_IMSI_PREFIX, /* mcc/mnc and 67 digits of IMSI */
+ VAL_UML_CAT_GID1, /* mcc/mnc and GID1 */
+ VAL_UML_CAT_GID2, /* mcc/mnc and GID2 */
+ VAL_UML_CAT_SIZE
+} ValUmlCatT;
+
+typedef enum{
+ VAL_UML_NONE, /* Default state:not received pin, or no need to check uml */
+ VAL_UML_PASSED, /* checked and passed */
+ VAL_UML_BUSY, /* request UIM/UML data and checking */
+ VAL_UML_RESTRICTED, /* restricted in black or not in white */
+ VAL_UML_REBOOT /* locked->unlocked or unlocked->locked need AP to reset card */
+} ValUmlStatusT;
+
+typedef enum{
+ VAL_UML_MD1_STATUS_NOT_RECEIVED, /* not received */
+ VAL_UML_MD1_STATUS_READY, /* checked and passed */
+ VAL_UML_MD1_STATUS_RESTRICTED, /* restricted in black or not in white */
+ VAL_UML_MD1_STATUS_REBOOT /* locked->unlocked or unlocked->locked need AP to reset card */
+} ValUmlMd1StatusT;
+
+typedef enum{
+ VAL_UML_STATUS_SYNC_READY, /* card ready */
+ VAL_UML_STATUS_SYNC_CARD_RESTRICTED, /* card locked */
+ VAL_UML_STATUS_SYNC_CARD_REBOOT /* status changed */
+} ValUmlStatusSyncT;
+
+/* the basic unit of categories */
+#define VAL_UML_SIZE_OF_CAT_NET 3 /* MCC/MNC 5 digits */
+#define VAL_UML_SIZE_OF_CAT_SPN 23 /* MCC/MNC + SPN(20bytes) from MD1 different from MD3 32 bytes */
+#define VAL_UML_SIZE_OF_CAT_IMSI_PREFIX 4 /* MCC/MNC + IMSI digits 6 and 7 */
+#define VAL_UML_SIZE_OF_CAT_GID1 4 /* MCC/MNC + GID1 */
+#define VAL_UML_SIZE_OF_CAT_GID2 4 /* MCC/MNC + GID2 */
+
+/* Define the maximum suppot elements of each category */
+#define VAL_UML_MAX_SUPPORT_CAT_NUM 5
+
+/* Define the size of each category */
+#define VAL_UML_CFG_CAT_NET_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_NET)
+#define VAL_UML_CFG_CAT_SPN_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_SPN)
+#define VAL_UML_CFG_CAT_INSI_PREFIX_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_IMSI_PREFIX)
+#define VAL_UML_CFG_CAT_GID1_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_GID1)
+#define VAL_UML_CFG_CAT_GID2_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_GID2)
+
+/* Define the support category size */
+#define VAL_UML_SUPPORT_CAT_SIZE VAL_UML_CAT_SIZE
+
+#define UIM_SPN_OFFSET 3 /* get spn from EFspn */
+
+#define VAL_UML_PRIORITY_CHECK_WHITE_LIST 1 /* allowed_carriers_prioritized, 0 - Allow All except Black, 1 - Allow White except Black */
+#define VAL_UML_MUTIL_SIM_POLICY 1 /* allowed_carriers_prioritized, 0 - Allow All except Black, 1 - Allow White except Black */
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+typedef smu_cval_carrier_match_category_meta_struct ValUmlCategoryMetaT;
+
+typedef smu_cval_carrier_restriction_list_struct ValUmlCategoryListT;
+
+
+typedef struct
+{
+ kal_bool is_stored; /* has received from MD1 */
+ smu_cval_carrier_restriction_list_struct black_list;
+ smu_cval_carrier_restriction_list_struct white_list;
+ kal_uint8 allow_all; /* 0 - Not allow all, 1 - Allow all sim*/
+ kal_uint8 carrier_rest_state; /* 0 - Enabled 1 - Disabled */
+ kal_uint8 multi_sim_policy;
+ kal_uint8 allowed_carriers_prioritized; /* 0 - Allow All except Black, 1 - Allow White except Black */
+}ValUmlContextT; /* 393 bytes */
+
+/* data of UML in UIM */
+typedef PACKED struct
+{
+ kal_bool IMSI_M_Valid; /* IMSI_M */
+ IMSIType IMSI_Mp;
+ kal_bool IMSI_T_Valid; /* IMSI_T */
+ IMSIType IMSI_Tp;
+ kal_bool spn_valid;
+ kal_uint8 spn[UIM_EF_SPN_LENGTH];
+ kal_uint8 len_of_gid1;
+ kal_uint8 gid1[MAX_NUM_OF_GID];
+ kal_uint8 len_of_gid2;
+ kal_uint8 gid2[MAX_NUM_OF_GID];
+}UimUmlDataT;
+
+typedef struct
+{
+ kal_bool notifyMsgReceived; /* has read from uim */
+ kal_bool isCdmaOnlyCard;
+ kal_uint8 slotId;
+ UimUmlDataT UimUmlData; /* uim data record for uml */
+}ValUimUmlDataT; /* 393 bytes */
+
+typedef struct
+{
+ kal_bool checkByMd3; /* UIM card need check by MD3 */
+ kal_bool sentCrrstStatusToMD1; /* has sent the status to MD1 */
+ ValUmlStatusT ValUmlCurStatus; /* current status */
+ ValUmlStatusT ValUmlMd3Status; /* the resule checked by MD3 */
+ ValUmlMd1StatusT ValRecUmlMd1Status[2]; /* status received from MD1, [0] : slot1 [1] : slot2 */
+}ValUmlResultsT;
+
+void ValUmlInit(void);
+kal_bool ValUmlCheck(void);
+void ValUmlGetUimData(UimNotifyMsgT *DataMsgP);
+void ValUmlDeliverMsg( kal_uint32 MsgId,
+ void* MsgP);
+kal_bool ValUmlNeedCheckCarrier(kal_uint8 slot_id);
+void ValUmlSendCarrierStatus(kal_uint8 slot_id);
+void ValUmlSaveNotifyMsg(UimNotifyMsgT *DataMsgP);
+ValUmlStatusT ValUmlCalFinStatus(kal_uint8 slotId);
+void ValUmlGetFinStatus(CardStatusT *CardStatus);
+kal_bool ValUmlCheckNull(void);
+void ValUmlStatusResetBySlot(kal_uint8 slot_id);
+#endif
+#endif
+