[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/protocol/interface/l4/at_usir_cmd.h b/mcu/protocol/interface/l4/at_usir_cmd.h
new file mode 100644
index 0000000..179d8be
--- /dev/null
+++ b/mcu/protocol/interface/l4/at_usir_cmd.h
@@ -0,0 +1,203 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *  at_usir_cmd.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   This file is intends for ....
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/* Please add SENSITIVE_CMD() in the following table.
+   format of command ATD is ATD123456789, it need to be processed specially 
+   do NOT change the location (row_index=1) of ATD handling function */
+SENSITIVE_CMD("default", 0, 0, USIR_CMD_DEFAULT, atp_usir_none_hdlr)
+SENSITIVE_CMD("atd", 4, 0, USIR_CMD_ATD, atp_usir_atd_hdlr)
+SENSITIVE_CMD("creg", 190805, 0, USIR_CMD_ATCREG, atp_usir_none_hdlr)
+SENSITIVE_CMD("cgreg", 6665701, 0, USIR_CMD_ATCGREG, atp_usir_none_hdlr)
+SENSITIVE_CMD("cereg", 6555957, 0, USIR_CMD_ATCEREG, atp_usir_none_hdlr)
+SENSITIVE_CMD("ereg", 300549, 0, USIR_CMD_EREG, atp_usir_ereg_hdlr)
+SENSITIVE_CMD("egreg", 10835973, 0, USIR_CMD_EGREG, atp_usir_egreg_hdlr)
+SENSITIVE_CMD("cops", 186903, 0, USIR_CMD_ATCOPS, atp_usir_none_hdlr)
+SENSITIVE_CMD("eops", 296647, 0, USIR_CMD_ATEOPS, atp_usir_none_hdlr)
+SENSITIVE_CMD("cpol", 188302, 0, USIR_CMD_ATCPOL, atp_usir_none_hdlr)
+SENSITIVE_CMD("csim", 192407, 0, USIR_CMD_ATCSIM, atp_usir_none_hdlr)
+SENSITIVE_CMD("cgla", 175181, 0, USIR_CMD_ATCGLA, atp_usir_none_hdlr)
+SENSITIVE_CMD("crla", 191065, 0, USIR_CMD_ATCRLA, atp_usir_none_hdlr)
+SENSITIVE_CMD("emccmnc", 11143475, 535, USIR_CMD_ATEMCCMNC, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecell", 10597984, 0, USIR_CMD_ATECELL, atp_usir_none_hdlr)
+SENSITIVE_CMD("iccid", 18935518, 0, USIR_CMD_ICCID, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecmpcid", 10609679, 346 , USIR_CMD_ATECMPCID, atp_usir_none_hdlr)
+SENSITIVE_CMD("eapprove", 10504282, 22501, USIR_CMD_ATEAPPROVE, atp_usir_none_hdlr)
+SENSITIVE_CMD("eimscp", 10939025, 16, USIR_CMD_ATEIMSCP, atp_usir_none_hdlr)
+SENSITIVE_CMD("eimsinfo", 10939031, 20459, USIR_CMD_ATEIMSINFO, atp_usir_none_hdlr)
+SENSITIVE_CMD("eimsxui", 10939046, 807, USIR_CMD_ATEIMSXUI, atp_usir_none_hdlr)
+SENSITIVE_CMD("epbum", 11307331, 0, USIR_CMD_ATEPBUM, atp_usir_none_hdlr)
+SENSITIVE_CMD("cgcontrdp", 6644428,1123600 , USIR_CMD_CGCONTRDP, atp_usir_none_hdlr)
+SENSITIVE_CMD("cgscontrdp", 6667077, 30315504, USIR_CMD_CGSCONTRDP, atp_usir_none_hdlr)
+SENSITIVE_CMD("epdn", 297630, 0, USIR_CMD_EPDN, atp_usir_none_hdlr)
+SENSITIVE_CMD("cpin", 188076, 0, USIR_CMD_ATCPIN, atp_usir_none_hdlr)
+SENSITIVE_CMD("epin", 297820, 0, USIR_CMD_ATEPIN, atp_usir_none_hdlr)
+SENSITIVE_CMD("epin1", 11317188, 0, USIR_CMD_ATEPIN1, atp_usir_none_hdlr)
+SENSITIVE_CMD("epin2", 11317189, 0, USIR_CMD_ATEPIN2, atp_usir_none_hdlr)
+SENSITIVE_CMD("epinc", 11317163, 0, USIR_CMD_ATEPINC, atp_usir_none_hdlr)
+SENSITIVE_CMD("esimauth", 11481739, 31092, USIR_CMD_ATESIMAUTH, atp_usir_none_hdlr)
+SENSITIVE_CMD("esmsmaip", 11487755,1802, USIR_CMD_ATESMSMAIP, atp_usir_none_hdlr)
+SENSITIVE_CMD("esmsmoip", 11487755,22018, USIR_CMD_ATESMSMOIP, atp_usir_none_hdlr)
+SENSITIVE_CMD("esmsmtip", 11487755,29238, USIR_CMD_ATESMSMTIP, atp_usir_none_hdlr)
+SENSITIVE_CMD("eauth", 10511644, 0, USIR_CMD_ATEAUTH, atp_usir_none_hdlr)
+SENSITIVE_CMD("cpuc", 188521, 0, USIR_CMD_ATCPUC, atp_usir_none_hdlr)
+SENSITIVE_CMD("esmlck", 11487479, 11, USIR_CMD_ATESMLCK, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecpi", 279309, 0, USIR_CMD_ATECPI, atp_usir_ecpi_hdlr)
+SENSITIVE_CMD("clcc", 182061, 0, USIR_CMD_ATCLCC, atp_usir_none_hdlr)
+SENSITIVE_CMD("clccs", 6918337, 0, USIR_CMD_ATCLCCS, atp_usir_none_hdlr)
+SENSITIVE_CMD("clip", 182302, 0, USIR_CMD_ATCLIP, atp_usir_none_hdlr)
+SENSITIVE_CMD("eaic", 276149, 0, USIR_CMD_ATEAIC, atp_usir_none_hdlr)
+SENSITIVE_CMD("colp", 186748, 0, USIR_CMD_ATCOLP, atp_usir_none_hdlr)
+SENSITIVE_CMD("cacm", 166187, 0, USIR_CMD_ATCACM, atp_usir_none_hdlr)
+SENSITIVE_CMD("camm", 166567, 0, USIR_CMD_ATCAMM, atp_usir_none_hdlr)
+SENSITIVE_CMD("cmgs", 183673, 0, USIR_CMD_ATCMGS, atp_usir_none_hdlr)
+SENSITIVE_CMD("emgs", 293417, 0, USIR_CMD_ATEMGS, atp_usir_none_hdlr)
+SENSITIVE_CMD("cmss", 184129, 0, USIR_CMD_ATCMSS, atp_usir_none_hdlr)
+SENSITIVE_CMD("cmt", 4846, 0, USIR_CMD_ATCMT, atp_usir_none_hdlr)
+SENSITIVE_CMD("clck", 182069, 0, USIR_CMD_ATCLCK, atp_usir_none_hdlr)
+SENSITIVE_CMD("cpwd", 188598, 0, USIR_CMD_ATCPWD, atp_usir_none_hdlr)
+SENSITIVE_CMD("ciev", 177824, 0, USIR_CMD_ATCIEV, atp_usir_none_hdlr)
+SENSITIVE_CMD("stkctrl", 40731042, 696, USIR_CMD_ATSTKCTRL, atp_usir_none_hdlr)
+SENSITIVE_CMD("cmgw", 183677, 0, USIR_CMD_ATCMGW, atp_usir_none_hdlr)
+SENSITIVE_CMD("emgw", 293421, 0, USIR_CMD_ATEMGW, atp_usir_none_hdlr)
+SENSITIVE_CMD("esimind", 11481747, 536, USIR_CMD_ATESIMIND, atp_usir_none_hdlr)
+SENSITIVE_CMD("cpbw", 187819, 0, USIR_CMD_ATCPBW, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecpbw", 10613499, 0, USIR_CMD_ATECPBW, atp_usir_none_hdlr)
+SENSITIVE_CMD("epbw", 297563, 0, USIR_CMD_ATEPBW, atp_usir_none_hdlr)
+SENSITIVE_CMD("cpbr", 187814, 0, USIR_CMD_ATCPBR, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecpbr", 10613494, 0, USIR_CMD_ATECPBR, atp_usir_none_hdlr)
+SENSITIVE_CMD("etmosk", 11542481, 11, USIR_CMD_ATETMOSK, atp_usir_none_hdlr)
+SENSITIVE_CMD("etmoslb", 11542481, 458, USIR_CMD_ATETMOSLB, atp_usir_none_hdlr)
+SENSITIVE_CMD("eattsk", 10510211, 11, USIR_CMD_ATEATTSK, atp_usir_none_hdlr)
+SENSITIVE_CMD("eattslb", 10510211, 458, USIR_CMD_ATEATTSLB, atp_usir_none_hdlr)
+SENSITIVE_CMD("eslblob", 11485664, 572, USIR_CMD_ATESLBLOB, atp_usir_none_hdlr)
+SENSITIVE_CMD("eslblobf", 11485664, 21742, USIR_CMD_ATESLBLOBF, atp_usir_none_hdlr)
+SENSITIVE_CMD("egmr", 284980, 0, USIR_CMD_ATEGMR, atp_usir_none_hdlr)
+SENSITIVE_CMD("egmrext", 10829245, 932, USIR_CMD_ATEGMREXT, atp_usir_none_hdlr)
+SENSITIVE_CMD("crsm", 191343, 0, USIR_CMD_ATCRSM, atp_usir_none_hdlr)
+SENSITIVE_CMD("ersa", 301075, 0, USIR_CMD_ERSA, atp_usir_none_hdlr)
+SENSITIVE_CMD("espn", 302418, 0, USIR_CMD_ATESPN, atp_usir_none_hdlr)
+SENSITIVE_CMD("esimapp", 11481739, 624, USIR_CMD_ATESIMAPP, atp_usir_none_hdlr)
+SENSITIVE_CMD("stkenv", 40731112, 22, USIR_CMD_ATSTKENV, atp_usir_none_hdlr)
+SENSITIVE_CMD("stkpci", 40731519, 9, USIR_CMD_ATSTKPCI, atp_usir_none_hdlr)
+SENSITIVE_CMD("stktr", 40731686, 0, USIR_CMD_ATSTKTR, atp_usir_none_hdlr)
+SENSITIVE_CMD("cusate", 7435214, 5, USIR_CMD_CUSATE, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecusd", 10621346, 0, USIR_CMD_ATECUSD, atp_usir_none_hdlr)
+SENSITIVE_CMD("ccfc", 169179, 0, USIR_CMD_ATCCFC, atp_usir_none_hdlr)
+SENSITIVE_CMD("ccwa", 169823, 0, USIR_CMD_ATCCWA, atp_usir_none_hdlr)
+SENSITIVE_CMD("cnap", 184886, 0, USIR_CMD_ATCNAP, atp_usir_none_hdlr)
+SENSITIVE_CMD("ersaind", 11440859, 536, USIR_CMD_ATERSAIND, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecrla", 10616745, 0, USIR_CMD_ATECRLA, atp_usir_none_hdlr)
+SENSITIVE_CMD("emsdtnum", 169636960, 21027, USIR_CMD_ATEMSDTNUM, atp_usir_none_hdlr)
+SENSITIVE_CMD("emsdrnum", 169636958, 21027, USIR_CMD_ATEMSDRNUM, atp_usir_none_hdlr)
+SENSITIVE_CMD("cgdcont", 6645417, 552, USIR_CMD_ATCGDCONT,atp_usir_none_hdlr)
+SENSITIVE_CMD("cgauth", 6641774, 8, USIR_CMD_ATCGAUTH, atp_usir_none_hdlr)
+SENSITIVE_CMD("egpco", 10833017, 0, USIR_CMD_EGPCO, atp_usir_none_hdlr)
+SENSITIVE_CMD("cgtft", 6668640, 0, USIR_CMD_ATCGTFT, atp_usir_none_hdlr)
+SENSITIVE_CMD("vlocinfo", 46553239, 20459, USIR_CMD_ATVLOCINFO, atp_usir_none_hdlr)
+SENSITIVE_CMD("ec2kcell", 10632593, 7688, USIR_CMD_ATEC2KCELL, atp_usir_none_hdlr)
+SENSITIVE_CMD("eclck", 10607749, 0, USIR_CMD_ATECLCK, atp_usir_none_hdlr)
+SENSITIVE_CMD("ec2kcnma", 10632593, 20711, USIR_CMD_ATEC2KCNMA, atp_usir_none_hdlr)
+SENSITIVE_CMD("ecampui", 10592250, 807, USIR_CMD_ATECAMPUI, atp_usir_ecampui_hdlr)
+SENSITIVE_CMD("econf", 10612494, 0, USIR_CMD_ATECONF, atp_usir_econf_hdlr)
+SENSITIVE_CMD("eicpgu", 10924475, 21, USIR_CMD_ATEICPGU, atp_usir_eicpgu_hdlr)
diff --git a/mcu/protocol/interface/l4/cc2sat_struct.h b/mcu/protocol/interface/l4/cc2sat_struct.h
new file mode 100644
index 0000000..191381d
--- /dev/null
+++ b/mcu/protocol/interface/l4/cc2sat_struct.h
@@ -0,0 +1,133 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *  cc2sat_struct.h
+ *
+ * Project:
+ * --------
+ *  MAUI
+ *
+ * Description:
+ * ------------
+ *  
+ *
+ * Author:
+ * -------
+ *  
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : ps2sat_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _CC2SAT_STRUCT_H
+#define _CC2SAT_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "l4c2csm_cc_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ti;
+    kal_bool addr_p;
+    kal_bool sub_addr_p;
+    l4_addr_bcd_struct addr;
+    l4ccsm_cc_sub_addr_struct sub_addr;
+} sat_evdl_mt_call_req_struct;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/csm2l2r_struct.h b/mcu/protocol/interface/l4/csm2l2r_struct.h
new file mode 100644
index 0000000..2c81fc5
--- /dev/null
+++ b/mcu/protocol/interface/l4/csm2l2r_struct.h
@@ -0,0 +1,151 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   csm2l2r_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between CSM and L2R layers.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+ *  FILENAME : csm2l2r_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _CSM2L2R_STRUCT_H
+#define _CSM2L2R_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "data_xid_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 rat;
+    kal_uint8 user_app;
+    kal_uint8 user_rate;
+    kal_uint8 is_FR;
+    kal_uint8 is_xid_params_p; /* compression parameters; 1 means present,0 not present*/
+    xid_params_struct xid_params; /* XID parameters*/
+} csm_l2r_activate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_successful;
+} csm_l2r_activate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    xid_params_struct xid_params; /* XID parameters*/
+} csm_l2r_xid_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+} csm_l2r_esc_off_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+    kal_uint8  is_esc_on;
+} csm_l2r_esc_on_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+} csm_l2r_uart_setowner_req_struct;
+
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/csm2t30_struct.h b/mcu/protocol/interface/l4/csm2t30_struct.h
new file mode 100644
index 0000000..72a5436
--- /dev/null
+++ b/mcu/protocol/interface/l4/csm2t30_struct.h
@@ -0,0 +1,127 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	csm2t30_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between T30 and CSM.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *=============================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _CSM2T30_STRUCT_H
+#define _CSM2T30_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 rat;
+    kal_uint8 access_rate;
+    kal_uint8 is_FR;
+    kal_uint8 fax_direction;
+    kal_uint8 serv_class;
+    kal_uint8 alt_speech;
+} csm_t30_activate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_successful;
+} csm_t30_activate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 fax_rate;
+} csm_t30_fax_rate_cnf_struct;
+
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/csm2tdt.h b/mcu/protocol/interface/l4/csm2tdt.h
new file mode 100644
index 0000000..1802cd3
--- /dev/null
+++ b/mcu/protocol/interface/l4/csm2tdt.h
@@ -0,0 +1,103 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * csm2tdt.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is for CSM to TDT interface. 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _CSM2TDT_H
+#define _CSM2TDT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+#ifdef TEST_TOOL
+#include "tt_defs.h"
+#else
+#include "kal_public_api.h"
+#endif
+  
+//#include "csm2tdt_enums.h"  
+#include "csm2tdt_struct.h"
+  
+#ifdef TOOL
+#include "set_csm2tdt.h"
+#include "get_csm2tdt.h"
+#endif
+#ifdef __cplusplus
+}  
+#endif
+  
+#endif
+  
diff --git a/mcu/protocol/interface/l4/csm2tdt_struct.h b/mcu/protocol/interface/l4/csm2tdt_struct.h
new file mode 100644
index 0000000..1d65770
--- /dev/null
+++ b/mcu/protocol/interface/l4/csm2tdt_struct.h
@@ -0,0 +1,144 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   csm2l2r_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between CSM and L2R layers.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+ *  FILENAME : csm2tdt_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _CSM2TDT_STRUCT_H
+#define _CSM2TDT_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 rat;
+    kal_uint8 user_app;
+    kal_uint8 user_rate;
+    kal_uint8 isFR;
+} csm_tdt_activate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_successful;
+} csm_tdt_activate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+} csm_tdt_esc_off_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+    kal_uint8  is_esc_on;
+} csm_tdt_esc_on_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+} csm_tdt_uart_setowner_req_struct;
+
+
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/csm_data_enums.h b/mcu/protocol/interface/l4/csm_data_enums.h
new file mode 100644
index 0000000..65bac01
--- /dev/null
+++ b/mcu/protocol/interface/l4/csm_data_enums.h
@@ -0,0 +1,114 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * csm_data_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file includes the enum value between CSM to L2R interface. 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _CSM_DATA_ENUMS_H_
+#define _CSM_DATA_ENUMS_H_
+
+typedef enum 
+{
+    RLP_VERSION_0,
+    RLP_VERSION_1,
+    RLP_VERSION_2
+
+} RLP_VERSION_ENUM;
+
+typedef enum
+{
+   CSD_APP_UART,
+   CSD_APP_PPP,
+   CSD_APP_SAT
+} 
+CSD_APP_ENUM;
+
+typedef enum
+{
+   MO_FAX_CALL,
+   MT_FAX_CALL
+} 
+CSD_FAX_DIRECTION_ENUM;
+
+typedef enum
+{
+
+   G3_SERV_CLASS_0,
+   G3_SERV_CLASS_1,
+   G3_SERV_CLASS_1_0,
+   G3_SERV_CLASS_2,
+   G3_SERV_CLASS_2_0
+} 
+G3_SERVICE_CLASS_ENUM;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/data_xid_struct.h b/mcu/protocol/interface/l4/data_xid_struct.h
new file mode 100644
index 0000000..5149342
--- /dev/null
+++ b/mcu/protocol/interface/l4/data_xid_struct.h
@@ -0,0 +1,117 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * data_xid_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is for XID struct in related interface. 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : data_xid_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _DATA_XID_STRUCT_H
+#define _DATA_XID_STRUCT_H
+
+#include "kal_general_types.h"
+
+typedef struct {
+    kal_uint8 version_num_p;
+    kal_uint8 version_num;
+    kal_uint8 wsize_ms_iwf_p;
+    kal_uint8 wsize_ms_iwf;
+    kal_uint8 wsize_iwf_ms_p;
+    kal_uint8 wsize_iwf_ms;
+    kal_uint8 t1_p;
+    kal_uint8 t1;
+    kal_uint8 n2_p;
+    kal_uint8 n2;
+    kal_uint8 t2_p;
+    kal_uint8 t2;
+} xid_params_struct;
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/general_qos_struct.h b/mcu/protocol/interface/l4/general_qos_struct.h
new file mode 100644
index 0000000..4a0bec2
--- /dev/null
+++ b/mcu/protocol/interface/l4/general_qos_struct.h
@@ -0,0 +1,136 @@
+/*****************************************************************************
+*  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) 2007
+*
+*  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:
+ * ---------
+ *   general_qos_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ ****************************************************************************/
+
+#ifndef _GENERAL_QOS_STRUCT_H
+#define _GENERAL_QOS_STRUCT_H
+
+#include "kal_general_types.h"
+
+/* Handling for the QoS values: 
+
+ - For UL direction: 
+  ===================================================================
+   Bitrate  | TCM SIC                   | TCM SIC                   |
+            | = Use R15 Qos             | = No R15 QoS              |
+  ===================================================================
+   < 10Gbps | Pre-5G values:            | Pre-5G values:            |
+            | - L4C decodes u8 data     | - L4C decodes u8 data     |
+            | - TCM fills-in values     | - TCM fills-in values     |
+            | is_use_ext_qos = F        | is_use_ext_qos = F        |
+            | is_use_full_r11_qos = F   | is_use_full_r11_qos = F   |
+  -------------------------------------------------------------------
+   >=10Gbps | Pre-5G values:            | Pre-5G values:            |
+            | - TCM would not fill them | - TCM would not fill them |
+            | - Let ESM fill values     | - Let ESM fill values     |
+            | is_use_ext_qos = T        | is_use_ext_qos = F        |
+            | is_use_full_r11_qos = F   | is_use_full_r11_qos = T   |
+  =================================================================== 
+
+ - For DL direction: 
+   - If NW gave extended QoS,           ESM decodes them and fill-in struct (is_use_ext_qos and its value) 
+   - If NW did not give extended QoS,   ESM decodes them and fill into old u8 data fields 
+   - ESM no need to fill-in the is_use_full_r11_qos (it is used in UL direction)  */ 
+typedef struct
+{
+    kal_uint8                   qci;
+    kal_bool                    bit_rate_present;
+    kal_bool                    bit_rate_ext_present;
+    kal_bool                    bit_rate_ext2_present;
+    kal_uint8                   ul_mbr;
+    kal_uint8                   dl_mbr;
+    kal_uint8                   ul_gbr;
+    kal_uint8                   dl_gbr;
+    kal_uint8                   ul_mbr_ext;
+    kal_uint8                   dl_mbr_ext;
+    kal_uint8                   ul_gbr_ext;
+    kal_uint8                   dl_gbr_ext;
+    kal_uint8                   ul_mbr_ext2;
+    kal_uint8                   dl_mbr_ext2;
+    kal_uint8                   ul_gbr_ext2;
+    kal_uint8                   dl_gbr_ext2;
+
+    // __R15.4__
+    kal_bool is_use_full_r11_qos; // if KAL_TRUE, don't encode extended EPS QoS
+
+    kal_bool is_use_ext_qos_for_dl_gbr;
+    kal_bool is_use_ext_qos_for_ul_gbr;
+    kal_bool is_use_ext_qos_for_dl_mbr;
+    kal_bool is_use_ext_qos_for_ul_mbr;
+
+    kal_uint64 ext_eps_qos_dl_gbr;
+    kal_uint64 ext_eps_qos_ul_gbr;
+    kal_uint64 ext_eps_qos_dl_mbr;
+    kal_uint64 ext_eps_qos_ul_mbr;
+} eps_qos_struct;
+
+#endif /* _GENERAL_QOS_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/l4_ps_api.h b/mcu/protocol/interface/l4/l4_ps_api.h
new file mode 100644
index 0000000..1941e29
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4_ps_api.h
@@ -0,0 +1,227 @@
+/*****************************************************************************
+*  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) 2011
+*
+*  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:
+ * ---------
+ *   l4_ps_api.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   API provided by L4 task and inside-PS task uses only
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef L4_PS_API_H
+#define L4_PS_API_H
+
+#include "ps_em_enum.h"
+#include "ps_public_enum.h"
+#ifdef __DIALUP_GPRS_COUNTER_SUPPORT__
+#include "l4c_ratdm_struct.h"
+#endif
+#include "ims_common_def.h"
+#include "l3_inc_enums_public.h"
+
+extern kal_bool is_ps_conf_test_xta_mode_internal(void);
+extern kal_bool is_ps_conf_test_xta_mode(void);
+extern ps_conf_test_mode_enum query_ps_conf_test_mode_internal(void);
+extern ps_conf_test_mode_enum query_ps_conf_test_mode(void);
+extern kal_uint32 query_ps_conf_test_profile_setting(void);
+
+#if 0
+/* under construction !*/
+#else
+#define l4c_cross_core_update_ps_conf_info(xta_mode, mode, profile) NULL
+#endif
+
+extern ps_conf_test_mode_enum test_mode_consider_sim(kal_uint8 simInterface);
+
+#ifdef __DIALUP_GPRS_COUNTER_SUPPORT__
+extern void ratdm_l4c_query_pdp_statistics_table( single_pdp_call_history_info_struct *query_result );
+#endif
+
+
+
+
+#if defined(__DUAL_SIM_PROJECT_SUPPORT_SGLTE_WORLD_PHONE_NVRAM__) && defined(__GEMINI__)
+/**************************************************************************************************************
+ * FUNCTION
+ *     gemini_double_write_nvram_para()
+ * DESCRIPTION
+ *     In GEMINI load:
+ *         (1)Whether the protocol need double write nvram record.
+ *         (2)If needed, which nvram record should be written.
+ * PARAMETERS
+ *     sim_interface: the protocol stack's sim_interface, which calls the function.
+ * RETURNS
+ *     if (not 4G switched)
+ *         if (sim_interface == 0)        return 3;
+ *         else if (sim_interface == 1)   return 4;
+ *         else                           return 0xFFFF;    //other protocol, should not occur
+ *     else                                                 //4G switched
+ *         if (sim_interface == 0)        return 4;
+ *         else if (sim_interface == 1)   return 3;
+ *         else                           return 0xFFFF;    //other protocol, should not occur
+ **************************************************************************************************************/
+extern kal_uint16 gemini_double_write_nvram_para(kal_uint8 sim_interface);
+#endif
+
+extern kal_bool is_RRM_test(void);
+
+extern void l4c_resend_afr_req();
+extern kal_bool l4c_is_hvolte_enable(void);
+extern hvolte_enable_status_enum l4c_query_hvolte_enable_status(protocol_id_enum ps_id);
+extern hvolte_enable_status_enum l4c_query_hvolte_enable_for_roaming_status(protocol_id_enum ps_id);
+extern hvolte_mode_enum l4c_query_hvolte_mode(protocol_id_enum ps_id);
+extern rat_enum l4c_query_global_rat_mode(void);
+extern rat_enum l4c_query_global_rat_mode_by_idx(sim_interface_enum simInterface);
+extern kal_bool l4bpwr_get_op01_sim_lock_state();
+extern kal_bool l4bpwr_get_op01_rat_lock_state();
+
+
+#endif
diff --git a/mcu/protocol/interface/l4/l4_vdm_enum.h b/mcu/protocol/interface/l4/l4_vdm_enum.h
new file mode 100644
index 0000000..90640b3
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4_vdm_enum.h
@@ -0,0 +1,526 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	l4_vdm_enum.h
+ *
+ * Description:
+ * ------------
+ *   This file is intends for L4/VDM interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _L4_VDM_ENUM_H
+#define _L4_VDM_ENUM_H
+
+
+#define L4CC_MAX_CALL_NUM            7
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+#define MAX_MSD_LENGTH              140
+#endif
+
+typedef enum
+{
+    L4_CALL_RELATED_SS_TYPE_REL_HELD_OR_UDUB,                  // AT+CHLD=0
+    L4_CALL_RELATED_SS_TYPE_REL_ACTIVE_AND_ACCEPT,             // AT+CHLD=1
+    L4_CALL_RELATED_SS_TYPE_REL_SPECIFIC_CALL,                 // AT+CHLD=1x
+    L4_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_AND_ACCEPT,            // AT+CHLD=2
+    L4_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_EXCEPT_SPECIFIC_CALL,  // AT+CHLD=2x
+    L4_CALL_RELATED_SS_TYPE_ADD_HELD_CALL,                     // AT+CHLD=3
+    L4_CALL_RELATED_SS_TYPE_EXPLICIT_CALL_TRANSFER,            // AT+CHLD=4
+    L4_CALL_RELATED_SS_TYPE_ACTIVATE_CCBS_CALL,                // AT+CHLD=5
+    L4_CALL_RELATED_SS_TYPE_REL_ALL,                           // AT+CHLD=6
+    L4_CALL_RELATED_SS_TYPE_REL_CALL_REJECT,                   // AT+CHLD=8
+    L4_CALL_RELATED_SS_TYPE_VT_FALL_TO_VOICE,                  // AT+CHLD=9x
+    L4_CALL_RELATED_SS_TYPE_INVALID                    
+} l4_call_related_ss_type_enum;
+
+
+typedef enum
+{
+    L4_RCODE_OK,
+    L4_RCODE_CONNECT,
+    L4_RCODE_RING,
+    L4_RCODE_NO_CARRIER,        //3
+    L4_RCODE_ERROR,             //4
+    L4_RCODE_BUSY = 7,
+
+    /* Below are MTK proprietary result codes */
+    L4_RCODE_CONNECT_PS = 100,
+
+    /* Below are result codes added for IMS */
+
+} l4_result_code_enum;
+
+
+typedef enum
+{
+    L4_ERR_PHONE_FAILURE = 0,
+    L4_ERR_OPERATION_NOT_ALLOWED_ERR = 3,
+    L4_ERR_OPERATION_NOT_SUPPORTED = 4,
+    L4_ERR_PH_SIM_PIN_REQUIRED = 5,
+    L4_ERR_PH_FSIM_PIN_REQUIRED = 6, 
+    L4_ERR_PH_FSIM_PUK_REQUIRED = 7,
+    L4_ERR_SIM_NOT_INSERTED = 10,
+    L4_ERR_SIM_PIN_REQUIRED = 11,
+    L4_ERR_SIM_PUK_REQUIRED = 12,
+    L4_ERR_SIM_FAILURE = 13,
+    L4_ERR_SIM_BUSY = 14,
+    L4_ERR_SIM_WRONG = 15,
+    L4_ERR_INCORRECT_PASSWD = 16,
+    L4_ERR_SIM_PIN2_REQUIRED = 17,
+    L4_ERR_SIM_PUK2_REQUIRED = 18,
+    L4_ERR_MEM_FULL = 20,
+    L4_ERR_INVALID_INDEX = 21,
+    L4_ERR_NO_FOUND = 22,
+    L4_ERR_TEXT_ERRSTRING_TOO_LONG_ERR = 24,
+    L4_ERR_INVALID_CHARACTERS_IN_TEXT_ERRSTRING_ERR = 25,
+    L4_ERR_DIAL_ERRSTRING_TOO_LONG_ERR = 26, 
+    L4_ERR_INVALID_CHARACTERS_IN_DIAL_ERRSTRING_ERR = 27,
+    L4_ERR_NO_NW_SERVICE = 30,
+    L4_ERR_NETWORK_TIMEOUT = 31,
+    L4_ERR_NETWORK_NOT_ALLOWED = 32,
+    L4_ERR_NW_PERSON_PIN_REQUIRED = 40,
+    L4_ERR_NW_PERSON_PUK_REQUIRED = 41,
+    L4_ERR_NW_SUB_PERSON_PIN_REQUIRED = 42,
+    L4_ERR_NW_SUB_PERSON_PUK_REQUIRED = 43,
+    L4_ERR_SP_PERSON_PIN_REQUIRED = 44,
+    L4_ERR_SP_PERSON_PUK_REQUIRED = 45,
+    L4_ERR_CORP_PERSON_PIN_REQUIRED = 46,
+    L4_ERR_CORP_PERSON_PUK_REQUIRED = 47,
+    L4_ERR_UNKNOWN = 100,
+    L4_ERR_ILLEGAL_MS = 103,
+    L4_ERR_ILLEGAL_ME = 106,
+    L4_ERR_GPRS_NOT_ALLOWED = 107,
+    L4_ERR_PLMN_NOT_ALLOWED = 111,
+    L4_ERR_LA_NOT_ALLOWED = 112,
+    L4_ERR_ROAMING_AREA_NOT_ALLOWED = 113,
+    L4_ERR_SERV_OPTION_NOT_SUPPORTED = 132,
+    L4_ERR_REQ_SERV_OPTION_NOT_SUBSCRIBED = 133,
+    L4_ERR_SERV_OPTION_TEMP_OUT_OF_ORDER = 134,
+    L4_ERR_GPRS_UNSPECIFIED_ERROR = 148,
+    L4_ERR_PDP_AUTH_FAIL = 149,
+    L4_ERR_INVALID_MOBILE_CLASS = 150,
+    L4_ERR_LINK_NS_SP_PERSON_PIN_REQUIRED = 151,
+    L4_ERR_LINK_NS_SP_PERSON_PUK_REQUIRED = 152,
+    L4_ERR_LINK_SIM_C_PERSON_PIN_REQUIRED = 153,
+    L4_ERR_LINK_SIM_C_PERSON_PUK_REQUIRED = 154,
+
+    /* Below are MTK proprietary error codes */
+    L4_ERR_COMMAND_CONFLICT = 302,
+    L4_NO_ERR = 600,
+    L4_ERR_UNRECOGNIZED_CMD = 601,
+    L4_ERR_RETURN_ERROR = 602,
+    L4_ERR_SYNTEX_ERROR = 603,
+    L4_ERR_UNSPECIFIED = 604,
+    L4_ERR_DATA_TRANSFER_ALREADY = 605,
+    L4_ERR_ACTION_ALREADY = 606,
+    L4_ERR_NOT_AT_CMD = 607,
+    L4_ERR_MULTI_CMD_TOO_LONG = 608,
+    L4_ERR_ABORT_COPS = 609,
+    L4_ERR_NO_CALL_DISC = 610,
+    L4_ERR_BT_SAP_UNDEFINED = 611,
+    L4_ERR_BT_SAP_NOT_ACCESSIBLE = 612,
+    L4_ERR_BT_SAP_CARD_REMOVED = 613,
+    L4_ERR_AT_NOT_ALLOWED_BY_CUSTOMER = 614
+
+} l4_err_id_enum;
+
+
+
+
+
+typedef enum
+{
+    L4_CALL_DIR_MO_CALL = 0,
+    L4_CALL_DIR_MT_CALL = 1,
+} l4_call_dir_enum;
+
+
+typedef enum
+{
+    L4_CALL_MODE_CS_DOMAIN_BEGIN     = 0,
+    L4_CALL_MODE_CS_VOICE_CALL       = L4_CALL_MODE_CS_DOMAIN_BEGIN,
+    L4_CALL_MODE_CS_DATA_CALL,
+    L4_CALL_MODE_CS_FAX_CALL,
+    L4_CALL_MODE_CS_VFD_VOICE,     /* voice followed by data, voice mode */
+    L4_CALL_MODE_CS_AVD_VOICE,     /* alternating voice/data, voice mode */
+    L4_CALL_MODE_CS_AVF_VOICE,     /* alternating voice/fax, voice mode */
+    L4_CALL_MODE_CS_VFD_DATA,      /* voice followed by data, data mode */
+    L4_CALL_MODE_CS_AVD_DATA,      /* alternating voice/data, data mode */
+    L4_CALL_MODE_CS_AVF_FAX,       /* alternating voice/fax, fax mode */
+    L4_CALL_MODE_CS_UNKNOWN_MODE,
+    L4_CALL_MODE_CS_VIDEO_CALL,
+
+    L4_CALL_MODE_IMS_DOMAIN_BEGIN    = 20,
+    L4_CALL_MODE_IMS_VOICE_CALL      = L4_CALL_MODE_IMS_DOMAIN_BEGIN,
+    L4_CALL_MODE_IMS_VIDEO_CALL,
+    L4_CALL_MODE_IMS_VOICE_CONF,
+    L4_CALL_MODE_IMS_VIDEO_CONF,
+    L4_CALL_MODE_IMS_VOICE_CONF_PARTS, // voice conference call participant
+    L4_CALL_MODE_IMS_VIDEO_CONF_PARTS, // video conference call participant
+    L4_CALL_MODE_IMS_DOMAIN_END      = 39,
+
+    L4_CALL_MODE_C2K_DOMAIN_BEGIN    = 40,
+    L4_CALL_MODE_C2K_VOICE_CALL      = L4_CALL_MODE_C2K_DOMAIN_BEGIN,
+    L4_CALL_MODE_C2K_OTASP_CALL_STD,
+    L4_CALL_MODE_C2K_OTASP_CALL_NO_STD,
+    L4_CALL_MODE_C2K_ECC_CALL,
+    L4_CALL_MODE_C2K_DOMAIN_END
+} l4_call_mode_enum;
+
+
+typedef enum
+{
+    L4_CLCCS_CALL_MODE_CS_VOICE_CALL      = 1,
+    L4_CLCCS_CALL_MODE_CS_DATA_CALL,     /* = 2  */
+    L4_CLCCS_CALL_MODE_CS_FAX_CALL,      /* = 3 */
+    L4_CLCCS_CALL_MODE_CS_VFD_VOICE,     /* = 4 voice followed by data, voice mode */
+    L4_CLCCS_CALL_MODE_CS_AVD_VOICE,     /* = 5 alternating voice/data, voice mode */
+    L4_CLCCS_CALL_MODE_CS_AVF_VOICE,     /* = 6 alternating voice/fax, voice mode */
+    L4_CLCCS_CALL_MODE_CS_VFD_DATA,      /* = 7 voice followed by data, data mode */
+    L4_CLCCS_CALL_MODE_CS_AVD_DATA,      /* = 8 alternating voice/data, data mode */
+    L4_CLCCS_CALL_MODE_CS_AVF_FAX,       /* = 9 alternating voice/fax, fax mode */
+    L4_CLCCS_CALL_MODE_CS_VIDEO_CALL,    /* = 10 */
+
+    L4_CLCCS_CALL_MODE_IMS_DOMAIN_BEGIN    = 20, // align to CLCC call mode
+    L4_CLCCS_CALL_MODE_IMS_VOICE_CALL      = L4_CLCCS_CALL_MODE_IMS_DOMAIN_BEGIN,
+    L4_CLCCS_CALL_MODE_IMS_VIDEO_CALL,
+    L4_CLCCS_CALL_MODE_IMS_VOICE_CONF,
+    L4_CLCCS_CALL_MODE_IMS_VIDEO_CONF,
+    L4_CLCCS_CALL_MODE_IMS_VOICE_CONF_PARTS, // voice conference call participant
+    L4_CLCCS_CALL_MODE_IMS_VIDEO_CONF_PARTS, // video conference call participant
+    L4_CLCCS_CALL_MODE_IMS_DOMAIN_END      = 39,
+
+    L4_CLCCS_CALL_MODE_C2K_DOMAIN_BEGIN    = 40,
+    L4_CLCCS_CALL_MODE_C2K_VOICE_CALL      = L4_CLCCS_CALL_MODE_C2K_DOMAIN_BEGIN,
+    L4_CLCCS_CALL_MODE_C2K_OTASP_CALL_STD,
+    L4_CLCCS_CALL_MODE_C2K_OTASP_CALL_NO_STD,
+    L4_CLCCS_CALL_MODE_C2K_ECC_CALL,
+    L4_CLCCS_CALL_MODE_C2K_DOMAIN_END
+} l4_clccs_call_mode_enum;
+
+
+typedef enum
+{
+    L4_CALL_TYPE_INVALIDE      = 0,
+    L4_CALL_TYPE_NATIONAL      = 129,
+    L4_CALL_TYPE_INTERNATIONAL	= 145,
+} l4_call_type_enum;
+
+
+typedef enum
+{
+    L4_CALL_CCSTATUS_IDLE = 1,
+    L4_CALL_CCSTATUS_CALLING_MO,      //2 map to CLCC_CALL_DIALING
+    L4_CALL_CCSTATUS_CONNECTING_MO,   //3
+    L4_CALL_CCSTATUS_ALERTING_MO,     //4 map to CLCC_CALL_ALERTING
+    L4_CALL_CCSTATUS_ALERTING_MT,     //5 mpa to CLCC_CALL_INCOMING
+    L4_CALL_CCSTATUS_ACTIVE,          //6 map to CLCC_CALL_ACTIVE
+    L4_CALL_CCSTATUS_RELEASED_MO,     //7
+    L4_CALL_CCSTATUS_RELEASED_MT,     //8
+    L4_CALL_CCSTATUS_USER_BUSY,       //9
+    L4_CALL_CCSTATUS_UDUB,            //10
+    L4_CALL_CCSTATUS_WAITING_MO,      //11
+    L4_CALL_CCSTATUS_WAITING_MT,      //12
+    L4_CALL_CCSTATUS_HOLD_MO,         //13 map to CLCC_CALL_HELD
+    L4_CALL_CCSTATUS_HOLD_MT,         //14 map to CLCC_CALL_HELD
+    L4_CALL_CCSTATUS_INVALID_STATE = 0xff
+} l4_call_ccstatus_enum;
+
+
+typedef enum
+{
+    L4_CALL_NUMBER_TYPE_NONE,
+    L4_CALL_NUMBER_TYPE_URI,
+    L4_CALL_NUMBER_TYPE_TEL,
+} l4_call_number_type_enum;
+
+
+typedef enum
+{
+    L4_CC_EAIC_ALLOWED = 0,
+    L4_CC_EAIC_NOT_ALLOWED
+} l4_cc_eaic_result_enum;
+
+
+
+typedef enum
+{
+    L4_EXT_ERROR_REPORT_NORMAL_CLEARING                = 16,
+    L4_EXT_ERROR_REPORT_RESOURCE_UNAVAILABLE           = 47,
+    L4_EXT_ERROR_REPORT_UNOBTAINABLE_NUMBER            = 1,
+    L4_EXT_ERROR_REPORT_NORMAL_UNSPECIFIED             = 31,
+    L4_EXT_ERROR_REPORT_BEARER_NOT_AVAIL               = 58,
+    L4_EXT_ERROR_REPORT_USER_BUSY                      = 17,
+    L4_EXT_ERROR_REPORT_SERVICE_NOT_AVAILABLE          = 63,
+    L4_EXT_ERROR_REPORT_FDN_RESTRICTION                = 2600, // refer to ps_cause_enum
+    L4_EXT_ERROR_REPORT_TEMPORTARY_FAILURE             = 41,
+    L4_EXT_ERROR_REPORT_QOS_NOT_AVAIL                  = 49,
+    L4_EXT_ERROR_REPORT_INVALID_CMD                    = 0,
+    L4_EXT_ERROR_REPORT_FACILITY_REJECTED              = 29,
+    L4_EXT_ERROR_REPORT_CALL_REJECTED                  = 21,
+    L4_EXT_ERROR_REPORT_DEDICATED_BEARER_TIMEOUT       = 1000, // may reselect CS domain
+    L4_EXT_ERROR_REPORT_GENERIC_RETRY_CS               = 1001, // may reselect CS domain
+    L4_EXT_ERROR_REPORT_GENERIC_NO_RETRY               = 1002,
+    L4_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_CS           = 1003, // may retry IMS once, then CS domain
+    L4_EXT_ERROR_REPORT_TIMER_B_EXPIRY                 = 1004,
+    L4_EXT_ERROR_REPORT_NON_UE_DETECT_EMERG            = 380, // report to AP to trigger normal to ecc redial
+    L4_EXT_ERROR_REPORT_SILENT_REDIAL_3GPP2            = 2001, 
+    L4_EXT_ERROR_REPORT_DIAL_1XRTT_DIRECTLY            = 2002, 
+    L4_EXT_ERROR_REPORT_NEED_GLOBAL_MODE_FOR_EMERG     = 2003,
+} l4_ext_error_report_enum;
+
+
+typedef enum
+{
+    L4_CALL_STATE_ACTIVE       = 0,
+    L4_CALL_STATE_HELD         = 1,
+    L4_CALL_STATE_MO_DIALING   = 2,
+    L4_CALL_STATE_MO_ALERTING  = 3,
+    L4_CALL_STATE_MT_INCOMING  = 4,
+    L4_CALL_STATE_MT_WAITING   = 5,
+} l4_call_state_enum;
+
+
+typedef enum
+{
+    L4_STK_CALL_DOMAIN_WG      = 0,
+    L4_STK_CALL_DOMAIN_IMS     = 1,
+    L4_STK_CALL_DOMAIN_C2K     = 2,
+    L4_STK_CALL_DOMAIN_INVALID
+} l4_stk_call_domain_enum;
+
+typedef enum
+{
+    L4_TR_TRIGGER_MD_SEDN_STK_CALL_SETUP = 0,
+    L4_TR_TRIGGER_MD_SEDN_STK_CALL_SETUP_BUT_ICON_COULD_NOT_DSPL = 4
+} l4_stk_type_enum;
+
+typedef enum
+{
+    L4_DTMF_START,
+    L4_DTMF_STOP,
+    L4_DTMF_START_AND_STOP,
+} l4_dtmf_action_enum;
+
+typedef enum 
+{
+    L4_IRAT_STATUS_IDLE = 0,
+    L4_IRAT_STATUS_ONGOING
+} l4_irat_status_enum;
+
+typedef enum
+{
+    L4_SETUP_CALL_BUT_ONLY_IF_NOT_CURRENTLY_BUSY_ON_ANOTHER_CALL = 0,
+	L4_SETUP_CALL_BUT_ONLY_IF_NOT_CURRENTLY_BUSY_ON_ANOTHER_CALL_WITH_REDIAL = 1,
+    L4_SETUP_CALL_PUTTINGALL_OTHER_CALLS_IF_ANY_ON_HOLD = 2,
+    L4_SETUP_CALL_PUTTINGALL_OTHER_CALLS_IF_ANY_ON_HOLD_WITH_REDIAL = 3,
+    L4_SETUP_CALL_DISCONNECTING_ALL_OTHER_CALLS_IF_ANY = 4,
+    L4_SETUP_CALL_DISCONNECTING_ALL_OTHER_CALLS_IF_ANY_WITH_REDIAL = 5
+}l4_stk_redial_setting_enum;
+
+typedef enum
+{
+    L4_STK_MEDIA_TYPE_VOICE = 0,
+	L4_STK_MEDIA_TYPE_VIDEO = 1
+}l4_stk_media_type_enum;
+
+// mirror from rmmi_reg_state_enum, notify the registered state for VDM 
+typedef enum 
+{
+   NAS_REG_STATUS_NOT_REGISTERED = 0,
+   NAS_REG_STATUS_REGISTERED_HOME,
+   NAS_REG_STATUS_NOT_REGISTERED_SEARCHING,
+   NAS_REG_STATUS_REG_DENIED,   
+   NAS_REG_STATUS_OUT_OF_COVERAGE,
+   NAS_REG_STATUS_REGISTERED_ROAMING,
+   NAS_REG_STATUS_SMS_ONLY_HOME,
+   NAS_REG_STATUS_SMS_ONLY_ROAMING,
+   NAS_REG_STATUS_EMERGENCY_ONLY,
+   NAS_REG_STATUS_CSFB_NOT_PREFERRED_HOME,
+   NAS_REG_STATUS_CSFB_NOT_PREFERRED_ROAMING
+} nas_reg_status_enum;
+
+// mirror from rac_vgmm_struct.h, notify result of ESFB/acquire EMC for VDM 
+typedef enum{
+    L4_EMS_ACQUIRE,
+    L4_EMS_RE_ACQUIRE,
+    L4_EMS_RELEASE
+} l4_emergency_service_request_type_enum;
+
+typedef enum{
+    L4_EMS_CAUSE_NONE = 0,
+    L4_EMS_CAUSE_EPDU_FAILURE = 1,
+    L4_EMS_CAUSE_NUM
+} l4_emergency_service_request_cause_enum;
+
+typedef enum
+{
+    L4_NORMAL_REGISTRATION,
+    L4_EMERGENCY_REGISTRATION
+} l4_emergency_service_reg_type_enum;
+
+typedef enum{
+    L4_EMS_IND_CAUSE_NONE = 0,
+
+    //Success CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes 
+    //that map to this value. 
+    L4_EMS_CNF_SUCCESS = 1,
+    L4_EMS_IND_ACTIVE = 2,
+
+    //Failure CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes 
+    //that map to this value. 
+    L4_EMS_CNF_FAIL = 100,
+    L4_EMS_IND_BARRED = 101,
+    L4_EMS_IND_NO_CELL = 102,
+    L4_EMS_IND_CURRENT_PLMN = 103,
+    L4_EMS_IND_N1_NOT_ACTIVE = 104,
+    L4_EMS_IND_INACTIVE = 105,
+    L4_EMS_IND_ABNORMAL_TRY_OTHER_IPCAN = 106
+} l4_emergency_service_cnf_result_enum, l4_emergency_service_cnf_cause_enum;
+
+typedef enum{
+    L4_EMSFB_CAUSE_NONE = 0,
+
+    //Success CNF response to EMERGENCY_SERVICE_FALLBACK_REQ
+    L4_EMSFB_CNF_SUCCESS = 1,
+
+    //Failure CNF response to EMERGENCY_SERVICE_REQ
+    L4_EMSFB_CNF_FAIL = 200,
+    L4_EMSFB_BARRED = 201,
+    L4_EMSFB_NO_CELL = 202,
+    L4_EMSFB_CURRENT_PLMN = 203,
+    L4_EMSFB_N1_NOT_ACTIVE = 204,
+
+    //VDM internal use
+    L4_EMSFB_VDM_ESFB_TIMER_TIMEOUT,
+} l4_emergency_fallback_cnf_result_enum, l4_emergency_fallback_cnf_cause_enum;
+
+#endif /* _L4_VDM_ENUM_H */
+
diff --git a/mcu/protocol/interface/l4/l4b_vdm_struct.h b/mcu/protocol/interface/l4/l4b_vdm_struct.h
new file mode 100644
index 0000000..2f71b9c
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4b_vdm_struct.h
@@ -0,0 +1,446 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	l4b_vdm_struct.h
+ *
+ * Description:
+ * ------------
+ *   This file is intends for L4B/VDM interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _L4B_VDM_STRUCT_H
+#define _L4B_VDM_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "l4_vdm_enum.h"
+#include "sim_public_enum.h"
+
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+/***********************************/
+/*      VDM -> L4B (REQ)           */
+/***********************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_type_enum         ecall_type;
+    ecall_format_enum       ecall_format;
+    kal_uint8               msd_data_len;
+    kal_uint8               msd_data[MAX_MSD_LENGTH]; 
+} vdm_l4b_cs_cc_ecall_req_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8               dial_num[MAX_CC_ADDR_LEN];
+    kal_bool                is_video_call;
+    kal_bool                is_redial_from_volte;
+    kal_uint8               call_id;
+    kal_uint8               so;
+} vdm_l4b_c2k_cc_mo_call_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8               dial_num[MAX_CC_ADDR_LEN];
+    kal_uint8               call_id;
+} vdm_l4b_c2k_cc_emerg_call_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sat_terminal_res_enum   tr; // o or 4
+    kal_uint8               call_id;
+} vdm_l4b_c2k_cc_stk_call_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                      call_id;
+    l4_call_related_ss_type_enum   opcode;
+} vdm_l4b_c2k_cc_call_related_ss_req_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+    kal_uint8                       call_id;
+    kal_uint8                       seq_no;
+    l4_cc_eaic_result_enum          eaic_result;
+} vdm_l4b_c2k_cc_mt_call_present_rsp_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+} vdm_l4b_c2k_cc_mt_call_accept_req_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+}vdm_l4b_c2k_cc_list_current_calls_req_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint8   digit;
+} vdm_l4b_c2k_cc_send_digit_req_struct;
+
+
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint8   digit;
+} vdm_l4b_c2k_cc_start_send_digit_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} vdm_l4b_c2k_cc_stop_send_digit_req_struct;
+
+
+/***********************************/
+/*      L4B -> VDM (CNF)           */
+/***********************************/
+
+
+/* Common response from L4B to VDM */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4_result_code_enum    result;
+    l4_err_id_enum         error_cause;
+} vdm_l4b_common_response_struct;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+/* MSG_ID_VDM_L4B_CS_CC_ECALL_CNF */
+typedef vdm_l4b_common_response_struct vdm_l4b_cs_cc_ecall_cnf_struct;
+#endif
+
+typedef vdm_l4b_common_response_struct vdm_l4b_c2k_cc_mo_call_cnf_struct;
+
+typedef vdm_l4b_common_response_struct vdm_l4b_c2k_cc_emerg_call_cnf_struct;
+
+typedef vdm_l4b_common_response_struct vdm_l4b_c2k_cc_stk_call_cnf_struct;
+
+typedef vdm_l4b_common_response_struct vdm_l4b_c2k_cc_hangup_all_cnf_struct;
+
+typedef vdm_l4b_common_response_struct vdm_l4b_c2k_cc_call_related_ss_cnf_struct;
+
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    l4_ext_error_report_enum       ceer_cause;
+    l4_result_code_enum            result;
+    l4_err_id_enum                 err_id;
+    kal_uint16                     ecc_category;
+} vdm_l4b_c2k_cc_ext_error_report_cnf_struct;
+
+
+typedef struct {
+    kal_uint8              call_id;
+    l4_call_dir_enum       dir;
+    l4_call_state_enum     call_state;
+    l4_call_mode_enum      call_mode;
+    kal_bool               mpty;  // FALSE: is NOT conference call, TRUE: is conference call
+    l4_call_type_enum      call_type;
+    kal_uint8              number[MAX_CC_ADDR_LEN];
+    kal_uint8              cli_validity;
+} vdm_l4b_call_list_struct;
+
+
+typedef struct {
+    kal_uint8                  call_id;
+    l4_call_dir_enum           dir;
+    l4_clccs_call_mode_enum    clccs_cs_mode;
+    l4_call_ccstatus_enum      ccstatus;
+    kal_bool                   mpty;  // FALSE: is NOT conference call, TRUE: is conference call
+    l4_call_number_type_enum   number_type;
+    l4_call_type_enum          call_type;
+    kal_uint8                  number[MAX_SIP_URI_LEN];
+    kal_bool                   cli_present;
+    kal_uint8                  cli_validity;
+} vdm_l4b_call_list_ext_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sat_terminal_res_enum tr;
+    kal_uint8 additional_info;
+} vdm_l4b_snd_stk_call_tr_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    l4_result_code_enum            result;
+} vdm_l4b_snd_stk_call_tr_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   total_call;
+    vdm_l4b_call_list_struct   call_list[L4CC_MAX_CALL_NUM];
+} vdm_l4b_c2k_cc_list_current_calls_cnf_struct;
+
+
+typedef vdm_l4b_common_response_struct                  vdm_l4b_c2k_cc_mt_call_accept_cnf_struct;
+
+typedef vdm_l4b_common_response_struct                  vdm_l4b_c2k_cc_send_digit_cnf_struct;
+
+typedef vdm_l4b_common_response_struct                  vdm_l4b_c2k_cc_start_send_digit_cnf_struct;
+
+typedef vdm_l4b_common_response_struct                  vdm_l4b_c2k_cc_stop_send_digit_cnf_struct;
+/***********************************/
+/*      L4B -> VDM (URC)           */
+/***********************************/
+
+typedef struct
+{
+    /* +ECPI:<call_id>,<msg_type>,<is_ibt>,<is_tch>,<dir>,
+     *       <call_mode>,[<number>,<type>],[<disc_cause>],[<pau>]
+     */
+    kal_bool               is_ibt;
+    kal_bool               is_tch;
+    l4_call_dir_enum       call_dir;
+    l4_call_mode_enum      call_mode;
+    kal_bool               is_number_call_type_present;
+    kal_uint8              number[MAX_CC_ADDR_LEN];
+    l4_call_type_enum      call_type;
+    kal_bool               is_disc_cause_present;
+    kal_uint16             disc_cause;
+} l4b_ecpi_info_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8               call_id;
+    kal_uint8               ecpi_type;
+    l4b_ecpi_info_struct    ecpi_info;
+} vdm_l4b_common_cs_cc_ecpi_ind_struct;
+
+
+typedef struct {
+    kal_uint8              number[MAX_CC_ADDR_LEN];
+    l4_call_type_enum      call_type;
+    l4_call_mode_enum      call_mode;
+    kal_uint8 redirect_num[MAX_CC_ADDR_LEN];
+} l4b_cc_eaic_info_struct;
+
+
+typedef struct 
+{  
+    /* +EAIC
+     */
+
+    LOCAL_PARA_HDR 
+    kal_uint8                       call_id;
+    l4b_cc_eaic_info_struct         eaic_info;
+    kal_uint8                       seq_no;
+} vdm_l4b_c2k_cc_mt_call_present_ind_struct;
+
+/* MSG_ID_VDM_L4BNW_ATTACHED_RAT_IND */
+typedef struct 
+{
+    LOCAL_PARA_HDR 
+    rat_enum    currently_attached_rat;
+    rat_enum    last_attached_rat;
+} vdm_l4bnw_attached_rat_ind_struct;
+
+/******************************************************************************
+ * +ESTKCNUM: <call_number>, <call_type>, <domain>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   stk_call_num[MAX_CC_ADDR_LEN];
+    l4_call_type_enum           stk_call_type;
+    l4_stk_call_domain_enum     stk_call_domain;
+	l4_stk_redial_setting_enum  stk_redial_setting;
+	l4_stk_media_type_enum      stk_media_type;
+} vdm_l4b_stk_call_num_ind_struct;
+
+typedef vdm_l4b_common_cs_cc_ecpi_ind_struct vdm_l4b_c2k_cc_ecpi_translate_ind_struct;
+
+typedef vdm_l4b_common_cs_cc_ecpi_ind_struct vdm_l4b_c2k_cc_mt_call_setup_ind_struct;
+
+typedef vdm_l4b_common_cs_cc_ecpi_ind_struct vdm_l4b_c2k_cc_call_disconnect_ind_struct;
+
+typedef vdm_l4b_common_cs_cc_ecpi_ind_struct vdm_l4b_c2k_cc_mo_call_id_ind_struct;
+
+#endif /* _L4B_VDM_STRUCT_H */
+
+
diff --git a/mcu/protocol/interface/l4/l4c2rac_struct.h b/mcu/protocol/interface/l4/l4c2rac_struct.h
new file mode 100644
index 0000000..327cfca
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c2rac_struct.h
@@ -0,0 +1,885 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	l4crac_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between RAC and L4C.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : l4c2rac_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _L4C2RAC_STRUCT_H
+#define _L4C2RAC_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "kal_public_defs.h"
+#include "mcd_l3_inc_struct.h"
+#include "kal_general_types.h"
+#include "l3_inc_enums.h"
+#include "l3_inc_local.h"
+#include "l4c_common_enum.h"
+#include "l4crac_enums.h"
+#include "sim_public_enum.h"
+#include "ims_common_def.h"
+#include "irat_common_enums.h"
+#include "gmss_public.h"
+#include "rac_gmss_struct.h"
+
+#include "c2k_irat_msg_struct.h"
+#include "l4c_eval_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+} l4crac_act_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    mm_user_search_type_enum search_type; //mm_user_search_type_enum, erica 20070424, MAUI_00232280
+    mm_user_search_cause_enum search_cause; //used for GSMA SIM block feature
+} l4crac_reg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    mm_user_search_type_enum search_type; //mm_user_search_type_enum, erica 20070424, MAUI_00232280
+} l4crac_ps_reg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    domain_id_enum service; /* CS/PS/CS_PS*/
+    kal_bool is_poweroff; /* TRUE/FALSE*/
+    l4c_rac_detach_cause_enum detach_cause; /*DETACH_CAUSE_NONE/DETACH_CAUSE_DUPLEX_MODE_CHANGE*/
+    kal_uint8 sim_index; /*which sim is invalid*/
+    rat_enum reject_rat; /*which rat reject the sim*/
+} l4crac_dereg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rfoff_cause_enum rfoff_cause;
+} l4crac_rfoff_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    user_list_type_enum user_list_type;
+    rat_enum list_rat;
+    kal_uint8 given_number_of_plmn; // used for the USER_LIST_TYPE_GIVEN_TIMER_NUMBER. When xAS found the given number of plmn, xAS return plmn list cnf (with signal power value). If the number is 255, means feature OFF.
+    kal_uint32 given_timer_period;  //used for the USER_LIST_TYPE_GIVEN_TIMER_NUMBER to guard the plmn list procedure, if the timer timeout, RAC will notify lower layer to update what they found
+    network_scan_input_struct  network_scan_input;
+} l4crac_plmn_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    ms_mobile_class_enum ms_class; /* CC/CG/B*/
+} l4crac_class_change_req_struct;
+
+#if 0 // MOLY00083802 remove band related codes in RAC
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifdef __LTE_RAT__
+/* under construction !*/
+/* under construction !*/
+#endif /* __LTE_RAT__ */
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#if defined(__GEMINI__)
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_config_status_enum sim_config_status; // refer to sim_config_status_enum
+    sim_insert_status_enum sim_insert_status; // refer to sim_insert_status_enum
+}l4crac_sim_status_update_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    plmn_id_rat_struct plmn_id;
+    //kal_uint8 plmn_sel_mode;
+
+    /* Johnny:
+    AUTO_RESELECTION/MANUAL_RESELECTION, there is no __MANUAL_MODE_NW_SEL__ compile option
+    */
+    plmn_reselection_enum plmn_reselection_mode;
+    rat_enum preference;   //  0:default ,  1:GSM ,   2:UMTS
+    endc_search_enum  endc_search_mode;
+    kal_uint32 factory_mode_arfcn; //FastCampOn 20081104
+#ifdef __CSG_SUPPORT__
+//mtk02475: for Rel8 CSG feature, user can specify CSG id for manual CSG selection
+    kal_bool is_manual_csg_sel;
+    kal_uint32 csg_id;
+#endif
+} l4crac_plmn_search_req_struct;
+
+typedef rac_gmss_abort_enwsel_search_req_struct l4crac_abort_enwsel_search_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    rat_enum rat_mode;
+    kal_bool save_to_nvram; //MAUI_02554068
+}l4crac_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+}l4crac_plmn_list_stop_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    prefer_rat_type_enum type;
+    rat_enum prefer_rat;
+    kal_uint32 rat_num;
+    rat_enum rat_order[MAX_SUPPORTED_RAT];
+}l4crac_set_prefer_rat_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    prefer_rat_type_enum type;
+}l4crac_get_prefer_rat_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    susp_resu_mode_enum  mode;
+    susp_resu_action_enum action;
+    kal_uint8            susp_id;
+    susp_resu_source_enum source;
+}l4crac_susp_resu_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool is_supporting_roaming;
+    kal_bool disable_international_roaming_support;
+    kal_bool disable_national_roaming_support;
+    kal_bool disable_hhplmn_search_support;
+}l4crac_set_roaming_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool force_send_SCRI;
+    end_session_cause_enum cause;
+}l4crac_end_ps_data_session_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    end_session_cause_enum cause;
+}l4crac_end_ps_data_session_ind_struct;
+
+#ifdef __CSG_SUPPORT__
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    plmn_id_rat_struct plmn_id_rat; //mtk02475: user can specified the CSG list scope
+} l4crac_csg_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+}l4crac_csg_list_stop_req_struct;
+#endif /* __CSG_SUPPORT__ */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    l4c_rac_sms_preference_enum     sms_preference;
+    kal_bool                        is_from_provision;
+} l4crac_set_sms_preference_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        enable;
+} l4crac_set_sms_over_sgs_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum                  src_id;
+    kal_bool                            is_utran_vdp_valid;
+    kal_bool                            is_eutran_vdp_valid;
+    l4_voice_domain_preference_enum     utran_voice_domain_preference;
+    l4_voice_domain_preference_enum     eutran_voice_domain_preference;
+    kal_bool                            is_from_provision;
+} l4crac_set_voice_domain_preference_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    ue_usage_setting_enum           ue_usage_setting;
+} l4crac_set_ue_usage_setting_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    ue_mode_enum                    ue_mode;
+} l4crac_set_ue_mode_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        is_ims_voice_available;
+} l4crac_set_ims_voice_availability_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        is_ims_sms_available;
+} l4crac_set_ims_sms_availability_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} l4crac_sim_ready_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    sim_error_cause_enum cause;
+} l4crac_sim_error_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint32 timer_interval[MAX_RECOVERY_TIMER_NUM];
+} l4crac_set_recovery_search_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4crac_set_recovery_search_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; // need to piggyback to L4C
+} l4crac_get_recovery_search_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; // piggyback to L4C from REQ
+    kal_uint32 timer_interval[MAX_RECOVERY_TIMER_NUM];
+} l4crac_get_recovery_search_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ps_cause_enum cause;
+} l4crac_eps_attach_needed_rej_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ct_mode_enum  mode;
+} l4crac_set_ct_mode_req_struct;
+
+
+#if defined(__CDMA2000_RAT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mmdc_recovery_search_enum trigger_type;
+} l4crac_mmdc_recovery_search_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    act_sim_enum active_sim;
+}l4crac_active_sim_ind_struct, l4crac_active_sim_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn;
+    rat_enum rat;
+    kal_uint8 ara_start[2];
+    kal_uint8 ara_end[2];
+}l4crac_aral_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    ims_reg_state_enum 	            reg_state;
+    ims_reg_type_enum	            reg_type;
+    ims_dereg_cause_enum            dereg_cause;
+    ims_access_rat_enum             rat;
+	kal_bool                        is_retry;
+	kal_uint32 						ext_info;
+} l4crac_ims_reg_status_update_req_struct;
+
+#ifdef __IMS_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        is_ims_voice_support;    
+    kal_bool                        is_ims_sms_support;
+    ims_cap_rat_enum                ims_rat_cap;
+} l4crac_ims_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_reg_type_enum               reg_type;
+} l4crac_ims_reg_start_req_struct, l4crac_ims_dereg_start_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_timer_type_enum             timer_type;
+    ims_timer_status_enum           timer_status;
+    kal_uint16                      timer_length;
+} l4crac_ims_timer_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_special_event_enum          ims_event;
+    imcb_imc_sip_cause_enum         sip_cause;
+} l4crac_ims_event_update_req_struct;
+
+#endif /* __IMS_SUPPORT__*/
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_ims_roaming_enable;
+} l4crac_set_ims_roaming_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    custom_plmn_type_enum type;
+} l4crac_get_custom_plmn_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    custom_plmn_type_enum type;
+    kal_uint8 plmn_ver[2];
+    kal_uint16 no_plmn_entry;
+    kal_uint8 *plmn_data;
+} l4crac_custom_plmn_list_update_req_struct;
+
+#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    mm_ims_voice_termination        mm_ivt;
+} l4crac_set_mm_ims_voice_termination_req_struct;
+#endif /* __VOLTE_SUPPORT__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    call_status_enum            call_status;
+    call_type_indication_enum   call_type;
+    kal_bool is_flight_mode_on_ecc;    // GMSS need this flag to determine System/PLMN selection logic during filght mode ECC
+    rat_enum                    call_current_rat;   // the call start/stop current rat
+} l4crac_call_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} l4crac_set_first_camp_on_prefer_rat_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    emdstatus_md_config_enum md_config;
+    emdstatus_sim_config_enum sim_config;
+} l4crac_md_sim_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    plmn_id_struct                  plmn_id;
+} l4crac_disable_eutran_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum  src_id;
+    kal_bool geran_tdma;
+    kal_bool utran_fdd;
+    kal_bool utran_tdd_lcr;
+    kal_bool eutran_fdd;
+    kal_bool eutran_tdd;
+    kal_bool nr_fdd;
+    kal_bool nr_tdd;
+    mode_switch_cause_enum  cause;
+} l4crac_duplex_mode_change_req_struct;
+
+ typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+ } l4crac_clear_mru_req_struct;
+
+ typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum     src_id;
+    rat_enum               rat;
+    plmn_id_struct         plmn_id;
+    kal_uint16             arfcn;
+    kal_uint8              requested_band;
+} l4crac_set_mru_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum     src_id;
+    rat_enum               rat;
+    plmn_id_struct         plmn_id;
+} l4crac_set_aux_plmn_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool voice_over_ims_ongoing;
+} l4crac_ims_call_info_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    ims_scm_info_type_enum application;
+    ims_scm_info_action_enum indication;
+} l4crac_ims_scm_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    wm_policy_enum wm_policy;
+} l4crac_set_wm_policy_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool data_enabled_setting;
+    kal_bool data_roaming_setting;
+} l4crac_set_roaming_data_config_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    module_type dst_id;                 // destination module ID
+    omadm_cmd_type_enum cmd;
+    omadm_node_type_enum node_type;     // OMADM node
+    kal_uint32 node_value;              // used only cmd=SET
+} l4crac_omadm_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    mru_cmd_type_enum cmd;
+    mmss_list_type_enum list_type;          // RAL or MRU
+    vzwmru_entry_struct entry;              // used only cmd=EDIT
+} l4crac_vzwmru_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum      src_id;
+    hvolte_mode_enum        mode;
+    kal_bool                is_for_silent_redial;
+    set_hvolte_mode_cause_enum cause;
+} l4crac_set_hvolte_mode_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool mode;      //to indicate the mode=0/1 to RAC
+} l4crac_cs_voice_call_protection_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_main_ps; /* GEMINI : data preferred SIM e.g. internet data*/
+} l4crac_data_allow_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_main_ps; /* GEMINI : data preferred SIM e.g. internet data*/
+} l4cvdm_data_allow_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_user_selected_main_ps; /* GEMINI : user selected data preferred stack e.g. internet data*/
+} l4crac_user_selected_main_ps_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_uint8 tw_mode;
+    kal_uint8 setting;
+} l4crac_gmss_set_tw_mode_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_apn_enable;
+} l4crac_vzw_admin_apn_setting_notify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+	kal_bool is_data_service_present;
+    kal_bool is_data_service_on;
+	kal_bool is_data_roaming_service_present;
+	kal_bool is_data_roaming_service_on;
+} l4crac_data_service_status_update_req_struct;
+
+#ifdef __GEMINI__
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+}l4crac_rsim_auth_abort_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_rsim_enable;
+}l4crac_rsim_set_ps_only_req_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+	kal_bool is_rsim_enabled;							/* TRUE when RSIM is enabled, (i.e when AT+ERSIM = 1 is received), FALSE when RSIM is disabled, (i.e when AT+ERSIM = 0 is received)*/
+	kal_bool is_aka_sim_enabled;				   /* TRUE when AKA SIM is enabled (I.E when AT+ERSIMAKA=1 is received), FALSE when AKA SIM is enabled, (i.e when AT+ERSIMAKA = 0 is received) */
+}l4crac_rsim_aka_status_req_struct;
+
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_ct_volte_support;
+} l4crac_volte_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum                  src_id;
+} l4crac_reset_ota_ctxt_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4crac_get_last_rat_select_ind_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   src_id;
+    vzw_barring_timer_type_enum timer_type;
+    kal_uint32  timer_interval;  /* in second */
+} l4crac_gmss_set_plmn_barring_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   src_id;
+    kal_bool    result;
+} l4crac_gmss_set_plmn_barring_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   src_id;
+    vzw_barring_timer_type_enum timer_type;
+} l4crac_gmss_get_plmn_barring_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   src_id;
+    kal_uint32  timer_interval;
+} l4crac_gmss_get_plmn_barring_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum disable_rat;
+}l4crac_rat_disable_config_req_struct;  /*TMO diable 2G*/
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 svn;    // BCD type, non reverse
+} l4crac_set_ms_sv_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    fplmn_action_enum action;
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__	
+    kal_bool card_lock;
+#endif	
+    kal_uint8 fplmn_count; 
+    plmn_id_struct fplmn_id[MAX_NUM_FPLMNS];
+} l4crac_fplmn_action_req_struct;
+
+typedef struct {
+    kal_bool is_mobile_data_enable_present;
+    kal_bool is_mobile_data_enable;
+    kal_bool is_mobile_data_roaming_enable_present;
+    kal_bool is_mobile_data_roaming_enable;
+    kal_bool is_volte_enable_present;
+    kal_bool is_volte_enable;
+    kal_bool is_vzw_ims_test_mode_enable_present;
+    kal_bool is_vzw_ims_test_mode_enable;
+} l4crac_cellular_network_config;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4crac_cellular_network_config config;
+}l4crac_cellular_network_config_req_struct;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 purpose;
+	kal_uint8 mode;
+    kal_uint32 timer1;
+	kal_bool is_timer1_valid;
+    kal_uint32 timer2;
+    kal_bool is_timer2_valid;
+}l4crac_set_timer_req_struct;
+#endif
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    module_type user;
+    kal_uint8   src_id;
+    vg_option_enum vg_option_bitmap;
+    kal_uint8 act_operation;    // 0 (default value): no operation, 1: need local release, 2: need local release + trigger NR search
+} l4crac_vg_option_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    module_type user;      // Piggy back
+    kal_uint8   src_id;
+    kal_bool    result;
+} l4crac_vg_option_update_cnf_struct;
+
+//should be the same as mm_emm_csfb_page_rsp_struct
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_accept_paging;   //Whether upper layer decides to answer the mobile terminating CS service
+} l4crac_csfb_page_rsp_struct;
+
+//should be the same as mm_emm_csfb_page_config_req_struct
+typedef struct {
+    LOCAL_PARA_HDR
+    csfb_page_config_enum csfb_page_config;
+    kal_uint8 add_info; // if csfb_page_config is 3 or 4, add_info will be the new timer value
+} l4crac_csfb_page_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_rude_wakeup;
+}l4crac_screen_on_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool normal_oos_recovery_round_present;
+	kal_uint8 normal_oos_recovery_round; /* default value =5, range [2,10] */
+	kal_bool inactive_fullband_period_present;
+	kal_uint16 inactive_fullband_period; /* default value =200s, range [90,360] */
+	kal_bool inactive_sniffer_period_present;
+	kal_uint8 inactive_sniffer_period; /* default value =30s, range [10,60] */
+	kal_bool is_inactive_mode_present;
+	kal_bool is_inactive_mode; /* TRUE: Enter inactive mode, FALSE: Leave inactive mode*/
+    kal_bool inactive_scan_time_present;
+    kal_uint32 inactive_scan_time;
+    kal_bool inactive_sleep_time_present;
+    kal_uint32 inactive_sleep_time;
+} l4crac_inactive_mode_configuration_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8               trans_id;
+    ims_service_type_enum   type;
+    ims_service_status_enum status;
+    kal_uint8 src_id; //source id of this message (IMS or VDM)
+} l4crac_uac_param_check_req_struct;    // rac_vgmm_ims_uac_req_struct
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   trans_id;
+    kal_uint8   src_id; //source id of this message (IMS or VDM)
+} l4crac_uac_abort_req_struct;    // rac_vgmm_ims_uac_abort_req_struct
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_service_type_enum   type;
+    ims_service_status_enum status;
+} l4crac_nr_ims_service_status_req_struct;  // rac_vgmm_ims_service_status_req_struct
+
+
+// TODO: Define below struct
+/* Below enums are defined in rac_vgmm_struct.h.
+   rac_vgmm_struct.h includes this header, so this header cannot include it again.
+   Do not use kal_uint8/kal_uint32. The sizes of enums are unpredictable!
+*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} l4crac_emergency_service_fallback_req_struct; // rac_vgmm_emergency_service_fallback_req_struct
+
+typedef l4c_eval_sr_failure_ind_struct l4crac_vgmm_proc_failure_ind_struct;
+
+#if defined(__TC01__) // at%ltecall
+typedef struct{
+	#if defined(__GSM_RAT__)
+	kal_uint8	requested_gsm_band;
+	#endif /* __GSM_RAT__ */
+	#if defined(__UMTS_RAT__)
+	kal_uint8	requested_umts_fdd_band[SIZE_OF_UMTS_BAND];
+	#endif /* __UMTS_RAT__ */
+}custom_factory_ugrac_context_struct;
+
+#ifdef __LTE_RAT__
+typedef struct{
+	kal_uint8	requested_lte_band[SIZE_LTE_BAND];
+}custom_factory_rac_erac_context_struct;
+#endif
+
+typedef struct {
+	kal_uint8	factory_dynamic_band;
+	rat_enum	factory_change_rat;
+	#if defined(__GSM_RAT__) || defined(__UMTS_RAT__)
+	custom_factory_ugrac_context_struct	ugrac;
+	#endif
+	#if defined(__LTE_RAT__)
+	custom_factory_rac_erac_context_struct	erac;
+	#endif /* __LTE_RAT__ */
+	kal_uint8 initial_lte_call;
+}custom_factory_band_context_struct;
+#endif /* __TC01__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool high_prio_timer_config;
+} l4crac_high_prio_search_timer_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool is_disable_integrity_check; //KAL_TRUE to disable integirty check
+ } l4crac_set_save_rac_preference_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool ims_pdn_activation_ongoing;
+ } l4crac_ims_pdn_activation_req_struct;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_registration_state_enum  ecall_reg_state;
+} l4crac_set_ecall_registration_req_struct;
+#endif /* (__ECALL_SUPPORT__) || (__NG_ECALL_SUPPORT__) */
+typedef rac_gmss_set_allowed_mcc_list_req_struct l4crac_set_allowed_mcc_list_req_struct;
+
+typedef rac_gmss_set_allowed_mcc_list_cnf_struct l4crac_set_allowed_mcc_list_cnf_struct;
+#endif /* _L4C2RAC_STRUCT_H */
+
diff --git a/mcu/protocol/interface/l4/l4c2smu_struct.h b/mcu/protocol/interface/l4/l4c2smu_struct.h
new file mode 100644
index 0000000..807e34f
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c2smu_struct.h
@@ -0,0 +1,1149 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   l4c2smu_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : l4c2smu_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _L4C2SMU_STRUCT_H
+#define _L4C2SMU_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "ps2sim_struct.h"
+#include "ps2sat_struct.h"
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "device.h"
+#include "l4c_common_enum.h"
+#include "sim_public_enum.h"
+#include "sim_ps_enum.h"
+#include "smu_def.h"
+#include "smu_common_enums.h"
+#include "smu_tmo_sml.h"
+#include "rmmi_common_enum.h"
+#include "custom_nvram_extra.h"
+#include "custom_nvram_sec.h"
+#include "kal_public_defs.h"
+#include "l3_inc_enums.h"
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+#include "l5_l4c_enums.h"
+#include "l5_l4c_struct.h"
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    power_on_status_enum poweron_mode;//add for system error with exception handle
+} l4csmu_start_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+    smu_chv1_phonelock_status_enum chv1_phonelock_status;
+    sim_lp_struct lp[2];
+    rmmi_err_id_enum rmmi_error_cause;
+    sim_chv_info_struct chv_info;
+    sim_ecc_struct ecc;
+    kal_uint8 is_valid_rat_mode;  //mtk01616_110315
+    kal_uint8 rat_mode; //RAT mode setting value in EF_RAT
+    sim_additional_error_cause_enum additional_error_cause;
+    kal_bool is_sim_disable;
+} l4csmu_start_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    smu_security_type_enum type;
+    sim_security_operation_enum op;
+    kal_uint8 key1[SML_MAX_SUPPORT_KEY_LEN];
+    kal_uint8 key2[SML_MAX_SUPPORT_KEY_LEN];
+    kal_uint8 channel_id;
+} l4csmu_security_req_struct, l4csmu_app_security_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    smu_security_type_enum type;
+    kal_uint32 cphs_retry_count; /* Only for CPHS Locks */
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+    rmmi_err_id_enum rmmi_error_cause;
+    sim_chv_info_struct chv_info;
+    kal_uint8 channel_id;
+} l4csmu_security_cnf_struct, l4csmu_app_security_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    uicc_app_type_enum    app_type;
+    kal_uint8             channel_id;
+    kal_uint8             mcc[4];
+    kal_uint8             mnc[4];
+#ifdef __SIM_MULTI_PIN__
+    kal_uint8             pin_status_data[SIM_MAX_PIN_DO_SIZE];
+#endif
+} l4csmu_app_ready_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_event_enum event;
+    kal_uint8 argc;
+    kal_uint8 arg_list[MAX_SIM_EVENT_ARG_LIST_SIZE];
+} l4csmu_event_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    uicc_app_type_enum app_type;
+} l4csmu_app_start_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    uicc_app_type_enum app_type;
+    kal_uint8 channel_id;
+    kal_uint16 result;
+} l4csmu_app_start_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    sml_cat_enum category;     /* sml_cat_enum */
+    sml_op_enum op;           /* sml_op_enum */
+    kal_uint8 key[CAT_KEY_MAX_SUPPORT_LEN];
+    kal_uint8 len;          /* valid bytes in data[] */
+    kal_uint8 data[10];     /* the data for add command */
+} l4csmu_set_personalization_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    sml_cat_enum category;     /* sml_cat_enum */
+    sml_op_enum op;           /* sml_op_enum */
+    kal_bool result;
+    sml_state_enum state;        /* sml_state_enum */
+    kal_uint32 retry_count;
+    kal_uint8 num_of_sets;  /* number of sets in this category */
+    kal_uint8 space_of_sets;/* number of empty sets in this category */
+} l4csmu_set_personalization_cnf_struct;
+
+#ifdef __CARRIER_RESTRICTION__
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    smu_crrst_op_enum op;
+    kal_uint8 key[SML_MAX_SUPPORT_KEY_LEN];
+    kal_uint8 list;
+    smu_crrst_cat_enum category;
+    kal_uint8 len;          /* valid bytes in data[] */
+    kal_uint8 data[23];     /* the data for add, remove command */
+    kal_uint8 multi_sim_policy;
+    kal_uint8 allowed_carriers_prioritized;
+} l4csmu_set_carrier_restriction_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    smu_crrst_cat_enum category;
+    smu_crrst_op_enum op;
+    kal_bool result;
+} l4csmu_set_carrier_restriction_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   l4c_source_id_enum src_id;
+} l4csmu_carrier_restriction_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum                        src_id;
+    smu_crrst_state_enum                      crrst_state;
+    kal_uint8                                 multi_sim_policy;
+    kal_uint8                                 allowed_carriers_prioritized;
+    smu_carrier_restriction_list_struct       white_list;
+    smu_carrier_restriction_list_struct       black_list;
+} l4csmu_carrier_restriction_status_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          algo_type;
+	kal_uint32 max_retry_count;
+    kal_uint8          crrst_hck[NVRAM_SML_S_MAX_SUPPORT_HCK_LEN];
+    kal_uint8          crrst_salt[NVRAM_SML_S_MAX_SUPPORT_SALT_LEN];
+    kal_uint8          crrst_inter_cnt[NVRAM_SML_S_MAX_SUPPORT_INTER_CNT_LEN];
+} l4csmu_set_crrst_secure_data_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_set_crrst_secure_data_cnf_struct;
+#endif
+
+// TMO SML
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_get_shared_key_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint8 envelope_type;
+    kal_uint32 encrypted_key_len;
+    kal_uint8 encrypted_key[SML_TMO_MAX_ENCRYPTED_KEY_LENGTH];
+} l4csmu_get_shared_key_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint16 slb_len;
+} l4csmu_update_slb_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint16 rmmi_error_cause;
+} l4csmu_update_slb_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_reset_slb_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint16 rmmi_error_cause;
+} l4csmu_reset_slb_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_get_slb_version_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint8 version[SML_TMO_SIZE_OF_VERSION];
+} l4csmu_get_slb_version_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_get_sim_lock_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint8 lock_state;
+    kal_uint32 unlock_time_left;
+    kal_uint8 num;
+    kal_uint8 sim_plmn_gid[SML_TMO_SIZE_OF_MCC_MNC+SML_TMO_SIZE_OF_GID];
+} l4csmu_get_sim_lock_status_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_get_modem_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint16 length;
+    kal_uint8 blob[2048];
+} l4csmu_get_modem_config_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_get_api_version_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8 api_version[SML_TMO_SIZE_OF_API_VERSION];
+    kal_bool result;
+} l4csmu_get_api_version_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 nw_time_zone;
+    nw_time_zone_time_struct nw_time;
+} l4csmu_update_nw_time_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sml_event_enum event;
+} l4csmu_sml_event_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    smu_sim_access_cmd_enum cmd;
+    kal_uint16 fileid;
+    kal_uint8 p1;
+    kal_uint8 p2;
+    kal_uint8 p3;
+    kal_uint8 data[255];
+    kal_uint8 pathid[4];
+    kal_uint8 pathid_length;
+    kal_uint8 channel_id;
+} l4csmu_sim_access_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8 sw1;
+    kal_uint8 sw2;
+    kal_uint16 length;
+    kal_uint8 res_data[256+1];
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+} l4csmu_sim_access_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_file_index_enum file_idx;
+    l4c_source_id_enum src_id;
+    kal_uint8 idx;
+    smu_plmnsel_op_enum op;
+    kal_uint8 plmn_data[5];
+} l4csmu_plmn_sel_write_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+} l4csmu_plmn_sel_write_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8 currency_code[3];
+    kal_uint8 puct_data[18];
+} l4csmu_puct_write_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+} l4csmu_puct_write_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_puct_read_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+    kal_uint8 currency_code[3];
+    kal_uint8 puct_data[18];
+} l4csmu_puct_read_cnf_struct;
+
+
+#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 !*/
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    sim_dn_enum dn_type;
+    kal_uint8 switch_on;
+} l4csmu_dial_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    l4c2smu_res_enum response;
+    kal_bool cause_present;
+    sim_cmd_result_enum cause;
+} l4csmu_dial_mode_cnf_struct;
+
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 is_spn_valid;     // SPN
+   kal_uint8 is_spn_RPLMN_required;
+   kal_uint8 spn[LEN_OF_SPN];
+   kal_uint8 is_opname_valid;  // OPN
+   kal_uint8 opname[LEN_OF_OPNAME + 1];
+   kal_uint8 is_sopname_valid; // sOPN
+   kal_uint8 sopname[11];
+   kal_uint8 no_msisdn;        // MSISDN
+   l4csmu_addr_struct msisdn[2];
+   kal_uint8 no_info_num;      // Information Numbers
+   l4csmu_info_num_struct *info_num;
+   kal_uint8 is_valid_csp;
+   kal_uint8 csp[22];          // Custom Service Profile
+   kal_uint8 is_puct_valid;
+   kal_uint8 ef_puct[5];
+   kal_uint8 is_autolock_enable; /* SML */
+   kal_uint8 autolock_result;    /* SML */
+   kal_uint8 autolock_remain;    /* SML */
+   /* Acting HPLMN */ /* mtk01488 */
+   kal_bool is_valid_ef_acting_hplmn;
+   kal_uint8 ef_acting_hplmn[3];
+   kal_uint8 digits_of_mnc;
+   kal_bool is_usim;
+   kal_bool is_valid_ef_ehplmn;
+   kal_uint8 num_of_ehplmn;
+   kal_uint8 ef_ehplmn[MAX_EHPLMN_EF_LEN];
+} l4csmu_mmi_info_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   l4c_source_id_enum src_id;
+} l4csmu_sml_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    sml_state_enum state[7];
+    kal_uint32 retry_count[7];
+    kal_uint8 autolock_count[7];
+    kal_uint8 num_of_sets[7];
+    kal_uint8 total_size_of_cat[7];
+    sml_key_state_enum key_state[7];
+    kal_uint8 ef_imsi[8];
+    kal_uint8 is_valid_gid1;
+    kal_uint8 ef_gid1;
+    kal_uint8 is_valid_gid2;
+    kal_uint8 ef_gid2;
+    kal_uint8 digits_of_mnc;
+} l4csmu_sml_status_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool   cipher_ind;    //20050202 Benson add for MMI cipher indication display
+   /* Johnny: cipher_ind is useless now, L4C will use l4csmu_get_cipher_ind_status() to get cipher_ind status from SMU */
+   kal_uint8 is_valid_rat_mode;  //To indicare RAT Mode is valid.
+   kal_uint8 rat_mode; //RAT mode setting value to overwrite
+   kal_bool  is_uicc_activated;
+} l4csmu_mmrr_ready_ind_struct;
+
+#ifdef __SMS_DEPERSONALIZATION__
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 length;    //length of peer buf data; unit:byte
+    kal_uint8   access_id;
+} l4csmu_sms_depersonalization_req_struct; //Kinki: JRD require. [MAUI_01255000]
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool   response; //Kinki: kal_bool
+    kal_bool   cause_present; //present only when response is FALSE
+    smu_sms_depersonalization_enum cause;
+    kal_uint16 length; //length of peer buf data; unit:byte
+    kal_uint8   access_id; //SMU piggy-back
+} l4csmu_sms_depersonalization_cnf_struct; //Kinki: JRD require. [MAUI_01255000]
+
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   uicc_unlock_code;
+} l4csmu_uicc_unlock_code_ind_struct;
+
+#ifdef __SAT__
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+   kal_bool is_icon_available;
+   sat_icon_struct icon_info;
+   kal_uint8 bearer_type;
+} l4csat_open_channel_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+   kal_bool res;
+} l4csat_open_channel_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 res;  		/* sat_terminal_res_enum */
+   kal_uint8 cause;		/* sat_additional_info_for_res_enum */
+} l4csmu_sat_open_channel_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 state;
+} l4csmu_sat_notify_mmi_ind_struct;
+
+typedef struct {
+   kal_uint8   	context_id;
+   kal_uint8 	name_length;
+   kal_uint8 	name_dcs;
+   kal_uint8     authentication_type;
+   kal_uint8 	name[32];
+   kal_uint8     user_name[16];
+   kal_uint8    	password[16];
+   kal_uint8  	dns[4];
+   kal_uint8  	apn [100];
+   kal_uint8  	apn_length;
+   sat_gprs_qos_struct     req_qos;
+} gprs_data_account_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   gprs_data_account_struct gprs_data_account;
+} l4csat_set_gprs_data_account_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool result;
+   kal_uint8 cause;
+} l4csat_set_gprs_data_account_res_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   sat_csd_bearer_para_struct bearer_para;
+   kal_uint8 size_of_address;
+   kal_uint8 addr[MAX_SIM_ADDR_BCD_LEN];
+   kal_uint8 size_of_subaddr;
+   kal_uint8 subaddr[MAX_SIM_ADDR_BCD_LEN];
+   kal_uint32 duration1;
+   kal_uint32 duration2;
+} l4csat_csm_open_csd_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   sat_csd_bearer_para_struct bearer_para;
+} l4csat_csm_bearer_info_ind_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool result;
+   kal_uint16 cause;   /* cm_enum_cause */
+} l4csat_csm_open_csd_res_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+} l4csat_cc_call_disc_ind_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool result;
+   kal_uint16 cause;  /* cm_enum_cause */
+} l4csat_cc_call_disc_res_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_bool result;
+   kal_uint16 cause;  /* cm_enum_cause */
+} l4csat_cc_call_disc_ind_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 res;
+} l4csmu_sat_send_data_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 res;  		/* sat_terminal_res_enum */
+   kal_uint8 cause; 	/* sat_additional_info_for_res_enum */
+} l4csmu_sat_send_data_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 res;
+} l4csmu_sat_recv_data_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 res;  		/* sat_terminal_res_enum */
+   kal_uint8 cause; 	/* sat_additional_info_for_res_enum */
+} l4csmu_sat_recv_data_cnf_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 res;
+} l4csmu_sat_close_data_req_struct;
+
+// Nick start
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 nw_acct_id;
+    kal_bool is_addr_valid;
+    kal_uint8 size_of_address;
+    kal_uint8 addr[MAX_SIM_ADDR_BCD_LEN];
+    kal_bool is_subaddr_valid;
+    kal_uint8 size_of_subaddr;
+    kal_uint8 subaddr[MAX_SIM_ADDR_BCD_LEN];
+    kal_bool is_username_valid;
+    kal_uint8 no_username;
+    kal_uint8 username[16];
+    kal_uint8 dcs_of_username;
+    kal_bool is_passwd_valid;
+    kal_uint8 no_passwd;
+    kal_uint8 passwd[16];
+    kal_uint8 dcs_of_passwd;
+    kal_bool is_local_addr_valid;
+    kal_uint8 no_local_addr;
+    kal_uint8 local_addr[16];
+    kal_bool is_dest_addr_valid;
+    kal_uint8 no_dest_addr;
+    kal_uint8 dest_addr[16];
+    sat_csd_bearer_para_struct csd_bearer;
+} l4csmu_sat_set_csd_prof_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 res;
+//    sat_csd_bearer_para_struct csd_bearer;
+} l4csmu_sat_set_csd_prof_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 nw_acct_id;
+    kal_bool is_apn_valid;
+    kal_uint8 apn_length;
+    kal_uint8 apn[50];
+    kal_bool is_username_valid;
+    kal_uint8 no_username;
+    kal_uint8 username[16];
+    kal_uint8 dcs_of_username;
+    kal_bool is_passwd_valid;
+    kal_uint8 no_passwd;
+    kal_uint8 passwd[16];
+    kal_uint8 dcs_of_passwd;
+    kal_bool is_local_addr_valid;
+    kal_uint8 no_local_addr;
+    kal_uint8 local_addr[16];
+    kal_bool is_dest_addr_valid;
+    kal_uint8 no_dest_addr;
+    kal_uint8 dest_addr[16];
+    sat_gprs_bearer_para_struct gprs_bearer;
+} l4csmu_sat_set_gprs_prof_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 res;
+//    sat_gprs_bearer_para_struct gprs_bearer;
+} l4csmu_sat_set_gprs_prof_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 bearer_type;
+    sat_gprs_bearer_para_struct gprs_bearer;
+    sat_csd_bearer_para_struct csd_bearer;
+} l4csmu_sat_bearer_para_req_struct ;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 cmd_detail[5];
+  kal_uint8 res;
+  kal_uint8 additional_info;
+} l4csmu_sat_open_channel_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   kal_uint8 state;
+} l4csmu_sat_channel_disc_evdl_ind_struct;
+
+#endif // __SAT__
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 nonce_len;
+    kal_uint8 nonce[256];  //Random String: 80 byte
+} l4csmu_ut_set_nonce_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+    kal_uint8 unlock_code;
+    kal_uint16 sig_len;
+    kal_uint8 sig[512];  //sig(B64): 344 byte + 1 byte('\0')
+} l4csmu_ut_sig_verify_req_struct;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   l4c_source_id_enum src_id;
+} l4csmu_sml_get_lock_codes_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          num_of_sets[SML_SUPPORT_CAT_SIZE];
+    kal_uint8          code_cat_n[SML_CFG_CAT_N_SIZE];
+    kal_uint8          code_cat_ns[SML_CFG_CAT_NS_SIZE];
+    kal_uint8          code_cat_sp[SML_CFG_CAT_SP_SIZE];
+    kal_uint8          code_cat_c[SML_CFG_CAT_C_SIZE];
+    kal_uint8          code_cat_sim[SML_CFG_CAT_SIM_SIZE];
+    kal_uint8          code_cat_ns_sp[SML_CFG_CAT_NS_SP_SIZE];
+    kal_uint8          code_cat_sim_c[SML_CFG_CAT_SIM_C_SIZE];
+} l4csmu_sml_get_lock_codes_cnf_struct;
+
+typedef struct {
+    kal_uint8     algo_type;
+    kal_uint8     key[CAT_KEY_MAX_SUPPORT_LEN];
+    kal_uint8     salt[NVRAM_SML_S_MAX_SUPPORT_SALT_LEN];
+    kal_uint8     iter_cnt[NVRAM_SML_S_MAX_SUPPORT_INTER_CNT_LEN];
+} l4csmu_set_key_data_struct;
+
+typedef union
+{
+    kal_uint32                  max_retry_count;
+    l4csmu_set_key_data_struct  key_data;
+    kal_uint8                   key_state;
+} l4csmu_set_custom_data_union;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    sml_cat_enum                    category;
+    sml_custom_op_enum              op;
+    l4csmu_set_custom_data_union    data;
+} l4csmu_set_custom_personalization_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_set_custom_personalization_cnf_struct;
+
+//MSG_ID_L4CSMU_OP129_UPDATE_SIMLOCK_SETTING_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+    kal_bool   is_last_data;
+    kal_uint16 data_offset;
+    kal_uint16 data_len;
+    kal_uint8  lock_setting[1000];
+}l4csmu_op129_update_simlock_setting_req_struct;
+
+//MSG_ID_L4CSMU_OP129_UPDATE_SIMLOCK_SETTING_CNF
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint16 rmmi_error_cause;
+}l4csmu_op129_update_simlock_setting_cnf_struct;
+
+// MSG_ID_L4CSMU_OP129_GET_SIMLOCK_DATA_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+    kal_uint8 list_type;
+}l4csmu_op129_get_simlock_data_req_struct;
+
+// MSG_ID_L4CSMU_OP129_GET_SIMLOCK_DATA_CNF
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+    kal_uint8 list_type;
+    kal_uint16 triplet_number[SML_OP129_CAT_MAX];
+    kal_uint8 simlock_data[2048];
+}l4csmu_op129_get_simlock_data_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint16 slb_len;
+} l4csmu_sl_update_blob_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint16 rmmi_error_cause;
+} l4csmu_sl_update_blob_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_sl_get_sim_lock_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint8 lock_state;
+} l4csmu_sl_get_sim_lock_status_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8    sml_lock_rule;
+    kal_uint16   sml_lock_sub_rule;
+    kal_uint8    sml_device_lock_status;
+    kal_uint8    sml_lock_rule_policy;
+    kal_uint8    sml_state_is_valid_sim;
+} l4csmu_sml_lock_status_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          rule;
+    kal_uint16         sub_rule;
+} l4csmu_update_gblob_lock_rule_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_update_gblob_lock_rule_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          op;
+    kal_uint16         gblob_data_len;
+    kal_uint8          gblob_data[2048];
+} l4csmu_update_gblob_data_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_update_gblob_data_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          op;
+    kal_uint8          dev_key_len;
+    kal_uint8          dev_key[SML_GBLOB_SIZE_OF_DEV_HCK];
+    kal_uint8          new_lock_state;
+} l4csmu_gblob_dev_lock_verify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_gblob_dev_lock_verify_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          dev_algo_type;
+    kal_uint8          dev_hck[SML_GBLOB_SIZE_OF_DEV_HCK];
+    kal_uint32         dev_max_retry_cnt;
+    kal_uint8          dev_salt[SML_GBLOB_SIZE_OF_DEV_SALT];
+    kal_uint8          dev_inter_cnt[SML_GBLOB_SIZE_OF_DEV_INTCNT];
+} l4csmu_update_gblob_dev_lock_algo_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_update_gblob_dev_lock_algo_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          slot_id;
+    kal_uint8          imei[16];
+} l4csmu_update_gblob_imei_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_update_gblob_imei_cnf_struct;
+
+#ifdef __CUST_SML_RULE__
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8          cust_code;
+    kal_uint8          cust_rule;
+} l4csmu_update_gblob_cust_rule_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_update_gblob_cust_rule_cnf_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_get_gblob_dev_lock_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8 lock_state;
+    kal_uint8 dev_algo;
+    kal_uint32 max_retry_count;
+    kal_uint32 remain_retry_count;
+} l4csmu_get_gblob_dev_lock_status_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    dsml_simlock_data_struct simlock_data;
+} smu_ut_dynamic_simmelock_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    dsml_result_enum result;
+} smu_ut_dynamic_simmelock_cnf_struct;
+
+/* TMO Movial Solution */
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 unlock_req_type;
+    kal_uint8 imsi[TMO_RSU_IMSI_SIZE];
+    kal_uint8 imei[TMO_RSU_IMEI_SIZE];
+} l4csmu_tmo_rsu_create_unlock_msg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint16 raw_len;
+    kal_uint8 imei[TMO_RSU_IMEI_SIZE];
+    kal_uint8 raw_msg[TMO_MAX_MSG_LEN];
+} l4csmu_tmo_rsu_process_msg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+} l4csmu_tmo_rsu_get_sml_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 imei[TMO_RSU_IMEI_SIZE];
+} l4csmu_tmo_rsu_get_reg_msg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+} l4csmu_tmo_rsu_create_unlock_msg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+} l4csmu_tmo_rsu_process_msg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 lock_response[TMO_RSU_LOCK_STATE_RESPONSE_BLOB_SIZE];
+} l4csmu_tmo_rsu_get_sml_status_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+} l4csmu_tmo_rsu_get_reg_msg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint8 rsu_version_str[8];
+} l4csmu_tmo_rsu_get_adapter_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_uint16 blob_length;
+    kal_uint8 adapter_config[256];
+} l4csmu_tmo_rsu_get_adapter_config_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+    kal_uint16 data_len;
+    kal_uint8 data[SML_TMO_MOVIAL_MAX_BLOB_SIZE];
+} l4csmu_tmo_rsu_update_blob_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    kal_uint16 rmmi_error_cause;
+} l4csmu_tmo_rsu_update_blob_cnf_struct;
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 num_of_black_list;
+    kal_uint8 black_list[MAX_NW_BLACK_LIST*3];
+} l4csmu_set_nw_black_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nw_black_list_operator_result_enum result;
+    kal_bool black_list_lock_state;
+} l4csmu_set_nw_black_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool black_list_lock_state;
+    kal_bool card_error;
+    kal_bool is_init;
+    kal_uint8 num_of_black_list;
+    kal_uint8 black_list[MAX_NW_BLACK_LIST*3];
+} l4csmu_nw_black_list_state_ind_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum  src_id;
+    sml_cat_enum        category;
+    kal_uint8           salt_length;
+    kal_uint16          hck_length;
+    kal_uint32          iter_count;
+    kal_uint8           ctrl_key_str[2*SML_MAX_SUPPORT_KEY_LEN + 1];
+} l4csmu_generate_hck_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_generate_hck_cnf_struct;
+
+#endif
+
+
+
diff --git a/mcu/protocol/interface/l4/l4c2smu_vzw_struct.h b/mcu/protocol/interface/l4/l4c2smu_vzw_struct.h
new file mode 100644
index 0000000..f6d98a2
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c2smu_vzw_struct.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *  l4c2smu_vzw_struct.h
+ *
+ * Project:
+ * --------
+ *  UMOLYA
+ *
+ * Description:
+ * ------------
+ *  This file defines the data structure used between L4C and SMU reardign to 
+ *  VZW feature
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+#ifndef _L4C2SMU_VZW_STRUCT_H
+#define _L4C2SMU_VZW_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "l4c_common_enum.h"
+#include "kal_general_types.h"
+#include "custom_sml.h"
+#include "sml_public_def.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_vzw_rsu_initiate_req_struct;
+
+typedef struct {
+    kal_uint8 msg_type;
+    kal_uint8 imei[15];
+    kal_uint8 major_ver;
+    kal_uint8 minor_ver;
+    kal_uint8 session_id[8];
+    kal_uint8 max_major_ver;
+    kal_uint8 max_minor_ver;
+} sml_vzw_rsu_req_msg_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    sml_vzw_rsu_req_msg_struct request_msg; // 1 + 15 + 1 + 1 + 8 + 1 + 1
+    kal_uint8 hmac[32];
+} l4csmu_vzw_rsu_initiate_cnf_struct;
+
+typedef struct {
+    kal_uint8 major_ver;
+    kal_uint8 minor_ver;
+    kal_uint8 protection_algo;
+    kal_uint8 nw_lock_op;
+    kal_uint8 imei[15];
+    kal_uint8 timestamp[8];
+    kal_uint8 nw_num;
+    kal_uint8 nw_list[SML_VZW_RSU_NW_LIST_LEN];
+    kal_uint8 ns_num;
+    kal_uint8 ns_list[SML_VZW_RSU_NS_LIST_LEN];
+    kal_uint8 sp_num;
+    kal_uint8 sp_list[SML_VZW_RSU_SP_LIST_LEN];
+    kal_uint8 ehplmn_num;
+    kal_uint8 ehplmn_list[SML_VZW_RSU_EHPLMN_LIST_LEN];
+    kal_uint8 signature[256]; //Used for RSA based integrity checking
+} sml_vzw_rsu_rsp_msg_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint16 data_len;
+    kal_uint8 data[MAX_VZW_RSU_RSP_SIZE];
+} l4csmu_vzw_rsu_response_req_struct;
+
+typedef struct {
+    kal_uint8 msg_type;
+    kal_uint8 imei[15];
+    kal_uint8 major_ver;
+    kal_uint8 minor_ver;
+    kal_uint8 nw_lock_op;
+    kal_uint8 error_code;
+    kal_uint8 timestamp[8];
+} sml_vzw_rsu_status_msg_struct;
+
+typedef struct {
+    sml_vzw_rsu_status_msg_struct status_msg;
+    kal_uint8 hmac[32];
+} smu_vzw_rsu_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    smu_vzw_rsu_status_ind_struct status_ind;
+} l4csmu_vzw_rsu_response_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    smu_vzw_rsu_delay_timer_op_enum mode;
+} l4csmu_vzw_rsu_delay_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    sml_vzw_rsu_unlock_timer_resp_enum resp;
+    kal_uint16 unlock_timer;
+} l4csmu_vzw_rsu_delay_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4csmu_vzw_rsu_data_reset_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4csmu_vzw_rsu_data_reset_cnf_struct;
+
+
+#endif /* _L4C2SMU_VZW_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/l4c2t30_enums.h b/mcu/protocol/interface/l4/l4c2t30_enums.h
new file mode 100644
index 0000000..6ea3476
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c2t30_enums.h
@@ -0,0 +1,142 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	l4c2t30_enums.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   This file is intends for enum definition between T30 and L4C.
+ *
+ * Author:
+ * -------
+ *	
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _L4C2T30_ENUMS_H
+#define _L4C2T30_ENUMS_H
+
+typedef enum {
+   ACTION_SET,
+   ACTION_QUERY,
+   ACTION_TEST
+} l4c_t30_action_enum;
+
+typedef enum {
+	CODE_CONNECT,
+	CODE_ERROR,
+	CODE_NOCARRIER,
+	CODE_OK,
+	CODE_FCERROR,
+	NO_CODE
+}l4c_t30_act_rsp_enum;
+
+
+typedef enum {
+   FIP_INIT_PARA=0x1,     /* initialize all parameters */
+   FCC_DCE_CAP=0x2,			/* DCE capability */
+   FIS_NEG_CAP=0x4,			/* current session negotiating position*/
+   FCS_CURRENT_CAP=0x8,	/* current sessioni parameters(read only) */
+   FLP_DOC_AVAIL=0x10,	   /*indicate documet available for polling */
+   FSP_POLL_ENABLE=0x20,
+   FNR_REPORT_PARAM= 0x40,
+   FIE_PI_ENABLE= 0x80,
+   FPS_PAGE_STATUS= 0x100,
+   FCQ_COPY_QUALITY= 0x200,
+   FIT_INACT_TO = 0x400,
+   FPP_PKT_PROCO= 0x800,
+   FBO_BIT_ORDER = 0x1000,
+   FEA_EOL_ALIGN = 0x2000,
+   FCR_RECV_CAP = 0x4000,
+   FBU_HDLC_REPORT = 0x8000,
+   FAP_ADD_POLL_CAP = 0x10000,
+   FRQ_RECV_Q_THRESD = 0x20000,
+   FCT_PHC_TO = 0x40000,
+   FHS_HANG_CODE = 0x80000,
+   FMS_MIN_SPEED = 0x100000,
+   FCL_CARRIER_LOSS = 0x200000,
+   FDD_ESC_REPLACE = 0x400000,
+   FFC_FORMAT_CONV = 0x800000,
+   FBS_BUFF_SIZE = 0x1000000,
+   FRY_CTC_RETRY = 0x2000000,
+   FET_POST_CMD = 0x4000000
+} rw_param_enum;
+
+typedef enum {
+   FLI_LOCAL_ID = 0x1,
+   FPI_LOCAL_ID = 0x2,
+   FNS_NON_STAND = 0x4,
+   FSA_SUB_ADD = 0x8,
+   FPW_PWD = 0x10,
+   FPA_SEL_ADD = 0x20
+} rw_str_param_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+#endif
+
diff --git a/mcu/protocol/interface/l4/l4c2t30_struct.h b/mcu/protocol/interface/l4/l4c2t30_struct.h
new file mode 100644
index 0000000..f724266
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c2t30_struct.h
@@ -0,0 +1,354 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	l4c2t30_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between T30 and L4C.
+ *
+ * Author:
+ * -------
+ *
+ *=============================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _L4C2T30_STRUCT_H
+#define _L4C2T30_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef struct
+{
+	kal_bool	is_present;	/* is the parameter available */
+	kal_uint8	para_value;	/* the parameter value */
+	
+}t30_sub_para_struct;
+
+
+/* the structure defines the t30 session parameters. only valid in Class2. */
+typedef struct
+{
+	t30_sub_para_struct	DF;
+	t30_sub_para_struct	VR;
+	t30_sub_para_struct	WD;
+	t30_sub_para_struct	LN;
+	
+}t30_fdt_subparam_struct;
+
+
+
+typedef struct
+{
+	t30_sub_para_struct	vrc;	/* vertical resolution conversion */
+	t30_sub_para_struct	dfc;	/* data format conversion */
+	t30_sub_para_struct	lnc;	/* page length conversion */
+	t30_sub_para_struct	wdc;	/* page width conversion  */
+	
+}format_conv_struct;
+
+
+typedef struct
+{
+	t30_sub_para_struct	pgl;	/* percentage of good line */
+	t30_sub_para_struct	cbl;	/* max tolerable number of consecutive bad lines */
+	
+}recv_quality_thresd_struct;
+
+
+typedef struct
+{
+	t30_sub_para_struct	sub;	/* SUB enable */
+	t30_sub_para_struct	sep;	/* SEP enable */
+	t30_sub_para_struct	pwd;	/* PWD enable */
+	
+}add_poll_cap_struct;
+
+
+typedef struct
+{
+	kal_uint8	time;	/* timeout time value */
+	kal_uint8	action;	/* action value */
+	
+}dte_inactive_struct;
+
+
+typedef struct
+{
+	t30_sub_para_struct	rq;	/* receive copy quality enable */
+	t30_sub_para_struct	tq;	/* transmit copy quality enable */
+	
+}copy_quality_struct;
+
+
+typedef struct
+{
+	t30_sub_para_struct	rpr;	/* receiver parameters report */
+	t30_sub_para_struct	tpr;	/* transmitter paramerters report */
+	t30_sub_para_struct	idr;	/* ID string report */
+	t30_sub_para_struct	nsr;	/* non-standard frames report */
+	
+}cap_report_struct;
+
+
+typedef struct
+{
+	t30_sub_para_struct	VR;
+	t30_sub_para_struct	BR;
+	t30_sub_para_struct	WD;
+	t30_sub_para_struct	LN;
+	t30_sub_para_struct	DF;
+	t30_sub_para_struct	EC;
+	t30_sub_para_struct	BF;
+	t30_sub_para_struct	ST;
+   t30_sub_para_struct JP;
+	
+}t30_session_subparam_struct;
+
+
+typedef struct
+{
+	kal_uint8	string[20]; 	/* local station ID string */
+	kal_uint8	nsf_string[90];	/* pass-through non-standard octet string */
+}t30_str_param_struct;
+
+
+typedef struct
+{
+	t30_session_subparam_struct  session_param ; /* session subparameter*/
+	kal_uint8	enable_polled;  				/* indecate document available for remotes's pooling*/
+	kal_uint8	enable_polling; 
+	cap_report_struct  report_param ;	/* negotiation reporting enable */
+	kal_uint8	PI_enable ;  				/* procedure interrupt enable*/
+	kal_uint8	page_status; 				/* page transfer status */
+	copy_quality_struct	copy_quality;	
+	dte_inactive_struct	inactivity_timer;	/*DTE inactivity timer*/
+	kal_uint8	packet_protocol;	/* Packet protocol control */
+	kal_uint8	data_bit_order;	/* Phace C data bit order */
+	kal_uint8	EOL_align;	/* phace C received EOL alignment */
+	kal_uint8	cap_to_receive; /* capability to receive */
+	kal_uint8	HDLC_report;	/* HDLC frame reporting enable */
+	add_poll_cap_struct	add_poll_cap;	/*address and polling capability */
+	recv_quality_thresd_struct recv_quality_thresd; /* recive quality threshold */
+	kal_uint8	phase_C_timeout;	
+	kal_uint8	hangup_status;	
+	kal_uint8	min_speed;		/* minimum phace C speed */
+	kal_uint8	carrier_loss_to;	/* carrier loss timeout (class 1 ) */
+	kal_uint8	esc_replace_enable;		/*double escape charactor replacement (class 1) */
+	format_conv_struct	data_format_conver;		/* image data format conversion */
+	kal_uint8	buffer_size[2];	/* buffer size, read only*/
+	kal_uint8	CTC_retry_val;	/* CTC retry value */
+	kal_uint8	NSF_msg_ind;	/* NSF message data indication */
+	kal_uint8	FET_post_cmd;	/* end page or document command (only for class 2) */
+		
+}t30_rw_param_struct;
+
+
+/* this struct is used for construct the local_param of MSG_ID_L4C_T30_TX_MSG_REQ */
+typedef struct 
+{
+   LOCAL_PARA_HDR
+   kal_uint8 	mod_value;	/* modulation codes */
+   t30_fdt_subparam_struct  fdt_subparam;	/*session parameters */
+   	
+}l4c_t30_tx_msg_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 	mod_value;	/* modulation codes */
+}l4c_t30_rx_msg_req_struct;
+
+/* this struct is used for construct the local_param of MSG_ID_L4C_T30_RW_PARAM_REQ */
+typedef struct 
+{
+   LOCAL_PARA_HDR
+   kal_uint8 	action;
+   kal_uint8 	serv_class;
+   kal_uint32	 rw_param;
+   t30_rw_param_struct 	t30_rw_param;
+   	
+}l4c_t30_rw_param_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+	kal_uint8	action;
+   kal_uint8 	serv_class;
+	kal_uint32	rw_str_param;
+	t30_str_param_struct	t30_str_param;
+}l4c_t30_rw_str_param_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+	kal_uint8 silence_time;
+}l4c_t30_tx_silence_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+	kal_uint8 silence_time;
+}l4c_t30_rx_silence_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 mod_value;
+}l4c_t30_tx_bcs_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint8 mod_value;
+}l4c_t30_rx_bcs_req_struct;
+
+
+
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  result_code;
+}l4c_t30_tx_msg_cnf_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  result_code;
+}l4c_t30_rx_msg_cnf_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  result_code;
+}l4c_t30_tx_bcs_cnf_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  result_code;
+}l4c_t30_rx_bcs_cnf_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8 	action;
+	kal_bool		result_code;
+	kal_uint8	result_str[80]; 
+	
+}l4c_t30_rw_param_cnf_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8	action;
+	kal_bool		result_code;
+	kal_uint8	result_str[110];
+}l4c_t30_rw_str_param_cnf_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  result_code;
+}l4c_t30_ready_ind_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8	result_str[250];
+}l4c_t30_report_param_ind_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  page_status;
+}l4c_t30_tx_ppm_req_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+	kal_uint8  result_code;
+}l4c_t30_tx_ppm_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+}l4c_t30_transfer_uart_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  port;
+    kal_uint8  is_esc_on;
+}l4c_t30_transfer_uart_ind_struct;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/l4c_enl2_struct.h b/mcu/protocol/interface/l4/l4c_enl2_struct.h
new file mode 100644
index 0000000..1f2b3d4
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c_enl2_struct.h
@@ -0,0 +1,78 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+ * ---------
+ *   l4c_enl2_struct.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *  Messages and common definitions for L4C-ENL2 interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+#ifndef  _L4C_ENL2_STRUCT_H_
+#define  _L4C_ENL2_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef enum
+{
+    SERVICE_INTERNET = 0, /* internet RB */
+    SERVICE_NUM
+} service_type_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16          rlc_latency_in_ms;  /* The latency between RLC SDU pretx and RLC ACK received */
+    service_type_enum   service_type;       /* The latency sampled in certain service type */
+} l4c_4g5g_rlc_latency_update_ind_struct;
+
+typedef l4c_4g5g_rlc_latency_update_ind_struct l4c_nrlcul_latency_update_ind_struct;
+
+typedef l4c_4g5g_rlc_latency_update_ind_struct l4c_erlcul_latency_update_ind_struct;
+
+#endif /* _L4C_ENL2_STRUCT_H_ */
diff --git a/mcu/protocol/interface/l4/l4c_imc_struct.h b/mcu/protocol/interface/l4/l4c_imc_struct.h
new file mode 100644
index 0000000..a63b6da
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c_imc_struct.h
@@ -0,0 +1,67 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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).
+*
+*****************************************************************************/
+
+#ifndef _L4C_IMC_STRUCT_H
+#define _L4C_IMC_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+
+typedef enum
+{
+    DISABLE_RAT_MODE_2G = 0,
+    ENABLE_RAT_MODE_2G  = 1
+} rat_operation_enum;
+
+/******************************************************************************/
+
+/*   structure   */
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_operation_enum  rat_operation;
+} l4c_imc_rat_operation_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_cssrvnotif_acceptable;  // 1: accept   0: reject
+} l4c_imc_cs_service_notification_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    epsfb_stat_enum state;
+    epsfb_type_enum type;
+} l4c_imc_epsfb_ind_struct;
+
+#endif
diff --git a/mcu/protocol/interface/l4/l4c_nas_sv_struct.h b/mcu/protocol/interface/l4/l4c_nas_sv_struct.h
new file mode 100644
index 0000000..89e12b7
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c_nas_sv_struct.h
@@ -0,0 +1,87 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+* ---------
+* l4c_nas_sv_struct.h
+*
+* Project:
+* --------
+*   UMOLYA
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _L4C_NAS_SV_STRUCT_H_
+#define _L4C_NAS_SV_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_local.h"
+#include "mm_mmi_enums.h"
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "rac_nas_sv_struct.h"
+
+#include "ims_interface_md.h"
+
+typedef rac_nas_sv_event_update_ind_struct rat_tcm_nas_sv_event_update_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    srvcc_status_enum       status;
+} l4c_nas_sv_srvcc_status_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    active_nas_enum source_nas;
+    active_nas_enum target_nas;
+    
+} rat_tcm_nas_sv_active_nas_update_ind_struct;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/l4c_nrrc_struct.h b/mcu/protocol/interface/l4/l4c_nrrc_struct.h
new file mode 100644
index 0000000..6d02f8b
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c_nrrc_struct.h
@@ -0,0 +1,254 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+ * ---------
+ *   l4c_nrrc_struct.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *  Messages and common definitions for L4C-NRRC interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+#ifndef  _L4C_NRRC_STRUCT_H_
+#define  _L4C_NRRC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_enums.h"
+#include "nrrc_nvram_def.h"
+#include "l4c_common_enum.h"
+#include "l4c_as_inter_core_def.h"
+
+#ifdef __NR_RAT__
+#define MAX_CUSTOM_NR_COMB_LIST_MAX_LENGTH NVRAM_EF_NRRC_CUSTOM_ENDC_COMB_WHITE_LIST_MAX_LENGTH
+#else
+#define MAX_CUSTOM_NR_COMB_LIST_MAX_LENGTH 2048
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_int32  ssRssi_in_qdbm;
+    kal_int32  ssRsrp_in_qdbm;
+    kal_int32  ssRsrq_in_qdb;
+    kal_int32  ssSinr_in_qdb;
+
+    kal_int32  csiRsrp_in_qdbm;
+    kal_int32  csiRsrq_in_qdb;
+    kal_int32  csiSinr_in_qdb;
+
+    kal_uint16  serv_nr_band;
+	l4c_signal_reporting_type_enum signal_report_type;
+	kal_uint8 thres_cross_signal_type;  /* Applicable only if is_thres_cross is TRUE. 
+                                        1 - ssRSRP, 2 - ssRSRQ, 3 - ssRSRP + ssRSRQ, 4 - ssSINR, 5 - RSRP + ssSINR, 6 - ssRSRQ + ssSINR, 7 - All three*/
+    kal_int16  ssSrxlev_in_qdb;         /* range -32768 ~ 32767, invalid value:0x7fff */
+    kal_int16  ssSqual_in_qdb;          /* range -32768 ~ 32767, invalid value:0x7fff */
+} l4c_nrrc_cell_power_level_ind_struct;
+
+
+
+typedef l4c_4g5g_etws_setting_req_struct l4c_nrrc_etws_setting_req_struct;
+
+typedef l4c_4g5g_etws_information_ind_struct l4c_nrrc_etws_information_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32    rcv_tick;                        /* The time tick when SIB9 is received by NRRC */
+    kal_uint64    timeinfo_utc;                    /* 0~549755813887 */
+    kal_bool      is_day_light_saving_time_valid;
+    kal_uint8     day_light_saving_time;           /* 2 bits */
+    kal_bool      is_leap_seconds_valid;
+    kal_int16     leap_seconds;                    /* -127~128 */
+    kal_bool      is_localtime_offset_valid;
+    kal_int8      localtime_offset;                /* -63~64 */
+} l4c_nrrc_time_info_ind_struct;
+
+
+typedef struct
+{
+    kal_bool  enable;
+    kal_uint32 t1;       // The period to count number of SCG failure event (seconds)
+    kal_uint8  p1;       // The specified number of SCG failure event
+    kal_uint32 t2;       // Expired time - when to activate SCG after deactivation (seconds)
+} scg_event_failure_config_struct;
+
+typedef struct
+{
+    kal_bool  enable;
+    kal_uint32 t1;       // The period to count number of SCG release event (seconds)
+    kal_uint8  p1;       // The specified number of SCG release event
+    kal_uint32 t2;       // Expired time - when to activate SCG after deactivation (seconds)
+} scg_event_release_config_struct;
+
+typedef union {
+    scg_event_failure_config_struct scg_event_failure_config;
+    scg_event_release_config_struct scg_event_release_config;
+} scg_event_config_union;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool         allow_scg_add;
+} l4c_nrrc_endc_deactivate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    scg_event_enum         scg_event;
+    scg_event_config_union scg_event_config;
+} l4c_nrrc_scg_event_config_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    scg_event_enum         scg_event;
+    kal_bool               endc_deactivate;
+    kal_bool               allow_scg_add;
+} l4c_nrrc_scg_event_ind_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    set_plmn_freq_operation_enum operation;
+    plmn_id_struct plmn_id;
+    kal_uint8 num_of_freq;
+    NRARFCN freq[MAX_LTE_SET_STORED_NUM];
+} l4c_nrrc_set_plmn_stored_freq_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool               vonr_enabled;
+} l4c_nrrc_ims_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool               is_voice_over_ims_ongoing;
+} l4c_nrrc_ims_call_status_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool is_last;
+    ca_band_comb_list_cmd_type_enum cmd;
+    ca_band_comb_list_type_enum type;
+    kal_char ca_comb_list[MAX_CUSTOM_NR_COMB_LIST_MAX_LENGTH];
+} l4c_nrrc_ca_band_comb_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    ca_band_comb_list_cmd_type_enum cmd;
+    kal_bool result;
+    ca_band_comb_list_type_enum type;
+    kal_char ca_comb_list[MAX_CUSTOM_NR_COMB_LIST_MAX_LENGTH];
+} l4c_nrrc_ca_band_comb_list_cnf_struct;
+
+typedef enum
+{
+    NRRC_L4C_CUSTOM_BAR_LIST_ACTION_ADD = 0,
+    NRRC_L4C_CUSTOM_BAR_LIST_ACTION_DELETE,
+    NRRC_L4C_CUSTOM_BAR_LIST_ACTION_QUERY,
+    NRRC_L4C_CUSTOM_BAR_LIST_ACTION_INVALID = 0xff
+} nrrc_l4c_custom_bar_list_action_enum;
+
+typedef enum
+{
+    NRRC_L4C_CUSTOM_BAR_CAUSE_IDLE_CONNECTED,
+    NRRC_L4C_CUSTOM_BAR_CAUSE_CHECK_NEIGHBOR_SIGNAL
+} nrrc_l4c_custom_bar_cause_enum;
+
+typedef struct
+{
+    kal_uint32 narfcn;
+    kal_uint16 bar_time;      // Unit: sec
+} nrrc_l4c_bar_freq_info_struct;
+
+typedef struct
+{
+    kal_uint32 narfcn;
+    kal_uint16 pci;
+    kal_uint16 bar_time;      // Unit: sec
+} nrrc_l4c_bar_cell_info_struct;
+
+/* MSG_ID_L4C_NRRC_CUSTOM_BAR_LIST_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nrrc_l4c_custom_bar_list_action_enum action;
+    nrrc_l4c_custom_bar_cause_enum      bar_cause;
+    kal_uint8                           bar_freq_num;
+    nrrc_l4c_bar_freq_info_struct       bar_freq_info[MAX_L4C_CUSTOM_BAR_FREQ_NUM];
+    kal_uint8                           bar_cell_num;
+    nrrc_l4c_bar_cell_info_struct       bar_cell_info[MAX_L4C_CUSTOM_BAR_CELL_NUM];
+} l4c_nrrc_custom_bar_list_req_struct;
+
+/* MSG_ID_L4C_NRRC_CUSTOM_BAR_LIST_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nrrc_l4c_custom_bar_list_action_enum action;
+    nrrc_l4c_custom_bar_cause_enum      bar_cause;
+    kal_uint8                           bar_freq_num;
+    nrrc_l4c_bar_freq_info_struct       bar_freq_info[MAX_L4C_CUSTOM_BAR_FREQ_NUM];
+    kal_uint8                           bar_cell_num;
+    nrrc_l4c_bar_cell_info_struct       bar_cell_info[MAX_L4C_CUSTOM_BAR_CELL_NUM];
+} l4c_nrrc_custom_bar_list_cnf_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR    
+    kal_bool                    is_endc_drb_existent;
+    kal_bool                    is_nr_sa_drb_existent;
+} l4c_nrrc_drb_info_ind_struct;
+
+#endif /* _L4C_NRRC_STRUCT_H_ */
diff --git a/mcu/protocol/interface/l4/l4c_ratdm_struct.h b/mcu/protocol/interface/l4/l4c_ratdm_struct.h
new file mode 100644
index 0000000..fe1178f
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c_ratdm_struct.h
@@ -0,0 +1,173 @@
+/*****************************************************************************
+*  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) 2009
+*
+*  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:
+ * ---------
+ * l4c_ratdm_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common struct between L4C and RATDM
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _L4C_RATDM_STRUCT_H
+#define _L4C_RATDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+
+    
+/* basic structures for gprs dialup call log */
+
+typedef struct {  
+    kal_uint64 tx;
+    kal_uint64 rx;    
+    kal_uint8 context_id;    
+} single_pdp_call_history_info_struct;
+
+typedef struct {
+    kal_uint8 context_id;
+    kal_bool reset_tx;
+    kal_bool reset_rx;
+} single_pdp_call_history_reset_cmd_struct;
+
+typedef struct {
+    single_pdp_call_history_reset_cmd_struct original_cmd;
+    single_pdp_call_history_info_struct volume_before_reset;
+} single_pdp_call_history_reset_result_struct;
+
+
+
+/* local param structures for L4C/RATDM SAP */
+
+typedef struct {
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+    kal_uint8 src_id;
+    kal_uint8 serial_num;
+    kal_uint8 total_context_id;
+    kal_uint8 context_id[MAX_GPRS_DIALUP_NUM];
+} l4c_ps_query_ext_pdp_statistics_req_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+    kal_uint8 src_id;
+    kal_uint8 serial_num;
+    kal_uint8 total_context_id;
+    single_pdp_call_history_info_struct query_result[MAX_GPRS_DIALUP_NUM];
+} l4c_ps_query_ext_pdp_statistics_rsp_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+    kal_uint8 src_id;    
+    kal_uint8 serial_num;
+    kal_uint8 total_reset_num;
+    single_pdp_call_history_reset_cmd_struct reset_cmd[MAX_GPRS_DIALUP_NUM];
+} l4c_ps_reset_ext_pdp_statistics_req_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+    kal_uint8 src_id;    
+    kal_uint8 serial_num;
+    kal_uint8 total_reset_num;
+    single_pdp_call_history_reset_result_struct result[MAX_GPRS_DIALUP_NUM];
+} l4c_ps_reset_ext_pdp_statistics_rsp_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+    kal_uint8 total_context_id;
+    single_pdp_call_history_info_struct result[MAX_GPRS_DIALUP_NUM];
+} l4c_ps_ext_pdp_statistics_ind_struct;
+
+typedef struct {
+    kal_uint8 ref_count;
+	kal_uint16 msg_len;
+    kal_uint8 context_id;
+} l4c_ratdm_packets_flush_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool ims_call_ongoing;
+} l4c_ratdm_ims_call_status_struct;
+
+#endif /* _L4C_RATDM_STRUCT_H */
+
diff --git a/mcu/protocol/interface/l4/l4c_uagps_cp_struct.h b/mcu/protocol/interface/l4/l4c_uagps_cp_struct.h
new file mode 100644
index 0000000..5ff4a25
--- /dev/null
+++ b/mcu/protocol/interface/l4/l4c_uagps_cp_struct.h
@@ -0,0 +1,150 @@
+/*****************************************************************************
+*  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) 2007
+*
+*  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:
+ * ---------
+ *   l4c_uagps_cp_struct.h
+ *
+ * Project:
+ * --------
+ *   AGPS
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log:$
+ * 
+ * 10 02 2012 adeline.chang
+ * [MOLY00004236] [interface][service][kal]remove stack_ltlcom.h
+ * 20120928_MOLY00004236_Adeline_Remove_stack_ltlcom.h_AGPS.xls.
+ *
+ * 11 08 2011 doug.shih
+ * removed!
+ * .
+ *
+ * 06 09 2011 c-hua.yang
+ * removed!
+ * .
+ *
+ * 05 26 2011 c-hua.yang
+ * removed!
+ * .
+ *
+ * 12 14 2010 c-hua.yang
+ * removed!
+ * ULCS RHR
+ *
+ * removed!
+ * removed!
+ * add to source control recursely
+ *
+ ****************************************************************************/
+
+#ifndef _L4C_UAGPS_CP_STRUCT_H
+#define _L4C_UAGPS_CP_STRUCT_H
+#include "kal_public_api.h"
+#include "kal_general_types.h"
+/**************************************************************
+ * L4C_UAGPS_CP_AGPS_ENABLE_DISABLE_REQ
+ *
+ * AGPS control plane switch on ªº®É­Ô¥Î enable ³qª¾ ULCS, switch off ªº®É­Ô disable ³qª¾ ULCS
+ ***************************************************************/ 
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_bool enable; // KAL_TRUE for enable, KAL_FALSE for disable
+
+} l4c_uagps_cp_agps_enable_disable_req_struct;
+
+/**************************************************************
+ * L4C_UAGPS_CP_AGPS_KEY_UPDATE_REQ
+ *
+ * ±q SS ®³¨ì deciphering key ¤§«á, ±N¨ä¶Çµ¹ ULCS
+ ***************************************************************/ 
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8 sib15_current_deciphering_key[7]; // 56 bits deciphering key form SS Location 
+    kal_uint8 sib15_next_deciphering_key[7]; // 56 bits deciphering key form SS Location 
+    kal_uint8 sib15_ciphering_key_flag; // key flag form SS Location
+
+} l4c_uagps_cp_agps_key_update_req_struct;
+
+/**************************************************************
+ * L4C_UAGPS_CP_AGPS_NEW_KEY_NEEDED_IND
+ *
+ * ±q SS ®³¨ì deciphering key ¤§«á, ±N¨ä¶Çµ¹ ULCS
+ ***************************************************************/ 
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+} l4c_uagps_cp_agps_new_key_needed_ind_struct;
+
+
+/**************************************************************
+ * L4C_UAGPS_CP_AGPS_LCOAL_ABORT_TRANSACTION_REQ
+ *
+ * Abort CP transaction when user dial E911 call
+ ***************************************************************/ 
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+} l4c_uagps_cp_agps_local_abort_transaction_req_struct;
+
+/**************************************************************
+ * L4C_UAGPS_CP_AGPS_TRANSACTION_START_STOP_IND
+ *
+ * Inform GPS manager about CP transaction start
+ ***************************************************************/ 
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_bool transaction_start;
+
+} l4c_uagps_cp_agps_transaction_start_stop_ind_struct;
+
+#endif /* _L4C_UAGPS_CP_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/mm2mmi_struct.h b/mcu/protocol/interface/l4/mm2mmi_struct.h
new file mode 100644
index 0000000..61b756a
--- /dev/null
+++ b/mcu/protocol/interface/l4/mm2mmi_struct.h
@@ -0,0 +1,480 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	mm2mmi_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between MM and MMI.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : mm2mmi_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _MM2MMI_STRUCT_H
+#define _MM2MMI_STRUCT_H
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_local.h"
+#include "mm_mmi_enums.h"
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "mm_emm_struct.h"
+#include "mmi2mm_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool full_nw_nameP;
+    kal_uint8 full_nw_name_len;
+    kal_uint8 full_nw_name[MAX_NW_NAME_LENGTH];
+    kal_bool short_nw_nameP;
+    kal_uint8 short_nw_name_len;
+    kal_uint8 short_nw_name[MAX_NW_NAME_LENGTH];
+    kal_bool nw_time_zoneP;
+    kal_uint8 nw_time_zone;
+    kal_bool nw_time_zone_timeP;
+    nw_time_zone_time_struct nw_time_zone_time;
+    kal_bool lsa_idP;
+    kal_uint8 lsa_id_len;
+    kal_uint8 lsa_id[3];
+    kal_bool nw_day_light_saving_timeP;
+    kal_uint8 nw_day_light_saving_time;
+    /* MAUI_01664028, mtk02118: added for MMI to exactly know which PLMN the NITZ comes from  */
+    plmn_id_struct plmn_id;
+} gmmreg_nw_info_struct; /* This struct shall be the same with l4crac_nw_info_ind_struct. */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    data_speed_support_enum cell_data_speed_support; /* mtk02475: for edge and hspa status */
+    cell_info_and_rat_struct cell_info;
+    kal_bool is_ra_code_valid;
+    kal_bool is_from_cgi_ind;
+} gmmreg_cell_info_update_ind_struct;
+
+/* For GPRS MMI. */
+typedef struct {
+    LOCAL_PARA_HDR
+    gmmreg_ps_service_info_enum current_status; /* gmmreg_ps_service_info_enum */
+} gmmreg_ps_service_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 is_gsm_conn_exist;
+    gmmreg_cipher_ind_enum gsm_cipher_cond;
+    gmmreg_cipher_ind_enum gprs_cipher_cond;
+} gmmreg_cipher_ind_struct; /* must same as l4crac_cipher_ind_struct */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_dedicated_mode;
+} gmmreg_dedicated_mode_ind_struct; /* must same as l4crac_hz_dedicated_mode_ind_struct */
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;         /* proc_status_enum */
+    mm_cause_enum  cause;          /* mm_cause_enum */
+    kal_uint8 num_of_hplmn;
+    rac_plmn_list_struct plmn_list;
+} gmmreg_plmn_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;
+    mm_cause_enum cause;
+    rac_csg_list_struct csg_list;
+} gmmreg_csg_list_cnf_struct;
+
+typedef gmmreg_nw_info_struct gmmreg_nw_info_ind_struct;
+
+#ifdef __GEMINI__
+typedef struct {
+    LOCAL_PARA_HDR
+    rr_suspend_mode_reason_enum rr_service_status;
+}gmmreg_rr_service_status_ind_struct; //20080217
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 no_ecc; //number of ECC list
+    ecc_number_struct ecc_list[MAX_NW_ECC_NUM]; //ECC list
+} gmmreg_nw_ecc_ind_struct;
+//~ __REL5__
+
+typedef struct {
+    LOCAL_PARA_HDR
+    end_session_result_enum result;
+}gmmreg_end_ps_data_session_cnf_struct;
+
+#if defined (__NO_PSDATA_SEND_SCRI__) || defined (__FAST_DORMANCY__)
+typedef struct {
+    LOCAL_PARA_HDR
+    end_session_cause_enum cause;
+}gmmreg_end_ps_data_session_ind_struct;
+#endif
+
+#ifdef __LTE_RAT__
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_emm_csfb_paging_id_enum csfb_paging_id; //Paging identity used in CS SERVICE NOTIFICATION
+    kal_bool is_cli_present; //Whether CLI (Calling Line Identification) IE exists or not
+    kal_uint8 cli_len;    //Length of CLI
+    kal_uint8 cli[12];    //CLI value Refer to TS 24.008 subclause 10.5.4.9  Calling party BCD number for decoding.
+    kal_bool is_ss_code_present; //Whether SS code IE exists or not
+    kal_uint8 ss_code;    //SS code value Refer to TS 29.002 subclause 17.7.5 for decoding.
+    kal_bool is_lcs_ind_present; //Whether LCS indicator IE exists or not
+    kal_uint8 lcs_indicatior; //LCS indicator value; 0x01: MT-LR, Other values: Normal, unspecified in this version of the protocol
+    kal_bool is_lcs_client_id_present;   //Whether LCS client identity IE exists or not
+    kal_uint8 lcs_client_id_len;  //Length of LCS client identity
+    kal_uint8 lcs_client_id[255]; //LCS client identity value, Refer to TS 29.002 subclause 17.7.13 for decoding.
+}gmmreg_csfb_page_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_accept_paging;   //Whether upper layer decides to answer the mobile terminating CS service
+}gmmreg_csfb_page_rsp_struct;
+
+#endif
+typedef struct {
+    LOCAL_PARA_HDR
+    RATCM_RRC_ReleaseCause  cause;      
+}gmmreg_rrc_conn_rel_cause_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    gmm_nw_feature_support_struct   ug_nw_feature;
+} gmmreg_nw_feature_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    sat_nw_rej_info_enum op;
+    cell_info_and_rat_struct current_cell;
+    sat_nw_rej_type_enum type;
+    kal_uint8 rej_cause;
+}gmmreg_nw_reject_ind_struct;
+
+#ifdef __GEMINI__
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_virtual_connected;
+}gmmreg_virtual_mode_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rsim_auth_finish_result_enum result;
+}gmmreg_auth_finish_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rsim_auth_abort_result_enum result;
+}gmmreg_rsim_auth_abort_cnf_struct;
+
+#endif /* __GEMINI__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool non_3gpp_emergency_number_indicator; // To indicate non-3gpp nw provided policies IEI information to Upper layers which is extracted from LU accept message, RAU accept message and Attach accept message.
+}gmmreg_non_3gpp_nw_policies_ind_struct;
+
+typedef mm_emm_csfb_result_ind_struct gmmreg_csfb_result_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_cause_source_enum event;
+    mm_cause_enum original_mm_cause;
+    mm_cause_enum converted_mm_cause;
+    kal_bool is_ps_sim_valid;
+    kal_bool is_cs_sim_valid;
+} gmmreg_cause_info_ind_struct;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool result;  	/* 1 : success, 0: failure */
+} gmmreg_set_ecall_registration_cnf_struct;
+
+typedef gmmreg_set_ecall_registration_req_struct gmmreg_ecall_registration_state_ind_struct;
+#endif
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/mm_mmi_enums.h b/mcu/protocol/interface/l4/mm_mmi_enums.h
new file mode 100644
index 0000000..11bc018
--- /dev/null
+++ b/mcu/protocol/interface/l4/mm_mmi_enums.h
@@ -0,0 +1,165 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	mm_mmi_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for enum definition MM and MMI/L4.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _MM_MMI_ENUMS_H
+#define _MM_MMI_ENUMS_H
+
+typedef enum
+{
+    /* These enums are used between mm-sublayer, AS and MMI */
+    NORMAL_DETACH = 0,
+    POWER_SWITCHED_OFF = 1
+}power_status_enum;
+
+typedef enum
+{
+     GPRS_DETACH = 1,  /* 10.5.5.5, TS 24.008 */
+     IMSI_DETACH_MS_TO_N,
+     COMBINED_GPRS_IMSI_DETACH
+}ms_to_nw_detach_type_enum;
+
+typedef enum
+{
+     REATTACH_REQD = 1,  /* 10.5.5.5, TS 24.008 */
+     REATTACH_NOT_REQD,
+     IMSI_DETACH_N_TO_MS,
+     GMM_DETACH_TYPE_NOT_VALID
+}nw_to_ms_detach_type_enum;
+
+/* These values are used in GMM, TCM and ATCI modules */
+typedef enum
+{
+    NO_PROCEDURE = 1,
+    INITIAL_CELL_SELECTION,
+    ATTACH_PROCEDURE,
+    DETACH_PROCEDURE,
+    RAU_PROCEDURE,
+    PERIODIC_RAU_PROCEDURE,
+    NEW_CELL_UPDATE_PROCEDURE,
+    SERVICE_PROCEDURE,
+    COMBINED_RAU,
+    COMBINED_RA_LA_WITH_IMSI_ATTACH,
+    GMM_PAGE_RSP,
+    SMS_EST_REQ,
+    SM_DATA_REQ,
+    AUTH_PROCEDURE
+}gmm_proc_enum;
+
+/* Gor GPRS MMI. */
+typedef enum {
+	GMMREG_GPRS_CELL_FOUND,
+	GMMREG_GPRS_REGISTERING
+} gmmreg_ps_service_info_enum;
+
+
+#define MAX_SIZE_OF_MS_RA_CAP  52
+#define MAX_SIZE_OF_MS_NW_CAP  10
+#define SIZE_OF_CLASSMARK1     1
+#define SIZE_OF_CLASSMARK2     3
+#define SIZE_OF_DRX_PARAMETER  2
+#define MAX_LSA_LENGTH         3
+#define MM_LOCI_GPRS_LEN    0x0E
+
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/mmi2mm_struct.h b/mcu/protocol/interface/l4/mmi2mm_struct.h
new file mode 100644
index 0000000..137bff1
--- /dev/null
+++ b/mcu/protocol/interface/l4/mmi2mm_struct.h
@@ -0,0 +1,661 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	mmi2mm_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for struct definition between MM and MMI/L4.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : mmi2mm_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _MMI2MM_STRUCT_H
+#define _MMI2MM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "ps_public_enum.h"
+#include "kal_public_defs.h"
+#include "nas_as_inter_core_enum.h"
+#ifdef __VOLTE_SUPPORT__
+#include "ims_common_def.h"
+#endif /* __VOLTE_SUPPORT__ */
+
+/* MM NVRAM Re-structure Start  */
+#include "l4_nvram_editor.h"
+#include "emm_nvram_editor.h"
+/* MM NVRAM Re-structure End  */
+#include "gmss_public.h"
+#include "l4_nvram_editor.h"
+#include "emm_nvram_editor.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   imei[9];
+    kal_uint8   imei_svn;
+    #if defined(__GEMINI__)
+    kal_uint8   peer_ps_imei[9];
+    #endif
+    kal_uint8 packed_drx_para[2];
+#ifdef __MONITOR_PAGE_DURING_TRANSFER__
+    gprs_transfer_preference_enum prefer; //mtk02475: gprs_transfer_preference
+#endif
+#ifdef __TC02_SECURITY_REQUIREMENT__
+    kal_uint8 nvram_imsi_loci_gloci[MAX_LEN_OF_IMSI_LOCI_GLOCI]; //mtk02475: for man-in-middle-attack prevention
+#endif
+#ifdef __MM_INTEGRITY_PREF__
+    kal_bool is_disable_integrity_check;
+#endif 
+    nvram_ef_mm_data_struct    nvram_mm_data_info;
+    nvram_ef_t3346_timer_info_struct t3346_info;
+    init_cause_enum init_cause;
+} gmmreg_init_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 band;
+} gmmreg_band_sel_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_selection_mode_enum plmn_sel_mode;
+} gmmreg_sel_mode_req_struct;
+
+typedef struct {
+    kal_uint8 timer_unit;
+    kal_uint8 timer_value;
+} gmmreg_timer_struct;
+
+#ifdef __MONITOR_PAGE_DURING_TRANSFER__
+typedef struct {
+    LOCAL_PARA_HDR
+    gprs_transfer_preference_enum prefer;
+} gmmreg_set_gprs_transfer_preference_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum detach_type; /* CS-only, PS-only or both CS/PS */
+    kal_bool power_off;   /* mobile shut down or not */
+    kal_uint8 att_id;      /* Johnny: 3G RAC, for attach_req and detach_req using */
+    l4c_rac_detach_cause_enum           detach_cause;
+} gmmreg_detach_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_main_ps;
+} gmmreg_data_allow_req_struct;
+
+#ifdef __GEMINI__
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_rsim_enabled;
+    kal_bool is_aka_sim_enabled;
+} gmmreg_rsim_aka_status_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_reselection_enum plmn_search_mode;       /* plmn_reselection_enum */
+    //kal_bool is_gprs_required; /* John Tang 2004/03/10: For at+cops = 2 then at+cops= 0 case. */
+    plmn_id_rat_struct selected_plmn; /* Selected PLMN */
+    kal_bool is_manual_csg_sel;
+    kal_uint32 csg_id;
+    rat_enum prefer_rat;   //  0:default ,  1:GSM ,   2:UMTS
+    kal_bool from_l4c;
+    kal_uint16 factory_mode_arfcn; //0xFFFF means invalid arfcn, /* 20081110 mtk00714, for fast camp on test machine */
+} gmmreg_plmn_search_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_rat_struct plmn_id_rat;
+} gmmreg_csg_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat_mode;              /* RATCM_RAT_ENUM*/
+    rat_enum active_rat;
+    domain_id_enum detach_domain; //for UEMODE:PS_MODE_x, CS domain should be detached first in RAT_MODE which contains RAT_LTE
+    rat_enum reported_rat;
+    rat_mode_change_cause_enum  rat_mode_change_cause;
+} gmmreg_set_rat_mode_req_struct;
+
+#ifdef __DYNAMIC_BAND_SEL__
+typedef struct {
+    LOCAL_PARA_HDR
+    band_selection_enum gsm_band; /* refer to band_selection_enum value*/
+    kal_bool is_gsm_band_present;
+    kal_uint8 umts_fdd_band[SIZE_OF_UMTS_BAND];    /* 3G band change */
+    kal_bool is_umts_band_present; /* 3G band change */
+}gmmreg_set_preferred_band_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool force_send_SCRI;
+    end_session_cause_enum cause;
+}gmmreg_end_ps_data_session_req_struct;
+
+#if defined(__GEMINI__)
+typedef struct {
+    LOCAL_PARA_HDR
+    sim_config_status_enum sim_config_status;
+    sim_insert_status_enum sim_insert_status;
+}gmmreg_sim_status_update_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum  prefer_rat;
+}gmmreg_set_prefer_rat_req_struct;
+
+
+#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                       is_ims_voice_available;
+} gmmreg_set_ims_voice_availability_req_struct;
+
+typedef  struct
+{
+    LOCAL_PARA_HDR
+    mm_ims_voice_termination        mm_ivt;
+} gmmreg_set_ims_voice_termination_req_struct;
+#endif /* __VOLTE_SUPPORT__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    act_sim_enum  active_sim;
+}gmmreg_active_sim_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn;
+    rat_enum rat;
+    kal_uint8 ara_start[2];
+    kal_uint8 ara_end[2];
+}gmmreg_aral_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat_mode; //User's setting, could be RAT_GSM or RAT_UMTS or RAT_GSM_UMTS
+    kal_bool is_pgcheck_on;
+    kal_uint8 causes;  // causes to be ignored.
+} gmmreg_set_pgcheck_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool mode;
+}gmmreg_cs_voice_call_protection_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rfoff_cause_enum rfoff_cause;
+}gmmreg_rfoff_req_struct;
+
+/* MSG_ID_GMMREG_SET_MS_SV_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 svn;
+}gmmreg_set_ms_sv_req_struct;
+
+typedef struct {
+    kal_bool is_mobile_data_enable_present;
+    kal_bool is_mobile_data_enable;
+    kal_bool is_mobile_data_roaming_enable_present;
+    kal_bool is_mobile_data_roaming_enable;
+    kal_bool is_volte_enable_present;
+    kal_bool is_volte_enable;
+    kal_bool is_vzw_ims_test_mode_enable_present;
+    kal_bool is_vzw_ims_test_mode_enable; 
+} gmmreg_cellular_network_config;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    gmmreg_cellular_network_config config;
+}gmmreg_cellular_network_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    elevator_mode_enum elevator_mode;
+}gmmreg_elevator_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    lte_normal_service_loss_reason_enum reason;
+}gmmreg_lte_normal_service_loss_update_req_struct;
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 purpose; //0 for EMM, 1 for MM
+    kal_uint8 mode; //0 reset timer, 1 for set timer
+    kal_uint32 timer1;
+    kal_bool is_timer1_valid;
+    kal_uint32 timer2;
+    kal_bool is_timer2_valid;
+} gmmreg_set_timer_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+    ecall_registration_state_enum  ecall_reg_state;
+} gmmreg_set_ecall_registration_req_struct;
+#endif /*__ECALL_SUPPORT__ || __NG_ECALL_SUPPORT__ */
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/mncc_enums.h b/mcu/protocol/interface/l4/mncc_enums.h
new file mode 100644
index 0000000..a32ed16
--- /dev/null
+++ b/mcu/protocol/interface/l4/mncc_enums.h
@@ -0,0 +1,382 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   mncc_enums.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains the Values for THE IES  in the CC entity.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _MNCC_ENUMS_H_
+#define _MNCC_ENUMS_H_
+
+/*****************
+Include Statements
+******************/
+
+/************************
+Macros Without Parameters 
+*************************/
+
+
+/*Location*/
+typedef enum {
+	CC_USER                =0x00,
+	CC_PRIVATE_NW_LOCAL_USER,    /* Private Network, local user  */
+	CC_PUBLIC_NW_LOCAL_USER,     /* Public network, local user   */
+	CC_TRANSIT_NW,
+	CC_PUBLIC_NW_REMOTE_USER ,   /* Public network, remote user  */
+	CC_PRIVATE_NW_REMOTE_USER,   /* Private Network, remote user */
+	CC_INTERNATIONAL_NW = 0x07,
+	CC_NW_BEYOND_IWP = 0x0A /* Network beyond Interworking point */
+}cc_user_location_enum;
+
+typedef enum {
+    
+	CC_MIN_AUX_CALL_STATE_IE_LEN    = 3
+}cc_aux_state_len_enum;
+/*----------AUX_STATE --------------------------------*/
+
+
+
+/*---------BEARER CAPABILITY----------------------------*/
+typedef enum {
+	CC_MIN_BC_IE_LEN       = 3
+}cc_bc_len_enum;
+
+/*App Types*/
+typedef enum {
+	CC_SPEECH_APP     = 0x00,
+	CC_UDI_APP,
+	CC_EX_PLMN_APP,
+	CC_FAX3_APP,
+	CC_OTHER_ITC      =0x05,
+   CC_AUX_SPEECH_APP =0x06,
+	CC_RESERVED_APP   =0x07
+}cc_app_types_enum;
+
+/*Radio Channel Requirement*/
+typedef enum {
+	CC_FULL_RATE_ONLY_MS             = 0X01	,
+	CC_DUAL_RATE_MS_HALF_RATE_PREF ,
+	CC_DUAL_RATE_MS_FULL_RATE_PREF 
+}cc_chanel_requirement_enum;
+
+/*Transfer Mode*/
+typedef enum {
+	CC_CIRCUIT_TM                   = 0x00,
+	CC_PACKET_TM                    = 0x00
+}cc_transfer_mode_enum;
+
+/*---------CALL CONTROL CAPABILITIES--------------------*/
+typedef enum {
+
+	CC_MIN_CC_CAPABILITIES_IE_LEN    =3
+} cc_cc_capabilities_len_enum;
+
+/*Prolonged Claering Support*/
+typedef enum {
+	CC_PROLONGED_CLEARING_NOT_SUPPORTED = 0,
+	CC_PROLONGED_CLEARING_SUPPORTED      
+}cc_prolonged_clr_support_enum;
+
+/*Dtmf Support*/
+typedef enum {
+	CC_DTMF_SUPPORT_EARLIER_VERSION = 0,
+	CC_DTMF_SUPPORT_CURRENT_VERSION
+}cc_dtmf_support_enum;
+
+
+
+/*------------- CALLED PARTY NUMBER ----------*/
+
+/*Type of Number*/
+typedef enum {
+	CC_TON_UNKNOWN       = 0x00,  /* unknown number */
+	CC_TON_INT_NUM ,              /* International number */
+	CC_TON_NAT_NUM ,              /* National Number */
+	CC_TON_NW_NUM ,               /* Network specific number */
+	CC_TON_SHORT_CODE ,           /* dedicated access, short code */
+	CC_TON_RESRV_EXT     = 0x07,  /* Reserved for Extension */
+	CC_TON_RESERVE       = 0x05   /* x50 to x70 is reserved */
+}cc_called_party_type_of_num_enum;
+
+/*Numbering Plan*/
+typedef enum {
+	CC_UNKNOWN_NP         = 0x00 ,/* unknown numbering plan */
+	CC_ISDN_NP ,		      /* ISDN numbering plan */
+	CC_DATA_NP            = 0x03 ,/* data numbering plan */
+	CC_TELEX_NP ,		      /* Telex numbering plan */
+	CC_NATIONAL_NP        = 0x08, /* National */
+	CC_PRIVATE_NP ,		      /* private numbering plan */
+	CC_RESERVE_NP         = 0x0F  /* reserved numbering plan */
+}cc_called_party_num_plan_enum;
+
+/* Digits or Charachters */
+/* Digit 1-9 has same value as their binary coded value */
+typedef enum {
+	CC_STAR              = 0x0A,
+	CC_HASH ,               
+	CC_DIGIT_A ,          
+	CC_DIGIT_B ,           
+	CC_DIGIT_C ,          
+	CC_LAST_DIGIT       
+}cc_xtra_digits_enum;
+
+/*Screening Indicator*/
+typedef enum {
+	CC_SCR_NOT_SCREENED   = 0x00 ,/* user provided, not screened */
+	CC_SCR_PASSED ,		      /* user provided, verf, passed */
+	CC_SCR_FAILED ,		      /* user prov., failed */
+	CC_SCR_NW   		      /* network provided */
+}cc_scr_ind_enum;
+
+
+/*--------- SUBADDRESS -----------*/
+#define CC_MAX_CALLED_SUB_ADDR_IE_LEN 21
+
+typedef enum {
+	CC_NSAP_SUB_ADDR_TYPE,
+    CC_USER_SPEC_SUB_ADDR_TYPE = 0x2
+}cc_sub_addr_type_enum;
+
+typedef enum {
+    CC_EVEN_SUB_INDICATOR,
+    CC_ODD_SUB_INDICATOR
+}cc_sub_add_indicator_enum;
+
+/*------------CONGESTION LEVEL------------*/
+typedef enum {
+	CC_RECEIVER_READY          = 0x00,
+	CC_RECEIVER_NOT_READY
+
+}cc_congestion_level_enum;
+
+/*------------NOTIFICATION INDICATOR------*/
+
+#define CC_MIN_NOTIFY_IND_IE_LEN   3
+
+/*Notification Indication*/
+typedef enum {
+	S_USER_SUSPENDED         = 0x00,
+	S_USER_RESUMED ,
+        S_BEARER_CHG 
+}cc_notification_ind_enum;
+
+/*------------PROGRESS INDICATOR---------*/
+
+/* Progress Description */
+typedef enum {
+	CC_NOT_END_TO_END_PLMN = 0X01,/* Call is not end-to-end plmn */
+	CC_DST_ADD_NON_PLMN ,         /* Destination address is in non plmn*/
+	CC_ORG_ADD_NON_PLMN ,         /* Originating address is in non-plmn */
+	CC_CALL_RET_PLMN  ,           /* Call return to plmn */
+	CC_INBAND_INFO_AVAIL   = 0X08,/* Inband Information avail now */
+	CC_END_TO_END_PLMN     = 0X20,/* Call is end to end plmn */
+	CC_QUEUEING            = 0X40, /* Call queueing */
+	CC_PROG_DESC_INVALID_DEFAULT = 255   /*mtk00924: remove warning C2874W may be used before being set*/
+
+}cc_progress_description_enum;
+
+/*------------RECALL TYPE---------------*/
+/*Recall Type*/
+#define CC_CCBS_RECALL              0x00
+
+
+/*------------REPEAT INDICATOR---------*/
+/*Repeat Indication*/
+typedef enum {
+	MODE1_ALTERNATE_MODE2      = 0x01,
+	MODE1_PREFERED_ELSE_MODE2 
+}cc_repeat_ind_enum;
+
+/*------------SIGNAL--------------------*/
+typedef enum {
+	CC_DIAL_TONE_ON                      = 0x00,
+	CC_RING_BACK_TONE_ON ,                
+	CC_INTERCEPT_TONE_ON ,
+	CC_NTW_CONGESTION_TONE_ON ,
+	CC_BUSY_TONE_ON , 
+	CC_CONFIRM_TONE_ON  ,
+	CC_ANSWER_TONE_ON  ,
+	CC_CALL_WAITING_TONE_ON  ,
+	CC_OFF_HOOK_WARNING_TONE_ON ,
+	CC_TONES_OFF                         = 0x3F ,
+	CC_ALERTING_OFF                      = 0x4F
+
+}cc_signal_tone_enum;
+
+/*------------ALLOWED ACTIONS-------------*/
+typedef enum {
+	CC_CCBS_ACTIVATION_NOT_POSSIBLE = 0 ,
+	CC_CCBS_ACTIVATION_POSSIBLE 
+	    
+} cc_allowed_actions_enum;
+
+
+/*------------SS VERSION INDICATOR-------*/
+typedef enum {
+	CC_SS_VERSION_2       = 0x00,
+	CC_SS_VERSION_3
+
+}cc_ss_version_ind_enum;
+
+/*------------NETWORK CC CAPABILITY------*/
+typedef enum {
+	CC_NETWOTK_NOT_SUPPORTS_MULTICALL =0x00,
+	CC_NETWOTK_SUPPORTS_MULTICALL      
+}cc_nw_cc_capability_enum;
+
+/*------------USER USER------------------*/
+typedef enum {
+    
+	CC_MAX_USER2USER_IE_LEN = 131
+}cc_nw_user2user_enum;
+
+typedef enum {
+	CC_UUI_PD_USER_SPECIFIC            = 0x00 ,
+	CC_UUI_PD_OSI_HIGH_LAYER ,
+	CC_UUI_PD_X_244 ,
+	CC_UUI_PD_SYSTEM_MGMT_CONVERGENCE ,
+	CC_UUI_PD_IA5_CHARS ,
+	CC_UUI_PD_REC_V_120_RATE_ADAPTION  = 0x07,
+	CC_UUI_PD_Q_931_CC_USER_MSGS       
+
+}cc_uui_pd_enum;
+
+/*------------CAUSE OF NO CLI------------*/
+typedef enum {
+	CC_CAUSE_OF_NO_CLI_UNAVAILABLE                    = 0x00 ,
+	CC_CAUSE_OF_NO_CLI_REJECTED_BY_USER ,
+	CC_CAUSE_OF_NO_CLI_INTERACTION_WITH_OTHER_SERVICE ,
+	CC_CAUSE_OF_NO_CLI_COIN_LINE_OR_PAY_PHONE 
+	    
+}cc_cause_of_no_cli_enum;
+
+/*------------CC CAPABILITY------------*/
+typedef enum {
+	CC_EARLIER_DTMF_VERSION             = 0,
+	CC_CURRENT_DTMF_VERSION
+}cc_dtmf_version_enum;
+
+typedef enum {
+	CC_PCP_NOT_SUPPORTED                = 0,
+	CC_PCP_SUPPORTED
+
+}cc_pcp_supported_enum;
+
+
+/*****************
+Enums Without Tags 
+******************/
+
+/***************
+Type Definitions 
+****************/
+
+/********
+Constants 
+*********/
+
+/*********************
+Macros With Parameters 
+**********************/
+
+/***************************
+Exported Function Prototypes 
+****************************/
+
+/******************************
+Declarations Of Exported Globals 
+*******************************/
+
+#endif /* _MNCC_ENUMS_H_ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mcu/protocol/interface/l4/mncc_struct.h b/mcu/protocol/interface/l4/mncc_struct.h
new file mode 100644
index 0000000..af23549
--- /dev/null
+++ b/mcu/protocol/interface/l4/mncc_struct.h
@@ -0,0 +1,995 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   mncc_Struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : mncc_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _MNCC_STRUCT_H
+#define _MNCC_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "mcd_ss_tcapmessages.h"
+#include "l4c2csm_cc_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+
+typedef enum
+{
+  SS_COMP_INV,
+  SS_COMP_RR,
+  SS_COMP_RE,
+  SS_COMP_REJ
+} mncc_ss_comp_type_enum;
+
+typedef enum
+{
+  SS_REJ_GEN_PROBLEM,
+  SS_REJ_INV_PROBLEM,  
+  SS_REJ_RR_PROBLEM,
+  SS_REJ_RE_PROBLEM,
+  SS_REJ_INVALID_PROBLEM = 255    /*mtk00924: remove warning C2874W may be used before being set*/
+} mncc_ss_rej_prob_type_enum;
+
+
+typedef struct {
+    kal_uint8 hold_aux_state;
+    kal_uint8 mpty_aux_state;
+} mncc_aux_state_struct;
+
+typedef struct {
+    kal_uint8 no_value;
+    kal_uint8 value_size;
+    kal_uint8 value[16];
+} mncc_bc_struct;
+
+/*[MAUI_00740014]: __REL4__ new IE, Supported Codec List*/
+typedef struct {
+    kal_uint8 no_value;
+    kal_uint8 value[8];
+} mncc_supported_codec_struct;
+
+typedef struct {
+    kal_uint8 call_state_value;
+} mncc_call_state_struct;
+
+typedef struct {
+    kal_uint8 location;
+    kal_uint16 cause_value;
+    kal_uint8 diagnostics_length;
+    kal_uint8 diagnostics[28];
+} mncc_cause_struct;
+
+typedef struct {
+    kal_uint8 CLIR_suppression;
+} mncc_clir_suppression_struct;
+
+typedef struct {
+    kal_uint8 CLIR_invocation;
+} mncc_clir_invocation_struct;
+
+typedef struct {
+    kal_uint8 congestion_level;
+} mncc_congestion_level_struct;
+
+typedef struct {
+    kal_uint8 num_of_components;
+    Component *component[2];
+} mncc_facility_struct;
+
+typedef struct {
+    kal_uint8 location;
+    kal_uint8 prog_desc;
+} mncc_progress_indicator_struct;
+
+typedef struct {
+    kal_uint8 no_value;
+    kal_uint8 value_size;
+    kal_uint8 value[3];
+} mncc_hlc_struct;
+
+typedef struct {
+    kal_uint8 keypad_info;
+} mncc_keypad_facility_struct;
+
+typedef struct {
+    kal_uint8 no_value;
+    kal_uint8 value_size;
+    kal_uint8 value[18];
+} mncc_llc_struct;
+
+typedef struct {
+    kal_uint8 more_data;
+} mncc_more_data_struct;
+
+typedef struct {
+    kal_uint8 notification_description;
+} mncc_notification_ind_struct;
+
+typedef struct {
+    kal_uint8 recall_type;
+} mncc_recall_type_struct;
+
+typedef struct {
+    kal_uint8 repeat_indication;
+} mncc_repeat_ind_struct;
+
+typedef struct {
+    kal_uint8 signal_value;
+} mncc_signal_struct;
+
+typedef struct {
+    kal_uint8 pd;
+    kal_uint8 user2user_info_length;
+    kal_uint8 user2user_info[131];
+} mncc_user2user_struct;
+
+typedef struct {
+    kal_uint8 pattern;
+} mncc_alerting_pattern_struct;
+
+typedef struct {
+    kal_uint8 CCBS_possible;
+} mncc_ccbs_status_struct;
+
+typedef struct {
+    kal_uint8 cause_of_no_CLI;
+} mncc_cause_of_no_cli_struct;
+
+typedef struct {
+    kal_uint8 immediate_modification_ind;
+} mncc_immediate_modification_ind_struct;
+
+typedef struct {
+    kal_uint8 call_priority;
+} mncc_priority_level_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} mncc_dummy_local_para_struct;
+
+typedef struct {
+    kal_uint8 call_id;
+    l4ccsm_srvcc_call_mode_enum call_mode;
+    l4ccsm_srvcc_call_direction_enum call_dir;
+    l4ccsm_srvcc_call_state_enum call_state;
+    l4ccsm_srvcc_ecc_category_enum ecc_category;
+    kal_uint8 ti;
+    
+    kal_uint8 srvcc_number_type;
+    kal_bool srvcc_number_present;
+    kal_char srvcc_number[MAX_SIP_URI_LEN];
+    kal_bool srvcc_alpha_present;
+    kal_char srvcc_alpha[MAX_PS_NAME_SIZE + 1];
+    kal_bool cli_present;
+    kal_uint8 cli;
+} mncc_srvcc_call_cntxt_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ti;
+    kal_uint8 bc_repeat_indP;
+    mncc_repeat_ind_struct bc_repeat_ind;
+    kal_uint8 bc1P;
+    mncc_bc_struct bc1;
+    kal_uint8 bc2P;
+    mncc_bc_struct bc2;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 progress_indP;
+    mncc_progress_indicator_struct progress_ind;
+    kal_uint8 signalP;
+    mncc_signal_struct signal;
+    kal_uint8 calling_numP;
+    l4ccsm_cc_peer_addr_struct calling_num;
+    kal_uint8 calling_sub_addrP;
+    l4ccsm_cc_sub_addr_struct calling_sub_addr;
+    kal_uint8 called_numP;
+    l4_addr_bcd_struct called_num;
+    kal_uint8 called_sub_addrP;
+    l4ccsm_cc_sub_addr_struct called_sub_addr;
+    kal_uint8 redirecting_numP;
+    l4ccsm_cc_peer_addr_struct redirecting_num;
+    kal_uint8 redirecting_sub_addrP;
+    l4ccsm_cc_sub_addr_struct redirecting_sub_addr;
+    kal_uint8 llc_repeat_indP;
+    mncc_repeat_ind_struct llc_repeat_ind;
+    kal_uint8 llc1P;
+    mncc_llc_struct llc1;
+    kal_uint8 llc2P;
+    mncc_llc_struct llc2;
+    kal_uint8 hlc_repeat_indP;
+    mncc_repeat_ind_struct hlc_repeat_ind;
+    kal_uint8 hlc1P;
+    mncc_hlc_struct hlc1;
+    kal_uint8 hlc2P;
+    mncc_hlc_struct hlc2;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+#ifdef __EMLPP_SUPPORT__
+    kal_uint8 priorityP;
+    mncc_priority_level_struct priority;
+#endif 
+    kal_uint8 alertP;
+    mncc_alerting_pattern_struct alert;
+    kal_uint8 cause_of_no_cliP;
+    mncc_cause_of_no_cli_struct cause_of_no_cli;
+    kal_uint8 backup_bcP;
+    mncc_bc_struct backup_bc;
+} mncc_setup_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 progress_indP;
+    mncc_progress_indicator_struct progress_ind;
+    kal_uint8 connected_numP;
+    l4ccsm_cc_peer_addr_struct connected_num;
+    kal_uint8 connected_sub_addrP;
+    l4ccsm_cc_sub_addr_struct connected_sub_addr;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_setup_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+} mncc_setup_compl_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 is_cc_setup_sent; //mtk01602, 071022
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;    
+} mncc_rej_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 bc_repeat_indP;
+    mncc_repeat_ind_struct bc_repeat_ind;
+    kal_uint8 bc1P;
+    mncc_bc_struct bc1;
+    kal_uint8 bc2P;
+    mncc_bc_struct bc2;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 progress_indP;
+    mncc_progress_indicator_struct progress_ind;
+#ifdef __EMLPP_SUPPORT__
+    kal_uint8 priorityP;
+    mncc_priority_level_struct priority;
+#endif /*__EMLPP_SUPPORT__*/
+} mncc_call_proc_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_progress_indicator_struct progress_ind;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_progress_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 progress_indP;
+    mncc_progress_indicator_struct progress_ind;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_alert_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_notification_ind_struct notification_ind;
+} mncc_notify_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_cause_struct cause;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 progress_indP;
+    mncc_progress_indicator_struct progress_ind;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+    kal_uint8 ccbs_allowedP;
+    mncc_ccbs_status_struct ccbs_allowed;
+} mncc_disc_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 second_causeP;
+    mncc_cause_struct second_cause;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_rel_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+    kal_uint16 disc_cause;
+} mncc_rel_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+} mncc_facility_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 response;
+    kal_uint8 digit;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+} mncc_start_dtmf_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 response;
+    kal_uint8 digit;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+} mncc_stop_dtmf_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_bc_struct bc;
+    kal_uint8 llcP;
+    mncc_llc_struct llc;
+    kal_uint8 hlcP;
+    mncc_hlc_struct hlc;
+    kal_uint8 rscd_P;
+} mncc_modify_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 response;
+    mncc_bc_struct bc;
+    kal_uint8 llcP;
+    mncc_llc_struct llc;
+    kal_uint8 hlcP;
+    mncc_hlc_struct hlc;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+} mncc_modify_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 cause;
+    kal_uint8 channel_type;
+    kal_uint8 channel_mode;
+} mncc_sync_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 rat;          /* rat_enum */
+} mncc_rat_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 response;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+} mncc_hold_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 response;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+} mncc_retrieve_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_user2user_struct uui;
+    kal_uint8 more_dataP;
+    mncc_more_data_struct more_data;
+} mncc_user_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_congestion_level_struct congestion_level;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+} mncc_congestion_ctrl_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ti;
+    kal_uint8 bc_repeat_indP;
+    mncc_repeat_ind_struct bc_repeat_ind;
+    kal_uint8 bc1P;
+    mncc_bc_struct bc1;
+    kal_uint8 bc2P;
+    mncc_bc_struct bc2;
+    kal_uint8 llc_repeat_indP;
+    mncc_repeat_ind_struct llc_repeat_ind;
+    kal_uint8 llc1P;
+    mncc_llc_struct llc1;
+    kal_uint8 llc2P;
+    mncc_llc_struct llc2;
+    kal_uint8 hlc_repeat_indP;
+    mncc_repeat_ind_struct hlc_repeat_ind;
+    kal_uint8 hlc1P;
+    mncc_hlc_struct hlc1;
+    kal_uint8 hlc2P;
+    mncc_hlc_struct hlc2;
+} mncc_ccbs_est_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_recall_type_struct recall_type;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 ccbs_recall_numP;
+    l4_addr_bcd_struct ccbs_recall_num;	
+} mncc_ccbs_recall_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint32 ccm;
+    kal_uint32 acm;
+    kal_bool update_cdur;
+    kal_uint32 cdur;
+    kal_bool ccwe; /* warning event *//* MAUI_01637672 support CCWE */
+} mncc_aoc_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} mncc_sig_con_re_est_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} mncc_sig_con_re_est_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+#ifdef __EMLPP_SUPPORT__
+    kal_uint8 call_priority;
+#endif 
+    kal_bool  is_emergency_call;
+    kal_uint8 clir_suppression;
+    kal_uint8 clir_invocation;
+    kal_uint8 bc_repeat_indP;
+    mncc_repeat_ind_struct bc_repeat_ind;
+    kal_uint8 bc1P;
+    mncc_bc_struct bc1;
+    kal_uint8 bc2P;
+    mncc_bc_struct bc2;
+    kal_uint8 simple_recall_alignmentP;
+    mncc_facility_struct simple_recall_alignment;
+    kal_uint8 calling_sub_addrP;
+    l4ccsm_cc_sub_addr_struct calling_sub_addr;
+    kal_uint8 called_numP;
+    l4_addr_bcd_struct called_num;
+    kal_uint8 called_sub_addrP;
+    l4ccsm_cc_sub_addr_struct called_sub_addr;
+    kal_uint8 llc_repeat_indP;
+    mncc_repeat_ind_struct llc_repeat_ind;
+    kal_uint8 llc1P;
+    mncc_llc_struct llc1;
+    kal_uint8 llc2P;
+    mncc_llc_struct llc2;
+    kal_uint8 hlc_repeat_indP;
+    mncc_repeat_ind_struct hlc_repeat_ind;
+    kal_uint8 hlc1P;
+    mncc_hlc_struct hlc1;
+    kal_uint8 hlc2P;
+    mncc_hlc_struct hlc2;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+    kal_uint8 advanced_recall_alignmentP;
+    mncc_facility_struct advanced_recall_alignment;
+    kal_uint8 recall_alignment_not_essentialP;
+    mncc_facility_struct recall_alignment_not_essential;
+    kal_uint8  supported_codecP;//MAUI_01992695
+    mncc_supported_codec_struct supported_codec;//[MAUI_00740014], __REL4__
+    kal_uint8 service_categoryP;
+    kal_uint8 service_category;	
+    kal_bool  is_ecall; 
+    kal_uint8 ecall_type; 
+} mncc_setup_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 connected_sub_addrP;
+    l4ccsm_cc_sub_addr_struct connected_sub_addr;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_setup_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_cause_struct cause;
+} mncc_rej_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 bc_repeat_indP;
+    mncc_repeat_ind_struct bc_repeat_ind;
+    kal_uint8 bc1P;
+    mncc_bc_struct bc1;
+    kal_uint8 bc2P;
+    mncc_bc_struct bc2;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 supported_codecP;
+    mncc_supported_codec_struct supported_codec; //[MAUI_00740014], __REL4__
+} mncc_call_conf_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_alert_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_notification_ind_struct notification_ind;
+} mncc_notify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_cause_struct cause;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_disc_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 facilityP;
+    mncc_facility_struct facility;
+    kal_uint8 uuiP;
+    mncc_user2user_struct uui;
+} mncc_rel_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_cause_struct cause;
+} mncc_rel_comp_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_facility_struct facility;
+} mncc_facility_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 digit;
+} mncc_start_dtmf_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 digit;
+} mncc_stop_dtmf_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_bc_struct bc;
+    kal_uint8 llcP;
+    mncc_llc_struct llc;
+    kal_uint8 hlcP;
+    mncc_hlc_struct hlc;
+   kal_uint8 rscd_P; /*RSCD present*/
+} mncc_modify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 response;
+    mncc_bc_struct bc;
+    kal_uint8 llcP;
+    mncc_llc_struct llc;
+    kal_uint8 hlcP;
+    mncc_hlc_struct hlc;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 rscd_P; 
+} mncc_modify_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+} mncc_hold_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+} mncc_retrieve_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_user2user_struct uui;
+    kal_uint8 more_dataP;
+    mncc_more_data_struct more_data;
+} mncc_user_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 bc_repeat_indP;
+    mncc_repeat_ind_struct bc_repeat_ind;
+    kal_uint8 bc1P;
+    mncc_bc_struct bc1;
+    kal_uint8 bc2P;
+    mncc_bc_struct bc2;
+    kal_uint8 llc_repeat_indP;
+    mncc_repeat_ind_struct llc_repeat_ind;
+    kal_uint8 llc1P;
+    mncc_llc_struct llc1;
+    kal_uint8 llc2P;
+    mncc_llc_struct llc2;
+    kal_uint8 hlc_repeat_indP;
+    mncc_repeat_ind_struct hlc_repeat_ind;
+    kal_uint8 hlc1P;
+    mncc_hlc_struct hlc1;
+    kal_uint8 hlc2P;
+    mncc_hlc_struct hlc2;
+    kal_uint8 causeP;
+    mncc_cause_struct cause;
+    kal_uint8 supported_codecP;
+    mncc_supported_codec_struct supported_codec;//[MAUI_00740014], __REL4__
+} mncc_ccbs_est_res_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+} mncc_ccbs_setup_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mncc_cause_struct cause;
+} mncc_ccbs_rej_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 acmmax;
+    kal_uint32 acm;
+} mncc_acm_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+} mncc_abort_call_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 num_of_call;
+    mncc_srvcc_call_cntxt_struct call_tbl[L4C_MAX_CALL_LIST_LEN];
+}mncc_srvcc_transfer_req_struct;
+
+//if mncc_srvcc_transer_cnf_struct.num_of_call = 0, means fail.
+typedef mncc_srvcc_transfer_req_struct mncc_srvcc_transfer_cnf_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+	plmn_id_struct plmn_id; 
+}mncc_plmn_info_ind_struct;
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/mnss_struct.h b/mcu/protocol/interface/l4/mnss_struct.h
new file mode 100644
index 0000000..5df3071
--- /dev/null
+++ b/mcu/protocol/interface/l4/mnss_struct.h
@@ -0,0 +1,185 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   mnss_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : mnss_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _MNSS_STRUCT_H
+#define _MNSS_STRUCT_H
+
+#include "kal_general_types.h"
+#include "mcd_ss_tcapmessages.h"
+#include "kal_public_defs.h"
+
+/* Maximum Number of Components allowed in CISS per single 
+ * Transaction */
+#define CISS_MAX_NUM_OF_COMPONENTS_ALLOWED   1
+
+typedef struct {
+    kal_uint8 num_of_components;
+//    Component component[1]; CISS_MAX_NUM_OF_COMPONENTS_ALLOWED
+    Component *component[CISS_MAX_NUM_OF_COMPONENTS_ALLOWED];
+} mnss_facility_struct;
+
+typedef struct {
+    kal_uint16 cause_value;
+    kal_uint8 diagnostics_length;
+    kal_uint8 diagnostics[28];
+} mnss_cause_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+} mnss_dummy_local_para_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    mnss_facility_struct facility;
+    kal_uint8 rat_info;//let ciss know whether to communicate with MM(0) or EVAL(1)
+} mnss_begin_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mnss_facility_struct facility;
+} mnss_fac_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 causeP;
+    mnss_cause_struct cause;
+    kal_uint8 facilityP;
+    mnss_facility_struct facility;
+} mnss_end_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 ti;
+    mnss_facility_struct facility;
+    kal_uint8 rat_info;//let csmss know the working RAT is 2/3G(rat_info=0) or 4G(rat_info=1)
+} mnss_begin_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    mnss_facility_struct facility;
+} mnss_fac_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    kal_uint8 ti;
+    kal_uint8 causeP;
+    mnss_cause_struct cause;
+    kal_uint8 facilityP;
+    mnss_facility_struct facility;
+} mnss_end_ind_struct;
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/nas_sv_css_struct.h b/mcu/protocol/interface/l4/nas_sv_css_struct.h
new file mode 100644
index 0000000..ccc2587
--- /dev/null
+++ b/mcu/protocol/interface/l4/nas_sv_css_struct.h
@@ -0,0 +1,150 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+* nas_sv_css_struct.h
+*
+* Project:
+* --------
+*   UMOLYE
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _NAS_SV_CSS_STRUCT_H_
+#define _NAS_SV_CSS_STRUCT_H_
+#include "nas_sv_struct.h"
+#include "c2k_irat_msg_struct.h"
+
+typedef struct
+{
+    /** ILM specific header. */
+    LOCAL_PARA_HDR
+
+    /** notify CSS deactivate cause */
+    css_deactivate_cause_enum  css_deactive_cause;
+
+   /** notify CSS if to deactivate C2K CS service */
+   kal_bool is_to_deactivate_c2k_cs_service;
+
+}nas_sv_css_deactivate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    mmss_search_type_enum mmss_search_type;
+    irat_priority_class_enum prio_class; 
+    mmss_3gpp2_list_struct mmss_list;
+    kal_bool is_for_silent_redial;
+    cs_reg_cause_enum cause;
+    gmss_search_type_enum gmss_search_type;
+} nwsel_nas_sv_css_cs_reg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    kal_bool result;
+    css_cause_code_enum css_cause;
+    irat_priority_class_enum prio_class;
+} nwsel_nas_sv_css_cs_reg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    irat_system_type_enum sys_type;
+    irat_priority_class_enum prio_class;
+    mmss_search_type_enum mmss_search_type;
+    mmss_3gpp2_list_struct mmss_list;
+    irat_priority_class_enum c2k_1x_to_evdo_prio_class;
+    kal_uint8 mspl_search_cycle_id;
+    gmss_search_type_enum gmss_search_type;
+} nwsel_nas_sv_css_ps_reg_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    kal_bool result;
+    css_cause_code_enum css_cause; 
+    irat_ps_type_enum ps_type;
+    irat_priority_class_enum prio_class;
+} nwsel_nas_sv_css_ps_reg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    irat_system_type_enum sys_type;
+    kal_bool enter_active_rat_for_evdo;
+    kal_bool is_quick_search;
+    kal_bool is_stored_search;
+    kal_bool is_LTE_only_mode;
+} nwsel_nas_sv_css_mcc_search_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    /* trx_id between GMSS and MD3*/ kal_uint8 trx_id;
+    /** result of MCC search */ kal_bool result;
+    /** cause of failure */ css_cause_code_enum css_cause;
+    /** MCC value, avaiable only when result is KAL_TRUE */ kal_uint8 mcc1;
+    /** MCC value, avaiable only when result is KAL_TRUE */ kal_uint8 mcc2;
+    /** MCC value, avaiable only when result is KAL_TRUE */ kal_uint8 mcc3;
+} nwsel_nas_sv_css_mcc_search_cnf_struct;
+
+typedef nwsel_nas_sv_css_cs_reg_req_struct nas_sv_css_cs_reg_req_struct;
+
+typedef nwsel_nas_sv_css_cs_reg_cnf_struct nas_sv_css_cs_reg_cnf_struct;
+
+typedef nwsel_nas_sv_css_ps_reg_req_struct nas_sv_css_ps_reg_req_struct;
+
+typedef nwsel_nas_sv_css_ps_reg_cnf_struct nas_sv_css_ps_reg_cnf_struct;
+
+typedef nwsel_nas_sv_css_mcc_search_req_struct nas_sv_css_mcc_search_req_struct;
+
+typedef nwsel_nas_sv_css_mcc_search_cnf_struct nas_sv_css_mcc_search_cnf_struct;
+
+
+typedef nas_sv_any_check_active_rat_cnf_struct nas_sv_css_check_active_rat_cnf_struct;
+
+typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_css_set_active_rat_cnf_struct;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/nas_sv_errc_struct.h b/mcu/protocol/interface/l4/nas_sv_errc_struct.h
new file mode 100644
index 0000000..87991ee
--- /dev/null
+++ b/mcu/protocol/interface/l4/nas_sv_errc_struct.h
@@ -0,0 +1,148 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+* nas_sv_errc_struct.h
+*
+* Project:
+* --------
+*   UMOLYE
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _NAS_SV_ERRC_STRUCT_H_
+#define _NAS_SV_ERRC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_local.h"
+#include "mm_mmi_enums.h"
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "irat_common_enums.h"
+#include "irat_common_struct.h"
+#include "nas_sv_struct.h"
+#include "l4c_eval_struct.h"
+#include "rac_nas_sv_struct.h"
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    void* as_info_ptr;
+    ho_from_lte_type_enum ir_ho_type;
+    kal_uint8 nas_security_param_from_eutra;
+    gas_cipher_algo_enum gas_cipher_algo;
+    kal_bool csfb_ind;
+    irat_container_errc_to_emm_struct irat_container;
+} nas_sv_errc_rat_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type; 
+    rat_type_enum source_rat; 
+    rat_type_enum target_rat; 
+    irat_result_enum irat_result;
+    void* as_info_ptr;
+} nas_sv_errc_rat_change_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat; 
+    rat_type_enum target_rat;
+    void* as_info_ptr;
+    irat_container_emm_info_struct emm_info;
+} nas_sv_errc_rat_change_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type; 
+    rat_type_enum source_rat; 
+    rat_type_enum target_rat; 
+    irat_result_enum irat_result;
+    void* as_info_ptr;
+    kal_bool is_csfb_fast_return;
+    enasas_add_epsbearer_list_struct add_list;
+} nas_sv_errc_rat_change_cnf_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    ue_capability_struct capability; 
+} nas_sv_errc_cap_update_req_struct; 
+    
+typedef struct{
+    LOCAL_PARA_HDR
+    kal_bool is_successful; /* Indicates whether enabling or disabling capability is successful. */
+} nas_sv_errc_cap_update_cnf_struct;
+
+typedef nwsel_nas_sv_power_scan_cnf_struct nas_sv_errc_power_scan_cnf_struct;
+
+typedef nwsel_nas_sv_plmn_band_ind_struct nas_sv_errc_plmn_band_ind_struct;
+
+typedef nas_sv_any_check_active_rat_cnf_struct nas_sv_errc_check_active_rat_cnf_struct;
+
+typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_errc_set_active_rat_cnf_struct;
+
+typedef nwsel_nas_sv_sniffer_start_req_struct nas_sv_errc_sniffer_start_req_struct;
+
+typedef nwsel_nas_sv_signal_appear_ind_struct nas_sv_errc_signal_appear_ind_struct;
+
+typedef l4c_eval_srvcc_status_update_ind_struct nas_sv_errc_srvcc_status_update_ind_struct;
+
+typedef rac_nas_sv_nr_normal_service_loss_update_req_struct nas_sv_errc_nr_normal_service_loss_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR    
+    kal_uint32 num_of_band;    
+    kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
+} nas_sv_errc_background_band_learning_req_struct;
+
+typedef nas_sv_any_search_status_update_req_struct nas_sv_errc_any_search_status_update_req_struct;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/nas_sv_struct.h b/mcu/protocol/interface/l4/nas_sv_struct.h
new file mode 100644
index 0000000..b3d1d2e
--- /dev/null
+++ b/mcu/protocol/interface/l4/nas_sv_struct.h
@@ -0,0 +1,1813 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+* nas_sv_struct.h
+*
+* Project:
+* --------
+*   UMOLYE
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _NAS_SV_STRUCT_H_
+#define _NAS_SV_STRUCT_H_
+
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+
+
+
+#include "l3_inc_local.h"
+
+#include "gmss_public.h"
+#include "mm_mmi_enums.h"
+#include "mmi2mm_struct.h"
+
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "global_type.h"
+#include "irat_common_struct.h"
+//#include "c2k_irat_msg_struct.h"
+#include "l3_inc_enums_public.h"
+#include "ims_interface_md.h"
+#include "ps_public_struct.h"
+
+
+#define MAX_SEARCH_BAND_LIST_SIZE 32
+#define NAS_MAX_PS_RESULT_LIST 128
+#define NAS_MIN_PS_RSSI_VALUE -360
+#define MAX_NWSEL_MCC_POOL 6
+#define LEN_OF_ALL_ALLOWED_NSSAI 144
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum attach_type;
+    kal_uint8 ready_timer_p;
+    gmmreg_timer_struct ready_timer_value;
+    kal_uint8 att_id;
+    mm_user_search_type_enum search_type;
+    kal_bool is_follow_on_request;
+    mm_user_search_cause_enum search_cause; //used for GSMA SIM block feature
+} nas_sv_any_attach_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum detach_type;
+    kal_bool power_off;
+    kal_uint8 att_id;
+    l4c_rac_detach_cause_enum           detach_cause;
+    kal_bool is_user_ps_reattach;
+} nas_sv_any_detach_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat_mode;              /* RATCM_RAT_ENUM*/
+    rat_enum reported_rat;
+    irat_system_type_enum c2k_mode;
+    kal_bool is_rf_on;
+    vg_option_enum vg_option_map;
+} nas_sv_gmss_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;
+    mm_cause_enum cause;
+} nas_sv_gmss_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_deact_cs;
+    kal_bool is_deact_ps;
+} nas_sv_gmss_c2k_deactivate_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_sv_any_event_update_req_enum event;
+} nas_sv_any_event_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_sv_any_event_update_ind_enum event;
+    rat_enum rat;
+} nas_sv_any_event_update_ind_struct;
+
+typedef nas_sv_any_event_update_ind_struct nas_sv_vgmm_event_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    erac_rat_enum               rat_mode;
+    erac_rat_enum               reported_rat;
+    rat_mode_change_cause_enum  rat_mode_change_cause;
+	irat_system_type_enum       c2k_mode;
+} nas_sv_emm_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum            status;
+} nas_sv_emm_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+} nas_sv_any_rat_change_start_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    irat_result_enum irat_result;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+    // NAS_SV only updates for 23G. For other RATs, set it to Unknown
+    // This filed is requested by MOD_SMIC
+    nas_sv_camped_on_cell_type_enum camped_on_cell_type;
+} nas_sv_any_rat_change_finish_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+} nas_sv_emm_plmn_search_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    rat_enum rat;
+} nas_sv_mm_plmn_search_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    active_nas_enum init_nas;
+    
+} nas_sv_smic_boot_up_init_nas_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    rat_enum rat;
+    plmn_search_result_enum result;
+    kal_bool is_as_plmn_list_present;
+    as_plmn_list_struct as_plmn_list;
+    kal_uint8 multi_plmn_count;
+    plmn_id_struct multi_selected_plmn[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
+    scan_type_enum scan_type;
+    kal_bool is_stored_list_exist; // only for stored search not for fullband + fullband and stored
+    fullband_result_enum is_fullband_finished;
+    kal_bool is_ps_conn_releasing;
+    kal_bool is_quick_search;
+    kal_bool no_search_candidate;
+} nwsel_nas_sv_plmn_search_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                   trx_id;
+    plmn_search_result_enum     result;
+    plmn_search_cant_proc_reason_enum   cant_proc_reason;
+    kal_bool                    is_as_plmn_list_present;
+    as_plmn_list_struct         as_plmn_list;
+    kal_uint8                   multi_plmn_count;
+    plmn_id_struct              multi_selected_plmn[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum           multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
+    scan_type_enum              scan_type;
+    kal_bool                    is_stored_list_exist; // only for stored search not for fullband + fullband and stored
+    fullband_result_enum        is_fullband_finished;
+    kal_bool                    is_quick_search;
+    kal_bool                    no_search_candidate;
+} nas_sv_emm_plmn_search_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                  gibi_tag;
+    kal_uint8                   ta_code[2];
+    kal_uint8                   multi_plmn_count;
+    plmn_id_struct              multi_plmn_id[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum           multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
+    kal_uint8                   multi_ta_code[MAX_NUM_MULTI_PLMN][2]; // 36.331 R14 CR2912 EUTRAN sharing enhancement
+    kal_uint32                  multi_cell_id[MAX_NUM_MULTI_PLMN]; // 36.331 R14 CR2912 EUTRAN sharing enhancement
+    csg_access_mode_enum        csg_access_mode[MAX_NUM_MULTI_PLMN];
+    csg_info_struct             csg_info[MAX_NUM_MULTI_PLMN];
+    lte_duplex_type_enum        lte_type;
+    kal_bool                    ims_emergency_support;
+#ifdef __NG_ECALL_SUPPORT__
+    kal_bool                    ecall_over_ims_support;
+#endif /* __NG_ECALL_SUPPORT__ */
+    kal_bool is_c2k_as_irat;
+    kal_uint16                  band;
+    kal_bool                    is_3G_sib_scheduled;
+    kal_bool                    is_2G_sib_scheduled;
+    kal_bool                    is_C2K_sib_scheduled;
+    enasas_ssac_ac_barringfactor_enum ssac_voice_ac_barring_factor;
+    kal_bool                    match_op_cfg;
+
+    //--- Debug Only ---//
+    endc_sib_status_enum        endc_sib_status; /* "endc_sib_status" will be set to "ENDC_SIB_STATUS_SUPPORT" if the corresponding 
+                                                  * bit of selected PLMN in PLMN-InfoList-r15 from SIB2 is TRUE. 
+                                                  */
+    kal_bool                    endc_available;  /* "endc_available" wil be set to TRUE if any bit in PLMN-InfoList-r15 from SIB2 is TRUE */
+} nas_sv_emm_sys_info_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+    kal_uint8 nas_security_param_from_eutra;
+    gas_cipher_algo_enum gas_cipher_algo;
+    kal_bool csfb_ind;
+} nas_sv_emm_nas_ctxt_transfer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    irat_result_enum irat_result;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+} nas_sv_emm_rat_change_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_container_errc_to_emm_struct irat_container;
+} nas_sv_emm_as_param_notify_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat_mode;              /* RATCM_RAT_ENUM*/
+    domain_id_enum detach_domain; //for UEMODE:PS_MODE_x, CS domain should be detached first in RAT_MODE which contains RAT_LTE
+    rat_enum reported_rat;
+    rat_mode_change_cause_enum  rat_mode_change_cause;
+} nas_sv_mm_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;         /* proc_status_enum */
+    mm_cause_enum cause;          /* mm_cause_enum */
+} nas_sv_mm_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    kal_uint8 nas_security_param[NAS_SECURITY_PARAM_LEN];
+} nas_sv_mm_nas_ctxt_transfer_req_struct,nas_sv_mm_rat_change_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    irat_result_enum irat_result;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    irat_reject_cause_enum irat_reject_cause;
+} nas_sv_mm_rat_change_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    rat_enum reported_rat;
+} nas_sv_ratcm_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_successful;
+    mm_cause_enum cause;
+} nas_sv_ratcm_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    void* as_info_ptr;
+    kal_uint8 nas_security_param[NAS_SECURITY_PARAM_LEN];
+    //NAS security parameter (Only valid for IRHO from UAS)
+    //Byte1 ~ 4: NouceMME
+    //Byte5: Selected Algorithm (Ciphering/Integrity)
+    //Byte6: eKSI (including type of security context)
+} nas_sv_ratcm_rat_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    irat_result_enum irat_result;
+    irat_reject_cause_enum irat_reject_cause;
+    void* as_info_ptr;
+} nas_sv_ratcm_rat_change_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    void* as_info_ptr;
+    ratcm_gas_security_mode_req_struct gas_security;
+    uas_security_context_struct uas_security[2];
+    csfb_indicator_enum csfb_indicator;
+    loopback_mode_status_enum loopback_mode_status;
+    kal_bool is_lai_valid;
+    lai_struct lai;
+    kal_bool is_srvcc;
+    kal_bool is_mapped_rai_valid;
+    rai_struct mapped_rai;
+} nas_sv_ratcm_rat_change_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    irat_result_enum irat_result;
+    void* as_info_ptr;
+    domain_id_enum connection_domain;
+    kal_bool is_gibi_tag_valid;
+    kal_uint16 gibi_tag;
+} nas_sv_ratcm_rat_change_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 gibi_tag;
+    rat_enum rat;
+    kal_bool is_data_pending;
+    kal_bool is_sys_info_present;
+    kal_uint8 multi_plmn_count;
+    plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
+    plmn_id_struct plmn_id;
+    kal_uint8 la_code[2];
+    kal_uint8 ra_code;
+    kal_uint32 cell_id;
+    kal_bool cell_support_cs;
+    kal_bool cell_support_ps; /* if FALSE, nmo and ra_code should not refer. */
+    kal_bool is_acc_class_present;
+    kal_uint16 acc_class;
+    kal_uint8 extra_info_bitmask; /* for DSAC/data_speed_support update in connected mode*/
+    kal_uint8 dsac_plmn_bitmask;
+    kal_uint16 cs_dsac[MAX_NUM_MULTI_PLMN];
+    kal_uint16 ps_dsac[MAX_NUM_MULTI_PLMN];
+    kal_uint8 t3212_timer_val;
+    network_mode_enum nmo;
+    as_cell_type_enum cell_type;
+    att_flag_enum att_flag;
+    kal_bool mscr;
+    rr_mm_sgsnr_flag_enum sgsnr;
+    data_speed_support_enum cell_data_speed_support; /* MAUI_02361221: for egprs and hspa */
+    kal_uint8 ppacr_plmn_bitmask;
+    ppacr_info_struct ppacr_info_plmn_list[MAX_NUM_MULTI_PLMN];
+    csg_access_mode_enum csg_access_mode;
+    csg_info_struct csg_info;
+    kal_bool is_gprs_info_in_si13_deferred;
+    kal_uint8 band;
+} nas_sv_ratcm_sys_info_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    plmn_search_result_enum result;
+    rat_enum rat;
+    plmn_id_struct selected_plmn;
+    kal_bool is_as_plmn_list_present;
+    as_plmn_list_struct as_plmn_list;
+    as_cell_type_enum   selected_cell_type;
+    kal_bool is_ps_conn_releasing;
+    kal_uint8 multi_plmn_count;
+    plmn_id_struct multi_selected_plmn[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum multi_selected_cell_type[MAX_NUM_MULTI_PLMN];
+    scan_type_enum scan_type;
+    kal_bool is_stored_list_exist; // only for stored search not for fullband + fullband and stored
+    fullband_result_enum is_fullband_finished;
+    kal_bool is_quick_search;
+} nas_sv_mm_plmn_search_cnf_struct;
+
+/* workaround need to remove */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 gibi_tag;
+    kal_uint8 plmn_id_num;
+    plmn_id_struct plmn_id[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
+    kal_uint8 ta_code[MAX_NUM_MULTI_PLMN][3];
+    kal_uint8 cell_id[MAX_NUM_MULTI_PLMN][5];
+    nrrc_ac1_selection_assistance_info_enum
+        ac1_selection_assistance_info[MAX_NUM_MULTI_PLMN];
+    kal_bool ims_emergency_support;
+    kal_uint16 band;
+    duplex_type_enum duplex_type;
+} nas_sv_nrrc_sys_info_update_ind_struct;
+/* workaround need to remove */
+
+
+typedef union
+{
+    nas_sv_ratcm_sys_info_update_ind_struct mm_sys_info;
+    nas_sv_emm_sys_info_update_ind_struct emm_sys_info;
+    nas_sv_nrrc_sys_info_update_ind_struct nrrc_sys_info;
+} nwsel_nas_sv_sys_info_update_ind_union;
+
+typedef union
+{
+    kal_uint8 nr_cell_id[MAX_NUM_MULTI_PLMN][5];
+    kal_uint32 lte_cell_id[MAX_NUM_MULTI_PLMN]; 
+    kal_uint32 umts_cell_id;                    
+    kal_uint16 gsm_cell_id;
+} cell_id_union;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    nwsel_nas_sv_sys_info_update_ind_union sys_info;
+} nwsel_nas_sv_sys_info_update_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   eq_plmn_count;
+    plmn_id_struct              eq_plmn_id[MAX_NUM_EQ_PLMN];
+} nwsel_nas_sv_nrrc_eq_plmn_list_update_req_struct;
+
+
+typedef struct
+{
+    kal_bool is_ecc_triggered;
+    /* filled by MM */
+    kal_bool is_csfb_ongoing;
+    kal_uint16 factory_mode_arfcn;
+} gsm_search_param_container_struct;
+
+typedef struct
+{
+    kal_bool is_manual_csg_sel; // identify if the csg_id below is valid
+    kal_uint32 csg_id;
+    kal_bool is_ecc_triggered;
+    /* filled by MM */
+    kal_bool is_csfb_ongoing;
+    kal_uint16 factory_mode_arfcn;
+} umts_search_param_container_struct;
+
+typedef struct
+{
+    lte_duplex_type_enum lte_type;
+    /* NWSEL search ANY and this flag set to True, ERRC will only find LTE with IMS support.Otherwise, ERRC report Not_Found */
+    kal_bool force_ims_ecc_cell;
+#ifdef __NG_ECALL_SUPPORT__
+    /* Indicate whether this search needs to prefer IMS ecc cell. If one of search preference and prefer_ims_ecc_cell is false, not prefer ims ecc cell.
+    * Check this field only when force_ims_ecc_cell is set to FALSE. */
+    kal_bool prefer_ims_ecc_cell;
+    /* Use in eCall only mode, force 4G AS to search cells with ecall_over_ims_support*/
+    kal_bool force_ecall_cell;
+#endif /* __NG_ECALL_SUPPORT__ */
+
+    /* OOS scenario, NWSEL need to search again Not-Found entry. AS should not apply U2D filter when this flag on */
+    kal_bool force_stored_search;
+    endc_search_enum endc_search; /* Search ENDC cell or not for LTE cell. */
+    kal_bool is_manual_csg_sel; // identify if the csg_id below is valid
+    kal_uint32 csg_id;
+    kal_bool is_mpsr_trigger; //for VzW MPSR expired based improvement
+    kal_uint32 factory_mode_arfcn;
+    /* OOS interleave source */
+    kal_uint8 additional_stored_freq_plmn_num;
+    plmn_id_struct additional_stored_freq_plmn[MAX_NUM_SEARCH_PLMN];
+} lte_search_param_container_struct;
+
+typedef struct
+{
+    NRARFCN factory_mode_arfcn;
+    /* NWSEL search ANY and this flag set to True, ERRC will only find LTE with IMS support.Otherwise, ERRC report Not_Found */
+    kal_bool force_ecc_cell;
+    /* OOS scenario, NWSEL need to search again Not-Found entry. AS should not apply U2D filter when this flag on */
+    kal_bool force_stored_search;
+    /* OOS interleave source */
+    kal_uint8 additional_stored_freq_plmn_num;
+    plmn_id_struct additional_stored_freq_plmn[MAX_NUM_SEARCH_PLMN];
+} nr_search_param_container_struct;
+
+
+typedef union
+{
+    gsm_search_param_container_struct gsm;
+    umts_search_param_container_struct umts;
+    lte_search_param_container_struct lte;
+    nr_search_param_container_struct nr;
+} search_rat_specific_param_container_union;
+
+typedef struct
+{
+    kal_bool is_power_on; //for CMCC case 5.1.1: is first search after power on
+    kal_bool is_manual_sel; // if search is manual selection
+    kal_bool trigger_by_signal_appear;
+    kal_bool is_higher_plmn_search;
+    kal_uint32 factory_mode_arfcn; //0xFFFFFFFF means invalid arfcn - do normal search. For fast camp on test machine
+
+    scan_type_enum scan_type;
+    search_period_enum search_period; // only a suggestion value for RAT switch.
+    /* number of valid items in the band list. */
+    kal_uint32 num_of_band;
+    /*band list for OP/MCC band and MRU/RAL */
+    kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
+    kal_bool is_band_list_sorted;
+    kal_bool is_quick_search;
+    kal_bool is_all_stored;
+    found_mcc_info_struct found_mcc_info;
+    kal_bool is_predict_search;
+} search_param_container_struct;
+
+
+typedef struct
+{
+    kal_bool force_to_release;
+    kal_bool is_clear_abnormal_state;
+    kal_bool is_srlte;
+    kal_bool is_to_deactivate_c2k_cs_service;
+} nas_control_param_container_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    kal_uint8 trx_id;
+    plmn_search_type_enum plmn_search_type;
+    kal_uint8 plmn_id_count;
+    plmn_id_struct plmn_id[MAX_NUM_SEARCH_PLMN];
+    nas_control_param_container_struct nas_ctrl_container;
+    search_param_container_struct as_param_container;
+    search_rat_specific_param_container_union as_specific_container;
+} nwsel_nas_sv_plmn_search_req_struct;
+
+typedef nwsel_nas_sv_plmn_search_req_struct nas_sv_emm_plmn_search_req_struct;
+typedef nwsel_nas_sv_plmn_search_req_struct nas_sv_mm_plmn_search_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool                    is_manual_sel;
+} nwsel_nas_sv_manual_mode_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool                    is_manual_list;
+    rat_enum                    rat;
+    lte_duplex_type_enum        lte_type; // phase out
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+    scan_type_enum              scan_type;
+    kal_bool                    is_mpsr_trigger;   //for VzW MPSR expired based improvement
+    kal_bool                    is_elevator_mode;
+    found_mcc_info_struct       found_mcc_info;
+    kal_bool                    is_higher_plmn_search;
+    kal_bool                    list_endc_info; /* LIST ENDC info or not for LTE cell. ERRC will collect SIB2 for PLMN_LIST. */
+    /** number of valid items in the band list. */
+    kal_uint32 num_of_band;
+    /** band list for MCC Band for PLMN List Optimization */
+    kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
+    user_list_type_enum             user_list_type;    
+    kal_uint8                   given_number_of_plmn; // When xAS found the given number of plmn, xAS return PLMN_LIST_CNF. When value is 0 means xAS do complete list, no need care it.    
+    network_scan_input_struct   network_scan_input;
+} nwsel_nas_sv_plmn_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_user_plmn_list_ongoing;
+} nwsel_nas_sv_plmn_list_status_update_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    as_plmn_list_struct as_plmn_list;
+    scan_type_enum scan_type;
+    plmn_list_result_enum cause;
+    kal_bool is_complete; // If list not complete, the available list is not complete too.
+    kal_bool is_plmn_list_aborted; //indicate if the PLMN List is aborted by PLMN_LIST_ABORT_REQ
+} nwsel_nas_sv_plmn_list_cnf_struct;
+
+typedef nwsel_nas_sv_plmn_list_cnf_struct nas_sv_mm_plmn_list_cnf_struct;
+typedef nwsel_nas_sv_plmn_list_cnf_struct nas_sv_emm_plmn_list_cnf_struct;
+
+typedef nwsel_nas_sv_plmn_list_req_struct nas_sv_mm_plmn_list_req_struct;
+typedef nwsel_nas_sv_plmn_list_req_struct nas_sv_emm_plmn_list_req_struct;
+typedef nwsel_nas_sv_plmn_list_status_update_req_struct nas_sv_vgmm_plmn_list_status_update_req_struct;
+
+typedef struct 
+{ 
+    LOCAL_PARA_HDR 
+    network_scan_5g_output_struct   nw_scan_5g_output;
+} nwsel_nas_sv_plmn_scan_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum                    rat;
+    lte_duplex_type_enum        lte_type; // phase out
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+} nwsel_nas_sv_csg_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    as_csg_list_struct as_csg_list;
+} nwsel_nas_sv_csg_list_cnf_struct;
+
+typedef nwsel_nas_sv_csg_list_cnf_struct nas_sv_mm_csg_list_cnf_struct;
+typedef nwsel_nas_sv_csg_list_cnf_struct nas_sv_emm_csg_list_cnf_struct;
+typedef nwsel_nas_sv_csg_list_cnf_struct nas_sv_nrrc_csg_list_cnf_struct;
+
+
+typedef nwsel_nas_sv_csg_list_req_struct nas_sv_mm_csg_list_req_struct;
+typedef nwsel_nas_sv_csg_list_req_struct nas_sv_emm_csg_list_req_struct;
+typedef nwsel_nas_sv_csg_list_req_struct nas_sv_nrrc_csg_list_req_struct;
+
+/* MSG_ID_NWSEL_NAS_SV_NRRC_PLMN_SEARCH_PREFERENCE_UPDATE_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool prefer_ims_emergency;
+} nwsel_nas_sv_nrrc_plmn_search_preference_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool                    is_received;
+    kal_bool                    is_security_check;
+    kal_uint8                   sor_header;
+    kal_uint16                  oplmn_data_size;
+    kal_uint8                   *oplmn_data;
+} nwsel_nas_sv_sor_oplmn_list_update_ind_struct;
+
+typedef nwsel_nas_sv_sor_oplmn_list_update_ind_struct nas_sv_vgmm_sor_oplmn_list_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool                    abort_reg_needed;
+} nwsel_nas_sv_sor_oplmn_list_update_rsp_struct;
+
+typedef nwsel_nas_sv_sor_oplmn_list_update_rsp_struct nas_sv_vgmm_sor_oplmn_list_update_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                   size_of_addr;
+    kal_uint8                   addr[MAX_SIM_ADDR_LEN];
+} nwsel_nas_sv_sor_secure_packet_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool                    is_successful;
+    kal_uint16                  size_of_sim_ack_data;
+    kal_uint8                   sim_ack_data[256];
+    kal_uint8                   cause;
+} nwsel_nas_sv_sor_secure_packet_rsp_struct;
+
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} nwsel_nas_sv_plmn_search_ind_struct;
+
+/*Check Active RAT Req*/
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum check_rat;
+}nwsel_nas_sv_check_active_rat_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat; /*For RATCM only*/
+}nas_sv_ratcm_check_active_rat_req_struct;
+
+/*Set Active RAT Req*/
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat; /*For RATCM only*/
+}nas_sv_ratcm_set_active_rat_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat; /*For RATCM only*/
+}nas_sv_ratcm_sniffer_stop_req_struct;
+
+
+/*Check Active RAT Cnf*/
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat; /*For RATCM only*/
+    kal_bool is_active_rat;
+}nas_sv_any_check_active_rat_cnf_struct;
+
+typedef nas_sv_any_check_active_rat_cnf_struct nas_sv_ratcm_check_active_rat_cnf_struct;
+
+/*Set Active RAT Cnf*/
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat; /*For RATCM only*/
+    kal_bool is_success;
+}nas_sv_any_set_active_rat_cnf_struct;
+
+typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_ratcm_set_active_rat_cnf_struct;
+typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_emm_set_active_rat_cnf_struct;
+typedef nas_sv_any_set_active_rat_cnf_struct nas_sv_vgmm_set_active_rat_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    // sniff RPLMN
+    // only valid when the conditions hold
+    // plmn_search_status  == PLMN_SEARCH_UNRELATED
+    // mm_proc_status == (MS_IN_NO_SERVICE || MS_IN_LIMITED_SERVICE)
+    as_sniffer_req_service_enum sniffer_service_type;
+    as_sniffer_plmn_list_operate_type_enum plmn_list_operate_type;
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SNIFFER_PLMN];
+
+}nwsel_nas_sv_sniffer_start_req_struct;
+
+typedef nwsel_nas_sv_sniffer_start_req_struct nas_sv_ratcm_sniffer_start_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat; /*stop rat*/
+}nwsel_nas_sv_sniffer_stop_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum  rat;
+    kal_uint8 plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SIGNAL_APPEAR_PLMN];
+    kal_uint32 num_of_detected_band;
+    kal_uint16 detected_band_list[MAX_SEARCH_BAND_LIST_SIZE];
+}nwsel_nas_sv_signal_appear_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum  rat;
+    kal_uint32 num_of_detected_band;
+    kal_uint16 detected_band_list[MAX_SEARCH_BAND_LIST_SIZE];
+}nas_sv_ratcm_signal_appear_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nwsel_status_enum nwsel_search_status;
+} nwsel_nas_sv_display_search_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    kal_uint8 plmn_band_count;
+    plmn_band_struct plmn_band[MAX_PLMN_BAND_NUM];
+} nwsel_nas_sv_plmn_band_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool force_to_release;
+} nas_sv_mm_deactivate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_completed;
+    kal_bool is_ps_conn_releasing;
+} nas_sv_mm_deactivate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool force_to_release;
+} nas_sv_emm_deactivate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_completed;
+} nas_sv_emm_deactivate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ratcm_gas_security_mode_req_struct gas_security;
+    uas_security_context_struct uas_security[2];
+    csfb_indicator_enum csfb_indicator;
+    loopback_mode_status_enum loopback_mode_status;
+    kal_bool is_lai_valid;
+    lai_struct lai;
+    kal_bool is_srvcc;
+    kal_bool is_mapped_rai_valid;
+    rai_struct mapped_rai;
+} nas_sv_mm_nas_ctxt_transfer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_csfb_fast_return;
+} nas_sv_emm_as_param_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 kasme[KASME_NUM];
+} nas_sv_emm_nas_ctxt_transfer_cnf_struct, nas_sv_emm_as_param_update_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum connection_domain;
+    kal_bool is_gibi_tag_valid;
+    kal_uint16 gibi_tag;
+} nas_sv_mm_as_param_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    no_action_cause_enum        cause;
+    kal_uint8 trx_id;
+} nas_sv_emm_no_action_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+} nas_sv_mm_no_action_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    no_action_cause_enum        cause;
+} nwsel_nas_sv_no_action_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    enasas_add_epsbearer_list_struct add_list;
+} nas_sv_esm_as_param_update_req_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    domain_id_enum attach_type;
+    mm_cause_enum cause; /* failure cause*/
+    kal_uint8 att_id; /* Johnny: 3G RAC, for attach_req and detach_req using */
+    mm_cause_enum abnormal_lu_cause; /* MAUI_01650679 */
+    cell_info_and_rat_struct cell_info; /* registered cell info*/
+} nas_sv_mm_attach_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       att_id;
+    domain_id_enum                  attach_type;
+    cell_info_and_rat_struct        cell_info;
+    additional_update_result_enum   additional_update_result;
+    kal_bool                        is_lai_valid;
+    lai_struct                      lai;
+} nas_sv_emm_attach_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   att_id;
+    vgmm_cause_enum             cause; /* failure cause*/
+    cell_info_and_rat_struct    cell_info; /* registered cell info*/
+    kal_uint8 allowed_nssai_length; /* Number of bytes in allowed NSSAI */
+    kal_uint8 allowed_nssai[LEN_OF_ALL_ALLOWED_NSSAI]; /* Allowed NSSAI */
+} nas_sv_vgmm_attach_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                   att_id;
+    vgmm_cause_enum             cause;
+    cell_info_and_rat_struct    cell_info;
+    kal_bool                    is_reged; /* 5GMM registration status */
+    kal_bool                    is_reattach;
+    sat_loc_send_type_enum      sat_send_type;
+} nas_sv_vgmm_detach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emm_nw_feature_support_struct   eps_nw_feature;
+} nas_sv_emm_nw_feature_support_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum detach_type;
+    mm_cause_enum cause;
+    //kal_bool issearching;
+    kal_bool is_reged;
+    kal_uint8 att_id;
+    cell_info_and_rat_struct cell_info;
+    integ_protect_status_enum is_integ_protected;
+    kal_uint8 invalid_cs_sim_counter;
+    kal_uint8 invalid_ps_sim_counter;
+    sat_loc_send_type_enum sat_send_type;
+    kal_bool  is_reattach;
+} nas_sv_mm_detach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   att_id;
+    domain_id_enum              detach_type;
+    emm_cause_enum              emm_cause;
+    emm_cause_source_enum       emm_cause_source;
+    esm_cause_enum              esm_cause;
+    kal_bool                    is_reged;
+    cell_info_and_rat_struct    cell_info;
+    kal_bool                    is_reattach;
+    sat_loc_send_type_enum      sat_send_type;
+    dos_enhance_info_struct     dos_enhance_info;
+	kal_bool                    is_auth_reject_during_attach;
+} nas_sv_emm_detach_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    umts_duplex_mode_type source_umts_duplex_mode;
+    umts_duplex_mode_type target_umts_duplex_mode;
+    lte_duplex_mode_type source_lte_duplex_mode;
+    lte_duplex_mode_type target_lte_duplex_mode;
+    mode_switch_cause_enum  cause;
+} nas_sv_any_duplex_mode_change_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+} nas_sv_any_duplex_mode_change_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rfoff_cause_enum rfoff_cause;
+} nas_sv_any_rfoff_req_struct;
+
+typedef nas_sv_any_rfoff_req_struct nas_sv_pam_rfoff_ntf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} nas_sv_ratcm_cell_change_finish_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 multi_plmn_count;
+    plmn_id_struct multi_plmn_id[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum multi_plmn_cell_type[MAX_NUM_MULTI_PLMN];
+    /* Only for LTE */
+    kal_uint8 multi_ta_code[MAX_NUM_MULTI_PLMN][2]; // 36.331 R14 CR2912 EUTRAN sharing enhancement
+    rat_enum rat;
+    ue_capability_struct acting_capability;
+    kal_bool is_nw_endc_disabled;
+    nas_sv_capability_update_procedure_type_enum query_proc;
+    domain_id_enum capability_query_attach_type;
+    mm_user_search_type_enum capability_query_search_type;    
+} nwsel_nas_sv_capability_query_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ue_capability_struct capability;
+    kal_bool is_nw_endc_disabled;
+    kal_bool will_trigger_search;   // if nwsel trigger search, can update by next sys_info.
+    nas_sv_local_release_cause_enum local_rel_cause;
+} nwsel_nas_sv_capability_query_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ue_capability_struct capability;
+    kal_bool is_nw_endc_disabled;
+    nas_sv_local_release_cause_enum local_rel_cause;
+} nwsel_nas_sv_capability_update_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    nas_sv_capability_rat_enum target_rat;
+    ue_capability_struct capability;
+} nas_sv_ratcm_cap_update_req_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    nas_sv_capability_rat_enum target_rat;
+    kal_bool is_successful; /* Indicates whether enabling or disabling capability is successful. */
+} nas_sv_ratcm_cap_update_cnf_struct;
+
+typedef struct {
+    kal_uint32 begin;
+    kal_uint32 end;
+} nas_freq_range_struct;
+
+typedef struct {
+    nas_freq_range_struct freq_range;
+    kal_int16 rssi;
+    kal_uint16 band;
+} nas_ps_result_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum power_scan_rat; // could be multi-rat
+    kal_uint32 nr_num_of_band;
+    kal_uint16 nr_band_list[MAX_SEARCH_BAND_LIST_SIZE];
+    kal_uint32 lte_num_of_band;
+    kal_uint16 lte_band_list[MAX_SEARCH_BAND_LIST_SIZE];
+} nwsel_nas_sv_power_scan_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 power_scan_result_list_num;
+    nas_ps_result_struct power_scan_result_list[NAS_MAX_PS_RESULT_LIST];
+} nwsel_nas_sv_power_scan_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 power_scan_result_list_num;
+    nas_ps_result_struct power_scan_result_list[NAS_MAX_PS_RESULT_LIST];
+} nwsel_nas_sv_power_scan_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ps_cause_enum               cause;
+} nas_sv_esm_eps_attach_needed_rej_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    plmn_id_struct current_plmn_id;
+
+} nas_sv_esm_eps_attach_needed_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        force_emc_attach;
+} nas_sv_esm_emc_attach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    srvcc_status_enum       status;
+} nas_sv_any_srvcc_status_update_ind_struct;
+
+typedef struct
+{
+    kal_bool forbidden_plmn_update_not_allowed; /*MM may change NW reject cause, and no need to add forbidden PLMN */
+    kal_bool is_back_to_abnormal_la;
+    kal_bool is_rau_performed;
+    mm_check_ecall_status_enum ecall_status;
+    kal_bool is_mobility_rau; /*To check whether update_type is periodic rau or mobility rau */
+    integ_protect_status_enum  is_integ_protected;
+    kal_uint8                  invalid_cs_sim_counter;
+    kal_uint8                  invalid_ps_sim_counter;
+
+    /* todo remove, NWSEL shall not know those status*/
+    kal_bool stored_lai_valid;
+    kal_bool stored_rai_valid;
+    gsm_state_enum gsm_attach_state;
+    gprs_state_enum gprs_attach_state;
+    gsm_update_status_enum gsm_update_status;
+    gprs_update_status_enum gprs_update_status;
+
+    /* todo use seperate interface to update */
+    plmn_id_struct rplmn; //from stored lai. Valid when LR_ACCEPT & LR_ACCEPT_PS_ONLY
+   kal_bool is_update_eq_plmn_needed; /* always check; indicate if NWSEL need to update EPLMN */
+    kal_uint8 eq_plmn_byte_count;
+    kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3]; /* the EPLMN list from NW; 3 is NWSEL_PLMN_LEN */
+
+}mm_rat_specific_param_container_struct;
+
+#include "nwsel_eval_enums.h"
+
+typedef struct
+{
+    kal_bool                        stored_lai_valid;
+    kal_bool                        stored_guti_valid;
+    gsm_state_enum                  gsm_attach_state;
+    eps_state_enum                  lte_attach_state;
+    gsm_update_status_enum          gsm_update_status;
+    eps_update_status_enum          lte_update_status;
+#ifdef __NG_ECALL_SUPPORT__
+    mm_check_ecall_status_enum      ecall_status;
+#endif /* __NG_ECALL_SUPPORT__ */
+} update_param_struct;
+
+typedef struct
+{
+    esm_cause_enum                esm_cause;
+    mm_cause_enum               airlr_cause; // If above lr_cause is replaced, EMM will bring real 'air cause' by this parameter. If it is none, just use lr_cause.
+    kal_bool                    is_esm_attempt_max_times;
+    additional_update_result_enum    additional_update_result;
+    eps_attach_update_result_enum    eps_attach_update_result;
+    kal_bool                        is_ims_vops_support;
+    lte_duplex_type_enum        lte_type;
+    //CR1917: REL12 feature, use REL11 temporarily
+    /* is_eutran_not_allowed should be checked only when Reject#15. Disable E-UTRAN if #15 and this field is True. */
+    kal_bool                    is_eutran_not_allowed;
+    kal_bool                    is_ps_reattach;
+    kal_bool                    is_service_request_max_times;
+    kal_bool                    is_t3402_valid;
+    kal_uint16                    t3402;
+    kal_bool                    is_rach_fail_max_times;
+    integ_protect_status_enum    is_integ_protected;
+    kal_uint8                    invalid_cs_sim_counter;
+    kal_uint8                    invalid_ps_sim_counter;
+    /* use to identify the TA is change or not when TAU/Combined TAU */
+    kal_bool                    is_mobility_tau;
+    kal_bool                    is_persistent_EPS_bearer_exist;
+    kal_bool                    is_emc_bs_support;
+    restrict_dcnr_enum          restrict_dcnr_ind;
+    kal_bool                    is_tau_before_search;
+    update_param_struct         update_param;    
+    /* [TMO] notify NAS_SV not to Disable S1 under real network   */
+    kal_bool                    is_t3402_not_start;
+}emm_rat_specific_param_container_struct;
+
+typedef struct
+{
+    mm_cause_enum                   airlr_cause;
+    vg_ims_3gpp_ind_enum            ims_vops_supported_indicator;
+    vg_emergency_service_ind_enum   emc_supported_indicator;
+    vg_emergency_fallback_ind_enum  emc_fallback_supported_indicator;
+    vgmm_5g_update_status_enum      vg_update_status;
+}vgmm_rat_specific_param_container_struct;
+
+typedef union
+{
+    mm_rat_specific_param_container_struct mm;
+    emm_rat_specific_param_container_struct emm;
+    vgmm_rat_specific_param_container_struct vgmm;
+} nas_rat_specific_param_container_union;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    nas_proc_enum               nas_proc;
+    lr_result_enum              lr_result;
+    mm_cause_enum               lr_cause;    // This value may be replaced by customized cause.
+    kal_uint8                   attempt_counter;
+    nas_rat_specific_param_container_union nas_specific_container;
+} nas_sv_any_regn_result_ind_struct;
+
+typedef nas_sv_any_regn_result_ind_struct nwsel_nas_sv_regn_result_ind_struct;
+
+typedef nwsel_nas_sv_plmn_band_ind_struct nas_sv_ratcm_plmn_band_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    plmn_search_status_enum plmn_search_status;
+    plmn_search_type_enum plmn_search_type; /* new plmn search type */
+} nwsel_nas_sv_nrrc_regn_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool    normal_oos_recovery_round_present;
+    kal_uint8   normal_oos_recovery_round;  // default value = 5
+    kal_bool    inactive_fullband_period_present;
+    kal_uint16  inactive_fullband_period;   // default = 200s
+    kal_bool    inactive_sniffer_period_present;    
+    kal_uint8   inactive_sniffer_period;    // default = 30s
+    kal_bool    is_inactive_mode_present;
+    kal_bool    is_inactive_mode;           // True: enter inactive mode, False: leave inactive mode
+} nwsel_nas_sv_nrrc_inactive_mode_configuration_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_over_inactive_mode_threshold;
+} nwsel_nas_sv_nrrc_service_recovery_round_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    regn_proc_status_enum mm_proc_status;
+}nwsel_nas_sv_vgmm_regn_status_update_req_struct;
+
+
+/* NRRC related NAS interface */
+
+/* shall sync nas_sv_nrrc_plmn_loss_ind_struct */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_as_plmn_list_present;
+    as_plmn_list_struct as_plmn_list;
+} nwsel_nas_sv_nr_plmn_loss_ind_struct;
+
+/* common */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   multi_plmn_count;
+    plmn_id_struct              multi_plmn_id[MAX_NUM_MULTI_PLMN];
+    as_cell_type_enum           multi_cell_type[MAX_NUM_MULTI_PLMN];
+    /// source from cell reselection or search
+    found_ind_source_enum source;
+    rat_enum rat;
+    cell_id_union cell_id;
+} nas_sv_any_plmn_found_ind_struct;
+
+typedef nas_sv_any_plmn_found_ind_struct nwsel_nas_sv_plmn_found_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum anchor_rat;
+    plmn_search_status_enum plmn_search_status;
+    as_cell_type_enum cell_type;
+    plmn_search_type_enum       plmn_search_type; /* Only for EMM/PLMNSEL to know if needed to check Forbidden TA list */
+} nas_sv_any_search_status_update_req_struct;
+
+typedef nas_sv_any_search_status_update_req_struct nwsel_nas_sv_search_status_update_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum disable_rat;
+} nas_sv_any_rat_disable_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_user_plmn_list_ongoing;
+} nas_sv_any_plmn_list_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MD1_MAX_NUM_HPLMN];
+    kal_uint8                   home_country_mcc[3];
+} nas_sv_any_hplmn_info_update_req_struct;
+
+typedef nas_sv_any_hplmn_info_update_req_struct nwsel_nas_sv_hplmn_info_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    update_eplmn_struct         eplmn_info;
+} nas_sv_any_eplmn_update_ind_struct;
+
+typedef nas_sv_any_eplmn_update_ind_struct nwsel_nas_sv_eplmn_update_ind_struct;
+
+/* eval refactor */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    update_param_struct         update_param;
+} nas_sv_emm_update_param_ind_struct;
+
+typedef nas_sv_emm_update_param_ind_struct nwsel_nas_sv_emm_update_param_ind_struct;
+
+/***** message structure definition *****/
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_plmn_search_2G3G_ongoing;
+    as_cell_type_enum           cell_type;               // 2G/3G camped on cell type
+    plmn_search_type_enum       plmn_search_type; /* Only for EMM/PLMNSEL to know if needed to check Forbidden TA list */
+
+} nas_sv_emm_search_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    prefer_ims_emergency;
+} nas_sv_emm_search_preference_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    regn_proc_status_enum       mm_proc_status;         // indicate if MS is in limited or no service
+    plmn_search_status_enum     plmn_search_status;
+    plmn_search_type_enum       plmn_search_type;
+    // sniff RPLMN
+    // only valid when the conditions hold
+    // plmn_search_status  == PLMN_SEARCH_UNRELATED
+    // mm_proc_status == (MS_IN_NO_SERVICE || MS_IN_LIMITED_SERVICE)
+    kal_uint8                   plmn_id_count;
+    plmn_id_struct              plmn_id[MAX_NUM_SEARCH_PLMN];
+    kal_bool                    is_send_to_as;
+    kal_bool                    other_rat_found_notify_4G;
+} nas_sv_emm_regn_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    domain_id_enum  conn_domain;
+    kal_bool        is_waiting_cell; //RRC connection release, no cell case, need to wiat ERRC to report a new cell
+} nas_sv_emm_out_of_service_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    as_plmn_list_struct         eas_plmn_list;
+    kal_bool                    full_band_searched_4g;
+    plmn_loss_reason_enum       plmn_loss_reason;
+} nas_sv_emm_plmn_loss_ind_struct;
+
+//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   emc_fplmn_count;
+    plmn_id_struct              emc_fplmn_list[MAX_NUM_EMC_FPLMN];
+    // band 0 => all band disabled, bar this PLMN
+    kal_uint16                  emc_fplmn_band[MAX_NUM_EMC_FPLMN];
+} nas_sv_emm_emc_fplmn_list_update_req_struct;
+//#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    voice_domain_preference_enum    eutran_voice_domain_preference;
+    ue_mode_enum                    ue_mode;
+    kal_bool                        sms_only;
+    voice_domain_preference_enum    utran_voice_domain_preference;
+} nas_sv_emm_uemode_param_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16           t3402_value;   // t3402 value in seconds
+} nas_sv_emm_t3402_change_ind_struct;  // __REL10__: t3402
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    plmn_id_struct current_plmn_id;
+    timer_status_enum status;
+} rac_nas_sv_t3402_stop_ind_struct;
+
+typedef rac_nas_sv_t3402_stop_ind_struct nas_sv_emm_t3402_stop_ind_struct;
+
+//#if defined( __VOLTE_SUPPORT__) || defined (UNIT_TEST)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool        prefer_ims_emergency;
+} nas_sv_emm_plmn_search_preference_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    emc_status_enum         emc_status;
+    emc_pdn_status_enum     emc_pdn_status;
+} nas_sv_emm_emergency_status_update_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    kal_uint32 num_of_band;
+    kal_uint16 band_list[MAX_SEARCH_BAND_LIST_SIZE];
+} nwsel_nas_sv_background_band_learning_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} nwsel_nas_sv_background_band_learning_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} nwsel_nas_sv_background_band_learning_stop_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} nwsel_nas_sv_background_band_learning_stop_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR    
+    kal_uint8 local_rel_cause;
+} nas_sv_check_cap_update_ind_struct;
+
+//#endif // __VOLTE_SUPPORT__
+#if defined(__LTE_RAT__) && (defined(__GSM_RAT__) || defined(__UMTS_RAT__))
+
+typedef errc_sim_protect_req_struct nas_sv_emm_power_on_protection_req_struct;
+
+#endif
+
+#ifdef __FIVEG_NAS__
+
+typedef struct
+{
+    /* VGMM Definitions */
+    vgmm_bcast_regn_update_enum  vgmm_regn_update_type;
+    
+    kal_bool                    vgmm_msg_type_present;
+    vgmm_msg_type_enum          vgmm_msg_type;
+
+    kal_bool                    vgmm_reg_type_present;
+    vgmm_reg_type_enum          vgmm_reg_type;
+    
+    kal_bool                    vgmm_detach_type_present;
+    vgmm_detach_type_enum       vgmm_detach_type;
+
+    kal_bool                    vgmm_cause_present;
+    vgmm_cause_enum             vgmm_cause;
+
+    kal_bool                    vgmm_attempt_cnt_present;
+    kal_uint8                   vgmm_attempt_cnt;
+
+    kal_bool                    vgmm_ims_voice_over_ps_ind_present;    
+    ims_ind_enum                vgmm_ims_voice_over_ps_ind;
+    /* End of VGMM Definitions */
+}nas_sv_vgmm_broadcast_regn_result_struct;
+#endif //__FIVEG_NAS__
+
+typedef struct
+{
+    /* EMM Definitions */    
+    emm_msg_type_enum           emm_msg_type;
+
+    kal_bool                    emm_cause_present;
+    emm_cause_enum              emm_cause;
+
+    /* Whether the UE is registered or not according to state  and current executing procedure in EMM view 
+         used for EMM/VGMM un-sync state checking for any_xmm_broadcast_regn_result handling */
+    emm_bcast_regn_update_enum  emm_regn_update_type;
+    /* End of EMM Definitions */
+}nas_sv_emm_broadcast_regn_result_struct;
+
+typedef struct
+{
+    /* MM Definitions */    
+    mm_msg_type_enum            mm_msg_type;
+
+    kal_bool                    is_mm_rej_cause_present;
+    mm_cause_enum               mm_rej_cause;
+	
+    kal_bool                    is_mm_attempt_cnt_present;
+    kal_uint8                   mm_attempt_cnt;
+    /* End of MM Definitions */
+}nas_sv_mm_broadcast_regn_result_struct;
+
+typedef struct
+{
+    /* GMM Definitions */    
+    gmm_msg_type_enum           gmm_msg_type;
+	
+    kal_bool                    is_gmm_proc_direction_present;
+    gmm_proc_direction_enum     gmm_proc_direction;
+	
+    kal_bool                    is_gmm_attach_type_present;
+    gmm_attach_type_enum        gmm_attach_type;
+	
+    kal_bool                    is_gmm_update_type_present;
+    gmm_update_type_enum        gmm_update_type;
+	
+    kal_bool                    is_gmm_detach_type_present;
+    gmm_detach_type_enum        gmm_detach_type; 
+	
+    kal_bool                    is_gmm_attach_result_present;
+    gmm_attach_result_enum      gmm_attach_result;
+
+	kal_bool                    is_gmm_update_result_present;
+    gmm_update_result_enum      gmm_update_result;
+	
+    kal_bool                    is_gmm_cause_present;
+    mm_cause_enum               gmm_cause;
+		
+    kal_bool                    is_gmm_attempt_cnt_present;
+    kal_uint8                   gmm_attempt_cnt;
+    /* End of GMM Definitions */
+}nas_sv_gmm_broadcast_regn_result_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    /* XMM Common Definitions */
+    rat_type_enum source_rat;
+    integ_protect_status_enum   is_integ_protected;
+    domain_id_enum cn_domain;
+    /* End of XMM Common Definitions */
+
+    union
+    {
+    #ifdef __FIVEG_NAS__
+        /* VGMM Definitions */
+        nas_sv_vgmm_broadcast_regn_result_struct    vgmm_info;
+    #endif //__FIVEG_NAS__
+
+        /* EMM Definitions */
+        nas_sv_emm_broadcast_regn_result_struct     emm_info;
+
+	/* MM Definitions */
+        nas_sv_mm_broadcast_regn_result_struct      mm_info;
+
+	/* GMM Definitions */
+        nas_sv_gmm_broadcast_regn_result_struct     gmm_info;
+    }info;
+    
+} nas_sv_xmm_broadcast_regn_result_struct;
+
+typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_vgmm_broadcast_regn_result_ind_struct;
+typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_emm_broadcast_regn_result_ind_struct;
+typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_mm_broadcast_regn_result_ind_struct;
+typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_any_broadcast_regn_result_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+
+    xmm_common_timer_id_enum xmm_common_timer_id;
+    kal_bool status;                                /**< KAL_FALSE:Stop, KAL_TRUE:start*/
+    plmn_id_struct backoff_timer_plmn;
+    kal_bool is_backoff_timer_plmn_in_eq_plmn_list;
+
+#ifdef __SUPPORT_CLIB_TIME__                        /**< Target & MoDIS */
+    kal_int64 expire_time;                          /**< unit is seconds */
+#else                                               /**< UESIM */
+    kal_uint16 remaining_time;                      /**< unit is seconds */
+#endif
+} nas_sv_xmm_broadcast_timer_status_struct;
+
+typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_vgmm_broadcast_timer_status_ind_struct;
+typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_emm_broadcast_timer_status_ind_struct;
+typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_mm_broadcast_timer_status_ind_struct;
+typedef nas_sv_xmm_broadcast_timer_status_struct nas_sv_any_broadcast_timer_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    /* XMM Common Definitions */
+    rat_type_enum source_rat;
+
+} nas_sv_xmm_broadcast_detach_required_struct;
+
+typedef nas_sv_xmm_broadcast_detach_required_struct nas_sv_emm_broadcast_detach_required_ind_struct;
+typedef nas_sv_xmm_broadcast_detach_required_struct nas_sv_any_broadcast_detach_required_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_allow;
+} nas_sv_any_operation_allow_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_sv_any_operation_enum operation_to_be_allowed;
+} nas_sv_any_operation_allow_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_sv_manipulate_connection_enum operation_to_be_exe;
+    kal_bool is_local_release_later;
+} nas_sv_any_manipulate_connection_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_triggered_by_sys_info;
+    ue_capability_struct capability;
+} nas_sv_any_mm_cap_update_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    vg_option_enum vg_option_bitmap; 
+    kal_bool is_need_local_release;
+    kal_bool is_trigger_nr_search; //used for option 2 is turned on and search SA
+} rac_nas_sv_vg_option_update_req_struct;
+
+typedef rac_nas_sv_vg_option_update_req_struct nas_sv_any_vg_option_update_req_struct;
+
+typedef l4c_general_modem_configure_set_req_struct nas_sv_any_general_modem_configure_set_req_struct;
+typedef l4c_general_modem_configure_set_cnf_struct nas_sv_any_general_modem_configure_set_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mode_switch_cause_enum  cause;
+} nwsel_nas_sv_vgmm_global_mode_change_start_req_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    kal_bool is_persistent_pdu_session_exist;
+} nas_sv_vgsm_persistent_pdu_session_ind_struct;
+
+typedef nas_sv_vgsm_persistent_pdu_session_ind_struct nwsel_nas_sv_vgsm_persistent_pdu_session_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_roaming;
+    nwsel_capability_disabled_reason_enum disabled_reason;
+} nwsel_nas_sv_disable_info_update_ntf_struct;
+
+typedef nwsel_nas_sv_disable_info_update_ntf_struct nas_sv_any_disable_info_update_ntf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_searching;
+} nwsel_nas_sv_as_plmn_search_report_ind_struct;
+
+#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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/pam2tcm_struct.h b/mcu/protocol/interface/l4/pam2tcm_struct.h
new file mode 100644
index 0000000..fda8053
--- /dev/null
+++ b/mcu/protocol/interface/l4/pam2tcm_struct.h
@@ -0,0 +1,235 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * PAM2TCM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _PAM2TCM_STRUCT_H
+#define _PAM2TCM_STRUCT_H
+
+/* struct */
+#include "kal_public_defs.h"
+#include "l3_inc_local.h"
+
+/* enum */
+#include "l3_inc_enums.h"
+
+
+#define MAX_VZW_APNNI_LEN           MAX_APN_LEN
+#define MAX_NUM_OF_VZW_APN_TABLE    20
+
+#define MAX_VZW_APN_PDP_TYPE_LEN    10
+#define MAX_VZW_APN_BEARER_LEN      10
+#define MAX_VZW_APN_IS_ENABLED_LEN  15
+
+typedef struct usm_bearer_info_struct {
+    bcm_enum    bcm_info;
+    etft_enum   etft_info;
+} usm_bearer_info_struct ;
+
+typedef struct {
+    LOCAL_PARA_HDR 
+} tcm_pam_start_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8               nsapi;
+    usm_bearer_info_struct  bearer_info;
+} tcm_usm_context_update_ind_struct;
+
+typedef struct 
+{
+	kal_uint8       wapn;
+	kal_uint8       apn_class;
+	kal_uint32      apnni_len;
+	kal_uint8       apnni[MAX_VZW_APNNI_LEN];
+    pdus_s_nssai_struct s_nssai; /* only valid when rat == RAT_NR */
+	pdp_addr_type_enum 	pdp_type;	
+	rat_enum        rat;	/* This field shall be RAT_NR  when upper layer wants to configure s_nssai  ; and when upper layer sets 4G Entry, shall be filled as RAT_LTE */
+	kal_bool        is_enable;
+	kal_uint32      apn_timer_value_in_minute;
+} vzw_apn_table_struct;
+
+typedef struct
+{
+  kal_uint8          wapn;
+  kal_uint32         max_conn_count;
+  kal_uint32         max_conn_timer_value_in_sec; //seconds
+  kal_uint32         wait_time_value_in_sec;      //seconds
+  kal_uint32         throttle_time_value_in_sec;
+} vzw_params_struct;
+
+typedef struct 
+{
+	LOCAL_PARA_HDR
+    kal_bool        clear_all_vzw_apn_table;
+	vzw_apn_table_struct apn_info;
+} tcm_pam_set_vzw_apn_table_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8      result;
+	ps_cause_enum  error_cause; 
+} tcm_pam_set_vzw_apn_table_cnf_struct;
+
+typedef struct 
+{
+	LOCAL_PARA_HDR
+} tcm_pam_get_vzw_apn_table_req_struct;
+
+typedef struct 
+{
+	LOCAL_PARA_HDR
+	kal_uint8             num_of_apn_info;
+	vzw_apn_table_struct  apn_info[MAX_NUM_OF_VZW_APN_TABLE];
+} tcm_pam_get_vzw_apn_table_cnf_struct;
+
+typedef struct 
+{
+	LOCAL_PARA_HDR
+	vzw_params_struct  params;
+} tcm_pam_set_vzw_params_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8      result;
+	ps_cause_enum  error_cause; 
+} tcm_pam_set_vzw_params_cnf_struct;
+
+typedef struct 
+{
+	LOCAL_PARA_HDR
+} tcm_pam_get_vzw_params_req_struct;
+
+typedef struct 
+{
+	LOCAL_PARA_HDR
+	kal_uint8          num_of_params;
+	vzw_params_struct  params[MAX_NUM_OF_VZW_APN_TABLE];
+} tcm_pam_get_vzw_params_cnf_struct;
+
+#define PAM_BLOCKING_TIMER_LENGTH_NOT_BLOCKING     0
+#define PAM_BLOCKING_TIMER_LENGTH_BLOCKING_FOREVER 0xFFFFFFFF
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8  apnni_len;
+	kal_uint8  apnni[MAX_VZW_APNNI_LEN];
+
+} tcm_pam_get_apn_blocking_timer_length_req_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8  apnni_len;
+	kal_uint8  apnni[MAX_VZW_APNNI_LEN];
+	// 0: not blocking, 0xFFFFFFFF: blocking forever
+	kal_uint32 timer_value_in_second; //seconds
+} tcm_pam_get_apn_blocking_timer_length_cnf_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	kal_uint8  apnni_len;
+	kal_uint8  apnni[MAX_VZW_APNNI_LEN];
+} tcm_pam_cancel_apn_blocking_timer_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    pam_event_notify_enum event;
+} tcm_pam_event_notify_req_struct;
+
+typedef ladn_info_update_ind_struct tcm_pam_ladn_info_update_ind_struct;
+
+#endif /* _PAM2TCM_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/ps2sat.h b/mcu/protocol/interface/l4/ps2sat.h
new file mode 100644
index 0000000..30a3141
--- /dev/null
+++ b/mcu/protocol/interface/l4/ps2sat.h
@@ -0,0 +1,109 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	ps2Sat.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _PS2SAT_H_
+#define _PS2SAT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef TEST_TOOL
+#include "tt_defs.h"
+#else
+#include "kal_public_api.h"
+#endif
+
+
+
+#include "ps2sat_struct.h"
+#include "ps2sat_pun.h"
+
+#ifdef TOOL
+#include "set_ps2sat.h"
+#include "get_ps2sat.h"
+#endif
+#ifdef __cplusplus
+}
+
+#endif
+
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/ps2sat_peer.h b/mcu/protocol/interface/l4/ps2sat_peer.h
new file mode 100644
index 0000000..83b9832
--- /dev/null
+++ b/mcu/protocol/interface/l4/ps2sat_peer.h
@@ -0,0 +1,110 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	ps2Sat.h
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _PS2SAT_H_
+#define _PS2SAT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef TEST_TOOL
+#include "tt_defs.h"
+#else
+#include "kal_public_api.h"
+#endif
+
+
+
+#include "ps2sat_peer_struct.h"
+#include "ps2sat_peer_pun.h"
+
+
+#ifdef TOOL
+#include "set_ps2sat_peer.h"
+#include "get_ps2sat_peer.h"
+#endif
+#ifdef __cplusplus
+}
+
+#endif
+
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/psdm2l4c_enum.h b/mcu/protocol/interface/l4/psdm2l4c_enum.h
new file mode 100644
index 0000000..3ce8e30
--- /dev/null
+++ b/mcu/protocol/interface/l4/psdm2l4c_enum.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   psdm2l4c_enum.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   PSDM<->L4C related enums
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef PSDM_NWSEL_ENUM_H
+#define PSDM_NWSEL_ENUM_H
+
+#endif /* PSDM2L4C_ENUM_H */
+
diff --git a/mcu/protocol/interface/l4/psdm2l4c_struct.h b/mcu/protocol/interface/l4/psdm2l4c_struct.h
new file mode 100644
index 0000000..7a59932
--- /dev/null
+++ b/mcu/protocol/interface/l4/psdm2l4c_struct.h
@@ -0,0 +1,134 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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).
+*
+*****************************************************************************/
+ /*******************************************************************************
+ *  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) 2001
+ *
+ *******************************************************************************/
+
+ /*******************************************************************************
+ * Filename:
+ * ---------
+ *   psdm2l4c_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   PSDM<->L4C related structures 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef PSDM2L4C_STRUCT_H
+#define PSDM2L4C_STRUCT_H
+
+
+#endif /* PSDM2L4C_STRUCT_H */
+
diff --git a/mcu/protocol/interface/l4/rac2l4c_struct.h b/mcu/protocol/interface/l4/rac2l4c_struct.h
new file mode 100644
index 0000000..91846be
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac2l4c_struct.h
@@ -0,0 +1,896 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	rac2l4c_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition between RAC and L4C.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : rac2l4c_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef _RAC2L4C_STRUCT_H
+#define _RAC2L4C_STRUCT_H
+
+//#include "kal_non_specific_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_local.h"
+#include "kal_general_types.h"
+#include "l4c_common_enum.h"
+#include "l4crac_enums.h"
+#include "l3_inc_enums.h"
+#include "ps_public_struct.h"
+#include "gmss_public.h"
+#include "rac_gmss_struct.h"
+#include "l4c2rac_struct.h"
+#include "c2k_irat_msg_struct.h"
+#include "rac_nas_sv_struct.h"
+#include "rac_vgmm_struct.h"
+#include "global_type.h"
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+#include "l5_l4c_enums.h"
+#endif
+
+typedef struct {
+    plmn_id_struct plmn_id;
+    kal_uint8 status;
+} plmn_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    l4c_rac_response_enum response; /* OK*/
+} l4crac_act_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    plmn_selection_mode_enum plmn_sel_mode; /* AUTO/MANUAL*/
+    l4c_rac_response_enum gsm_status; /* OK/No Cell/Limited service*/
+    l4c_rac_gprs_status_enum gprs_status; /* l4c_rac_gprs_status_enum */
+//    kal_uint8 acq_service; /* acquired service: CS/PS/CS_PS*/
+    cell_info_and_rat_struct cell_info;
+    /* MAUI_01650679, __NW_REGISTRATION_CAUSE__ */
+    mm_cause_enum cause; /* registration result */
+} l4crac_reg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    l4c_rac_gprs_status_enum gprs_status; /* l4c_rac_gprs_status_enum */
+    data_speed_support_enum cell_data_speed_support;
+} l4crac_ps_reg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    //kal_uint8 service; /* CS/PS/CS_PS*/
+    //kal_uint8 status; /* l4c_rac_dereg_cnf_status_enum */
+    data_speed_support_enum cell_data_speed_support;
+} l4crac_dereg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    l4c_rac_response_enum response; /* OK or ERROR */
+    mm_cause_enum cause;
+    kal_uint8 num_of_hplmn;
+    rac_plmn_list_struct plmn_list;
+    data_speed_support_enum cell_data_speed_support;
+    user_list_type_enum user_list_type;
+} l4crac_plmn_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rac_plmn_list_struct plmn_list;
+    list_ind_source_enum source;
+} l4crac_plmn_list_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    reg_state_ind_struct reg_state_ind;
+} l4crac_reg_state_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum domain; /* domain_id_enum */
+    mm_cause_enum cause; /* mm_cause_enum */
+} l4crac_reg_cause_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 scell_number_ul;
+    kal_uint8 scell_number_dl;
+    data_speed_support_enum cell_data_speed_support;
+} l4crac_ps_bearer_info_ind_struct;
+
+#if 0 //rx_level, mtk02285, remove old interface
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif /* 0 */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool full_nw_nameP;
+    kal_uint8 full_nw_name_len;
+    kal_uint8 full_nw_name[MAX_NW_NAME_LENGTH];
+    kal_bool short_nw_nameP;
+    kal_uint8 short_nw_name_len;
+    kal_uint8 short_nw_name[MAX_NW_NAME_LENGTH];
+    kal_bool nw_time_zoneP;
+    kal_uint8 nw_time_zone;
+    kal_bool nw_time_zone_timeP;
+    nw_time_zone_time_struct nw_time_zone_time;
+    kal_bool lsa_idP;
+    kal_uint8 lsa_id_len;
+    kal_uint8 lsa_id[3];
+    kal_bool nw_day_light_saving_timeP;
+    kal_uint8 nw_day_light_saving_time;
+    /* MAUI_01664028, mtk02118: added for MMI to exactly know which PLMN the NITZ comes from */
+    plmn_id_struct plmn_id;
+    kal_uint8 domain;  /* 0: CS domain, 1: PS domain */
+} l4crac_nw_info_ind_struct;   /* Struct shall be the same as gmmreg_nw_info_ind_struct. */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    l4c_rac_response_enum gsm_status; /* OK/No Cell/Limited service*/
+    l4c_rac_gprs_status_enum gprs_status; /* l4c_rac_gprs_status_enum */
+} l4crac_class_change_cnf_struct;
+
+#if 0 // MOLY00083802 remove band related codes in RAC
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_gsm_conn_exist;
+    gmmreg_cipher_ind_enum gsm_cipher_cond;
+    gmmreg_cipher_ind_enum gprs_cipher_cond;
+} l4crac_cipher_ind_struct; /* Must same as gmmreg_cipher_ind_struct */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    cell_info_and_rat_struct cell_info;
+    l4c_rac_response_enum gsm_status; /* l4c_rac_response_enum */
+} l4crac_hz_cell_info_update_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_dedicated_mode;
+} l4crac_hz_dedicated_mode_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_pkt_transfer_mode;
+} l4crac_hz_pkt_transfer_mode_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mmi_event_enum event_id;  //mmi_event_enum
+} l4crac_ps_event_report_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4crac_set_roaming_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    l4c_rac_response_enum gsm_status; /* l4c_rac_response_enum */
+    l4c_rac_gprs_status_enum gprs_status; /* l4c_rac_gprs_status_enum */
+    mm_cause_enum cause;
+    cell_info_and_rat_struct cell_info;
+    data_speed_support_enum cell_data_speed_support;
+} l4crac_plmn_search_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+    mm_cause_enum cause;
+} l4crac_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4crac_plmn_list_stop_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4crac_set_prefer_rat_cnf_struct;
+
+
+//#ifdef __GEMINI__
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_rac_mmrr_service_status_enum service_status;
+} l4crac_mmrr_service_status_ind_struct; //GEMINI, 20080217
+//#endif
+
+//#ifdef __REL5__
+typedef struct {
+	kal_uint8          category;
+	l4_addr_bcd_struct	tel_number;
+} rac_ecc_number_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 no_ecc; //number of ECC list
+    rac_ecc_number_struct ecc_list[MAX_NW_ECC_NUM]; //ECC list
+} l4crac_nw_ecc_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  is_ecc_changed;
+    kal_uint8 no_ecc; //number of ECC list
+    rac_ecc_number_struct ecc_list[MAX_NW_ECC_NUM]; //ECC list
+    kal_bool            is_eenl_changed;          // tell L4 if eenl changed
+    plmn_id_struct      eenl_plmn;
+} l4crac_nw_ecc_eenl_ind_struct;
+
+
+//#endif
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 susp_id;
+    susp_resu_source_enum target;
+} l4crac_suspend_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    end_session_result_enum result;
+} l4crac_end_ps_data_session_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    susp_resu_result_enum result;
+    susp_resu_source_enum target;
+} l4crac_susp_resu_update_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id; /* source id*/
+    l4c_rac_response_enum response; /* OK or ERROR */
+    mm_cause_enum cause;
+    rac_csg_list_struct csg_list;
+} l4crac_csg_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4crac_csg_list_stop_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum                        active_rat;
+} l4crac_active_rat_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_set_sms_preference_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_rac_sms_preference_enum     sms_preference;
+} l4crac_update_sms_preference_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_set_voice_domain_preference_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_ims_reg_status_update_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_set_ue_usage_setting_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_set_ue_mode_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+} l4crac_set_ims_voice_availability_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+} l4crac_set_ims_sms_availability_cnf_struct;
+
+#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    voice_domain_preference_enum    eutran_voice_domain_preference;
+    ue_usage_setting_enum           ue_usage_setting;
+    ue_mode_enum                    ue_mode;
+} l4crac_uemode_param_update_ind_struct;
+#endif /* __VOLTE_SUPPORT__ */
+
+typedef struct l4crac_nw_feature_ind_struct
+{
+    LOCAL_PARA_HDR
+    rat_enum		                    active_rat;
+    union
+    {
+        vgmm_nw_feature_support_struct   nr;
+        emm_nw_feature_support_struct   eps;
+        gmm_nw_feature_support_struct   ug;
+    } nw_feature;
+} l4crac_nw_feature_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_update_is_searching;
+    kal_bool is_searching;
+
+} l4crac_plmn_status_ind_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR
+    irat_result_enum   result;
+    emm_cause_enum emm_cause;
+    esm_cause_enum esm_cause;
+    kal_bool is_attach_needed;
+}l4crac_attach_result_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nwsel_ims_service_enum          service_type;
+    kal_bool                        is_t311_expire;  /* RRC connection release due to RRC T311 timer expire */
+} l4crac_ims_service_ind_struct;
+
+#ifdef __VOLTE_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_set_mm_ims_voice_termination_cnf_struct;
+#endif /* __VOLTE_SUPPORT__ */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_disable_eutran_cnf_struct;
+
+typedef rac_gmss_rat_select_ind_struct l4crac_rat_select_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef rac_gmss_duplex_mode_change_ind_struct l4crac_duplex_mode_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum  src_id;
+    kal_bool            result;
+} l4crac_duplex_mode_change_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_mode_changed;
+    kal_bool utran_fdd;
+    kal_bool utran_tdd_lcr;
+    kal_bool eutran_fdd;
+    kal_bool eutran_tdd;
+    mode_switch_cause_enum  cause;
+}l4crac_duplex_mode_required_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+ } l4crac_clear_mru_cnf_struct;
+
+typedef struct
+{
+     LOCAL_PARA_HDR
+     l4c_source_id_enum src_id;
+     set_mru_result_enum result;
+} l4crac_set_mru_cnf_struct;
+
+typedef struct
+{
+     LOCAL_PARA_HDR
+     l4c_source_id_enum src_id;
+     set_aux_plmn_result_enum  result;
+} l4crac_set_aux_plmn_cnf_struct;
+
+typedef struct
+{
+	 LOCAL_PARA_HDR
+	 esm_cause_enum esm_cause;
+	 emm_cause_enum emm_cause;
+     mm_cause_enum  mm_cause;
+     emm_cause_source_enum emm_cause_source;
+	 reg_state_enum gsm_state; /* reg_state_enum */
+     reg_state_enum gprs_state; /* reg_state_enum */
+	 domain_id_enum domain;
+     rat_enum       rat;
+     kal_bool       is_auth_reject_during_attach;
+     integ_protect_status_enum       is_integ_protected;
+     mm_cause_enum abnormal_lu_cause;
+}l4crac_reg_combined_cause_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool enable;
+} l4crac_update_sms_over_sgs_cfg_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_bool result;
+} l4crac_set_sms_over_sgs_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum  rat;
+    kal_uint8  event_type;      // 0: successful completion of RAU procedure
+                                // 1: successful completion of TAU procedure
+}l4crac_nw_reg_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    rat_enum rat_mode; //User's setting, could be RAT_GSM or RAT_UMTS or RAT_LTE or RAT_GSM_UMTS_LTE
+    kal_bool is_pgcheck_on;
+}l4crac_set_pgcheck_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    rat_enum rat_mode; //User's setting, could be RAT_GSM or RAT_UMTS or RAT_LTE or RAT_GSM_UMTS_LTE
+    kal_bool is_pgcheck_on;
+    kal_uint8 causes;  // causes to be ignored.
+} l4crac_set_pgcheckext_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    omadm_cmd_type_enum cmd;
+    kal_bool result;                    // TRUE=>pass, FALSE=>error
+    omadm_node_type_enum node_type;     // OMADM node
+    kal_uint32 node_value;
+} l4crac_omadm_update_cnf_struct;
+
+#define VZWMRU_UPDATE_RESULT_NUM_MAX 10
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    mru_cmd_type_enum cmd;
+    kal_bool result;                                                //TRUE=>pass, FALSE=>error
+    mmss_list_type_enum list_type;                                  // RAL or MRU
+    kal_uint32 entry_num;                                           //used only when cmd=QUERY
+    vzwmru_entry_struct entries[SYS_MAX_MMSS_REC_NUM];       //used only when cmd=QUERY
+} l4crac_vzwmru_update_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4crac_set_hvolte_mode_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool   is_1x_service_available;
+} l4crac_c2k_service_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    irat_ps_type_enum   access_type;
+    kal_uint16          sid;
+    kal_uint16          nid;
+    kal_uint8           pzid;
+    kal_uint16          base_id;
+    kal_uint32          sector_id[4];
+    kal_uint8           subnet_length;
+    kal_uint8           carrier_id[7];
+} l4crac_c2k_cell_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool   is_cs_conn_start;
+} l4crac_1x_conn_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum availabel_rat;
+    kal_uint8 cause;
+    kal_uint8        trans_id;
+} l4crac_emc_service_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum new_reported_rat;
+    kal_bool is_home;
+} l4crac_reported_rat_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    custom_plmn_type_enum type;
+    kal_uint16 no_plmn_entry;
+    kal_uint8 *plmn_data;
+}l4crac_get_custom_plmn_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    prefer_rat_type_enum type;
+    rat_enum prefer_rat;
+    kal_uint32 rat_num;
+    rat_enum rat_order[MAX_SUPPORTED_RAT];
+}l4crac_get_prefer_rat_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    rat_duplex_type_enum duplex_type;
+    plmn_id_struct plmn_id;
+    kal_uint8 la_code[2];
+    kal_uint8 ta_code[3];
+    kal_uint64 cell_id; /* CELL ID*/
+} l4crac_camped_cell_info_ind_struct;
+//Korea - KT UI display (Add Cell bandwidth of LTE cell)
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 bandwidth;
+}l4crac_lte_bandwidth_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn_id;
+}l4crac_plmn_found_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RATCM_RRC_ReleaseCause rrc_rel_cause;
+}l4crac_rrc_conn_rel_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+} l4crac_ims_scm_cnf_struct;
+
+#ifdef __GEMINI__ //__REMOTE_SIM__
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+}l4crac_rsim_auth_abort_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_virtual_connected;
+}l4crac_virtual_mode_ind_struct;
+
+typedef struct {
+	LOCAL_PARA_HDR
+    rsim_auth_finish_result_enum result;
+}l4crac_auth_finish_ind_struct;
+
+#endif
+
+typedef rac_gmss_ims_call_end_status_ind_struct l4crac_ims_call_end_status_ind_struct;
+typedef rac_gmss_c2k_csfb_start_ind_struct l4crac_c2k_csfb_start_ind_struct;
+typedef rac_gmss_hvolte_mode_change_ind_struct l4crac_hvolte_mode_change_ind_struct;
+typedef rac_gmss_suspend_egreg_update_ind_struct l4crac_suspend_egreg_update_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ca_info_enum ca_info;
+    kal_uint8 scell_bmp_dl;
+    kal_uint8 scell_bmp_ul;
+	kal_uint8 pcell_bw;
+	kal_uint8 scell_bw[4];
+    kal_uint16  pcell_band;
+    kal_uint16  scell_band[4];
+    EARFCN  pcell_earfcn;
+    kal_uint16  scell_dl_band[4];
+    EARFCN  scell_dl_earfcn[4];
+} l4crac_ca_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum              src_id;
+    kal_bool                        result;
+} l4crac_reset_ota_ctxt_cnf_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    l4crac_rat_select_ind_struct last_rat_select_ind;
+} l4crac_get_last_rat_select_ind_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_proc_enum nas_proc;
+    mm_cause_enum nas_rej_cause;
+    kal_uint8 attempt_counter;
+    rat_enum rat;
+    esm_cause_enum esm_cause;
+    lr_result_enum lr_result;
+}l4crac_nw_reg_rej_ind_struct; //MOLY00293006
+
+typedef l4crac_plmn_found_ind_struct l4c_peer_plmn_found_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 n3en_indicator;   /* Non-3GPP NW emergency number indicator */
+} l4crac_non_3gpp_nw_policies_ind_struct;    /* Non-3GPP NW provided policies IE */
+
+typedef struct {
+    LOCAL_PARA_HDR
+	plmn_id_struct current_plmn_id;
+} l4crac_eps_attach_needed_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_invalid;
+    rat_enum  rat;
+    plmn_id_struct plmn_id;
+	kal_uint8     carrier_id[6];
+}l4crac_illegal_me_ind_struct;
+
+typedef rac_nas_sv_rat_change_start_ind_struct l4crac_rat_change_start_ind_struct;
+typedef rac_nas_sv_rat_change_finish_ind_struct l4crac_rat_change_finish_ind_struct;
+
+//should be the same as mm_emm_csfb_page_ind_struct
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_emm_csfb_paging_id_enum  csfb_paging_id;         //Paging identity used in CS SERVICE NOTIFICATION
+    kal_bool                    is_cli_present;         //Whether CLI (Calling Line Identification) IE exists or not
+    kal_uint8                   cli_len;                //Length of CLI
+    kal_uint8                   cli[12];                //CLI value Refer to TS 24.008 subclause 10.5.4.9  Calling party BCD number for decoding.
+    kal_bool                    is_ss_code_present;     //Whether SS code IE exists or not
+    kal_uint8                   ss_code;                //SS code value Refer to TS 29.002 subclause 17.7.5 for decoding.
+    kal_bool                    is_lcs_ind_present;     //Whether LCS indicator IE exists or not
+    kal_uint8                   lcs_indicatior;         //LCS indicator value; 0x01: MT-LR, Other values: Normal, unspecified in this version of the protocol
+    kal_bool                    is_lcs_client_id_present;   //Whether LCS client identity IE exists or not
+    kal_uint8                   lcs_client_id_len;      //Length of LCS client identity
+    kal_uint8                   lcs_client_id[255];     //LCS client identity value, Refer to TS 29.002 subclause 17.7.13 for decoding.
+}l4crac_csfb_page_ind_struct;
+
+//should be the same as mm_emm_csfb_result_ind_struct
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_emm_csfb_result_enum mt_ccsfb_status;
+}l4crac_csfb_result_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool reg_state;
+    rat_enum rat;
+    cell_info_union cell_info;
+    plmn_id_struct plmn_id;
+    restrict_dcnr_enum dcnr_restricted;
+}l4crac_camp_ui_ind_struct;
+
+typedef rac_nas_sv_nrrc_state_ind_struct l4crac_nrrc_state_ind_struct;
+typedef rac_vgmm_ims_uac_cnf_struct l4crac_uac_param_check_cnf_struct;
+typedef rac_vgmm_ims_uac_alleviation_ind_struct l4crac_uac_alleviation_ind_struct;
+
+typedef rac_gmss_try_switch_rat_result_ind_struct l4crac_try_switch_rat_result_ind_struct;
+
+typedef rac_vgmm_emergency_service_ind_struct l4crac_emergency_service_ind_struct;
+typedef rac_vgmm_emergency_service_cnf_struct l4crac_emergency_service_cnf_struct;
+typedef rac_vgmm_emergency_service_fallback_cnf_struct l4crac_emergency_service_fallback_cnf_struct;
+
+typedef rac_vgmm_set_nssai_req_struct      l4crac_set_nssai_req_struct;
+typedef rac_vgmm_set_nssai_cnf_struct      l4crac_set_nssai_cnf_struct;
+typedef rac_vgmm_get_nssai_req_struct      l4crac_get_nssai_req_struct;
+typedef rac_vgmm_get_nssai_cnf_struct      l4crac_get_nssai_cnf_struct;
+typedef rac_vgmm_set_pref_nssai_req_struct l4crac_set_pref_nssai_req_struct;
+typedef rac_vgmm_set_pref_nssai_cnf_struct l4crac_set_pref_nssai_cnf_struct;
+typedef rac_vgmm_nw_params_ind_struct      l4crac_vgmm_nw_params_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum    active_rat;
+    kal_bool                 is_ps_sim_valid;
+    kal_bool                 is_cs_sim_valid;
+//for MM
+    kal_uint16     event;
+    kal_uint16     original_cause;
+    kal_uint16     converted_cause;
+
+} l4crac_cause_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;  /*to indicate which RAT's indication*/
+
+    network_scan_rat_union_type  nw_scan_rat_output;
+    nwsel_plmn_list_status_enum status;
+} l4crac_plmn_scan_ind_struct;
+
+typedef rac_nas_sv_cap_update_ind_struct l4crac_cap_update_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    gprs_traffic_channel_status_enum traffic_channel_status;
+} l4crac_gprs_traffic_channel_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    l4c_source_id_enum src_id;
+    kal_uint8 result;
+ } l4crac_set_save_rac_preference_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_searching;
+} l4crac_as_plmn_search_report_ind_struct;
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+typedef struct {
+    LOCAL_PARA_HDR
+    nw_black_list_operator_result_enum result;
+} l4crac_fplmn_action_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool black_list_lock_state;
+    kal_bool is_init;
+    kal_uint16 no_plmn_entry;
+    kal_uint8 *plmn_data;
+} l4crac_nw_black_list_state_ind_struct;
+#endif
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool result;  	/* 1 : success, 0: failure */
+} l4crac_set_ecall_registration_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_registration_state_enum  ecall_reg_state;
+} l4crac_set_ecall_registration_state_ind_struct;
+#endif /* (__ECALL_SUPPORT__) || (__NG_ECALL_SUPPORT__) */
+
+#endif /* _RAC2L4C_STRUCT_H */
+
diff --git a/mcu/protocol/interface/l4/rac_em_struct.h b/mcu/protocol/interface/l4/rac_em_struct.h
new file mode 100644
index 0000000..3b54e7f
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_em_struct.h
@@ -0,0 +1,107 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	rac_em_struct.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   This file is intends for structure definition for EM log of RAC
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : rac_em_struct.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifndef __RAC_EM_STRUCT_H__
+#define __RAC_EM_STRUCT_H__
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "l3_inc_enums.h"
+#include "rac_defs.h"
+
+#endif /* __RAC_EM_STRUCT_H__ */
+
+
diff --git a/mcu/protocol/interface/l4/rac_gmss_struct.h b/mcu/protocol/interface/l4/rac_gmss_struct.h
new file mode 100644
index 0000000..059a906
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_gmss_struct.h
@@ -0,0 +1,936 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	rac_gmss_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for struct definition between NWSEL and MMI/L4.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+#ifndef _RAC_GMSS_STRUCT_H
+#define _RAC_GMSS_STRUCT_H
+
+#include "kal_general_types.h"
+#include "l3_inc_enums_public.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "ps_public_enum.h"
+#include "l3_inc_local.h"
+#include "mm_mmi_enums.h"
+#include "gmss_public.h"
+#include "l4c_common_enum.h"
+
+#ifdef __LTE_RAT__
+#include "nvram_data_items.h"
+#endif
+
+#include "nvram_editor_data_item.h"
+#include "nas_nvram_editor.h"
+#include "erac_nvram_editor.h"
+#include "c2k_irat_msg_struct.h"
+#include "nwsel_eval_struct.h"
+#include "sim_public_enum.h"
+#ifdef __IMS_SUPPORT__
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+#endif
+#include "vgnas_nvram_def.h"
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+#include "l5_l4c_enums.h"
+#endif
+
+/* RAC -> GMSS */
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_selection_mode_enum plmn_sel_mode;
+    rat_enum rplmn_rat;
+    kal_uint8 num_of_eq_plmn;
+    plmn_id_struct eq_plmn[MAX_NUM_EQ_PLMN];
+    kal_uint8 nvram_locigprs[14];
+    rat_enum prefered_rat;
+#ifdef __TC02_SECURITY_REQUIREMENT__
+    kal_uint8 nvram_imsi_loci_gloci[MAX_LEN_OF_IMSI_LOCI_GLOCI]; //mtk02475: for man-in-middle-attack prevention
+#endif
+    kal_bool is_supporting_roaming;
+
+#ifdef __LTE_RAT__
+    kal_uint8 nvram_epsloci[NVRAM_EPSLOCI_SIZE];
+#endif
+    plmn_id_rat_struct csg_previous_rplmn;
+    kal_uint32 csg_id;
+    kal_bool disable_international_roaming_support;
+    kal_bool disable_national_roaming_support;
+    kal_bool disable_hhplmn_search_support;
+    kal_bool enable_roaming_broker_support;
+#ifdef __LTE_ROAMING_SUPPORT__
+    kal_bool disable_lte_data_roaming;
+#endif
+    kal_uint32 recovery_timer[MAX_RECOVERY_TIMER_NUM ];
+    kal_bool                        sms_only;
+    voice_domain_preference_enum    eutran_voice_domain_preference;
+    voice_domain_preference_enum    utran_voice_domain_preference;
+    ue_mode_enum                    ue_mode;
+    kal_uint64  last_t3245_end_time;
+
+//__APPLMN_LIST__
+    kal_uint16 no_static_applmn_data;
+    kal_uint8 *static_applmn_data;
+    kal_uint16 no_dynamic_applmn_data;
+    kal_uint8 *dynamic_applmn_data;
+
+//__AUX_PLMN__
+    plmn_id_struct aux_plmn_id;
+    rat_enum aux_plmn_rat;
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__	
+	/*__BlackList_PLMN__*/		
+    kal_uint16 no_blacklist_plmn_data;
+    kal_uint8 *blacklist_plmn_data;
+#endif
+
+    nvram_ef_failure_list_struct failure_list;
+    nvram_histoy_table_struct history_table;
+    nvram_nwsel_data_struct nwsel_data;
+    nvram_gmss_data_struct gmss_data;
+    init_cause_enum init_cause;
+    kal_uint8 vzw_lte_scan_idle_interval;
+    kal_uint8 vzw_lte_scan_idle_max;
+    plmn_id_struct stored_rplmn;
+    kal_bool is_init;
+    plmn_id_struct manual_selected_plmn;
+   //Add for aral 2.0
+    aral_update_req_struct aral_update_req[NWSEL_ALAL_NUM];
+    kal_uint8 nvram_ef_5gs3gpploci[LEN_OF_5GS3GPPLOCI];
+    nvram_last_campui_reg_state_struct last_campui_reg_state[NVRAM_MAX_SUPPORTED_RAT];
+    kal_uint32 prefer_rat_num;
+    rat_enum prefer_rat_list[NVRAM_MAX_SUPPORTED_RAT];
+#ifdef __FIVEG_NAS__
+    nvram_ef_vgnas_5gmm_failure_list_struct vgnas_5gmm_failure_list;
+#endif
+    nvram_allowed_mcc_struct allowed_mcc_data;
+} rac_gmss_init_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_selection_mode_enum plmn_sel_mode;
+} rac_gmss_sel_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum attach_type;   /* CS-only, PS-only or both CS/PS*/
+    kal_uint8 att_id;        /* Johnny: 3G RAC, for attach_req and detach_req using */
+    mm_user_search_type_enum search_type;   //mm_user_search_type_enum
+} rac_gmss_attach_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    domain_id_enum detach_type; /* CS-only, PS-only or both CS/PS */
+    kal_bool power_off;   /* mobile shut down or not */
+    kal_uint8 att_id;      /* Johnny: 3G RAC, for attach_req and detach_req using */
+    l4c_rac_detach_cause_enum detach_cause;
+} rac_gmss_detach_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rfoff_cause_enum rfoff_cause;
+} rac_gmss_rfoff_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_reselection_enum plmn_search_mode;       /* plmn_reselection_enum */
+    plmn_id_rat_struct selected_plmn; /* Selected PLMN */
+    kal_bool is_manual_csg_sel;
+    kal_uint32 csg_id;
+    rat_enum prefer_rat;   //  0:default ,  1:GSM ,   2:UMTS
+    kal_bool from_l4c;
+    kal_uint32 factory_mode_arfcn; //0xFFFF means invalid arfcn, /* 20081110 mtk00714, for fast camp on test machine */
+    endc_search_enum endc_search; /* Search ENDC cell or not for LTE cell. */
+} rac_gmss_plmn_search_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_rat_struct plmn_id_rat;
+} rac_gmss_csg_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    user_list_type_enum user_list_type;
+    rat_enum list_rat; /* For informing frequency of which RATs are valid*/
+    kal_bool list_endc_info; /* LIST ENDC info or not for LTE cell. ERRC will collect SIB2 for PLMN_LIST. */
+    kal_uint8 given_number_of_plmn; // used for the USER_LIST_TYPE_GIVEN_TIMER_NUMBER. When xAS found the given number of plmn, xAS return plmn list cnf (with signal power value). If the number is 255, means feature OFF.
+    network_scan_input_struct  network_scan_input; //IPC_NET_NETWORK_SCAN
+} rac_gmss_plmn_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_user_plmn_list_ongoing;
+} rac_gmss_plmn_list_status_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat_mode;              /* RATCM_RAT_ENUM*/
+    rat_enum reported_rat;
+    irat_system_type_enum c2k_mode;
+    kal_bool is_rf_on;
+} rac_gmss_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_supporting_roaming;
+    kal_bool disable_international_roaming_support;
+    kal_bool disable_national_roaming_support;
+    kal_bool disable_hhplmn_search_support;
+} rac_gmss_set_roaming_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    prefer_rat_type_enum type;
+    rat_enum prefer_rat;
+    kal_uint32 rat_num;
+    rat_enum rat_order[MAX_SUPPORTED_RAT];
+}rac_gmss_set_prefer_rat_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    prefer_rat_type_enum type;
+}rac_gmss_get_prefer_rat_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    prefer_rat_type_enum type;
+    kal_uint32 rat_num;
+    rat_enum rat_order[MAX_SUPPORTED_RAT];
+}rac_gmss_get_prefer_rat_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn;
+    rat_enum rat;
+    kal_uint8 ara_start[2];
+    kal_uint8 ara_end[2];
+}rac_gmss_aral_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_eutran_vdp_or_ue_usage_changed;
+    voice_domain_preference_enum eutran_voice_domain_preference;
+   kal_bool is_evdp_changed_by_ims_on_off;
+    ue_usage_setting_enum ue_usage_setting;
+    ue_mode_enum ue_mode;
+    ue_mode_enum ue_mode_exclude_18;
+    ims_reg_status_enum ims_reg_status;
+    kal_bool sms_only;
+    kal_bool is_ims_support;
+    kal_bool is_ims_ecc_support;
+#ifdef __IMS_SUPPORT__
+    ims_dereg_cause_enum ims_dereg_cause;
+    ims_cap_rat_enum ims_rat_cap;
+#endif /* __IMS_SUPPORT__ */
+    kal_bool is_ims_retry;
+
+    /* EMC specific config*/
+    kal_bool is_emc_param_valid;
+    voice_domain_preference_enum emc_voice_domain_preference;
+    ue_usage_setting_enum emc_ue_usage_setting;
+    kal_bool emc_fallback;
+} rac_gmss_uemode_param_update_req_struct;
+
+/* MSG_ID_RAC_GMSS_LOCATION_INFO_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mm_status;
+    kal_uint8 location_info[SAT_MAX_LOC_INFO_LEN];
+    kal_uint8 rat;
+
+    sat_loc_send_type_enum send_type;        // whether notify the sat the location info when updated
+
+} rac_gmss_location_info_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum               rat;
+    plmn_id_struct         plmn_id;
+    kal_uint16             arfcn;
+    kal_uint8              requested_band;
+} rac_gmss_set_mru_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum               rat;
+    plmn_id_struct         plmn_id;
+} rac_gmss_set_aux_plmn_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_main_ps; /* GEMINI : data preferred SIM e.g. internet data*/
+} rac_gmss_data_allow_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_rude_wakeup;
+}rac_gmss_screen_on_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool normal_oos_recovery_round_present;
+    kal_uint8 normal_oos_recovery_round; /* default value =5, range [2,10] */
+    kal_bool inactive_fullband_period_present;
+    kal_uint16 inactive_fullband_period; /* default value =200s, range [90,360] */
+    kal_bool inactive_sniffer_period_present;
+    kal_uint8 inactive_sniffer_period; /* default value =30s, range [10,60] */
+    kal_bool is_inactive_mode_present;
+    kal_bool is_inactive_mode; /* TRUE: Enter inactive mode, FALSE: Leave inactive mode*/
+    kal_bool inactive_scan_time_present;
+    kal_uint32 inactive_scan_time;
+    kal_bool inactive_sleep_time_present;
+    kal_uint32 inactive_sleep_time;
+} rac_gmss_inactive_mode_configuration_req_struct;
+
+/* NWSEL -> RAC*/
+
+typedef nwsel_eval_c2k_csfb_start_ind_struct rac_gmss_c2k_csfb_start_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;          /* proc_status_enum */
+    mm_cause_enum cause;           /* mm_cause_enum */
+    kal_bool is_on_hplmn;
+    cell_info_and_rat_struct cell_info;
+} rac_gmss_plmn_search_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;         /* proc_status_enum */
+    mm_cause_enum  cause;          /* mm_cause_enum */
+    kal_uint8 num_of_hplmn;
+    rac_plmn_list_struct plmn_list;
+    list_ind_source_enum source;
+} rac_gmss_plmn_list_cnf_struct;
+
+typedef rac_gmss_plmn_list_cnf_struct rac_gmss_plmn_list_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 susp_id;
+    susp_resu_source_enum target;
+} rac_gmss_suspend_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;
+    mm_cause_enum cause;
+    rac_csg_list_struct csg_list;
+} rac_gmss_csg_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;         /* proc_status_enum */
+    mm_cause_enum cause;          /* mm_cause_enum */
+} rac_gmss_set_rat_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    //kal_uint8  att_id;               /* for detach_req mapping */
+    gmss_rat_enum  detached_ps_rat;  /* indicate the detached RAT */
+} rac_gmss_c2k_detach_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool            is_1x_service_available; /** indicate if service_domain is available */
+} rac_gmss_c2k_service_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  is_cs_conn_start;  /* indicate if C2K cs connection start */
+} rac_gmss_1x_conn_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;                    /* source channel from AP or middleman, L4 utilize this field to respond to the correct channel */
+    hvolte_mode_enum    mode;            /** indicate LTE-Only or SRLTE */ // enum defined in ims_common_def.h
+    kal_bool    is_for_silent_redial;    /** indicate the mode change due to VoLTE call fail then silent redial 1xRTT */
+    set_hvolte_mode_cause_enum cause;
+} rac_gmss_set_hvolte_mode_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;                    /* the value shall be the same as src_id in rac_gmss_set_hvolte_mode_req_struct */
+}rac_gmss_set_hvolte_mode_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_not_suspend; /* indicate if is_searching = TRUE is due to Gemini suspend */
+    kal_bool is_update_is_searching; /* if TRUE, RAC can check is_searching flag */
+    kal_bool is_searching;
+    kal_bool is_camp_on_cell; /* if is_searching = FALSE && is_camp_on_cell = FALSE, then RAC update to L4C;
+                                 else, ignore the is_searching flag.  */
+    kal_bool is_on_hplmn;
+    kal_bool is_update_active_rat;
+    rat_enum active_rat;
+    plmn_id_struct rplmn; /* Get RPLMN */
+} rac_gmss_plmn_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nwsel_ims_service_enum service_type;
+    kal_bool is_t311_expire;  /* RRC connection release due to RRC T311 timer expire */
+} rac_gmss_ims_service_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+} rac_gmss_rat_change_start_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    irat_result_enum irat_result;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    c2k_irat_result_enum err_code;
+} rac_gmss_rat_change_finish_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool enter_cause18_plmn;
+} rac_gmss_cs_domain_availability_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    susp_resu_result_enum result;
+    susp_resu_source_enum target;
+} rac_gmss_susp_resu_update_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    susp_resu_mode_enum  mode;
+    susp_resu_action_enum action;
+    kal_uint8            susp_id;
+    susp_resu_source_enum source;
+} rac_gmss_susp_resu_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 timer_interval[MAX_RECOVERY_TIMER_NUM];
+} rac_gmss_set_recovery_search_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 timer_interval[MAX_RECOVERY_TIMER_NUM];
+} rac_gmss_get_recovery_search_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+} rac_gmss_set_recovery_search_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    custom_plmn_type_enum type;
+    kal_bool is_update_needed;
+    kal_uint8 plmn_ver[2];
+    kal_uint16 no_plmn_entry;
+    kal_uint8 *plmn_data;
+} rac_gmss_custom_plmn_list_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool voice_over_ims_ongoing;
+} rac_gmss_ims_call_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    voice_domain_preference_enum utran_voice_domain_preference;
+} rac_gmss_set_utran_voice_domain_preference_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+	kal_bool is_data_service_present;
+    kal_bool is_data_service_on;
+	kal_bool is_data_roaming_service_present;
+	kal_bool is_data_roaming_service_on;
+} rac_gmss_data_service_status_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum new_reported_rat;
+    kal_bool is_home;
+    rat_mode_change_cause_enum cause;
+} rac_gmss_reported_rat_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    emdstatus_md_config_enum md_config;
+    emdstatus_sim_config_enum sim_config;
+} rac_gmss_md_sim_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    elevator_mode_enum elevator_mode;
+} rac_gmss_elevator_mode_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    gmss_rat_enum                   gmss_rat;
+    plmn_id_struct                  loc;     /* Only MCC is valid */
+    gmss_selected_rat_status_enum   status;
+    kal_bool                        is_ehrpd;      /* Indicate if PS type is EHRPD if current RAT is HRPD */
+    rat_enum                        curr_reported_rat;  /* current reported rat */
+    kal_bool                        is_home_country;    /* is_home_country */
+    kal_bool                        is_srlte;      /* SRLTE or not. AP use it with RAT to decide phone type (CDMALTE or CSFB) */
+    irat_handoff_cause_enum         irat_type;
+} rac_gmss_rat_select_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    act_sim_enum  active_sim;
+} rac_gmss_active_sim_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_attach_needed;
+} rac_gmss_rat_change_success_notify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    umts_duplex_mode_type   umts_duplex_mode;
+    lte_duplex_mode_type    lte_duplex_mode;
+    mode_switch_cause_enum  cause;
+} rac_gmss_duplex_mode_change_req_struct, rac_gmss_duplex_mode_change_ind_struct;
+
+//todo
+typedef struct {
+    LOCAL_PARA_HDR
+    ct_mode_enum ct_mode;
+} rac_gmss_set_ct_mode_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn_id;
+} rac_gmss_disable_eutran_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool data_enabled_setting;
+    kal_bool data_roaming_setting;
+} rac_gmss_roaming_data_config_req_struct;
+
+typedef struct
+{
+     LOCAL_PARA_HDR
+     set_mru_result_enum result;
+} rac_gmss_set_mru_cnf_struct;
+
+typedef struct
+{
+     LOCAL_PARA_HDR
+     set_aux_plmn_result_enum  result;
+} rac_gmss_set_aux_plmn_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    wm_policy_enum wm_policy;
+} rac_gmss_set_wm_policy_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum	avaliable_rat;
+    kal_uint8 cause;
+    kal_uint8        trans_id;
+} rac_gmss_emc_service_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_mode_changed;
+    kal_bool utran_fdd;
+    kal_bool utran_tdd_lcr;
+    kal_bool eutran_fdd;
+    kal_bool eutran_tdd;
+    mode_switch_cause_enum  cause;
+} rac_gmss_duplex_mode_required_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    call_status_enum call_status;
+    call_type_indication_enum call_type;
+    kal_bool is_flight_mode_on_ecc;
+    rat_enum call_current_rat;   // the call start/stop current rat
+} rac_gmss_call_status_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} rac_gmss_set_first_camp_on_prefer_rat_req_struct;
+
+#define VZWMRU_UPDATE_RESULT_NUM_MAX 10
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    irat_ps_type_enum access_type;
+    kal_uint16 sid;
+    kal_uint16 nid;
+    kal_uint8 pzid;
+    kal_uint16 base_id;
+    kal_uint32 sector_id[4];
+    kal_uint8 subnet_length;
+    kal_uint8 carrier_id[6];
+} rac_gmss_c2k_cell_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum  rat;
+    kal_uint8  event_type;      // 0: successful completion of RAU procedure
+                                // 1: successful completion of TAU procedure
+}rac_gmss_reg_status_ind_struct;
+
+#define VZWMRU_UPDATE_RESULT_NUM_MAX 10
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mru_cmd_type_enum cmd;
+    mmss_list_type_enum list_type;          // RAL or MRU
+    vzwmru_entry_struct entry;              // used only cmd=EDIT
+} rac_gmss_vzwmru_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    mru_cmd_type_enum cmd;
+    kal_bool result;                                                //TRUE=>pass, FALSE=>error
+    mmss_list_type_enum list_type;                                  // RAL or MRU
+    kal_uint32 entry_num;                                           //used only when cmd=QUERY
+    vzwmru_entry_struct entries[VZWMRU_UPDATE_RESULT_NUM_MAX];       //used only when cmd=QUERY
+} rac_gmss_vzwmru_update_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    omadm_cmd_type_enum cmd;
+    omadm_node_type_enum node_type;
+    kal_uint32 node_value;
+} rac_gmss_omadm_update_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    omadm_cmd_type_enum cmd;
+    kal_bool result;                    // TRUE=>pass, FALSE=>error
+    omadm_node_type_enum node_type;     // OMADM node
+    kal_uint32 node_value;
+} rac_gmss_omadm_update_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    custom_plmn_type_enum type;
+} rac_gmss_get_custom_plmn_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR    
+    kal_uint8 src_id;
+    custom_plmn_type_enum type;
+    kal_uint16 no_plmn_entry;
+    kal_uint8 *plmn_data;
+} rac_gmss_get_custom_plmn_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_apn_enable;
+} rac_gmss_vzw_admin_apn_change_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    // TRUE: Request for LTE available 1xRTT cell lists
+    // FALSE: Request for LTE unavailable 1xRTT cell lists
+    kal_bool is_for_LTE_available_list;
+} rac_gmss_1xrtt_cell_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint8 num; // maximum = GMSS_LTE_UNAVAIL_DB_SIZE (128)
+    // (sid[0],nid[0],bsid[0]) for first cell, (sid[1],nid[1],bsid[1]) for second cell...
+    kal_uint16 sid[GMSS_LTE_UNAVAIL_DB_SIZE];
+    kal_uint16 nid[GMSS_LTE_UNAVAIL_DB_SIZE];
+    kal_uint16 bsid[GMSS_LTE_UNAVAIL_DB_SIZE];
+} rac_gmss_1xrtt_cell_list_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    vzw_barring_timer_type_enum timer_type;
+    kal_uint32 timer_interval; /* in second */
+} rac_gmss_set_plmn_barring_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_bool result;
+} rac_gmss_set_plmn_barring_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    vzw_barring_timer_type_enum timer_type;
+} rac_gmss_get_plmn_barring_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    kal_uint32 timer_interval; /* in second */
+} rac_gmss_get_plmn_barring_timer_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_timer_type_enum              timer_type;
+    ims_timer_status_enum            timer_status;
+    kal_uint16                       timer_length; /* in second */
+} rac_gmss_ims_timer_status_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum active_rat;
+} rac_gmss_active_rat_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool  is_suspend;
+} rac_gmss_suspend_egreg_update_ind_struct,
+  rac_gmss_suspend_egreg_update_cnf_struct;
+
+
+typedef struct{
+    LOCAL_PARA_HDR
+    plmn_id_struct rplmn; /* Get RPLMN */
+} rac_gmss_rplmn_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    gmss_tw_mode_enum tw_mode;
+    kal_uint8 setting;
+} rac_gmss_set_tw_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    recover_cause_enum cause;
+} rac_gmss_invalid_sim_recover_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+} rac_gmss_invalid_sim_recover_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool high_prio_timer_config;
+} rac_gmss_high_prio_search_timer_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_ct_volte_supported;
+} rac_gmss_volte_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_ims_roaming_enable;
+} rac_gmss_set_ims_roaming_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_valid_available_rat;
+    rat_enum available_rat;
+    kal_bool is_valid_prefer_rat;
+    rat_enum prefer_rat;
+    kal_bool is_new_call;
+    kal_uint8 trans_id;
+} rac_gmss_emc_service_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    hvolte_mode_change_cause_enum cause;
+} rac_gmss_hvolte_mode_change_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+} rac_gmss_get_last_rat_select_ind_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 src_id;
+    rac_gmss_rat_select_ind_struct last_rat_select_ind;
+} rac_gmss_get_last_rat_select_ind_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_special_event_enum          ims_event;
+    kal_uint16                      sip_cause;
+} rac_gmss_ims_reg_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    enwsel_search_abort_cause_enum cause;
+} rac_gmss_abort_enwsel_search_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_search_triggered;
+} rac_gmss_ims_call_end_status_ind_struct;
+
+/* mtk13782: Regarding to TMO diable 2G */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum  disable_rat;
+}rac_gmss_rat_disable_config_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_invalid;
+    rat_enum  rat;
+    plmn_id_struct plmn_id;
+	kal_uint8     carrier_id[6];
+}rac_gmss_illegal_me_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    try_switch_rat_result_enum result;
+} rac_gmss_try_switch_rat_result_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool reg_state;
+    rat_enum rat;
+    cell_info_union cell_info;
+    plmn_id_struct plmn_id;
+    restrict_dcnr_enum dcnr_restricted;
+} rac_gmss_camp_ui_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    network_scan_rat_union_type  nw_scan_rat_output;
+    nwsel_plmn_list_status_enum   status;
+}rac_gmss_plmn_scan_ind_struct;
+
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+typedef struct {
+    LOCAL_PARA_HDR
+    nw_black_list_operator_result_enum result;
+} rac_gmss_fplmn_action_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool black_list_lock_state;
+    kal_bool is_init;
+    kal_uint16 no_plmn_entry;
+    kal_uint8 *plmn_data;
+} rac_gmss_nw_black_list_state_ind_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    allowed_mcc_list_action_enum action;
+    kal_uint8   allowed_mcc_number;
+    kal_uint16  allowed_mcc_list[MAX_ALLOWED_MCC_LIST_NUMBER];
+} rac_gmss_set_allowed_mcc_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool    result;
+} rac_gmss_set_allowed_mcc_list_cnf_struct;
+
+#endif
diff --git a/mcu/protocol/interface/l4/rac_nas_sv_struct.h b/mcu/protocol/interface/l4/rac_nas_sv_struct.h
new file mode 100644
index 0000000..d161ac0
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_nas_sv_struct.h
@@ -0,0 +1,241 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+* rac_nas_sv_struct.h
+*
+* Project:
+* --------
+*   UMOLYA
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _RAC_NAS_SV_STRUCT_H_
+#define _RAC_NAS_SV_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "ps_public_enum.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "l3_inc_local.h"
+#include "mm_mmi_enums.h"
+#include "kal_public_defs.h"
+#include "sim_public_enum.h"
+#include "nas_sv_struct.h"
+#include "l4c2rac_struct.h"
+#include "rac_eval_struct.h"
+
+#define RAC_NAS_SV_NR_SERV_CELL_NUM 2
+typedef nas_sv_any_attach_req_struct rac_nas_sv_attach_req_struct;
+typedef nas_sv_any_detach_req_struct rac_nas_sv_detach_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat_mode;              
+    rat_enum reported_rat;
+    irat_system_type_enum c2k_mode;
+    kal_bool is_rf_on;
+    rat_mode_change_cause_enum rat_mode_change_cause;
+    domain_id_enum detach_domain;
+    vg_option_enum vg_option_map;
+} rac_nas_sv_set_rat_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;         
+    mm_cause_enum cause;          
+} rac_nas_sv_set_rat_mode_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR    
+    rat_enum target_rat;
+    nas_sv_vgmm_attach_cnf_struct attach_cnf_vgmm;
+    nas_sv_emm_attach_cnf_struct attach_cnf_emm;
+    nas_sv_mm_attach_cnf_struct attach_cnf_gmm;
+} rac_nas_sv_attach_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR    
+    rat_enum target_rat;
+    nas_sv_vgmm_detach_ind_struct detach_ind_vgmm;
+    nas_sv_emm_detach_ind_struct detach_ind_emm;
+    nas_sv_mm_detach_ind_struct detach_ind_gmm;
+} rac_nas_sv_detach_ind_struct;
+
+typedef union
+{
+    rac_nas_sv_attach_cnf_struct attach_cnf;
+    rac_nas_sv_detach_ind_struct detach_ind;
+} attach_detach_union;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_in_limited_virtual_idle;
+    domain_id_enum update_domain;
+    kal_uint8 att_id;
+    cell_info_and_rat_struct cell_info;
+    //nwsel_regn_result_ind_struct regn_info; // to sync informaion that no need to display, for PDN/call/... operation
+    nwsel_status_enum nwsel_search_status;
+    nas_sv_attach_detach_result_type_enum cs_result_type;
+    attach_detach_union cs_reg_result;
+    nas_sv_attach_detach_result_type_enum ps_result_type;
+    attach_detach_union ps_reg_result;
+} rac_nas_sv_attach_detach_result_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    umts_duplex_mode_type   umts_duplex_mode;
+    lte_duplex_mode_type    lte_duplex_mode;
+    nr_duplex_mode_type     nr_duplex_mode;
+    mode_switch_cause_enum  cause;   
+} rac_nas_sv_duplex_mode_change_req_struct,rac_nas_sv_duplex_mode_change_ind_struct ;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+} rac_nas_sv_duplex_mode_change_cnf_struct;
+
+
+typedef nas_sv_any_rfoff_req_struct rac_nas_sv_rfoff_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+} rac_nas_sv_rat_change_start_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    irat_result_enum irat_result;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+    #if 0
+/* under construction !*/
+/* under construction !*/
+    #endif
+} rac_nas_sv_rat_change_finish_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum active_rat;
+} rac_nas_sv_update_active_rat_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_sv_l4_event_update_ind_enum event;
+} rac_nas_sv_event_update_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    plmn_id_struct current_plmn_id;
+
+} rac_nas_sv_eps_attach_needed_ind_struct;
+
+typedef nas_sv_emm_nw_feature_support_ind_struct rac_nas_sv_emm_nw_feature_support_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_eutran_vdp_or_ue_usage_changed;
+    voice_domain_preference_enum eutran_voice_domain_preference;
+    ue_usage_setting_enum ue_usage_setting;
+    ue_mode_enum ue_mode;
+    ue_mode_enum ue_mode_exclude_18;
+    ims_reg_status_enum ims_reg_status;
+    kal_bool sms_only;
+    kal_bool is_ims_support;
+#ifdef __IMS_SUPPORT__    
+    ims_dereg_cause_enum ims_dereg_cause;
+#endif /* __IMS_SUPPORT__ */
+	//ims_reg_event_enum ims_reg_event;
+} rac_nas_sv_uemode_param_update_req_struct;
+
+typedef struct
+{
+    kal_uint16 band;  	// 1~1024; Specifies frequency band of the serving cell.
+	kal_uint16 bandwidth;
+	kal_uint32 nrarfcn;
+	kal_uint8 cell_group; // 0:MCG, 1:SCG
+} nrrc_serving_cell_info_struct;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    indicated_nrrc_state_enum nrrc_state;
+    indicated_nr_scg_status_enum scg_status;
+    kal_uint8 serving_cell_info_num; 
+    nrrc_serving_cell_info_struct serving_cell_info_list[RAC_NAS_SV_NR_SERV_CELL_NUM]; // will be extended to 10 on 98
+} rac_nas_sv_nrrc_state_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_mrs_endc_supported;
+    ue_capability_struct capability;
+} rac_nas_sv_cap_update_ind_struct;
+
+typedef emmreg_ims_reg_status_update_req_struct rac_nas_sv_ims_reg_status_update_req_struct;
+
+typedef l4crac_call_status_req_struct rac_nas_sv_call_status_req_struct;
+
+typedef l4crac_ims_pdn_activation_req_struct rac_nas_sv_ims_pdn_activation_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nr_normal_service_loss_reason_enum reason;
+} rac_nas_sv_nr_normal_service_loss_update_req_struct;
+
+typedef nwsel_nas_sv_as_plmn_search_report_ind_struct rac_nas_sv_as_plmn_search_report_ind_struct;
+
+#endif
+
+
diff --git a/mcu/protocol/interface/l4/rac_nrrc_struct.h b/mcu/protocol/interface/l4/rac_nrrc_struct.h
new file mode 100644
index 0000000..b769958
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_nrrc_struct.h
@@ -0,0 +1,62 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+ * ---------
+ *   rac_nrrc_struct.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *  Messages and common definitions for RAC-NRRC interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+#ifndef  _RAC_NRRC_STRUCT_H_
+#define  _RAC_NRRC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+ 
+ #endif /* _RAC_NRRC_STRUCT_H_ */
\ No newline at end of file
diff --git a/mcu/protocol/interface/l4/rac_nwsel_struct.h b/mcu/protocol/interface/l4/rac_nwsel_struct.h
new file mode 100644
index 0000000..b7c5631
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_nwsel_struct.h
@@ -0,0 +1,213 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	rac_nwsel_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for struct definition between NWSEL and MMI/L4.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+#ifndef _RAC_NWSEL_STRUCT_H
+#define _RAC_NWSEL_STRUCT_H
+#endif
diff --git a/mcu/protocol/interface/l4/rac_vgmm_struct.h b/mcu/protocol/interface/l4/rac_vgmm_struct.h
new file mode 100644
index 0000000..f0cd013
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_vgmm_struct.h
@@ -0,0 +1,441 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	rac_vgmm_struct.h
+ *
+ * Project:
+ * --------
+ *   6297
+ *
+ * Description:
+ * ------------
+ *   This file is intends for struct definition between RAC and VGMM
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+#ifndef _RAC_VGMM_STRUCT_H
+#define _RAC_VGMM_STRUCT_H
+
+#include "sim_ps_enum.h"
+#include "sim_public_enum.h"
+#include "l3_inc_enums.h"
+#include "vgnas_nvram_def.h"
+#include "l3_inc_local.h"
+#include "nas_nvram_editor.h"
+#include "l4c2rac_struct.h"
+#include "rac_eval_struct.h"
+
+/********************************************
+ *                  MACROS                  *
+ ********************************************/
+
+#define RAC_VGMM_NW_NAME_MAX_LEN    MAX_NW_NAME_LENGTH
+
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+
+typedef enum{
+    RAC_VGMM_EMS_ACQUIRE,
+    RAC_VGMM_EMS_RE_ACQUIRE,
+    RAC_VGMM_EMS_RELEASE
+}rac_vgmm_emergency_service_request_type_enum;
+
+typedef enum{
+    RAC_VGMM_EMS_CAUSE_NONE = 0,
+    RAC_VGMM_EMS_CAUSE_EPDU_FAILURE = 1,
+    RAC_VGMM_EMS_CAUSE_NUM
+}rac_vgmm_emergency_service_request_cause_enum;
+
+typedef enum
+{
+    RAC_VGMM_NORMAL_REGISTRATION,
+    RAC_VGMM_EMERGENCY_REGISTRATION
+} rac_vgmm_emergency_service_reg_type_enum;
+
+typedef enum{
+    RAC_VGMM_EMS_IND_CAUSE_NONE = 0,
+
+    //Success CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes 
+    //that map to this value. 
+    RAC_VGMM_EMS_CNF_SUCCESS = 1,
+    RAC_VGMM_EMS_IND_ACTIVE = 2,
+
+    //Failure CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes 
+    //that map to this value. 
+    RAC_VGMM_EMS_CNF_FAIL = 100,
+    RAC_VGMM_EMS_IND_BARRED = 101,
+    RAC_VGMM_EMS_IND_NO_CELL = 102,
+    RAC_VGMM_EMS_IND_CURRENT_PLMN = 103,
+    RAC_VGMM_EMS_IND_N1_NOT_ACTIVE = 104,
+    RAC_VGMM_EMS_IND_INACTIVE = 105,
+    RAC_VGMM_EMS_IND_ABNORMAL_TRY_OTHER_IPCAN = 106
+}rac_vgmm_emergency_service_cnf_cause_enum, rac_vgmm_emergency_service_cnf_result_enum;
+
+
+typedef enum{
+    RAC_VGMM_EMSFB_CAUSE_NONE = 0,
+
+    //Success CNF response to EMERGENCY_SERVICE_FALLBACK_REQ
+    RAC_VGMM_EMSFB_CNF_SUCCESS = 1,
+
+    //Failure CNF response to EMERGENCY_SERVICE_REQ
+    RAC_VGMM_EMSFB_CNF_FAIL = 200,
+    RAC_VGMM_EMSFB_BARRED = 201,
+    RAC_VGMM_EMSFB_NO_CELL = 202,
+    RAC_VGMM_EMSFB_CURRENT_PLMN = 203,
+    RAC_VGMM_EMSFB_N1_NOT_ACTIVE = 204,
+    RAC_VGMM_EMSFB_SERVICE_REQ_ABORT = 205, // Service request aborted due various reasons
+    RAC_VGMM_EMSFB_GEMINI_SUSPEND = 206
+}rac_vgmm_emergency_fallback_cnf_result_enum,rac_vgmm_emergency_fallback_cnf_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 pei_imei_spare;  
+    kal_uint8 pei_imei_sv[SIZE_OF_IMEISV]; 
+    kal_uint8 nvram_ef_5gs3gpploci[LEN_OF_5GS3GPPLOCI];
+    kal_uint8 nvram_ef_5gs3gppnsc[LEN_OF_5GS3GPPNSC];
+    nvram_ef_t3346_timer_info_struct t3346_info;
+    init_cause_enum init_cause;
+#ifdef __FIVEG_NAS__
+    nvram_ef_vgnas_5gmm_custom_config_struct vgnas_5gmm_custom_config;
+    nvram_ef_vgnas_5gmm_failure_list_struct vgnas_5gmm_failure_list;
+    kal_uint8 nvram_ef_5gauthkeys[LEN_OF_5GAUTHKEYS];
+#endif
+} rac_vgmm_init_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool full_name_for_nwP;
+    kal_uint8 full_name_for_nw_len;
+    kal_uint8 full_name_for_nw[RAC_VGMM_NW_NAME_MAX_LEN];
+    kal_bool short_name_for_nwP;
+    kal_uint8 short_name_for_nw_len;
+    kal_uint8 short_name_for_nw[RAC_VGMM_NW_NAME_MAX_LEN];
+    kal_bool local_time_zoneP;
+    kal_uint8 local_time_zone;
+    kal_bool uni_time_and_local_time_zoneP;
+    nw_time_zone_time_struct uni_time_and_local_time_zone;
+    kal_bool nw_daylight_saving_timeP;
+    kal_uint8 nw_daylight_saving_time;
+    plmn_id_struct plmn_id;
+} rac_vgmm_nw_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    vgmm_nw_feature_support_struct vg_nw_feature_support;
+} rac_vgmm_nw_feature_support_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool            is_ecc_changed;           // tell L4 if ecc changed
+    kal_uint8           no_ecc;
+    ecc_number_struct   ecc_list[MAX_NW_ECC_NUM];
+    kal_bool            is_eenl_changed;          // tell L4 if eenl changed
+    plmn_id_struct      eenl_plmn;
+} rac_vgmm_nw_ecc_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sat_nw_rej_info_enum        op;
+    cell_info_and_rat_struct    current_cell;
+    sat_nw_rej_type_enum        type;
+    kal_uint8                   rej_cause;
+} rac_vgmm_nw_reject_ind_struct;
+
+typedef emmreg_ims_reg_status_update_req_struct rac_vgmm_ims_reg_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_service_type_enum   type;
+    ims_service_status_enum status;
+
+} rac_vgmm_ims_service_status_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8               trans_id;
+    ims_service_type_enum   type;
+    ims_service_status_enum status;
+    kal_uint8 src_id; //source id of this message (IMS or VDM)
+} rac_vgmm_ims_uac_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   trans_id;
+    kal_uint8    src_id; //source id of this message (IMS or VDM)
+} rac_vgmm_ims_uac_abort_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;
+    ims_service_uac_result_enum result;
+    kal_uint8 src_id; //source id of this message (IMS or VDM)
+} rac_vgmm_ims_uac_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_service_request_type_enum requested_ems_type;
+    rac_vgmm_emergency_service_request_cause_enum additional_ems_cause;
+} rac_vgmm_emergency_service_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_service_cnf_result_enum cnf_result;
+    rac_vgmm_emergency_service_cnf_cause_enum cnf_result_cause;
+    rac_vgmm_emergency_service_reg_type_enum reg_type;
+    } rac_vgmm_emergency_service_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_service_cnf_cause_enum emergency_service_status;
+} rac_vgmm_emergency_service_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rac_vgmm_emergency_service_fallback_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_fallback_cnf_result_enum cnf_result;
+    rac_vgmm_emergency_fallback_cnf_cause_enum cnf_result_cause;
+} rac_vgmm_emergency_service_fallback_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint64 ac_bitmap;
+
+} rac_vgmm_ims_uac_alleviation_ind_struct;
+
+typedef l4crac_data_service_status_update_req_struct rac_vgmm_data_service_status_update_req_struct;
+typedef l4crac_user_selected_main_ps_req_struct rac_vgmm_user_selected_main_ps_req_struct;
+#if defined(__IMS_SUPPORT__)
+typedef l4crac_ims_config_req_struct rac_vgmm_ims_config_ind_struct;
+#endif /* __IMS_SUPPORT__ */
+
+#ifdef __FIVEG_NAS__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nvram_vgmm_reject_cause_mapping_record_struct mapping_table[NVRAM_VGMM_REJECT_CAUSE_MAPPING_SIZE];
+} rac_vgmm_reject_cause_mapping_req_struct;
+#endif /* __FIVEG_NAS__ */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    data_speed_support_enum  cell_data_speed_support;
+    cell_info_and_rat_struct cell_info;
+
+} rac_vgmm_cell_info_update_ind_struct;
+
+typedef struct
+{
+    plmn_id_struct              plmn_id;  // for indicating the PLMN ID
+    kal_uint8                   configured_nssai_length;
+    kal_uint8                   configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   allowed_nssai_3gpp_length;
+    kal_uint8                   allowed_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   allowed_nssai_non3gpp_length;
+    kal_uint8                   allowed_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+} plmn_specific_nssai_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_bool                    clear_nssai;
+    kal_uint8                   default_configured_nssai_length;
+    kal_uint8                   default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+
+} rac_vgmm_set_nssai_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_bool                    nssai_set_status;
+
+} rac_vgmm_set_nssai_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    vgs_nssai_cmd_type_enum     cmd_type;// for indicating the triggering AT cmd
+    kal_uint8                   nssai_type_bm;
+    kal_bool                    plmn_id_valid;
+    plmn_id_struct              plmn_id;
+
+} rac_vgmm_get_nssai_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    vgs_nssai_cmd_type_enum     cmd_type;// for indicating the triggering AT cmd
+    kal_uint8                   default_configured_nssai_length;
+    kal_uint8                   default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   rejected_nssai_3gpp_length;
+    kal_uint8                   rejected_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   rejected_nssai_non3gpp_length;
+    kal_uint8                   rejected_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    plmn_specific_nssai_struct  plmn_specific_nssai[NUM_NSSAI_PLMN_IDS];
+    kal_uint8                   preferred_nssai_3gpp_length;
+    kal_uint8                   preferred_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   preferred_nssai_non3gpp_length;
+    kal_uint8                   preferred_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+
+} rac_vgmm_get_nssai_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_uint8                   clear_preferred_nssai;  // Bitfield, see SAP for details
+    kal_uint8                   preferred_nssai_3gpp_length;
+    kal_uint8                   preferred_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   preferred_nssai_non3gpp_length;
+    kal_uint8                   preferred_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+
+} rac_vgmm_set_pref_nssai_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_bool                    nssai_set_status;
+
+} rac_vgmm_set_pref_nssai_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rac_vgmm_5gsloci_clear_req_struct;
+
+typedef l4crac_vgmm_proc_failure_ind_struct rac_vgmm_proc_failure_ind_struct;
+
+typedef struct  {
+  vgs_ta_list_type_enum list_type;
+  plmn_id_struct plmn_id;
+  kal_uint8 number_of_tac;
+  kal_uint32 tac_list[VGNAS_MAX_TAI_LIST];    
+}vgnas_tai_list_single_plmn_struct;
+
+typedef struct {
+  vgs_ta_list_type_enum list_type;
+  vgnas_ta_list_struct tai_list;
+}vgnas_tai_list_multi_plmn_struct;
+
+/**
+ * TAI list structure with list type for MBIM_MS_TAI_LIST_INFO.
+*/
+typedef struct {
+  /* for  TA_LIST_TYPE_00 or TA_LIST_TYPE_01 */
+  kal_uint8 number_of_tai_list_single_plmn;
+  vgnas_tai_list_single_plmn_struct tai_list_single_plmn[VGNAS_MAX_TAI_LIST];
+
+  /*for TA_LIST_TYPE_10 */
+  vgnas_tai_list_multi_plmn_struct  tai_list_multi_plmn;
+} vgnas_tai_list_with_list_type_struct;
+
+/**
+ * LADN  list structure with TAI list for MBIM_MS_TAI_LIST_INFO.
+*/
+typedef struct {
+  apn_struct dnn;
+  vgnas_tai_list_with_list_type_struct tai_list;    
+} ladn_info_with_tai_list_type_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   default_configured_nssai_length;
+    kal_uint8                   default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   rejected_nssai_3gpp_length;
+    kal_uint8                   rejected_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   rejected_nssai_non3gpp_length;
+    kal_uint8                   rejected_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   configured_nssai_length;
+    kal_uint8                   configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   allowed_nssai_3gpp_length;
+    kal_uint8                   allowed_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   allowed_nssai_non3gpp_length;
+    kal_uint8                   allowed_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    vgnas_tai_list_with_list_type_struct        ta_list; 
+    kal_uint8                   num_of_ladn_info;
+    ladn_info_with_tai_list_type_struct   ladn_info[MAX_LADN_INFO];
+} rac_vgmm_nw_params_ind_struct;
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+
+
+/********************************************
+*           FUNCTION DECLARATIONS          *
+********************************************/
+
+#endif /* _RAC_VGMM_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/ratcm_csd_interface.h b/mcu/protocol/interface/l4/ratcm_csd_interface.h
new file mode 100644
index 0000000..49afb9c
--- /dev/null
+++ b/mcu/protocol/interface/l4/ratcm_csd_interface.h
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ *  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) 2002
+ *
+ ******************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *   ratcm_csd_interface.h
+ *
+ * Project:
+ * --------
+ *   MONZA
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _RATCM_CSD_INTERFACE_H
+#define _RATCM_CSD_INTERFACE_H
+
+/* MAUI_02828210, redundant header removal */
+/***************************
+Include Prefix Header Files
+****************************/
+#include "kal_general_types.h"
+
+/***************************
+Exported Function Prototypes
+****************************/
+
+typedef enum
+{
+   CSD_MODE_NO,
+   CSD_MODE_TRA,
+   CSD_MODE_NT,
+   CSD_MODE_TRA_FAX,
+   CSD_MODE_NT_FAX
+}  
+CSD_MODE_ENUM;
+
+typedef enum
+{
+   CSD_USER_RATE_2400,
+   CSD_USER_RATE_4800,
+   CSD_USER_RATE_7200,
+   CSD_USER_RATE_9600,
+   CSD_USER_RATE_12000,
+   CSD_USER_RATE_14400,
+   CSD_USER_RATE_19200,
+   CSD_USER_RATE_28800,
+   CSD_USER_RATE_38400,
+   CSD_USER_RATE_48000,
+   CSD_USER_RATE_56000,
+   CSD_USER_RATE_64000  /* MAUI_02375911 */
+} 
+CSD_USER_RATE_ENUM;
+
+
+typedef enum
+{
+   CSD_ON = 0,
+   CSD_OFF
+} 
+CSD_STATUS_ENUM;
+
+typedef struct
+{
+    CSD_STATUS_ENUM sa;
+    CSD_STATUS_ENUM sb;
+    CSD_STATUS_ENUM x;
+} 
+CSD_V24_STATUS_STRUCT;
+
+typedef enum{
+CSD_TICK_RATE_10MS,
+CSD_TICK_RATE_20MS,
+CSD_TICK_RATE_40MS,
+CSD_TICK_RATE_80MS    
+} CSD_TICK_RATE_ENUM;
+
+
+
+#endif /* _RATCM_CSD_INTERFACE_H */
diff --git a/mcu/protocol/interface/l4/sdm_l4c_struct.h b/mcu/protocol/interface/l4/sdm_l4c_struct.h
new file mode 100644
index 0000000..d57d41a
--- /dev/null
+++ b/mcu/protocol/interface/l4/sdm_l4c_struct.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+*  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) 2013
+*
+*  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:
+* ------------
+*   sdm_l4c_struct.h
+*
+* Project:
+* ------------
+*   MOLY
+*
+* Description:
+* ------------
+*   This file is intends for L4C/SDM interface
+*
+* Author:
+* -----------
+ * -------
+*****************************************************************************/
+              
+#ifndef _SDM_L4C_STRUCT_H
+#define _SDM_L4C_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "l3_inc_enums_public.h"
+#include "ps_public_enum.h"
+#include "rac_vgmm_struct.h"
+#include "sdm_atp_enums.h"
+
+typedef rac_vgmm_ims_service_status_req_struct sdm_l4c_nr_ims_sms_status_req_struct;
+typedef rac_vgmm_ims_uac_req_struct sdm_l4c_ims_uac_req_struct;
+typedef rac_vgmm_ims_uac_cnf_struct sdm_l4c_ims_uac_cnf_struct;
+typedef sdm_l4c_ims_uac_req_struct sdm_l4c_ims_normal_sms_uac_req_struct;
+typedef sdm_l4c_ims_uac_req_struct sdm_l4c_ims_stk_sms_uac_req_struct;
+typedef sdm_l4c_ims_uac_req_struct sdm_l4c_ims_cmss_sms_uac_req_struct;
+typedef sdm_l4c_ims_uac_req_struct sdm_l4c_ims_c2k_sms_uac_req_struct;
+typedef sdm_l4c_ims_uac_req_struct sdm_l4c_ims_utk_sms_uac_req_struct;
+typedef sdm_l4c_ims_uac_cnf_struct sdm_l4c_ims_normal_sms_uac_cnf_struct;
+typedef sdm_l4c_ims_uac_cnf_struct sdm_l4c_ims_stk_sms_uac_cnf_struct;
+typedef sdm_l4c_ims_uac_cnf_struct sdm_l4c_ims_cmss_sms_uac_cnf_struct;
+typedef sdm_l4c_ims_uac_cnf_struct sdm_l4c_ims_c2k_sms_uac_cnf_struct;
+typedef sdm_l4c_ims_uac_cnf_struct sdm_l4c_ims_utk_sms_uac_cnf_struct;
+typedef rac_vgmm_ims_uac_alleviation_ind_struct sdm_l4c_ims_uac_alleviation_ind_struct;
+
+/* MSG_ID_SDM_L4C_EMERGENCY_SERVICE_REQ */
+typedef rac_vgmm_emergency_service_req_struct sdm_l4c_emergency_service_req_struct;
+/* MSG_ID_SDM_L4C_EMERGENCY_SERVICE_CNF */
+typedef rac_vgmm_emergency_service_cnf_struct sdm_l4c_emergency_service_cnf_struct;
+/* MSG_ID_SDM_L4C_EMERGENCY_SERVICE_IND */
+typedef rac_vgmm_emergency_service_ind_struct sdm_l4c_emergency_service_ind_struct;
+/*MSG_ID_SDM_L4C_EMERGENCY_SERVICE_FALLBACK_REQ*/
+typedef rac_vgmm_emergency_service_fallback_req_struct sdm_l4c_emergency_service_fallback_req_struct;
+/* MSG_ID_SDM_L4C_EMERGENCY_SERVICE_FALLBACK_CNF */
+typedef rac_vgmm_emergency_service_fallback_cnf_struct sdm_l4c_emergency_service_fallback_cnf_struct;
+
+/*MSG_ID_SDM_L4C_PS_ATTACHED_RAT_IND*/
+typedef struct 
+{
+    LOCAL_PARA_HDR 
+    sdm_nas_ps_reg_status_enum nas_reg_status;
+} sdm_l4c_ps_attached_rat_ind_struct;
+
+/*MSG_ID_SDM_L4C_CS_ATTACHED_RAT_IND*/
+typedef struct 
+{
+    LOCAL_PARA_HDR 
+    sdm_nas_cs_reg_status_enum nas_reg_status;
+} sdm_l4c_cs_attached_rat_ind_struct;
+
+/*MSG_ID_SDM_L4C_NW_FEATURE_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum		                    active_rat;
+    union
+    {
+        vgmm_nw_feature_support_struct  nr;
+        emm_nw_feature_support_struct   eps;
+        gmm_nw_feature_support_struct   ug;
+    } nw_feature;
+} sdm_l4c_nw_feature_ind_struct;
+
+/*MSG_ID_SDM_L4C_EMTS_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+} sdm_l4c_emts_req_struct;
+
+#endif /* _SDM_L4C_STRUCT_H */
+
diff --git a/mcu/protocol/interface/l4/sm2tcm_func.h b/mcu/protocol/interface/l4/sm2tcm_func.h
new file mode 100644
index 0000000..91e789c
--- /dev/null
+++ b/mcu/protocol/interface/l4/sm2tcm_func.h
@@ -0,0 +1,108 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * SM2TCM_FUNC.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file provides callback function for SM task (be careful, SM and TCM belongs to different tasks and have different task priority)
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef _SM2TCM_FUNC_H
+#define _SM2TCM_FUNC_H
+
+#include "kal_general_types.h"
+
+typedef struct {
+    qos_struct qos_requested;
+    qos_struct qos_minimum;
+    kal_uint8 p_comp_algo;
+    kal_uint8 d_comp_algo;    
+    kal_uint16 req_n201u;
+} epsb_context_aux_para_struct;
+
+#if defined(__GEMINI__)
+extern void sm_get_current_modem_index(kal_uint8 * modem_index_ptr);
+#endif // ~ #if defined(__GEMINI__)
+
+extern kal_bool sm_tcm_get_epsb_context_aux_parameters(kal_uint8 epsb_id, epsb_context_aux_para_struct * returned_ptr);
+
+#endif // ~ _SM2TCM_FUNC_H
+
+
diff --git a/mcu/protocol/interface/l4/sm2tcm_struct.h b/mcu/protocol/interface/l4/sm2tcm_struct.h
new file mode 100644
index 0000000..f6675b8
--- /dev/null
+++ b/mcu/protocol/interface/l4/sm2tcm_struct.h
@@ -0,0 +1,346 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * SM2TCM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common enums of TCM and SM.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef _SM2TCM_STRUCT_H
+#define _SM2TCM_STRUCT_H
+
+#include "mmi_l3_enums.h"
+#include "mcd_l3_inc_gprs_struct.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "irat_common_struct.h"
+#include "sm_esm_struct.h"
+#include "l3_inc_local.h"
+#include "tftlib_common_struct.h"
+#include "mm2cm_struct.h"
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    qos_struct qos_negotiated; /* QoS negotiated with the NW*/
+    pdp_addr_type_enum pdp_addr_type; /* PDP Address Type, Can be IPV4, IPV6, PPP, IPV4V6*/
+    kal_uint8 pdp_addr_len; /* Length of PDP Address Contents*/
+    // If the pdp_addr_type == IPV4, this field contains IPV4 address, 
+    // If the pdp_addr_type == IPV6, this field contains IPV6 address, 
+    // If the pdp_addr_type == IPV4v6, this field contains IPV4 address in pdp_addr[0]~pdp_addr[3], 
+    //                                 IPV6 address in pdp_addr[4]~pdp_addr[19]
+    kal_uint8 pdp_addr[MAXIMUM_POSSIBLE_ADDR_LEN];
+    kal_bool cause_2_present; // if network has cause_2 value in ACTIVATE_PDP_CONTEXT_ACCEPT
+    ps_cause_enum cause_2; // the previous PDP accept cause_2 value, ex: PDP_TYPE_IPV4_ONLY_ALLOWED, 
+                        // PDP_TYPE_IPV6_ONLY_ALLOWED, SINGLE_ADDR_BEARERS_ONLY_ALLOWED
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+} smreg_pdp_activate_cnf_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    kal_bool is_rejected_by_nw; // if this PDP is rejected by NW using SM peer msg, KAL_TRUE, else, KAL_FALSE
+    ps_cause_enum cause; // Cause of rejection (also used for cause_2, 
+                      // if cause_2 violation, reject immediately without trying to send ACTIVATE_PDP_CONTEXT_REQUEST)
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+    kal_bool is_T3396_present; /* __MTC_SUPPORT__ R12 CR2171: Back-off timer value present */
+    kal_uint32 T3396_value_in_sec; /* __MTC_SUPPORT__ R12 CR2171: Back-off timer value in sec */
+    rat_enum current_rat; /* __MTC_SUPPORT__ */
+    kal_bool is_re_attempt_indicator_present; //R12 CR2171
+    kal_uint8 re_attempt_indicator; //R12 CR2171
+} smreg_pdp_activate_rej_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    pdp_addr_type_enum pdp_addr_type; /* PDP Address Type, Can be IPV4, IPV6, PPP, IPV4V6*/
+    kal_uint8 pdp_addr_len; /* Length of PDP Address Contents*/
+    kal_uint8 token_id; /* NW Initiated Context Identifier*/
+    kal_uint8 apn_len; /* Length of Access Point Name Parameter*/
+    kal_uint8 pdp_addr[MAXIMUM_POSSIBLE_ADDR_LEN];
+      // If the pdp_addr_type == IPV4, pdp_addr_len == 4, this field contains IPV4 address, 
+      // If the pdp_addr_type == IPV6, pdp_addr_len == 16, this field contains IPV6 address, 
+      // If the pdp_addr_type == IPV4v6, 
+      //  pdp_addr_len == 20, this field contains IPV4 address in pdp_addr[0]~pdp_addr[3], IPV6 address in pdp_addr[4]~pdp_addr[19]
+      //  pdp_addr_len == 4, this field contains IPV4 address in pdp_addr[0]~pdp_addr[3]
+      //  pdp_addr_len == 16, this field contains IPV6 address in pdp_addr[0]~pdp_addr[15]
+    kal_uint8 access_name[100];
+} smreg_pdp_activate_ind_struct;
+
+typedef struct {
+    //23.060 9.2.2.3 Network Requested Secondary PDP Context Activation Procedure using Gn
+    //The MS sends an Activate Secondary PDP Context Request:
+    //The Linked TI, TI, QoS Requested, and Protocol Configuration Options sent in the Activate secondary PDP Context Request shall be the same as previously received 
+    LOCAL_PARA_HDR
+    kal_uint8 token_id; /* NW Initiated Context Identifier*/
+    qos_struct qos_required; /* Mandatory IE, QoS IE in 24.008 Table 9.5.15a REQUEST SECONDARY PDP CONTEXT ACTIVATION */
+    kal_uint8 linked_nsapi; /* Mandatory IE, The nsapi value of the associated primary context*/
+    kal_bool tft_present;
+    tft_info_struct tft; /* Optional IE */
+    kal_uint8 config_protocol; /* Optional IE, TFT IE in 24.008 Table 9.5.15a REQUEST SECONDARY PDP CONTEXT ACTIVATION */
+    kal_uint8 config_option_len;
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+} smreg_pdp_activate_sec_ind_struct;
+
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    qos_struct qos_negotiated; /* QoS Negotaited with the NW*/
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+} smreg_pdp_activate_sec_cnf_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    ps_cause_enum cause; /* Cause of rejection*/
+    kal_bool is_T3396_present; /* __MTC_SUPPORT__  R12 CR2171: Back-off timer value present */
+    kal_uint32 T3396_value_in_sec; /* __MTC_SUPPORT__ R12 CR2171: Back-off timer value in sec */
+    rat_enum current_rat; /* __MTC_SUPPORT__ */
+    kal_bool is_re_attempt_indicator_present; //R12 CR2171
+    kal_uint8 re_attempt_indicator; //R12 CR2171
+} smreg_pdp_activate_sec_rej_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ps_cause_enum cause[11]; // Cause of Deactivation, if deact_fail == KAL_TRUE, the cause == RAT_TCM_RETRY_NEEDED_AFTER_IRAT
+    kal_uint8 tot_valid_nsapi; /* Total number of nsapi that are valid in the nsapi_list*/
+    kal_uint8 nsapi_list[11];
+    kal_bool deact_fail; // most scenario, deact_fail == KAL_FALSE. but when iRAT success and there is pending deact_req, then the deact_fail == TRUE
+    kal_bool is_T3396_present[11]; /* __MTC_SUPPORT__ */
+    kal_uint32 T3396_value_in_sec[11]; /* __MTC_SUPPORT__ */
+    rat_enum current_rat; /* __MTC_SUPPORT__ */
+} smreg_pdp_deactivate_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ps_cause_enum cause[11]; /* Cause of Deactivation*/
+    kal_uint8 tear_ind;
+    kal_uint8 tot_valid_nsapi; /* Total number of nsapi that are valid in the nsapi_list*/
+    kal_uint8 nsapi_list[11];
+    kal_bool is_T3396_present[11]; /* __MTC_SUPPORT__ */
+    kal_uint32 T3396_value_in_sec[11]; /* __MTC_SUPPORT__ */
+    rat_enum current_rat; /* __MTC_SUPPORT__ */
+} smreg_pdp_deactivate_ind_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    kal_bool qos_mod_neg_present; // this is an optional IE in MODIFY PDP CONTEXT ACCEPT (Network to MS direction)
+    qos_struct qos_mod_neg; /* The QoS negotiated with the NW after the modification*/
+    //context_mod_type_enum mod_type; /* Note: TCM should not store this into session_info_block_struct.mod_type. */
+    kal_bool tft_present; // if TCM send MOD_REQ with tft_present==TRUE, SM will send MOD_CNF with tft_present==TRUE
+    kal_bool qos_min_present; // if TCM send MOD_REQ with qos_min_present==TRUE, SM will send MOD_CNF with qos_min_present==TRUE
+    kal_uint8 config_protocol; // new, need to consider BCM mode
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+} smreg_pdp_modify_cnf_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    ps_cause_enum cause; /* Cause of rejection*/
+    kal_bool is_T3396_present; /* __MTC_SUPPORT__  R12 CR2171: Back-off timer value present */
+    kal_uint32 T3396_value_in_sec; /* __MTC_SUPPORT__ R12 CR2171: Back-off timer value in sec */
+    rat_enum current_rat; /* __MTC_SUPPORT__ */
+    kal_bool is_re_attempt_indicator_present; //R12 CR2171
+    kal_uint8 re_attempt_indicator; //R12 CR2171
+} smreg_pdp_modify_rej_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    kal_bool qos_negotiated_present; // this is an mandatory IE in MODIFY PDP CONTEXT REQUEST (Network to MS direction)
+    qos_struct qos_negotiated; // this is an mandatory IE in MODIFY PDP CONTEXT REQUEST (Network to MS direction)
+    //context_mod_type_enum mod_type; /* Note: TCM should not store this into session_info_block_struct.mod_type. */
+    kal_bool pdp_addr_present; // this is an optional IE in MODIFY PDP CONTEXT REQUEST (Network to MS direction)
+    kal_uint8 pdp_addr_len; /* Length of PDP Address contents*/
+    kal_uint8 pdp_addr[MAXIMUM_POSSIBLE_ADDR_LEN];
+    kal_bool tft_present; // this is an optional IE in MODIFY PDP CONTEXT REQUEST (Network to MS direction)
+    tft_info_struct tft; /* This field gives the TFT parameters*/
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+} smreg_pdp_modify_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 no_of_nsapis; 
+    kal_uint8 nsapi_list[11];
+} smreg_pdp_preserve_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 no_of_nsapis; 
+    kal_uint8 nsapi_list[11];
+} smreg_pdp_reestablish_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    irat_result_enum irat_result;
+    //sm_esm_context_status_struct pdp_transfer_result;
+} smreg_rat_change_complete_ind_struct;
+
+
+/** Structure used to indicate dual priority config, used if __MTC_SUPPORT__. */
+typedef struct 
+{
+    /** ILM specific header. */
+    LOCAL_PARA_HDR
+
+    /** used to indicate nas priority config, used if __MTC_SUPPORT__ */
+    nas_priority_config_enum nas_priority_config ;  
+
+    /** used to indicate eab override, used if __MTC_SUPPORT__ */
+    eab_override_config_enum eab_override_config ;
+} smreg_dual_priority_config_req_struct;
+
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/smic_struct.h b/mcu/protocol/interface/l4/smic_struct.h
new file mode 100644
index 0000000..ff1b51a
--- /dev/null
+++ b/mcu/protocol/interface/l4/smic_struct.h
@@ -0,0 +1,373 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+* smic_struct.h
+*
+* Project:
+* --------
+*   VMOLY
+*
+* Description:
+* ------------
+*
+* Author:
+* -------
+ * -------
+******************************************************************************/
+
+#ifndef _SMIC_STRUCT_H_
+#define _SMIC_STRUCT_H_
+
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "nas_sv_struct.h"
+#include "irat_common_enums.h"
+#include "irat_common_struct.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+#include "l3_inc_local.h"
+#include "tcm_eval_struct.h"
+
+/********************************************
+ *                  MACROS                  *
+ ********************************************/
+#define SMIC_MAX_NUM_OF_5G_IE_IN_PCO 10
+
+#define SMIC_5G_PCO_IE_S_NSSAI 0x001B
+#define SMIC_5G_PCO_IE_QOS_RULES 0x001C
+#define SMIC_5G_PCO_IE_SESSION_AMBR 0x001D
+#define SMIC_5G_PCO_IE_PDUS_ADDR_LIFETIME 0x001E
+#define SMIC_5G_PCO_IE_QOS_FLOW_DESCRIPTION 0x001F
+#define SMIC_5G_PCO_IE_ETHERNET_FRAME_PAYLOAD_MTU 0x0020
+#define SMIC_5G_PCO_IE_UNSTRUCTURED_LINK_MTU 0x0021
+
+#define SMIC_5G_PCO_IE_2_OCTET_QOS_RULES 0x0023
+#define SMIC_5G_PCO_IE_2_OCTET_QOS_FLOW_DESCRIPTION 0x0024
+
+
+
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+
+typedef enum {
+    SMIC_4G_BEARER_TYPE_DEFAULT,
+    SMIC_4G_BEARER_TYPE_DEDICATED,
+} smic_4g_bearer_type_enum;
+
+typedef enum {
+    SMIC_ACTIVE_SM_NONE, /* only exist in boot-up case */
+    SMIC_ACTIVE_SM_23G,
+    SMIC_ACTIVE_SM_4G,
+    SMIC_ACTIVE_SM_5G,
+    SMIC_ACTIVE_SM_MAX,
+} smic_active_sm_enum;
+
+typedef enum {
+    SMIC_CAMP_ON_AS_2G,
+    SMIC_CAMP_ON_AS_3G,
+    SMIC_CAMP_ON_AS_4G,
+    SMIC_CAMP_ON_AS_5G,
+    SMIC_CAMP_ON_AS_MAX,
+} smic_camp_on_as_rat_enum;
+
+typedef enum {
+    SMIC_5G_SET_RESULT_OK,
+    SMIC_5G_SET_RESULT_OK_BUT_NEED_ERR_ACTION,
+    SMIC_5G_SET_RESULT_MAX,
+} smic_5g_set_result_enum;
+
+
+typedef enum {
+    SMIC_4G_SET_RESULT_OK,
+    SMIC_4G_SET_RESULT_ERROR_SEND_CAUSE_TO_NW,
+    SMIC_4G_SET_RESULT_INVALID_INPUT_ARG,
+    SMIC_4G_SET_RESULT_MAX,
+} smic_4g_set_result_enum;
+
+
+typedef enum {
+    SMIC_REQ_ACTION_NONE, /* boot-up case */
+    SMIC_REQ_ACTION_FREE_CONTEXT, /* 3G5, 5G3 */
+    SMIC_REQ_ACTION_DO_CONTEXT_TRANSFER, /* 3G4, 4G3, 4G5 with N26, 5G4 with N26 */
+    SMIC_REQ_ACTION_FREE_CONTEXT_WITH_HANDOVER_CAUSE, /* 4G5 w/o N26, 5G4 w/o N26 */
+    SMIC_REQ_ACTION_MAX,
+} smic_req_action_enum;
+
+typedef struct {
+    kal_uint8 ebi;
+    kal_uint8 linked_ebi;
+    kal_uint8 mapped_psi;
+} smic_esm_active_ebi_info_struct;
+
+typedef struct {
+    kal_uint8 num_of_active_ebi;
+    smic_esm_active_ebi_info_struct active_ebi[MAX_L4_PS_EBI_NUM];
+} smic_esm_peer_msg_precheck_info_struct;
+
+typedef struct {
+    kal_uint8 num_of_to_del_epsb_ebi;
+    kal_uint8 to_del_epsb_ebi[MAX_L4_PS_EBI_NUM];
+    kal_bool need_sync_cause_to_nw;
+    ps_cause_enum cause;
+} smic_return_error_struct;
+
+
+typedef struct {
+    kal_bool                        is_always_on_pdu_session_req_present;
+    always_on_pdu_session_req_enum  always_on_pdu_session_req;
+    
+    kal_bool    rqos_support;
+    kal_bool    mh6_support;
+
+} smic_5g_ue_requested_context_struct;
+
+typedef struct {
+    kal_bool                        is_pdu_address_present;
+    ip_addr_struct                  pdu_address;
+    kal_bool                        is_dnn_present;
+    apn_struct                      dnn;
+    kal_bool                        is_emergency;
+    kal_bool                        is_ims;
+} smic_common_pdn_pdu_info_struct;
+
+typedef struct {
+    pdp_addr_type_enum              selected_pdu_session_type;
+    
+    kal_bool                        is_s_nssai_present;
+    pdus_s_nssai_struct             s_nssai;
+
+    kal_bool                        is_session_ambr_present;
+    pdus_session_ambr_struct        session_ambr;
+
+    kal_bool                        is_rq_timer_value_in_sec_present;
+    kal_uint32                      rq_timer_value_in_sec;
+
+    kal_bool                        is_pdu_session_release_time_present;
+    kal_uint32                      pdu_session_release_time;   
+
+    kal_bool                        is_always_on_pdu_session_ind_present;
+    always_on_pdu_session_ind_enum  always_on_pdu_session_ind;
+
+    pdus_qos_flow_struct qos_flow;
+
+    kal_bool is_capability_updated_to_nw;
+
+} smic_5g_nw_applied_context_struct;
+
+typedef enum {
+    SMIC_PDUS_CTX_STATUS_NOT_EXIST,
+    SMIC_PDUS_CTX_STATUS_EXIST_BY_5G_ASSOCIATED,
+    SMIC_PDUS_CTX_STATUS_EXIST_BY_4G_PROVIDED,
+    SMIC_PDUS_CTX_STATUS_MAX,
+} smic_pdus_ctx_status_enum;
+
+typedef struct {
+    /* maintained by VGSM owner */
+    smic_pdus_ctx_status_enum pdus_ctx_status;
+    
+    smic_5g_ue_requested_context_struct ue_requested_info;
+    smic_5g_nw_applied_context_struct   nw_applied_info;
+
+} smic_pdus_context_struct;
+
+
+typedef struct {
+    /* maintained by ESM owner */
+
+    //----Meta Data ; Do not directly access these items ; Use methods provided by smic_epsb.c -------------
+    kal_bool                        is_context_valid; // Whether this EPS Bearer is active. Only when EPS Bearer is active, is it's context valid
+    kal_uint8                       ebi; // The index in epsb_context[MAX_L4_PS_EBI_NUM] array.
+    kal_bool                        is_alloc_by_esm; 
+    kal_uint8                      ps_idx; 
+    // -------------------------
+
+
+
+
+    kal_uint8                       psi; // ID of PDU Session where this EPS bearer is established or its context is last modified.
+
+
+    irat_transfer_bearer_type_enum  bearer_type;
+
+    // Defined in TS 24.501 Mapped EPS Bearer Context IE
+    kal_bool                        is_apn_ambr_present;
+    eps_apn_ambr_struct             apn_ambr;
+
+    kal_bool                        is_eps_qos_present;
+    eps_qos_struct                  eps_qos;
+
+
+
+    struct
+    {
+        // this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
+        kal_bool                        is_ug_qos_present;
+        // negotiated qos parameter used in 23G
+        qos_struct                      ug_qos;
+        
+        // this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
+        kal_bool                        is_llc_sapi_present;
+        kal_uint8                       llc_sapi; 
+        
+        // this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
+        kal_bool                        is_radio_priority_present;
+        kal_uint8                       radio_priority;
+        
+        // this parameter is critical to 2G. if iRAT is 4G2, SM can just send MAP FAIL to ESM when this parameter is not present
+        kal_bool                        is_pfi_present;
+        kal_uint8                       pfi;
+        
+        // this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
+        kal_bool                        is_ti_present;
+        irat_ti_struct                  ti;
+    } legacy_ctxt; // 23G Param.
+
+    
+} smic_ebi_context_struct;
+
+/* SM/ESM */
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+} smic_active_sm_change_start_ind_struct;
+
+/* SM/ESM */
+typedef struct {
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    irat_result_enum irat_result;
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+    ho_from_lte_type_enum ir_ho_type;
+    smic_req_action_enum action; /* new for with/without N26 */
+} smic_active_sm_change_finish_ind_struct;
+
+/* ESM */
+typedef struct {
+    LOCAL_PARA_HDR
+    enasas_add_epsbearer_list_struct add_list;
+} smic_esm_as_para_update_ntf_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_active_rat_4g;
+} smic_esm_active_rat_ind_struct;
+
+/* VGSM/RAT_TCM/RATDM */
+typedef struct {
+    LOCAL_PARA_HDR
+    smic_active_sm_enum source_sm;
+    smic_active_sm_enum target_sm;
+    smic_req_action_enum xsm_action;
+    smic_camp_on_as_rat_enum camp_on_as_rat;
+} smic_active_sm_change_ind_struct;
+
+typedef struct {
+    kal_uint16 protocol_id;
+    kal_uint16 protocol_config_len;
+    kal_uint8 *protocol_config;
+} smic_5g_config_option_struct;
+
+typedef struct {
+    smic_common_pdn_pdu_info_struct common_pdus_info;
+    smic_pdus_context_struct pdus_info;
+} smic_get_vgsm_context_struct;
+
+/* ESM<>SMIC */
+typedef struct {
+    smic_common_pdn_pdu_info_struct common_pdus_info;
+    smic_5g_nw_applied_context_struct pdus_info;
+} smic_vgsm_associated_ctx_struct;
+
+
+typedef struct
+{
+    bearer_ctxt_struct pdp_context; // Common struct to store 5G Mapped EPS Bearer / 4G EPS Bearer / 23G PDP Context
+
+    // Additional Params. used for 4G<>5G
+    kal_uint8            psi;
+    // Only valid when this is a Default EPS Bearer in 4G or 5G 
+    kal_bool             is_apn_ambr_present;
+    eps_apn_ambr_struct  apn_ambr;
+
+    kal_bool is_ims_bearer;
+
+
+} esm_smic_epsb_context_struct;
+
+typedef struct
+{
+  
+    // NSAPI / EBI (range is 5~15)
+    kal_uint8                       bearer_id;
+   
+    // 5G4 default/dedicated bearer would set this field.
+    apn_struct                      apn;
+    
+    // this parameter is critical to 23G. SM can just send MAP FAIL to ESM when this parameter is not present
+    kal_bool                        is_ug_qos_present;
+    // negotiated qos parameter used in 23G
+    qos_struct                      ug_qos;
+    
+    kal_bool                        is_eps_qos_present;
+    // When ESM transfer more than GPRS_MAX_PDP_SUPPORT contexts to SM, 
+    // SM need to use eps_qos to decide which contexts need to be mapped failed and inform ESM to local release it.
+    eps_qos_struct           eps_qos;
+            
+    bearer_service_type_enum				bearer_service_type;
+
+}esm_smic_precheck_epsb_context_struct;
+
+
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+
+/********************************************
+ *           FUNCTION DECLARATIONS          *
+ ********************************************/
+
+
+#endif /* _SMIC_STRUCT_H_ */
+
+
diff --git a/mcu/protocol/interface/l4/sms2smsal_enum.h b/mcu/protocol/interface/l4/sms2smsal_enum.h
new file mode 100644
index 0000000..8a15e94
--- /dev/null
+++ b/mcu/protocol/interface/l4/sms2smsal_enum.h
@@ -0,0 +1,112 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *	sms2smsal_enum.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file contains common enums, defined constants for
+ *   interface of SMS and SMSAL.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef _SMS2SMSAL_ENUM_H
+#define _SMS2SMSAL_ENUM_H
+
+
+typedef enum
+{
+   SMS_SMMA_REQ,
+   SMS_SMMA_ABORT
+} sms_smma_req_enum;
+
+typedef enum
+{
+   SMS_SUCCESS	= 0,
+   SMS_FAIL
+} sms_ret_code_enum;
+
+typedef enum
+{  
+   SMS_ERR_TYPE_MS_ERROR,
+   SMS_ERR_TYPE_CP_ERROR,
+   SMS_ERR_TYPE_RP_ERROR,
+   SMS_ERR_TYPE_NW_ERROR
+} sms_error_type_enum;
+
+typedef enum
+{  
+   SMS_SERVICE_BIT_MASK_23G_SERVICE = 0x01,
+   SMS_SERVICE_BIT_MASK_NR_SERVICE = 0x02
+} sms_service_bit_mask_enum;
+
+
+   
+#endif /* _SMS2SMSAL_ENUM_H */
+
+
diff --git a/mcu/protocol/interface/l4/smsal_nrrc_struct.h b/mcu/protocol/interface/l4/smsal_nrrc_struct.h
new file mode 100644
index 0000000..02fbd58
--- /dev/null
+++ b/mcu/protocol/interface/l4/smsal_nrrc_struct.h
@@ -0,0 +1,75 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+ * ---------
+ *   smsal_nrrc_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *  Messages and common definitions for SMSAL-NRRC interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+
+#ifndef  _SMSAL_NRRC_STRUCT_H_
+#define  _SMSAL_NRRC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+
+
+typedef smsal_4g5g_cbch_req_struct smsal_nrrc_cbch_req_struct;
+
+
+typedef smsal_4g5g_cb_update_req_struct smsal_nrrc_cb_update_req_struct;
+
+
+typedef smsal_4g5g_cb_data_ind_struct smsal_nrrc_cb_data_ind_struct;
+
+
+typedef smsal_4g5g_cb_msg_removal_req_struct smsal_nrrc_cb_msg_removal_req_struct;
+
+
+#endif /* _SMSAL_NRRC_STRUCT_H_ */
diff --git a/mcu/protocol/interface/l4/smsal_peer_pun.h b/mcu/protocol/interface/l4/smsal_peer_pun.h
new file mode 100644
index 0000000..0984d5d
--- /dev/null
+++ b/mcu/protocol/interface/l4/smsal_peer_pun.h
@@ -0,0 +1,156 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * smsal_peer_pun.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is for packing and unpacking of SMS-TL peer message.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+/*******************************************************************************
+*  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) 2002
+*
+*******************************************************************************
+ *  FILENAME : smsal_peer_pun.h
+ *  SYNOPSIS : Functions for encoding/decoding.
+ *
+ *                      R E V I S I O N    H I S T O R Y
+ *
+ */
+#ifdef MTK_PEER 
+#define IMP __declspec(dllimport) 
+#else 
+#define IMP 
+#endif 
+#ifndef _SMSAL_PEER_PUN_H
+#define _SMSAL_PEER_PUN_H
+
+#include "kal_general_types.h"
+
+IMP unsigned int smsal_deliver_report_nack_peer_struct_bits(void *);
+IMP void smsal_deliver_report_nack_peer_struct_alloc(void *);
+IMP void smsal_deliver_report_nack_peer_struct_dealloc(void *);
+IMP unsigned int smsal_deliver_report_nack_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_deliver_report_nack_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_deliver_report_ack_peer_struct_bits(void *);
+IMP void smsal_deliver_report_ack_peer_struct_alloc(void *);
+IMP void smsal_deliver_report_ack_peer_struct_dealloc(void *);
+IMP unsigned int smsal_deliver_report_ack_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_deliver_report_ack_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_submit_peer_struct_bits(void *);
+IMP void smsal_submit_peer_struct_alloc(void *);
+IMP void smsal_submit_peer_struct_dealloc(void *);
+IMP unsigned int smsal_submit_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_submit_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_deliver_peer_struct_bits(void *);
+IMP void smsal_deliver_peer_struct_alloc(void *);
+IMP void smsal_deliver_peer_struct_dealloc(void *);
+IMP unsigned int smsal_deliver_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_deliver_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_submit_report_nack_peer_struct_bits(void *);
+IMP void smsal_submit_report_nack_peer_struct_alloc(void *);
+IMP void smsal_submit_report_nack_peer_struct_dealloc(void *);
+IMP unsigned int smsal_submit_report_nack_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_submit_report_nack_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_submit_report_ack_peer_struct_bits(void *);
+IMP void smsal_submit_report_ack_peer_struct_alloc(void *);
+IMP void smsal_submit_report_ack_peer_struct_dealloc(void *);
+IMP unsigned int smsal_submit_report_ack_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_submit_report_ack_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_status_report_peer_struct_bits(void *);
+IMP void smsal_status_report_peer_struct_alloc(void *);
+IMP void smsal_status_report_peer_struct_dealloc(void *);
+IMP unsigned int smsal_status_report_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_status_report_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+IMP unsigned int smsal_command_peer_struct_bits(void *);
+IMP void smsal_command_peer_struct_alloc(void *);
+IMP void smsal_command_peer_struct_dealloc(void *);
+IMP unsigned int smsal_command_peer_struct_pack(kal_uint8 *, void *, unsigned int);
+IMP unsigned int smsal_command_peer_struct_unpack(void *, kal_uint8 *, unsigned int, unsigned int, void *);
+
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/smsal_ratcm_struct.h b/mcu/protocol/interface/l4/smsal_ratcm_struct.h
new file mode 100644
index 0000000..54c1782
--- /dev/null
+++ b/mcu/protocol/interface/l4/smsal_ratcm_struct.h
@@ -0,0 +1,108 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   smsal_ratcm_struct.h
+ *
+ * Project:
+ * --------
+ *   MONZA
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ******************************************************************************/
+
+#ifndef SMSAL_RATCM_STRUCT_H
+#define SMSAL_RATCM_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "l3_inc_enums_public.h"
+
+typedef struct {
+    LOCAL_PARA_HDR   
+    kal_bool is_cbs_required;
+	rat_enum cb_rat_enabled;
+} smsal_ratcm_cbch_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR   
+    kal_uint16 cbmi[CB_MAX_MSG_CBMI_NUM];
+    kal_uint16 cbmid[CB_MAX_MSG_CBMID_NUM];
+    kal_uint16 cbmir[CB_MAX_MSG_CBMIR_NUM];
+    kal_uint16 dcs[CB_MAX_LANG_NUM];
+    kal_bool is_all_language_on;
+    l4c_cb_set_type_enum set_type;
+} smsal_ratcm_cb_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 rat; 
+    kal_uint16 msgid;
+    kal_uint16 serial_num;
+    kal_uint8 dcs;
+    kal_bool is_mids;
+    kal_uint8 page_no;
+    kal_uint8 total_pages;
+    kal_uint8 page_data[CB_MAX_DATA_NUM_PER_PAGE];
+
+#ifdef __GSM_RAT__
+    kal_uint8 valid_blk_num; /* for last bit */
+#endif
+} smsal_ratcm_cb_data_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 geography_type;
+} smsal_ratcm_cb_gs_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint16 mid;
+    kal_uint16 sn;
+} smsal_ratcm_cb_msg_removal_req_struct;
+
+typedef smsal_ratcm_cb_msg_removal_req_struct smsal_ratcm_cb_dup_det_timer_stop_ind_struct;
+
+#endif /* SMSAL_RATCM_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/ssds_l4c_struct.h b/mcu/protocol/interface/l4/ssds_l4c_struct.h
new file mode 100644
index 0000000..74f6ddf
--- /dev/null
+++ b/mcu/protocol/interface/l4/ssds_l4c_struct.h
@@ -0,0 +1,186 @@
+/*****************************************************************************
+*  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) 2013
+*
+*  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:
+* ------------
+*   ssds_l4c_struct.h
+*
+* Project:
+* ------------
+*   MOLY
+*
+* Description:
+* ------------
+*   This file is intends for L4C/SSDS interface
+*
+* Author:
+* -----------
+ * -------
+*****************************************************************************/
+#ifndef _SSDS_L4C_STRUCT_H
+#define _SSDS_L4C_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "l3_inc_enums_public.h"
+#include "ps_public_enum.h"
+#include "rmmi_common_enum.h"
+#include "l4_vdm_enum.h"
+#include "sim_public_enum.h"
+#include "l4b_vdm_struct.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+#include "l3_inc_enums.h"
+#include "c2k_irat_msg_struct.h"
+#include "l4c_eval_struct.h"
+
+#define SSDS_L4C_NEED_SIP_MSG_DATA 0
+
+
+/* MSG_ID_SSDS_L4C_FDN_CHECK_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8     dial_num[MAX_CC_ADDR_LEN];
+} ssds_l4c_fdn_check_req_struct;
+
+/* MSG_ID_SSDS_L4C_FDN_CHECK_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool            is_allowed;
+	phb_errno_enum      result; /* phb_errno_enum; Operation result*/
+    kal_uint16          cause;
+} ssds_l4c_fdn_check_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        is_imsvops_support;
+} ssds_l4c_nw_feature_ind_struct;
+
+
+/*--------------------------------------------------------
+ * STKUSSD
+ *--------------------------------------------------------*/
+// As CSM defined, USSD string max length before unpacking = 160
+// Consider 7-bit coding => ASCII: 182
+#define STK_IMS_USSD_MAX_LEN (182)   // Maximum USSI string/response in ASCII
+
+typedef enum
+{
+    SIP_MSG_TYPE_NONE,
+	SIP_MSG_TYPE_INFO,
+	SIP_MSG_TYPE_BYE
+	
+}ssds_l4c_sip_msg_type;
+
+/* MSG_ID_SSDS_L4C_STK_IMS_USSD_CONFIG_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_icon_display;  // inform L4 if AP shows icon or not (AT+STKUSSD=0 or 4)
+} ssds_l4c_stk_ims_ussd_config_req_struct;
+
+/* MSG_ID_SSDS_L4C_STK_IMS_USSD_CONFIG_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool need_inform_user;  // inform SSDS if URC report is needed
+
+    // Peer Buffer: ussd string, ASCII string (no '\0')
+} ssds_l4c_stk_ims_ussd_config_cnf_struct;
+
+/* MSG_ID_SSDS_L4C_STK_IMS_USSD_RES */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_successful;
+    kal_bool need_retry_cs;
+	#if SSDS_L4C_NEED_SIP_MSG_DATA
+	ssds_l4c_sip_msg_type 	sip_msg;
+	#endif
+    sat_terminal_res_enum   tr_cause;
+    sat_additional_info_for_res_enum  additional_cause;
+
+    // Peer Buffer: response string, hex string of ASCII string (with '\0')
+} ssds_l4c_stk_ims_ussd_res_struct;
+
+/* MSG_ID_SSDS_L4C_STK_CS_USSD_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_icon_display;  // inform L4 if AP shows icon or not (AT+STKUSSD=0 or 4)
+} ssds_l4c_stk_cs_ussd_req_struct;
+
+
+/*--------------------------------------------------------
+ * STKSS
+ *--------------------------------------------------------*/
+/* MSG_ID_SSDS_L4C_STKSS_CONFIG_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_icon_display;  // inform L4 if AP shows icon or not (AT+STKSS=0 or 4)
+} ssds_l4c_stkss_config_req_struct;
+
+/* MSG_ID_SSDS_L4C_STKSS_CONFIG_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    // Peer Buffer: ss number, raw data in binary
+} ssds_l4c_stkss_config_cnf_struct;
+
+/* MSG_ID_SSDS_L4C_STKSS_RES */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_successful;
+    kal_bool need_retry_cs;
+    sat_terminal_res_enum      tr_cause;
+    sat_additional_info_for_res_enum  additional_cause;
+
+    // Peer Buffer: response data, raw data in binary(not valid now)
+} ssds_l4c_stkss_res_struct;
+
+/* MSG_ID_SSDS_L4C_STKSS_CS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ssds_l4c_stkss_cs_req_struct;
+
+#endif
diff --git a/mcu/protocol/interface/l4/tcm2sm_struct.h b/mcu/protocol/interface/l4/tcm2sm_struct.h
new file mode 100644
index 0000000..a144faa
--- /dev/null
+++ b/mcu/protocol/interface/l4/tcm2sm_struct.h
@@ -0,0 +1,342 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * TCM2SM_STRUCT.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the common enums of TCM and SM.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+#ifndef _TCM2SM_STRUCT_H
+#define _TCM2SM_STRUCT_H
+
+#include "mcd_l3_inc_gprs_struct.h"
+#include "l3_inc_local.h"
+#include "mmi_l3_enums.h"
+#include "mmi_sm_enums.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "ps_public_struct.h"
+#include "tftlib_common_struct.h"
+#include "l3_inc_enums.h"
+#include "tcm_api.h"
+
+#include "tcm_context_public.h"
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum {
+    PDN_REQUEST_TYPE_INITIAL_REQUEST = REQUEST_TYPE_INITIAL_REQUEST,
+    PDN_REQUEST_TYPE_HANDOVER = REQUEST_TYPE_HANDOVER, 
+    PDN_REQUEST_TYPE_UNUSED = REQUEST_TYPE_UNUSED, 
+    PDN_REQUEST_TYPE_EMERGENCY = REQUEST_TYPE_EMERGENCY,
+    PDN_REQUEST_TYPE_HANDOVER_OF_EMERGENCY = REQUEST_TYPE_HANDOVER_OF_EMERGENCY, 
+    
+    PDN_REQUEST_TYPE_NONE = 0xFF, 
+} pdn_request_type_enum ;
+
+typedef enum {
+    xSM_PROCESSING_TIME_UNLIMITED,
+    xSM_PROCESSING_TIME_LIMITED
+} xsm_processing_time_type_enum;
+
+typedef struct
+{
+    xsm_processing_time_type_enum  processing_time_type;
+    kal_uint32                     processing_time_limit; /* in timestamp */
+    kal_bool                       is_retry_by_l4;
+} req_processing_info_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    qos_struct qos_requested; /* QoS requested by the Application*/
+    qos_struct qos_minimum; /* Minimum QoS required by the Application*/
+    kal_uint8 token_id; /* This field is used in case the requestis sent for a NW initiated context.*/
+    pdp_addr_type_enum pdp_addr_type; /* It gives the address type whether it is IPV4, IPV6 or PPP*/
+    pdp_addr_len_enum pdp_addr_len; /* Length of the PDP address*/
+    kal_uint8 apn_len; /* Length of Access Point Name Parameter*/
+    kal_uint8 p_comp_algo; /* Algo to be used for Protocol Compression. Used only in case of GPRS*/
+    kal_uint8 d_comp_algo; /* Algo to be used for Data Compression. Used only in case if GPRS*/
+    initiated_enum initiated_by; /* This field will tell that the request has come for a NW initiated context or for MS initiated*/
+    kal_uint8 pdp_addr[MAXIMUM_POSSIBLE_ADDR_LEN]; // if MT IPv4v6 PDP activation, 
+                                         // NW may carry 20 bytes (IPv4+IPv6) address to UE, 
+                                         // UE need to carry this 20 bytes address in ACTIVATE_PDP_CONTEXT_REQUEST
+    kal_uint8 access_name[100];
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+    pdp_auxinfo_struct      aux_info; //erica 20070112
+    tcm_qos_mode_enum qos_mode ; /* __MEDIATEK_SMART_QOS__ */
+    nas_priority_config_enum nas_priority_config ;   /* __MTC_SUPPORT__ */
+    eab_override_config_enum eab_override_config ;   /* __MTC_SUPPORT__ */
+    rat_enum rat; /* __MTC_SUPPORT__ */
+    pdn_request_type_enum request_type ;
+    req_processing_info_struct req_processing_info;
+} smreg_pdp_activate_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    smreg_pdp_activate_req_struct trace;
+} sm_trace_smreg_pdp_activate_req_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    ps_cause_enum cause; /* Cause of deactivation*/
+    teardown_enum tear_ind; /* This field indicates whether to deactivate all the associated context or only one for which request has come*/
+    #ifdef __LOCAL_DEACTIVATE_PDP_SUPPORT__
+    kal_bool local_deactivate_pdp; /* __LOCAL_DEACTIVATE_PDP_SUPPORT__ */	
+    #endif // ~ __LOCAL_DEACTIVATE_PDP_SUPPORT__
+    req_processing_info_struct req_processing_info;
+} smreg_pdp_deactivate_req_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+
+    initiated_enum initiated_by; /* This field will tell that the request has come for a NW initiated context or for MS initiated*/
+    kal_uint8 token_id; /* This field is used in case the requestis sent for a NW initiated context.*/
+
+    qos_struct qos_requested; /* QoS requested by the user*/
+    qos_struct qos_minimum; /* Minimum QoS required by the User*/
+    tft_info_struct tft; /* This field gives the TFT parameters*/
+    kal_uint8 linked_nsapi; /* The nsapi value of the associated primary context*/
+    kal_uint8 p_comp_algo; /* Protocol Compression Algorithm. Used only for GPRS*/
+    kal_uint8 d_comp_algo; /* Data Comprssion Algorithm. Used only for UMTS*/
+    kal_uint8 config_protocol;
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+    pdp_auxinfo_struct      aux_info; //erica 20070112
+    tcm_qos_mode_enum qos_mode ; /* __MEDIATEK_SMART_QOS__ */
+
+    nas_priority_config_enum nas_priority_config ;   /* __MTC_SUPPORT__ */
+    eab_override_config_enum eab_override_config ;   /* __MTC_SUPPORT__ */
+    rat_enum rat; /* __MTC_SUPPORT__ */
+    req_processing_info_struct req_processing_info;
+} smreg_pdp_activate_sec_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    smreg_pdp_activate_sec_req_struct trace;
+} sm_trace_smreg_pdp_activate_sec_req_struct;
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+    kal_bool qos_mod_present; // this is an optional IE in MODIFY PDP CONTEXT REQUEST (MS to Network direction)
+    qos_struct qos_mod; /* New QoS Requested*/
+    kal_bool qos_min_present;
+    qos_struct min_qos;  /* minimum QoS */  //__3G_QOS__
+    kal_bool tft_present; // this is an optional IE in MODIFY PDP CONTEXT REQUEST (MS to Network direction)
+    tft_info_struct tft; /* New TFT Parameters*/
+    //context_mod_type_enum mod_type; /* The type od modification initiated by user.*/
+    tcm_qos_mode_enum qos_mode ;
+    kal_uint8 config_protocol; // new, need to consider BCM:MS/NW ?
+    kal_uint8 config_option_len; /* config option length*/
+    config_option_struct config_option[MAX_NUM_CONFIG_OPTION_PACKETS];
+
+    nas_priority_config_enum nas_priority_config ;   /* __MTC_SUPPORT__ */
+    eab_override_config_enum eab_override_config ;   /* __MTC_SUPPORT__ */
+    rat_enum rat; /* __MTC_SUPPORT__ */
+    req_processing_info_struct req_processing_info;
+} smreg_pdp_modify_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ps_cause_enum cause; /* Cause of rejection*/
+    kal_uint8 token_id; /* Context Indentifier*/
+    pdp_addr_type_enum pdp_addr_type; /* PDP Address Type, can be IPV4, IPV6, PPP*/
+    pdp_addr_len_enum pdp_addr_len; /* Length of PDP Address field*/
+    kal_uint8 apn_len; /* Length of Access Point Name Parameter*/
+    kal_uint8 pdp_addr[MAXIMUM_POSSIBLE_ADDR_LEN];
+    kal_uint8 access_name[100];
+} smreg_pdp_activate_rej_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    ps_cause_enum cause; /* Cause of rejection*/
+    kal_uint8 token_id; /* Context Indentifier*/
+} smreg_pdp_activate_sec_rej_rsp_struct;
+
+
+typedef struct {
+    NSAPI_STRUCT_HDR // LOCAL_PARA_HDR + kal_uint8 nsapi (SM code assume nsapi is the first parameter of some primitive)    
+} smreg_allow_dl_packet_ind_struct;
+
+#endif 
+
+
diff --git a/mcu/protocol/interface/l4/tcm_pam_struct.h b/mcu/protocol/interface/l4/tcm_pam_struct.h
new file mode 100644
index 0000000..8f500c2
--- /dev/null
+++ b/mcu/protocol/interface/l4/tcm_pam_struct.h
@@ -0,0 +1,330 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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).
+*
+*****************************************************************************/
+
+#ifndef TCM_PAM_STRUCT_H
+#define TCM_PAM_STRUCT_H
+
+#include "kal_public_api.h"
+#include "ps_public_enum_public.h"
+#include "l3_inc_local.h"
+#include "tcm2sm_struct.h"
+#include "ps_public_struct.h"
+#include "ps_public_enum.h"
+#include "vgsm_common_def_public.h"
+#include "tftlib_common_struct.h"
+/********************************************
+ *                  MACROS                  *
+ ********************************************/
+
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_EST_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    kal_bool                        is_pdu_session_type_present;
+    pdp_addr_type_enum              pdu_session_type;
+
+    kal_bool                        is_ssc_mode_present;
+    kal_uint8                       ssc_mode;
+
+    kal_bool                        is_s_nssai_present;
+    pdus_s_nssai_struct             s_nssai;
+
+    kal_bool                        is_dnn_present;
+    apn_struct                      dnn;
+
+    pdn_request_type_enum           request_type;               // @ ESTABLISHMENT REQUEST
+    pdus_access_type_enum           access_type;
+    kal_bool                        rqos_support;               // @ ESTABLISHMENT REQUEST (default: N) 
+    kal_bool                        mh6_support;                // @ ESTABLISHMENT REQUEST (default: N)
+
+    kal_bool                        is_always_on_pdu_session_req_present;
+    always_on_pdu_session_req_enum  always_on_pdu_session_req;
+    
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+
+    kal_bool                        is_old_psi_present; 
+    kal_uint8                       old_psi;
+
+    tcm_im_cn_signalling_enum       user_defined_im_cn_signalling_flag;	
+    req_processing_info_struct  	req_processing_info;
+
+    kal_bool                        is_ladn_dnn;
+} tcm_pam_pdu_session_est_req_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_EST_CNF */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    pdp_addr_type_enum              selected_pdu_session_type;
+    kal_uint8                       selected_ssc_mode;
+	kal_bool 						is_dnn_present;
+    apn_struct                      dnn;
+
+    //tft_info_struct                 rules_per_qos_flow[VGSM_MAX_QFI_NUM]; // remove after tftlib is ready for 5G
+    
+    pdus_session_ambr_struct        session_ambr;
+
+    ps_cause_enum                   cause;
+
+    kal_bool                        is_pdu_address_present;
+    ip_addr_struct                  pdu_address;
+
+    /** rq_timer_value_in_sec: 
+     * If UE sent RqoS supported     in capability IE, but NW did not provide it -> return default value (60s)
+     * If UE sent RqoS not supported in capability IE, 
+     *  - and NW did not provide it -> return timer deactivated (0xFFFF) 
+     *  - but NW provided it        -> return timer deactivated (0xFFFF)   
+     */
+    kal_uint32                      rq_timer_value_in_sec;    
+    
+    kal_bool                        is_s_nssai_present;
+    pdus_s_nssai_struct             s_nssai;
+
+    kal_bool                        is_always_on_pdu_session_ind_present;
+    always_on_pdu_session_ind_enum  always_on_pdu_session_ind;
+    
+    // change to a standalone IND? 
+    //kal_bool                        is_mapped_eps_bearer_contexts_present;
+    //pdus_mapped_epsb_context_struct mapped_eps_bearer_contexts;
+
+    kal_bool                        is_eap_message_present;
+    pdus_eap_message_struct         eap_message;
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+
+    pkt_filters_act_list_node_struct *pf_action_list_node;
+
+    kal_uint8                       qfi_with_default_rule;
+    qos_params_struct               *qos_profiles[VGSM_MAX_QFI_NUM]; /* all qos profiles under PDU session */
+    qos_flow_action_table_struct    qf_action_table;
+
+    pdus_access_type_enum           access_type;
+} tcm_pam_pdu_session_est_cnf_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_EST_REJ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    ps_cause_enum                   cause;
+
+    kal_bool                        is_backoff_timer_value_present; 
+    kal_uint32                      backoff_timer_value_in_sec;  // 0xFFFF = timer deactivated 
+
+    kal_bool                        is_allowed_ssc_mode_present;
+    kal_uint8                       allowed_ssc_mode;
+
+    kal_bool                        is_eap_message_present;
+    pdus_eap_message_struct         eap_message;
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+    
+	kal_bool                    	is_re_attempt_indicator_present; 
+    kal_uint8                   	re_attempt_indicator; 
+
+    kal_bool is_vgsm_congestion_reattempt_ind_present;
+    vgsm_congestion_reattempt_ind_struct vgsm_congestion_reattempt_ind;
+} tcm_pam_pdu_session_est_rej_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_MOD_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+
+    // SM capability (currently used in iRAT case) 
+    kal_bool                        rqos_support; /* TCM always brings it to VGSM */
+    kal_bool                        mh6_support;  /* TCM always brings it to VGSM */
+    
+    kal_bool                        is_cause_present; /* used by VGSM */
+    ps_cause_enum                   cause;            /* used by VGSM */
+
+    kal_bool                        is_always_on_pdu_session_req_present; /* TCM always brings it to VGSM */
+    always_on_pdu_session_req_enum  always_on_pdu_session_req;
+
+    kal_bool                        is_requested_qos_rules_present;
+    qrs_raw_struct                  requested_qos_rules;
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];    
+
+    /** if operation code of qos_flow_description VGSM decided is "modify existing QoS flow description"
+     *     VGSM should set E bit = 1 (parameters list replacement)
+     *     and VGSM should bring all parameters to NW (include NW provided previoulsy, and user(upper layer) given)
+     * if operation code of qos_flow_description VGSM decided is "create new qos flow description"
+     *     VGSM bring user(upper layer) given parameters to NW
+     */
+    qos_flow_descriptions_struct    requested_qf_descriptions;
+
+	req_processing_info_struct  	req_processing_info;
+
+    /* VGSM use only */
+    kal_bool                        need_to_update_capability_to_nw;
+    kal_uint16                      to_delete_mapped_epsb_ebi_bitmap;
+    kal_uint16                      vgsm_init_mod_reason_bitmap;
+} tcm_pam_pdu_session_mod_req_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_MOD_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    ps_cause_enum                   cause;
+    pdus_session_ambr_struct        session_ambr;
+
+    /** rq_timer_value_in_sec: 
+     * If UE sent RqoS supported     in capability IE, but NW did not provide it -> return default value (60s)
+     * If UE sent RqoS not supported in capability IE, 
+     *  - and NW did not provide it -> return timer deactivated (0xFFFF) 
+     *  - but NW provided it        -> return timer deactivated (0xFFFF)   
+     */
+    kal_uint32                      rq_timer_value_in_sec;
+
+    kal_bool                        is_always_on_pdu_session_ind_present;
+    always_on_pdu_session_ind_enum  always_on_pdu_session_ind;
+
+    
+    // change to a standalone IND? 
+    //kal_bool                        is_mapped_eps_bearer_contexts_present;
+    //pdus_mapped_epsb_context_struct mapped_eps_bearer_contexts;
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+
+    pkt_filters_act_list_node_struct *pf_action_list_node;
+
+    kal_uint8                       qfi_with_default_rule;
+    qos_params_struct               *qos_profiles[VGSM_MAX_QFI_NUM]; /* all qos profiles under PDU session */
+    qos_flow_action_table_struct    qf_action_table;
+
+} tcm_pam_pdu_session_mod_ind_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_MOD_CNF */
+typedef tcm_pam_pdu_session_mod_ind_struct tcm_pam_pdu_session_mod_cnf_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_MOD_REJ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    ps_cause_enum                   cause;
+
+    kal_bool                        is_backoff_timer_value_present; 
+    kal_uint32                      backoff_timer_value_in_sec; 
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];   
+
+	kal_bool                    	is_re_attempt_indicator_present;
+    kal_uint8                   	re_attempt_indicator;
+    
+    kal_bool is_vgsm_congestion_reattempt_ind_present;
+    vgsm_congestion_reattempt_ind_struct vgsm_congestion_reattempt_ind;
+} tcm_pam_pdu_session_mod_rej_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_REL_REQ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+
+    rel_req_behavior_enum           rel_behavior;
+
+    kal_bool                        is_cause_present; /* used by VGSM */
+    ps_cause_enum                   cause;            /* used by VGSM */
+	
+	tcm_pdp_deact_reason_enum		rel_reason;		/* used by PAM for VzW SA DR requirement*/
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+
+	req_processing_info_struct  	req_processing_info;
+} tcm_pam_pdu_session_rel_req_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_REL_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    ps_cause_enum                   cause;
+
+    kal_bool                        is_backoff_timer_value_present; 
+    kal_uint32                      backoff_timer_value_in_sec; 
+
+    kal_bool                        is_eap_message_present;
+    pdus_eap_message_struct         eap_message;
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+
+    kal_bool is_vgsm_congestion_reattempt_ind_present;
+    vgsm_congestion_reattempt_ind_struct vgsm_congestion_reattempt_ind;
+} tcm_pam_pdu_session_rel_ind_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_REL_CNF */
+typedef tcm_pam_pdu_session_rel_ind_struct tcm_pam_pdu_session_rel_cnf_struct;
+
+/* MSG_ID_TCM_PAM_PDU_SESSION_REL_REJ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8                       psi;
+    ps_cause_enum                   cause;
+
+    kal_uint8                       epco_num; 
+    config_option_struct            epco[MAX_NUM_CONFIG_OPTION_PACKETS];
+} tcm_pam_pdu_session_rel_rej_struct;
+
+/* MSG_ID_TCM_PAM_4G5_CONTEXT_TRANSFERRED_IND */
+typedef struct {
+    LOCAL_PARA_HDR
+    
+    kal_uint8 num_of_pdus_info;
+    context_transfer_pdus_info_struct *pdus_info[MAX_NUM_OF_SUPPORTED_PDUS];
+
+    kal_uint8 num_of_map_info;
+    ebi_map_to_psi_info_struct map_info[MAX_L4_PS_EBI_NUM];
+} tcm_pam_4g5_context_transferred_ind_struct;
+
+
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+
+/********************************************
+ *           FUNCTION DECLARATIONS          *
+ ********************************************/
+
+#endif /* TCM_PAM_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/tcm_ratdm_struct.h b/mcu/protocol/interface/l4/tcm_ratdm_struct.h
new file mode 100644
index 0000000..03081f0
--- /dev/null
+++ b/mcu/protocol/interface/l4/tcm_ratdm_struct.h
@@ -0,0 +1,162 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   tcm_ratdm_struct.h
+ *
+ * Project:
+ * --------
+ *   MONZA
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ * 
+ * -------
+ * $Log$
+ *
+ * 02 16 2017 nehal.kumar
+ * MOLY00175408 Porting to UMOLYA(MPS -RSIM Interface Porting ) Original CL #2650839 EXCEPT UPCM Changes
+ *
+ * 01 24 2013 poying.chuang
+ * [MOLY00009298] [TCM][UGTCM] Merge from JEFF_CBR to MOLY
+ * TCM: Merge from JEFF_CBR to MOLY (non-TCM files) .
+ *
+ * 12 07 2012 andrew.wu
+ * [MOLY00007098] LOCAL_PARA_HDR/PEER_BUF_HDR modification
+ * LOCAL_PARA_HDR/PEER_BUF_HDR modification
+ * 
+ * 08 07 2012 andrew.wu
+ * [MOLY00001588] [MT6575_ADAPT][LTE-BTR-1-7302] Bad audio qualilty in 12.2Kbps Uplink
+ * [uas]URLC TM queue switchable modification
+ *
+ * 05 04 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 04 24 2012 wcpuser_integrator
+ * removed!
+ * .
+ *
+ * 04 02 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 01 30 2012 poying.chuang
+ * removed!
+ * .
+ *
+ * 01 11 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 01 11 2012 carlson.lin
+ * removed!
+ * <saved by Perforce>
+ *
+ * 12 24 2010 max.yin
+ * removed!
+ * .
+ *
+ * 12 22 2010 max.yin
+ * removed!
+ * .
+ *
+ * 12 14 2010 max.yin
+ * removed!
+ * .
+ *
+ * 10 18 2010 max.yin
+ * removed!
+ * .
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ * removed!
+ * removed!
+ * 
+ *
+ ******************************************************************************/
+
+#ifndef TCM_RATDM_STRUCT_H
+#define TCM_RATDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+#include "ps_public_enum.h"
+
+/* __HSDPA_SUPPORT__ */
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 no_of_nsapis;
+    kal_uint8 nsapi_list[11];
+    data_speed_activate_enum capability[11];
+} tcm_ratdm_ps_bearer_capability_ind_struct; 
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_main_ps;
+} tcm_ratdm_data_allow_req_struct;
+
+#endif /* TCM_RATDM_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/uem_peer.h b/mcu/protocol/interface/l4/uem_peer.h
new file mode 100644
index 0000000..d0ceb9b
--- /dev/null
+++ b/mcu/protocol/interface/l4/uem_peer.h
@@ -0,0 +1,104 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   uem_peer.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+
+#ifndef _UEM_PEER_H_
+#define _UEM_PEER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef TEST_TOOL
+#include "tt_defs.h"
+#else
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#endif
+
+#include "uem_peer_struct.h"
+#include "uem_peer_pun.h"
+
+#ifdef TOOL
+#include "set_uem_peer.h"
+#include "get_uem_peer.h"
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/mcu/protocol/interface/l4/usm_utility_public.h b/mcu/protocol/interface/l4/usm_utility_public.h
new file mode 100644
index 0000000..f10c709
--- /dev/null
+++ b/mcu/protocol/interface/l4/usm_utility_public.h
@@ -0,0 +1,77 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ * USM_UTILITY_PUBLIC.H
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _USM_UTILITY_PUBLIC_H
+#define _USM_UTILITY_PUBLIC_H
+
+/* struct */
+#include "kal_public_defs.h"
+
+kal_bool    usm_support_etft(void) ;
+kal_bool    usm_support_nrspca(void) ;
+
+void        usm_set_support_nrspca(kal_bool turn_on_nrspca);
+
+#endif /* _USM_UTILITY_PUBLIC_H */
diff --git a/mcu/protocol/interface/l4/vdm_l4c_struct.h b/mcu/protocol/interface/l4/vdm_l4c_struct.h
new file mode 100644
index 0000000..9403006
--- /dev/null
+++ b/mcu/protocol/interface/l4/vdm_l4c_struct.h
@@ -0,0 +1,661 @@
+/*****************************************************************************
+*  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) 2013
+*
+*  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:
+* ------------
+*   vdm_l4c_struct.h
+*
+* Project:
+* ------------
+*   MOLY
+*
+* Description:
+* ------------
+*   This file is intends for L4C/VDM interface
+*
+* Author:
+* -----------
+ * -------
+*****************************************************************************/
+              
+#ifndef _VDM_L4C_STRUCT_H
+#define _VDM_L4C_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "l3_inc_enums_public.h"
+#include "ps_public_enum.h"
+#include "rmmi_common_enum.h"
+#include "l4_vdm_enum.h"
+#include "sim_public_enum.h"
+#include "l4b_vdm_struct.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+#include "l3_inc_enums.h"
+#include "c2k_irat_msg_struct.h"
+#include "sim_ps_struct.h"
+#include "vdm_atp_struct.h"
+#include "rac_vgmm_struct.h"
+#include "as_inter_core_enum.h"
+#include "rac2l4c_struct.h"
+
+//copy from l4c_eval_ims_sys_info_ind_struct
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_valid;                           
+    kal_bool is_emc_attach_supported;
+    kal_bool is_emc_call_barred;
+    kal_uint32 cell_id;
+    kal_uint8 ta_code[2];     
+    kal_uint8 barring_factor_voice;/*0~16*/
+    kal_uint8 barring_factor_video;/*0~16*/
+    kal_uint8 barring_time_voice;  /*0~8*/
+    plmn_id_struct plmn_id;
+    kal_uint16 band;
+    kal_uint8 barring_time_video;  /*0~8*/
+    kal_uint8 barring_factor_mo_data;/*0~16,16 means factor=1*/
+    kal_uint8 barring_time_mo_data;  /*0~8, 0  means time=0*/
+    kal_uint8 acbar_special_ac_mo_data;/*LSB 5 Bits =>AC11~AC15*/
+    kal_uint8 barring_factor_mo_signal;/*0~16,16 means factor=1*/
+    kal_uint8 barring_time_mo_signal;  /*0~8, 0  means time=0*/
+    kal_uint8 acbar_special_ac_mo_signal;/*LSB 5 Bits =>AC11~AC15*/
+/*                bit8    bit7    bit6    bit5    bit4    bit3    bit2    bit1
+acbar special ac    0      0       0      AC11    AC12    AC13    AC14    AC15  
+*/
+    kal_bool is_acb_skip_for_mmtel_voice;
+    kal_bool is_acb_skip_for_mmtel_video;
+    kal_bool is_acb_skip_for_sms;
+} vdm_l4c_ims_sys_info_ind_struct;
+
+/* Common response from L4C to VDM */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4_result_code_enum    result;
+    l4_err_id_enum         error_cause;
+} vdm_l4c_common_response_struct;
+
+/* MSG_ID_VDM_L4C_FDN_ECC_CHECK_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 dial_num[MAX_CC_ADDR_LEN];
+} vdm_l4c_fdn_ecc_check_req_struct;
+
+/* MSG_ID_VDM_L4C_FDN_ECC_CHECK_CNF */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        is_allowed;
+    kal_bool                        is_emergency;
+    kal_uint16                      emergency_service_category;
+} vdm_l4c_fdn_ecc_check_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MO_CALL_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8               dial_num[MAX_CC_ADDR_LEN];
+    kal_uint8               call_id;
+    kal_bool                is_emergency_call;
+    kal_bool                is_video_call;
+    kal_uint8               ecc_service_category;
+} vdm_l4c_cs_cc_mo_call_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MO_CALL_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_mo_call_cnf_struct;
+
+/*MSG_ID_VDM_L4C_CS_CC_EMERG_SERV_CAT_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16                   emergency_service_category;
+} vdm_l4c_cs_cc_emerg_serv_cat_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_EMERG_SERV_CAT_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_emerg_serv_cat_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_LIST_CURRENT_CALLS_REQ */
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+    kal_bool               is_clccs;
+}vdm_l4c_cs_cc_list_current_calls_req_struct;
+
+typedef struct {
+    kal_uint8                   call_id;
+    l4_call_dir_enum            dir;
+    l4_call_state_enum          call_state;
+    l4_call_mode_enum           call_mode;
+    kal_bool                    mpty;  // FALSE: is NOT conference call, TRUE: is conference call
+    l4_call_type_enum           call_type;
+    l4_call_number_type_enum    number_type;
+    kal_uint8                   number[MAX_SIP_URI_LEN];
+    kal_bool                    cli_present;
+    kal_uint8                   cli_validity;
+} vdm_l4c_call_list_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                  total_call;
+    kal_bool                   is_clccs;
+    vdm_l4c_call_list_struct   call_list[L4CC_MAX_CALL_NUM];
+} vdm_l4c_cs_cc_list_current_calls_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_EXT_ERROR_REPORT_REQ */ // AT+CEER (no struct)
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+}vdm_l4c_cs_cc_ext_error_report_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_EXT_ERROR_REPORT_CNF */
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    l4_ext_error_report_enum       ceer_cause;
+    l4_result_code_enum            result;
+    l4_err_id_enum                 err_id;
+    kal_uint16                     ecc_category;
+} vdm_l4c_cs_cc_ext_error_report_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_SEND_DIGIT_REQ */ //AT+VTS
+typedef struct 
+{  
+    LOCAL_PARA_HDR 
+    kal_uint8   digit;
+    l4_dtmf_action_enum action;
+} vdm_l4c_cs_cc_send_digit_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_SEND_DIGIT_CNF */
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    l4_result_code_enum    result;
+    l4_err_id_enum         error_cause;
+    l4_dtmf_action_enum    action;
+} vdm_l4c_cs_cc_send_digit_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_HANGUP_ALL_REQ */ // ATH (no struct)
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+}vdm_l4c_cs_cc_hangup_all_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_HANGUP_ALL_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_hangup_all_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_FORCE_HANGUP_REQ */ // AT+ECHUP 
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+} vdm_l4c_cs_cc_force_hangup_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_FORCE_HANGUP_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_force_hangup_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MT_CALL_PRESENT_RSP */
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+    kal_uint8                       call_id;
+    kal_uint8                       seq_no;
+    l4_cc_eaic_result_enum          eaic_result;
+    kal_uint16                      reject_cause;
+} vdm_l4c_cs_cc_mt_call_present_rsp_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MT_CALL_ACCEPT_REQ_STRUCT */
+typedef struct 
+{  
+    LOCAL_PARA_HDR
+} vdm_l4c_cs_cc_mt_call_accept_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MT_CALL_ACCEPT_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_mt_call_accept_cnf_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_CALL_RELATED_SS_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                       call_id;
+    l4_call_related_ss_type_enum   opcode;
+} vdm_l4c_cs_cc_call_related_ss_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_CALL_RELATED_SS_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_call_related_ss_cnf_struct;
+
+typedef struct {
+    kal_uint8              number[MAX_CC_ADDR_LEN];
+    l4_call_type_enum      call_type;
+    l4_call_mode_enum      call_mode;
+    kal_uint8 redirect_num[MAX_CC_ADDR_LEN];
+} l4c_cc_eaic_info_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MT_CALL_PRESENT_IND */
+typedef struct 
+{
+    LOCAL_PARA_HDR 
+    kal_uint8                       call_id;
+    l4c_cc_eaic_info_struct         eaic_info;
+    kal_uint8                       seq_no;
+} vdm_l4c_cs_cc_mt_call_present_ind_struct;
+
+typedef struct
+{
+    /* +ECPI:<call_id>,<msg_type>,<is_ibt>,<is_tch>,<dir>,
+     *       <call_mode>,[<number>,<type>],[<disc_cause>],[<pau>]
+     */
+    kal_bool                is_ibt;
+    kal_bool                is_tch;
+    l4_call_dir_enum        call_dir;
+    l4_call_mode_enum       call_mode;
+    kal_bool                is_number_call_type_present;
+    kal_uint8               number[MAX_CC_ADDR_LEN];
+    l4_call_type_enum       call_type;
+    kal_bool                is_disc_cause_present;
+    kal_uint16              disc_cause;
+} l4c_ecpi_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8               call_id;
+    kal_uint8               ecpi_type;
+    l4c_ecpi_info_struct    ecpi_info;
+} vdm_l4c_common_cs_cc_ecpi_ind_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_ECPI_TRANSLATE_IND */
+typedef vdm_l4c_common_cs_cc_ecpi_ind_struct vdm_l4c_cs_cc_ecpi_translate_ind_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_MT_CALL_SETUP_IND */
+typedef vdm_l4c_common_cs_cc_ecpi_ind_struct vdm_l4c_cs_cc_mt_call_setup_ind_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_CALL_DISCONNECT_IND */
+typedef vdm_l4c_common_cs_cc_ecpi_ind_struct vdm_l4c_cs_cc_call_disconnect_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    sat_terminal_res_enum terminal_res;
+    kal_uint8 additional_res;
+} vdm_l4c_cs_cc_stk_tr_info_ind_struct;
+
+typedef struct
+{
+    kal_uint8   sat_call_type;
+    kal_uint8   no_addr;
+    kal_uint8   addr[MAX_CC_ADDR_BCD_LEN];
+    kal_uint8   no_sub_addr;
+    kal_uint8   sub_addr[MAX_CC_SUB_ADDR_BCD_LEN];
+    kal_uint8   no_ccp;
+    kal_uint8   ccp[MAX_SAT_SIZE_OF_CCP];
+    kal_uint8   type_of_modification;
+} vdm_l4c_sat_call_setup_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_STK_CALL_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   call_id;
+    kal_bool                    l4c_retry;
+    sat_terminal_res_enum       tr;
+    vdm_l4c_sat_call_setup_req_struct sat_setup_call_req;
+} vdm_l4c_cs_cc_stk_call_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_STK_CALL_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_stk_call_cnf_struct;
+
+/* MSG_ID_VDM_L4C_SAT_SETUP_CALL_IND */
+typedef sat_setup_call_ind_struct vdm_l4c_sat_setup_call_ind_struct;
+
+typedef struct
+{    
+    LOCAL_PARA_HDR    
+    kal_uint8 bfvoice;
+    kal_uint8 bfvideo;
+    kal_uint8 btvoice;
+    kal_uint8 btvideo;
+} vdm_l4c_get_ssac_param_cnf_struct;
+
+typedef struct
+{
+    kal_uint8                           call_id;      /* call_id_ims = call_id_ap */
+    ims_srvcc_call_mode_enum            call_mode;
+    ims_srvcc_call_direction_enum       call_direction;
+    ims_srvcc_call_state_enum           call_state;
+    ims_srvcc_call_ecc_category_enum    call_ecc_category;
+    ims_srvcc_call_number_format_enum   call_number_format;
+    kal_uint8                           call_number[IMC_MAX_URI_LENGTH];
+#if defined(__TC01_IMS_SUPPORT__) || defined(__IPC_ADAPTER__)
+    //these two parameter is defined by L4 but seems not used by IMS CC, so we wrap it with compile option
+    kal_uint8                           call_alpha[MAX_PS_NAME_SIZE + 1]; // MAX_PS_NAME_SIZE: 42
+    kal_uint8                           cli;
+    //just for TK compatible, not sure how to use this in TC01 project
+    kal_uint8                           num_of_conf_parts;
+#endif
+} vdm_l4c_srvcc_call_ctxt_to_cs_struct;
+
+typedef struct
+{    
+    LOCAL_PARA_HDR    
+    kal_uint32                              num_call;    
+    vdm_l4c_srvcc_call_ctxt_to_cs_struct	srvcc_call_ctxt_to_cs_domain[L4CC_MAX_CALL_NUM];
+} vdm_l4c_srvcc_context_transfer_req_struct;
+
+typedef struct
+{    
+    LOCAL_PARA_HDR
+    kal_uint32                   num_of_call_instances;    
+    kal_uint32                   call_id_table[L4CC_MAX_CALL_NUM];
+} vdm_l4c_srvcc_context_transfer_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum		                    active_rat;
+    union
+    {
+        vgmm_nw_feature_support_struct  nr;
+        emm_nw_feature_support_struct   eps;
+        gmm_nw_feature_support_struct   ug;
+    } nw_feature;
+} vdm_l4c_nw_feature_ind_struct;
+
+/******************************************************************************
+ * +CIREPH: <srvcch>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    srvcc_status_enum               status;
+} vdm_l4c_srvcc_status_update_ind_struct;
+
+/******************************************************************************
+ * +ENW: <is_searching>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                        is_searching;
+} vdm_l4c_nw_search_status_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    ue_mode_enum                    ue_mode;
+    l4_voice_domain_preference_enum eutran_vdp;
+} vdm_l4c_uemode_param_update_ind_struct;
+
+/******************************************************************************
+ * +EC2KREG: <domain>,<state>,<service>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    domain_id_enum               domain;
+    kal_bool                     state;
+    irat_ps_type_enum            service;
+} vdm_l4c_c2k_service_state_ind_struct;
+
+/******************************************************************************
+ * +EIMSPS: rat,type[,cause]
+ * indication for silent redial event from AP to MD
+ *****************************************************************************/
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    rat_enum        rat;
+    kal_uint8       type;// bitmask, 0x01 for Voice , 0x02 for SMS
+    hvolte_mode_change_cause_enum  cause;
+} vdm_l4c_ims_domain_preference_ind_struct;
+
+/******************************************************************************
+ * +ERAT: <rat>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum                        rat;
+} vdm_l4c_rat_mode_ind_struct;
+
+/******************************************************************************
+ * +EIRAT: <rat>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4_irat_status_enum             irat_status;
+    kal_bool                        irat_result;
+} vdm_l4c_inter_rat_status_ind_struct;
+
+/******************************************************************************
+ * +ERLQ:<Event>, <Band>
+ * Event: 4G radio link monitor event type
+ *   0 - LTE weak signal
+ *   1 - LTE OOS searching
+ * Band: current 4G band 
+ *   0 - Invalid band value (used for LTE OOS search)
+ *   1-256: possible LTE band value range
+ * only care about Event
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 event_type;
+} vdm_l4c_radio_link_quality_ind_struct;
+
+/******************************************************************************
+ * +ERPRAT: 9,<new_reported_rat>,<is_home>
+ *****************************************************************************/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum               new_reported_rat;
+    kal_bool               is_home;
+} vdm_l4c_reported_rat_change_ind_struct;
+
+/*
+    **AT+EVVS**
+    call_status_enum    vdm_voice_status;
+    kal_bool            is_emergency;
+    
+    **AT+EVIVS**
+    vdm_ims_voice_status_enum vdm_ims_voice_status;    
+    ims_access_rat_enum rat;
+    
+    **AT+EIMSCI**
+    kal_bool voice_over_ims_ongoing;
+    kal_bool is_emergency;
+    ims_access_rat_enum ims_access_rat;    
+    
+    ***AT+CSCM**
+    ims_scm_info_type_enum      application;
+    ims_scm_info_action_enum    indication;
+*/
+
+/*MSG_ID_VDM_L4C_IMS_CALL_SCM_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_scm_info_type_enum application;
+    ims_scm_info_action_enum indication;
+} vdm_l4c_ims_call_scm_req_struct;
+
+/*MSG_ID_VDM_L4C_NR_IMS_CALL_STATUS_REQ*/
+typedef rac_vgmm_ims_service_status_req_struct vdm_l4c_nr_ims_call_status_req_struct;
+
+/*MSG_ID_VDM_L4C_UAC_PARAM_CHECK_ABORT_REQ*/
+typedef rac_vgmm_ims_uac_abort_req_struct vdm_l4c_uac_param_check_abort_req_struct;
+/*MSG_ID_VDM_L4C_UAC_PARAM_CHECK_REQ*/
+typedef rac_vgmm_ims_uac_req_struct vdm_l4c_uac_param_check_req_struct;
+/* MSG_ID_VDM_L4C_UAC_PARAM_CHECK_CNF */
+typedef rac_vgmm_ims_uac_cnf_struct vdm_l4c_uac_param_check_cnf_struct;
+/* MSG_ID_VDM_L4C_UAC_ALLEVIATION_IND */
+typedef rac_vgmm_ims_uac_alleviation_ind_struct vdm_l4c_uac_alleviation_ind_struct;
+
+/*MSG_ID_VDM_L4C_EMERGENCY_SERVICE_REQ*/
+typedef rac_vgmm_emergency_service_req_struct vdm_l4c_emergency_service_req_struct;
+/* MSG_ID_VDM_L4C_EMERGENCY_SERVICE_CNF */
+typedef rac_vgmm_emergency_service_cnf_struct vdm_l4c_emergency_service_cnf_struct;
+/* MSG_ID_VDM_L4C_EMERGENCY_SERVICE_IND */
+typedef rac_vgmm_emergency_service_ind_struct vdm_l4c_emergency_service_ind_struct;
+/*MSG_ID_VDM_L4C_EMERGENCY_SERVICE_FALLBACK_REQ*/
+typedef rac_vgmm_emergency_service_fallback_req_struct vdm_l4c_emergency_service_fallback_req_struct;
+/* MSG_ID_VDM_L4C_EMERGENCY_SERVICE_FALLBACK_CNF */
+typedef rac_vgmm_emergency_service_fallback_cnf_struct vdm_l4c_emergency_service_fallback_cnf_struct;
+
+/*MSG_ID_VDM_L4C_REG_COMBINED_CAUSE_IND*/
+typedef l4crac_reg_combined_cause_ind_struct vdm_l4c_reg_combined_cause_ind_struct;
+
+/*MSG_ID_VDM_L4C_ECBM_MODE_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_ecbm_on;
+    rat_enum ecbm_rat;
+} vdm_l4c_ecbm_mode_ind_struct;
+
+/*MSG_ID_VDM_L4C_IMS_CALL_PROGRESS_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 call_id;
+    ims_cc_eaic_info_struct eaic_info;
+    ims_call_dir_enum dir;
+    csmcc_cpi_msg_type_enum msg_type;
+    kal_bool is_far_end;
+    ims_disc_cause_enum disc_cause;
+} vdm_l4c_ims_call_progress_req_struct;
+
+/*MSG_ID_VDM_L4C_GMSS_SET_HVOLTE_MODE_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    hvolte_mode_enum mode;
+    kal_uint8 submode;
+} vdm_l4c_gmss_set_hvolte_mode_req_struct;
+
+/* MSG_ID_VDM_L4C_GMSS_SET_HVOLTE_MODE_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_gmss_set_hvolte_mode_cnf_struct;
+
+/*MSG_ID_VDM_L4C_EMCS_REQ*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 mode;
+    kal_uint8 ims_reg_state;
+    kal_bool  is_airplane_mode_ecc;
+} vdm_l4c_emcs_req_struct;
+
+/*MSG_ID_VDM_L4C_ATTACHED_RAT_IND*/
+typedef struct 
+{
+    LOCAL_PARA_HDR 
+    nas_reg_status_enum             nas_reg_status; 
+    kal_bool                        is_for_ps_domain;
+    mm_cause_enum                   nas_reg_cause;
+} vdm_l4c_attached_rat_ind_struct;
+
+#if defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_type_enum     ecall_type;
+} vdm_l4c_ecall_test_call_attach_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4_result_code_enum    result;
+    l4_err_id_enum         err_id;
+} vdm_l4c_ecall_test_call_attach_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ecall_abort_attach_reason_enum  reason;
+} vdm_l4c_ecall_abort_test_call_attach_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    l4_result_code_enum    result;
+    l4_err_id_enum         err_id;
+} vdm_l4c_ecall_abort_test_call_attach_cnf_struct;
+#endif
+
+/* MSG_ID_VDM_L4C_ERRC_CELL_REJ_IND */
+typedef struct
+{
+    kal_bool	                is_bar_pcell;
+    cell_rej_cause_enum         cause;          /* Rejected cause */
+    kal_uint16                  timer_val;      /* Period of timer for rejection unit:second */
+    kal_uint32                  earfcn;         /* earfcn/pci used to identify cell when is_bar_pcell is FALSE */
+    kal_uint16                  pci;
+    kal_uint32                  cell_id;        /* cell_id used to identify cell when is_bar_pcell is TRUE */
+} vdm_l4c_errc_mob_cell_rej_info_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    vdm_l4c_errc_mob_cell_rej_info_struct  rej_info;
+} vdm_l4c_errc_cell_rej_ind_struct;
+
+/*MSG_ID_VDM_L4C_IMS_CC_CALL_PROGRESS_IND*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   call_id;
+    kal_uint8                   msg_type;
+    l4c_ecpi_info_struct        ecpi_info;
+} vdm_l4c_ims_cc_call_progress_ind_struct;
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+/* MSG_ID_VDM_L4C_CS_CC_CECALL_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8				call_id;
+    ecall_type_enum         ecall_type;
+	ecall_format_enum       ecall_format;
+    kal_uint8               msd_data_len;
+    kal_uint8               msd_data[MAX_MSD_LENGTH];
+} vdm_l4c_cs_cc_cecall_req_struct;
+
+/* MSG_ID_VDM_L4C_CS_CC_CECALL_CNF */
+typedef vdm_l4c_common_response_struct vdm_l4c_cs_cc_cecall_cnf_struct;
+#endif
+#endif /* _VDM_L4C_STRUCT_H */
diff --git a/mcu/protocol/interface/l4/vdm_rac_struct.h b/mcu/protocol/interface/l4/vdm_rac_struct.h
new file mode 100644
index 0000000..2368f59
--- /dev/null
+++ b/mcu/protocol/interface/l4/vdm_rac_struct.h
@@ -0,0 +1,75 @@
+/*****************************************************************************
+*  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) 2013
+*
+*  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:
+* ------------
+*   vdm_rac_struct.h
+*
+* Project:
+* ------------
+*   MOLY
+*
+* Description:
+* ------------
+*   This file is intends for RAC/VDM interface
+*
+* Author:
+* -----------
+ * -------
+*****************************************************************************/
+              
+#ifndef _VDM_RAC_STRUCT_H
+#define _VDM_RAC_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+//#include "l3_inc_enums_public.h"
+#include "ps_public_enum.h"
+
+//MAG_ID_VDM_RAC_NW_FEATURE_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool nr_vops_support_updated;
+    kal_bool nr_vops_support;
+
+    kal_bool emb_s1_support_updated;
+    kal_bool emb_s1_support;
+
+} vdm_rac_nw_feature_ind_struct;
+
+#endif /* _VDM_RAC_STRUCT_H */
+