[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
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 
+
+