[Feature][Modem]Add Modem Patch P1

Change-Id: Idee4f9fd6700b484f7db86704cf5639cec4d71a2
diff --git a/mcu/interface/protocol/general/atp_dmf_cmd_def.h b/mcu/interface/protocol/general/atp_dmf_cmd_def.h
old mode 100644
new mode 100755
index 7a13b9b..c81e4a9
--- a/mcu/interface/protocol/general/atp_dmf_cmd_def.h
+++ b/mcu/interface/protocol/general/atp_dmf_cmd_def.h
@@ -4144,6 +4144,15 @@
         DMF_FIELD_VAR(kal_uint32, cc_num, UNUSED_FIELD)
         DMF_FIELD_VAR_ARRAY_D(kal_uint32, ibler_list, 8)
     DMF_URC_IND_END(dmf_app6_nr_ibler_info_ind_struct)
+
+    // for DMF_THIN_MODEM_CAUSE_LTE_BLER_URC
+    DMF_URC_IND(DMF_APP6_LTE_BLER_INFO_IND, dmf_app6_lte_bler_info_ind_struct, dmf_app6_lte_bler_info_ind)
+        DMF_FIELD_VAR(kal_uint32, cause, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, channel_type, UNUSED_FIELD)
+        DMF_FIELD_VAR(kal_uint32, cc_num, UNUSED_FIELD)
+        DMF_FIELD_VAR_ARRAY_D(kal_uint32, bler_list, 5)
+    DMF_URC_IND_END(dmf_app6_lte_bler_info_ind_struct)
+
 #endif    
 DMF_APP_END
 #endif
diff --git a/mcu/interface/protocol/general/l4c_lbs_struct.h b/mcu/interface/protocol/general/l4c_lbs_struct.h
old mode 100644
new mode 100755
index aae24d0..fc0949c
--- a/mcu/interface/protocol/general/l4c_lbs_struct.h
+++ b/mcu/interface/protocol/general/l4c_lbs_struct.h
@@ -64,6 +64,11 @@
  * removed!
  * removed!
  * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
  *
  * removed!
  * removed!
@@ -98,6 +103,8 @@
 #include "ss_asn.h"
 #endif
 
+#include "l3_inc_enums.h"
+
 /* A-GPS Control Plane LCS Service */
 #if defined(__AGPS_CONTROL_PLANE__) && !defined(__MMI_FMI__)
 typedef struct
@@ -281,6 +288,12 @@
     kal_bool emt_ongoing;
 } l4c_lbs_emt_info_ind_struct;
 
+typedef struct
+{
+    LOCAL_PARA_HDR
+    call_status_enum            call_status;
+} l4c_lbs_emc_info_ind_struct;
+
 #endif /* l4c_lbs_struct.h*/
 
 
diff --git a/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h b/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h
old mode 100644
new mode 100755
index d022ce5..e8f4049
--- a/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h
+++ b/mcu/interface/protocol/general/l4c_msg_hdlr_defs.h
@@ -23,7 +23,7 @@
 *  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. 
+*  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
@@ -73,11 +73,11 @@
 
 
 //#ifdef __MOD_CSM__
-L4C_CNF(MSG_ID_L4CCSM_CC_STARTUP_CNF, l4ccsm_cc_startup_cnf_hdlr) 
+L4C_CNF(MSG_ID_L4CCSM_CC_STARTUP_CNF, l4ccsm_cc_startup_cnf_hdlr)
 //#ifdef __MOD_SMU__
 L4C_CNF(MSG_ID_L4CCSM_CC_ACM_RESET_CNF,l4ccsm_cc_acm_reset_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CCSM_CC_ACMMAX_SET_CNF,l4ccsm_cc_acmmax_set_cnf_hdlr)
-//#endif /* __MOD_SMU__ */ 
+//#endif /* __MOD_SMU__ */
 L4C_CNF(MSG_ID_L4CCSM_CC_LAST_CCM_RESET_CNF,l4ccsm_cc_ccm_reset_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CCSM_CC_CRSS_CNF,l4ccsm_cc_crss_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CCSM_CC_CALL_DEFLECTION_CNF,l4ccsm_cc_call_deflection_cnf_hdlr)
@@ -115,7 +115,7 @@
 L4C_CNF(MSG_ID_L4CCSM_CISS_AERP_END_CNF,l4ccsm_ciss_aerp_end_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CCSM_CISS_MOLR_END_CNF,l4ccsm_ciss_molr_end_cnf_hdlr)
 #endif
-//#endif /* __MOD_CSM__ */ 
+//#endif /* __MOD_CSM__ */
 
 //#ifdef __MOD_UEM__
 L4C_CNF(MSG_ID_L4CUEM_STARTUP_CNF,l4cuem_startup_cnf_hdlr)
@@ -126,7 +126,7 @@
 L4C_CNF(MSG_ID_L4CUEM_AUDIO_STOP_BY_NAME_CNF,l4cuem_audio_stop_by_name_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CUEM_AUDIO_PLAY_BY_STRING_CNF,l4cuem_audio_play_by_string_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CUEM_AUDIO_STOP_BY_STRING_CNF,l4cuem_audio_stop_by_string_cnf_hdlr)
-//#endif /* __MOD_UEM__ */ 
+//#endif /* __MOD_UEM__ */
 
 #ifdef __MOD_RAC__
 L4C_CNF(MSG_ID_L4CRAC_ACT_CNF,l4crac_act_cnf_hdlr)
@@ -152,7 +152,7 @@
 L4C_CNF(MSG_ID_L4CRAC_GET_PREFER_RAT_CNF,l4crac_get_prefer_rat_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CRAC_END_PS_DATA_SESSION_CNF,l4crac_end_ps_data_session_cnf_hdlr) //mtk02475: for Fast Dormancy
 L4C_CNF(MSG_ID_L4CRAC_CSG_LIST_CNF,l4crac_csg_list_cnf_hdlr)
-L4C_CNF(MSG_ID_L4CRAC_CSG_LIST_STOP_CNF,l4crac_csg_list_stop_cnf_hdlr) 
+L4C_CNF(MSG_ID_L4CRAC_CSG_LIST_STOP_CNF,l4crac_csg_list_stop_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CRAC_SET_SMS_PREFERENCE_CNF, l4crac_set_sms_preference_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CRAC_SET_VOICE_DOMAIN_PREFERENCE_CNF, l4crac_set_voice_domain_preference_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CRAC_SET_UE_USAGE_SETTING_CNF, l4crac_set_ue_usage_cnf_hdlr)
@@ -196,6 +196,8 @@
 L4C_IND(MSG_ID_L4CRAC_NW_BLACK_LIST_STATE_IND, l4crac_nw_black_list_state_ind_hdlr)
 #endif
 
+L4C_CNF(MSG_ID_L4CRAC_NR_EMC_SERVICE_AVAILABILITY_RSP, l4crac_nr_emc_service_availability_rsp)
+
 #endif /* __MOD_RAC__ */
 
 
@@ -210,7 +212,7 @@
 L4C_CNF(MSG_ID_L4CPHB_READ_USIM_CNF,l4cphb_read_usim_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CPHB_DELETE_USIM_CNF,l4cphb_delete_usim_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CPHB_CHECK_WRITE_USIM_ENTRY_CNF,l4cphb_check_write_usim_entry_cnf_hdlr)
-//#endif /* __MOD_PHB__ */ 
+//#endif /* __MOD_PHB__ */
 
 //#ifdef __MOD_SMU__
 L4C_CNF(MSG_ID_L4CSMU_START_CNF,l4csmu_start_cnf_hdlr)
@@ -258,7 +260,7 @@
 L4C_CNF(MSG_ID_L4CSMU_SET_NW_BLACK_LIST_CNF, l4csmu_set_nw_black_list_cnf_hdlr)
 L4C_IND(MSG_ID_L4CSMU_NW_BLACK_LIST_STATE_IND, l4csmu_nw_black_list_state_ind_hdlr)
 #endif
-//#endif /* __MOD_SMU__ */ 
+//#endif /* __MOD_SMU__ */
 
 //#ifdef __SAT__
 L4C_CNF(MSG_ID_SAT_MENU_SELECT_CNF,l4csat_menu_select_cnf_hdlr)
@@ -273,7 +275,7 @@
 L4C_CNF(MSG_ID_L4CSMSAL_DELETE_CNF,l4csmsal_delete_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CSMSAL_SEND_FROM_STORAGE_CNF,l4csmsal_send_storage_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CSMSAL_SEND_ABORT_CNF,l4csmsal_send_abort_cnf_hdlr)
-L4C_CNF(MSG_ID_L4CSMSAL_SEND_DELIVER_REPORT_CNF,l4csmsal_send_deliver_report_cnf_hdlr) 
+L4C_CNF(MSG_ID_L4CSMSAL_SEND_DELIVER_REPORT_CNF,l4csmsal_send_deliver_report_cnf_hdlr)
 //#ifdef __SAT__
 L4C_CNF(MSG_ID_L4CSMSAL_SAT_SEND_CNF,l4csmsal_sat_send_cnf_hdlr)
 //#endif
@@ -285,11 +287,11 @@
 L4C_CNF(MSG_ID_L4CSMSAL_COPY_MSG_CNF,l4csmsal_copy_msg_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CSMSAL_SET_STATUS_CNF,l4csmsal_set_status_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CSMSAL_GET_MAILBOX_NUM_CNF,l4csmsal_get_mailbox_num_cnf_hdlr)
-#ifdef __CANCEL_LOCK_POWERON__           
+#ifdef __CANCEL_LOCK_POWERON__
 L4C_CNF(MSG_ID_L4CSMSAL_INIT_ME_SMS_CNF,l4csmsal_init_me_sms_cnf_hdlr)
 #endif
 L4C_CNF(MSG_ID_L4CSMSAL_SET_MSG_WAITING_CNF,l4csmsal_set_msg_waiting_cnf_hdlr)
-#ifdef __SMS_RAW_DATA_ACCESS_SUPPORT__           
+#ifdef __SMS_RAW_DATA_ACCESS_SUPPORT__
 L4C_CNF(MSG_ID_L4CSMSAL_READ_RAW_DATA_CNF,l4csmsal_read_raw_data_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CSMSAL_WRITE_RAW_DATA_CNF,l4csmsal_write_raw_data_cnf_hdlr)
 #endif
@@ -301,7 +303,7 @@
 L4C_CNF(MSG_ID_L4CSMSAL_IMS_SEND_FROM_STORAGE_CNF,l4csmsal_ims_send_from_storage_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CSMSAL_IMS_UPDATE_MSGBOX_CNF, l4csmsal_ims_update_msgbox_cnf_hdlr)
 #endif
-//#endif /* __MOD_SMSAL__ */ 
+//#endif /* __MOD_SMSAL__ */
 
 //#ifdef __MOD_TCM__
 L4C_CNF(MSG_ID_TCM_PDP_ACTIVATE_CNF,tcm_pdp_activate_cnf_hdlr)
@@ -327,7 +329,7 @@
 
 //L4C_CNF(MSG_ID_L4CTCM_SET_TFT_INFO_CNF,l4ctcm_set_cnf_hdlr)
 //L4C_CNF(MSG_ID_L4CTCM_SET_GPRS_STATISTICS_INFO_CNF,l4ctcm_set_cnf_hdlr)
-L4C_CNF(MSG_ID_L4CTCM_SET_PPP_AUTH_CNF,l4ctcm_set_context_cnf_hdlr) //tommy add 031015 for danny 
+L4C_CNF(MSG_ID_L4CTCM_SET_PPP_AUTH_CNF,l4ctcm_set_context_cnf_hdlr) //tommy add 031015 for danny
 L4C_CNF(MSG_ID_L4CTCM_SET_MSQ_MODE_CNF,l4ctcm_set_cnf_hdlr) /* __MEDIATEK_SMART_QOS__ */
 L4C_CNF(MSG_ID_L4CTCM_SET_MSQ_ENTRY_CNF,l4ctcm_set_cnf_hdlr) /* __MEDIATEK_SMART_QOS__ */
 
@@ -348,7 +350,7 @@
 #endif
 L4C_CNF(MSG_ID_L4CTCM_ENTER_DATA_MODE_CNF,l4ctcm_enter_data_mode_cnf_handler)
 L4C_CNF(MSG_ID_L4CTCM_LEAVE_DATA_MODE_CNF,l4ctcm_leave_data_mode_cnf_handler)
-L4C_CNF(MSG_ID_L4CTCM_SET_CGAUTH_INFO_CNF,l4ctcm_set_cgauth_info_cnf_handler) 
+L4C_CNF(MSG_ID_L4CTCM_SET_CGAUTH_INFO_CNF,l4ctcm_set_cgauth_info_cnf_handler)
 L4C_CNF(MSG_ID_L4CTCM_QUERY_EXT_GPRS_HISTORY_RSP,l4c_null_hdlr) // R6 optimization
 L4C_CNF(MSG_ID_L4CTCM_RESET_EXT_GPRS_HISTORY_CNF,l4c_null_hdlr) // R6 optimization
 L4C_CNF(MSG_ID_L4CTCM_GET_GPRS_STATISTICS_INFO_RSP,l4c_null_hdlr)
@@ -356,7 +358,7 @@
 L4C_CNF(MSG_ID_L4CTCM_SET_SPECIFIC_CONTEXT_CNF,l4ctcm_set_specific_context_cnf_hdlr)
 L4C_CNF(MSG_ID_L4CTCM_SET_EGPCO_CNF,l4ctcm_set_context_cnf_hdlr)
 
-//#endif /* __MOD_TCM__ */ 
+//#endif /* __MOD_TCM__ */
 
 #ifdef __TCPIP__
 L4C_CNF(MSG_ID_L4CABM_START_CNF,l4c_ps_abm_start_cnf_hdlr) //modify in W04.11 for ask abm start after phonebook startup
@@ -437,7 +439,7 @@
 L4C_IND(MSG_ID_L4CCSM_CC_CALL_INFO_IND,l4ccsm_cc_call_info_ind_hdlr) /* tommy add 031002 for aux turn off loudspeaker and adc pool */
 L4C_IND(MSG_ID_L4CCSM_CC_CPI_IND,l4ccsm_cc_cpi_ind_hdlr) //mtk00714 add 20041210 for +ECPI
 L4C_IND(MSG_ID_L4CCSM_CC_CALL_SYNC_IND,l4ccsm_cc_call_sync_ind_hdlr) /*mtk00924 add 050727 for indicate MMI to get call info*/
-L4C_IND(MSG_ID_L4CCSM_CC_VIDEO_CALL_STATUS_IND,l4ccsm_cc_video_call_status_ind_hdlr)	
+L4C_IND(MSG_ID_L4CCSM_CC_VIDEO_CALL_STATUS_IND,l4ccsm_cc_video_call_status_ind_hdlr)
 L4C_IND(MSG_ID_L4CCSM_CC_UPDATE_CALL_STATE_IND,l4ccsm_cc_update_call_state_ind_hdlr) /* MAUI_01315252, update call state */
 L4C_IND(MSG_ID_L4CCSM_CC_CALL_PRESENT_IND,l4ccsm_cc_call_present_ind_hdlr)
 
@@ -456,7 +458,7 @@
 L4C_IND(MSG_ID_L4CCSM_CISS_AECL_BEGIN_IND,l4ccsm_ciss_aecl_begin_ind_hdlr)
 L4C_IND(MSG_ID_L4CCSM_CISS_MOLR_FAC_IND,l4ccsm_ciss_molr_fac_ind_hdlr)
 #endif
-//#endif /* __MOD_CSM__ */ 
+//#endif /* __MOD_CSM__ */
 
 #ifdef __MOD_RAC__
 //L4C_IND(MSG_ID_L4CRAC_REG_IND,)
@@ -477,11 +479,11 @@
 L4C_IND(MSG_ID_L4CRAC_HZ_CELL_INFO_UPDATE_IND,l4crac_hz_cell_info_update_ind_hdlr) /* CH_Liang 2005.05.31 Homezone feature */
 L4C_IND(MSG_ID_L4CRAC_HZ_DEDICATED_MODE_IND,l4crac_hz_dedicated_mode_ind_hdlr)
 L4C_IND(MSG_ID_L4CRAC_HZ_PKT_TRANSFER_MODE_IND,l4crac_hz_pkt_transfer_mode_ind_hdlr)
-#endif /* __HOMEZONE_SUPPORT__ */ 
+#endif /* __HOMEZONE_SUPPORT__ */
 #ifdef __GEMINI__
 L4C_IND(MSG_ID_L4CRAC_SEARCH_NORMAL_FINISH_IND,l4crac_search_normal_finish_ind_hdlr)
 L4C_IND(MSG_ID_L4CRAC_MMRR_SERVICE_STATUS_IND,l4crac_mmrr_service_status_ind_hdlr)	// for solving emergecy call issue in Gemini
-#endif /* __GEMINI__ */ 
+#endif /* __GEMINI__ */
 
 #if defined(__REPORT_AVAILABLE_PLMN__)
 L4C_IND(MSG_ID_L4CRAC_PLMN_LIST_IND,l4crac_plmn_list_ind_hdlr)
@@ -545,9 +547,9 @@
 
 L4C_IND(MSG_ID_L4CRAC_NRRC_STATE_IND, l4crac_nrrc_state_ind_hdlr)
 
-/* SIM BEGIN */	
+/* SIM BEGIN */
 L4C_IND(MSG_ID_L4CSMU_SECURITY_IND,l4csmu_security_cnf_hdlr)
-L4C_IND(MSG_ID_L4CSMU_MMRR_READY_IND,l4csmu_mmrr_ready_ind_hdlr) // 030822 tommy add for power on enhance for Paul	
+L4C_IND(MSG_ID_L4CSMU_MMRR_READY_IND,l4csmu_mmrr_ready_ind_hdlr) // 030822 tommy add for power on enhance for Paul
 L4C_IND(MSG_ID_L4CSMU_MMI_INFO_IND,l4csmu_mmi_info_ind_hdlr) // 030609 tommy add for CPHS feature for Paul
 L4C_IND(MSG_ID_L4CSMU_APP_READY_IND,l4csmu_app_ready_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMU_EVENT_IND,l4csmu_event_ind_hdlr)
@@ -556,7 +558,7 @@
 #endif
 L4C_IND(MSG_ID_L4CSMU_ICCID_READY_IND,l4csmu_iccid_ready_ind_hdlr)
 
-/* SAT BEGIN */	
+/* SAT BEGIN */
 //#ifdef __SAT__
 L4C_IND(MSG_ID_SAT_DSPL_TEXT_IND,l4csat_dspl_text_ind_hdlr)
 L4C_IND(MSG_ID_SAT_GET_INKEY_IND,l4csat_get_inkey_ind_hdlr)
@@ -570,7 +572,7 @@
 L4C_IND(MSG_ID_SAT_SEND_USSD_IND,l4csat_send_ussd_ind_hdlr)
 L4C_IND(MSG_ID_SAT_MMI_INFO_IND,l4csat_mmi_info_ind_hdlr)
 /* tommy 030602 add for paul new indication */
-L4C_IND(MSG_ID_SAT_SETUP_IDLE_DSPL_IND,l4csat_setup_idle_dspl_ind_hdlr) 
+L4C_IND(MSG_ID_SAT_SETUP_IDLE_DSPL_IND,l4csat_setup_idle_dspl_ind_hdlr)
 L4C_IND(MSG_ID_SAT_RUN_AT_COMMAND_IND,l4csat_run_at_command_ind_hdlr)
 L4C_IND(MSG_ID_SAT_SEND_DTMF_IND,l4csat_send_dtmf_ind_hdlr)
 L4C_IND(MSG_ID_SAT_LANG_NOTIFY_IND,l4csat_lang_notify_ind_hdlr)
@@ -583,20 +585,20 @@
 L4C_IND(MSG_ID_SAT_CALL_CTRL_RESULT_NOTI_IND,l4csat_call_ctrl_result_noti_ind_hdlr)
 #endif
 /* End Benson SATcE */
-//#endif /* __SAT__ */ 
+//#endif /* __SAT__ */
 
 
 //#ifdef __CB__
 L4C_IND(MSG_ID_L4CSMSAL_CB_MSG_TEXT_IND,l4csmsal_cb_msg_text_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_CB_MSG_PDU_IND,l4csmsal_cb_msg_pdu_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_CB_DL_IND,l4c_null_hdlr)
-//#endif /* __CB__ */ 
-L4C_IND(MSG_ID_L4CSMSAL_MT_SMS_FINAL_ACK_IND,l4csmsal_mt_sms_final_ack_ind_hdlr) 
+//#endif /* __CB__ */
+L4C_IND(MSG_ID_L4CSMSAL_MT_SMS_FINAL_ACK_IND,l4csmsal_mt_sms_final_ack_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_MEM_FULL_IND,l4csmsal_mem_full_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_MEM_EXCEED_IND,l4csmsal_mem_exceed_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_MEM_AVAILABLE_IND,l4csmsal_mem_available_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_MSG_WAITING_IND,l4csmsal_msg_waiting_ind_hdlr)
-L4C_IND(MSG_ID_L4CSMSAL_ENHANCED_VOICE_MAIL_IND,l4csmsal_enhanced_voice_mail_ind_hdlr)  
+L4C_IND(MSG_ID_L4CSMSAL_ENHANCED_VOICE_MAIL_IND,l4csmsal_enhanced_voice_mail_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_NEW_MSG_PDU_IND,l4csmsal_new_msg_pdu_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_NEW_MSG_TEXT_IND,l4csmsal_new_msg_text_ind_hdlr)
 L4C_IND(MSG_ID_L4CSMSAL_NEW_MSG_INDEX_IND,l4csmsal_new_msg_index_ind_hdlr)
@@ -611,7 +613,7 @@
 #endif
 #ifdef __HOMEZONE_SUPPORT__
 L4C_IND(MSG_ID_L4CSMSAL_HZ_CB_MSG_IND,l4csmsal_hz_cb_msg_ind_hdlr) /* temp use */
-#endif 
+#endif
 L4C_IND(MSG_ID_L4CSMSAL_CB_GS_CHANGE_IND,l4csmsal_cb_gs_change_ind_hdlr)
 
 
@@ -621,16 +623,16 @@
 L4C_IND(MSG_ID_TCM_SEC_PDP_ACTIVATE_IND,tcm_sec_pdp_activate_ind_hdlr)
 #endif
 L4C_IND(MSG_ID_TCM_PDP_DEACTIVATE_IND,tcm_pdp_deactivate_ind_hdlr)
-L4C_IND(MSG_ID_TCM_PDP_MODIFY_IND,tcm_pdp_modify_ind_hdlr) // __GPRS_BEARER_REPORT_NEGOTIATED_QOS__	
+L4C_IND(MSG_ID_TCM_PDP_MODIFY_IND,tcm_pdp_modify_ind_hdlr) // __GPRS_BEARER_REPORT_NEGOTIATED_QOS__
 L4C_IND(MSG_ID_TCM_MOBILITY_STATUS_IND,l4c_null_hdlr)     // mtk02126: NOT USED
 L4C_IND(MSG_ID_TCM_EVENT_REP_IND,l4c_null_hdlr)           // mtk02126: Only found in comments
 //#if defined(__SP_RIL_SUPPORT__) //TCM should wrapped the code more well
 L4C_IND(MSG_ID_L4CTCM_PS_EVENT_REPORT_IND,l4ctcm_ps_event_report_ind_hdlr)
-//#endif 
+//#endif
 #if defined(__HSDPA_SUPPORT__)
 L4C_IND(MSG_ID_L4CTCM_BEARER_CAPABILITY_IND,l4ctcm_bearer_capability_ind_hdlr) //hspa_mmi_h2, mtk02285
-#endif 
-#if defined(__EXT_PDP_CONTEXT_ON__) && defined(__PS_DIALUP__)    
+#endif
+#if defined(__EXT_PDP_CONTEXT_ON__) && defined(__PS_DIALUP__)
 L4C_IND(MSG_ID_L4CPPP_DEACTIVATE_IND,l4cppp_deactivate_ind_hdlr)
 L4C_IND(MSG_ID_L4CPPP_ESCAPE_IND,l4cppp_escape_ind_hdlr)
 #else
@@ -644,11 +646,11 @@
 #else
 L4C_IND(MSG_ID_L4CPPP_IPV4V6_FALLBACK_IND,l4c_null_hdlr)
 L4C_IND(MSG_ID_L4CPPP_INITIAL_IP_TYPE_IND,l4c_null_hdlr)
-#endif    
+#endif
 
-//#endif /* __MOD_TCM__ */ 
+//#endif /* __MOD_TCM__ */
 
-L4C_IND(MSG_ID_L4CPHB_STARTUP_BEGIN_IND,l4cphb_startup_begin_ind_hdlr) 
+L4C_IND(MSG_ID_L4CPHB_STARTUP_BEGIN_IND,l4cphb_startup_begin_ind_hdlr)
 L4C_IND(MSG_ID_FLC_STATUS_REPORT_IND,l4c_null_hdlr)
 
 #ifdef __NBR_CELL_INFO__
@@ -739,7 +741,7 @@
 L4C_CNF(MSG_ID_TCM_PAM_SET_VZW_APN_TABLE_CNF,l4ctcm_set_cnf_hdlr) /* VzW support */
 L4C_CNF(MSG_ID_TCM_PAM_SET_VZW_PARAMS_CNF,l4ctcm_set_cnf_hdlr) /* VzW support */
 L4C_CNF(MSG_ID_TCM_PAM_GET_VZW_APN_TABLE_CNF,l4ctcm_get_vzw_apn_table_cnf_hdlr) /* VzW support */
-L4C_CNF(MSG_ID_TCM_PAM_GET_VZW_PARAMS_CNF,l4ctcm_get_vzw_params_cnf_hdlr) /* VzW support */  
+L4C_CNF(MSG_ID_TCM_PAM_GET_VZW_PARAMS_CNF,l4ctcm_get_vzw_params_cnf_hdlr) /* VzW support */
 L4C_CNF(MSG_ID_TCM_PAM_GET_APN_BLOCKING_TIMER_LENGTH_CNF,l4c_ps_get_apn_rdp_cnf_hdlr) /* VzW support */
 L4C_IND(MSG_ID_TCM_PAM_CANCEL_APN_BLOCKING_TIMER_IND,l4c_ps_cancel_apn_blocking_ind_hdlr)
 
diff --git a/mcu/interface/protocol/general/netinfo_common_struct.h b/mcu/interface/protocol/general/netinfo_common_struct.h
old mode 100644
new mode 100755
index 383a21c..52240c3
--- a/mcu/interface/protocol/general/netinfo_common_struct.h
+++ b/mcu/interface/protocol/general/netinfo_common_struct.h
@@ -45,6 +45,7 @@
 
 #define MAX_IPSTK_V4_IP_INFO_NUM            (1)
 #define MAX_IPSTK_V6_IP_INFO_NUM            (8)
+#define RES_INFO_MAX_CAUSE_NUM              (5)
 
 typedef struct {
     kal_bool                                mtu_present;
@@ -254,4 +255,37 @@
     at_s_nssai_struct s_nssai;
 } retry_info_struct;
 
+/* RES INFO Part*/
+enum {
+    RES_INFO_TYPE_PS = 0,
+    RES_INFO_TYPE_NW = 1,
+    RES_INFO_TYPE_EPDG = 2,
+    RES_INFO_TYPE_NUM,
+    RES_INFO_TYPE_MAX = 0x7fffffff,
+};
+typedef struct {
+    kal_uint8 num;
+    kal_uint16 value[RES_INFO_MAX_CAUSE_NUM];
+}res_info_ps_cause_t;
+
+typedef struct {
+    kal_uint8 num;
+    kal_uint16 value[RES_INFO_MAX_CAUSE_NUM];
+}res_info_nw_cause_t;
+
+typedef struct {
+    kal_uint8 num;
+    //kal_uint16 value;
+}res_info_epdg_cause_t;
+
+typedef struct {
+    res_info_ps_cause_t ps_cause;
+    res_info_nw_cause_t nw_cause;
+    //res_info_epdg_cause_t epdg_cause[ERR_CAUSE_NUM];
+}res_info_struct;
+
+#define res_info_get_cause(info_ptr, type, struct_type) (((info_ptr) == NULL ? NULL : \
+            ((type) == RES_INFO_TYPE_PS ? (struct_type *)&((info_ptr)->ps_cause) : \
+             ((type) == RES_INFO_TYPE_NW ? (struct_type *)&((info_ptr)->nw_cause) : \
+              NULL))))
 #endif /* __NETINFO_COMMON_STRUCT_H__ */
diff --git a/mcu/interface/protocol/general/ps_public_enum.h b/mcu/interface/protocol/general/ps_public_enum.h
old mode 100644
new mode 100755
index bbde2e1..555fe57
--- a/mcu/interface/protocol/general/ps_public_enum.h
+++ b/mcu/interface/protocol/general/ps_public_enum.h
@@ -5278,4 +5278,15 @@
     L4C_NW_DRB_STATE_REPORT_NR = 0x04
 } l4c_nw_drb_state_enum;
 
+typedef enum
+{
+    L4C_NW_PROC_SUCCESS = 0x00,
+    L4C_NW_PROC_FAIL_RECEIVED_IN_WRONG_ERRC_STATE = 0x01,
+    L4C_NW_PROC_FAIL_USER_PRIORITY_SERVICE_ONGOING = 0x02,
+    L4C_NW_PROC_FAIL_CONFLICT_WITH_OTHER_PROCESS = 0x03,
+    L4C_NW_PROC_FAIL_AFR_CAPABILITY_NOT_SUPPORTED = 0x04,
+    L4C_NW_PROC_FAIL_DUE_TO_GEMINI_PROCEDURE = 0x05,
+    L4C_NW_PROC_FAIL_CAUSE_UNKNOWN = 0x06,
+} better_rat_detect_response_enum;
+
 #endif /* _PS_PUBLIC_ENUM_H_ */
diff --git a/mcu/interface/protocol/general/ps_public_struct.h b/mcu/interface/protocol/general/ps_public_struct.h
old mode 100644
new mode 100755
index 3442060..6427d24
--- a/mcu/interface/protocol/general/ps_public_struct.h
+++ b/mcu/interface/protocol/general/ps_public_struct.h
@@ -23,7 +23,7 @@
 *  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. 
+*  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
@@ -45,7 +45,7 @@
  *
  * Description:
  * ------------
- *   This file contains the ABM network internal APIs 
+ *   This file contains the ABM network internal APIs
  *   and these APIs can only be used by MMI CBM and DA
  *
  * Author:
@@ -148,18 +148,18 @@
 
 typedef struct
 {
-    kal_bool    is_sst_present; 
-    kal_uint8   sst; 
+    kal_bool    is_sst_present;
+    kal_uint8   sst;
 
-    kal_bool    is_sd_present; 
-    kal_uint8   sd[TCM_S_NSSAI_SD_LEN]; 
+    kal_bool    is_sd_present;
+    kal_uint8   sd[TCM_S_NSSAI_SD_LEN];
 
     kal_bool    is_mapped_configured_sst_present;
-    kal_uint8   mapped_configured_sst; 
+    kal_uint8   mapped_configured_sst;
 
-    kal_bool    is_mapped_configured_sd_present; 
-    kal_uint8   mapped_configured_sd[TCM_S_NSSAI_SD_LEN]; 
-} l4c_tcm_s_nssai_struct; 
+    kal_bool    is_mapped_configured_sd_present;
+    kal_uint8   mapped_configured_sd[TCM_S_NSSAI_SD_LEN];
+} l4c_tcm_s_nssai_struct;
 
 typedef struct
 {
@@ -180,20 +180,20 @@
     l4c_tcm_securepco_enum  secure_pco;
     l4c_tcm_activate_pdp_request_ipv4_mtu_enum act_pdp_with_pco_req_v4_mtu;
     l4c_tcm_local_addr_ind_enum local_addr_ind;
-    l4c_tcm_non_ip_mtu_discovery_enum   non_ip_mtu_discovery; 
-    l4c_tcm_reliable_data_service_enum  reliable_data_service; 
+    l4c_tcm_non_ip_mtu_discovery_enum   non_ip_mtu_discovery;
+    l4c_tcm_reliable_data_service_enum  reliable_data_service;
     l4c_tcm_ssc_mode_enum               ssc_mode;
     kal_bool                            s_nssai_present;
-    l4c_tcm_s_nssai_struct              s_nssai; 
-    l4c_tcm_access_type_enum            access_type; 
+    l4c_tcm_s_nssai_struct              s_nssai;
+    l4c_tcm_access_type_enum            access_type;
     l4c_tcm_rqos_ind_enum               rqos_ind;
     l4c_tcm_mh6_pdu_enum                mh6_pdu;
-    l4c_tcm_always_on_pdu_enum          always_on_pdu; 
+    l4c_tcm_always_on_pdu_enum          always_on_pdu;
     kal_uint8                           psi;
     l4c_tcm_ladn_dnn_enum               ladn_dnn;
 
     /* Used for SSC Mode 3 PDU session re-restablishment in 5G. */
-    kal_bool  old_psi_present; 
+    kal_bool  old_psi_present;
     kal_uint8 old_psi;
 
     kal_bool  vgpdp_type_present;
@@ -206,7 +206,7 @@
 typedef struct
 {
     kal_uint8               context_id;
-    pdp_addr_type_enum      roaming_ip_type; 
+    pdp_addr_type_enum      roaming_ip_type;
     kal_uint8               psi;
 } l4c_extended_pdp_info_struct;
 
@@ -255,7 +255,7 @@
 {
    kal_uint8 context_id;
    kal_uint8 tot_pf_count;
-   l4c_pf_struct pf[8]; //mtk02126 8 is the max number of packet filters in 27.007 v 7.05 
+   l4c_pf_struct pf[8]; //mtk02126 8 is the max number of packet filters in 27.007 v 7.05
 } l4c_tft_struct;
 #else
 
@@ -284,7 +284,7 @@
 {
    kal_uint8 context_id;
    kal_uint8 tot_pf_count;
-   l4c_pf_struct_only_for_mmi pf[8]; //mtk02126 8 is the max number of packet filters in 27.007 v 7.05 
+   l4c_pf_struct_only_for_mmi pf[8]; //mtk02126 8 is the max number of packet filters in 27.007 v 7.05
 } l4c_tft_struct_only_for_mmi;
 #endif
 
@@ -324,7 +324,7 @@
     kal_uint8 ext2_max_bitrate_down_lnk;
     kal_uint8 ext2_guarntd_bit_rate_down_lnk;
     kal_uint8 ext2_max_bitrate_up_lnk;
-    kal_uint8 ext2_guarntd_bit_rate_up_lnk;   
+    kal_uint8 ext2_guarntd_bit_rate_up_lnk;
 } l4c_eqos_struct;
 
 //mtk04121
@@ -346,7 +346,7 @@
     kal_uint8   ext_guarntd_bit_rate_down_lnk;
     kal_uint8   ext2_guarntd_bit_rate_up_lnk;
     kal_uint8   ext2_guarntd_bit_rate_down_lnk;
-    
+
     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;
@@ -354,7 +354,7 @@
     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;    
+    kal_uint64  ext_eps_qos_ul_mbr;
 } l4c_eps_qos_struct;
 
 //mtk04121
@@ -384,7 +384,7 @@
     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;     
+    kal_uint64  ext_eps_qos_ul_mbr;
 } tcm_eps_qos_struct;
 
 typedef struct
@@ -402,11 +402,11 @@
     kal_uint64 ul_mfbr;
     kal_bool   avg_window_present; /* used for neg_qos. */
     kal_uint32 avg_window;         /* used for neg_qos. */
-} tcm_vgqos_struct; 
+} tcm_vgqos_struct;
 
 typedef struct
 {
-    kal_uint8        context_id; 
+    kal_uint8        context_id;
     tcm_vgqos_struct vgqos;
 } l4c_vgqos_struct;
 
@@ -419,7 +419,7 @@
     kal_uint8 sec_dns[MAX_GPRS_IP_ADDR];
     kal_uint8 apn[MAX_GPRS_APN_LEN];
     kal_uint8 apn_length;
-   
+
     //nvram_editor_qos_struct req_qos;
     kal_uint8 dcomp_algo; // Fixed value: SND_NO_DCOMP
     kal_uint8 hcomp_algo; // Fixed value: SND_NO_PCOMP
@@ -573,7 +573,7 @@
 typedef struct
 {
 	kal_uint32						valueLen;		// Extension Number
-	L4C_LCS_applib2_UnKnowExtensionItem		*value;		// Point to the first 
+	L4C_LCS_applib2_UnKnowExtensionItem		*value;		// Point to the first
 }L4C_LCS_applib2_UnKnowExtensionItemArray;
 
 /* SEQUENCE PrivateExtension */
@@ -584,12 +584,12 @@
 L4C_SS_PrivateExtension;
 
 /* SEQUENCE OF PrivateExtensionList */
-typedef struct L4C_SS_PrivateExtensionList	
-{	
-   kal_uint8 numElements;	
-	
-   L4C_SS_PrivateExtension element[10];	
-}	
+typedef struct L4C_SS_PrivateExtensionList
+{
+   kal_uint8 numElements;
+
+   L4C_SS_PrivateExtension element[10];
+}
 L4C_SS_PrivateExtensionList;
 
 /* SEQUENCE ExtensionContainer */
@@ -735,12 +735,12 @@
 L4C_SS_Area;
 
 /* SEQUENCE OF AreaList */
-typedef struct L4C_SS_AreaList	
-{	
+typedef struct L4C_SS_AreaList
+{
    kal_uint8 numElements;
-	
-   L4C_SS_Area element[10];	
-}	
+
+   L4C_SS_Area element[10];
+}
 L4C_SS_AreaList;
 
 /* SEQUENCE AreaDefinition */
@@ -953,19 +953,19 @@
 
 //eq begin
 typedef struct {
-		
+
     kal_uint32 PWM1_freq_Level_Info[5];
-	kal_uint32 PWM1_duty_Level_Info[5]; 
-	kal_uint32 PWM2_freq_Level_Info[5]; 
+	kal_uint32 PWM1_duty_Level_Info[5];
+	kal_uint32 PWM2_freq_Level_Info[5];
 	kal_uint32 PWM2_duty_Level_Info[5];
-	kal_uint32 PWM3_freq_Level_Info[5]; 
-	kal_uint32 PWM3_duty_Level_Info[5]; 
+	kal_uint32 PWM3_freq_Level_Info[5];
+	kal_uint32 PWM3_duty_Level_Info[5];
 
 	kal_uint8   MainLCD_Contrast_Level_Info[15];
 	kal_uint8   MainLCD_Bias_Level_Info[5];
 	kal_uint8   MainLCD_Linerate_Level_Info[5];
 	kal_uint8   MainLCD_Temp_Level_Info[5];
-   
+
 	kal_uint8   SubLCD_Contrast_Level_Info[15];
 	kal_uint8   SubLCD_Bias_Level_Info[5];
 	kal_uint8   SubLCD_Linerate_Level_Info[5];
@@ -974,8 +974,8 @@
 	kal_uint32   Battery_Level_Info[10];
 
 #ifdef __MULTI_LEVEL_BACKLIGHT_SUPPORT__
-        kal_uint32 bl_PWM_freq_Level_Info[PWM_MAX_BACKLIGHT_LEVEL]; 
-	kal_uint32 bl_PWM_duty_Level_Info[PWM_MAX_BACKLIGHT_LEVEL]; 
+        kal_uint32 bl_PWM_freq_Level_Info[PWM_MAX_BACKLIGHT_LEVEL];
+	kal_uint32 bl_PWM_duty_Level_Info[PWM_MAX_BACKLIGHT_LEVEL];
 #endif
 }
 l4c_hw_profile_struct;
@@ -1066,16 +1066,16 @@
     vt_em_video_codec_preference_choice video_codec_preference_choice;
     vt_em_auto_drop_if_channel_fail_choice auto_drop_if_channel_fail_choice;
     vt_em_terminal_type_choice  terminal_type_choice;
-    kal_int32 timer_T101; //default =  -1  (if its value equals -1, no change should be made) 
-    kal_int32 timer_T109; //default =  -1  (if its value equals -1, no change should be made) 
-    kal_int32 timer_T401; //default =  -1  (if its value equals -1, no change should be made) 
-    kal_int32   user_specified_1; //default =  -1  (if its value equals -1, no change should be made) 
-    kal_int32   user_specified_2; //default =  -1  (if its value equals -1, no change should be made) 
+    kal_int32 timer_T101; //default =  -1  (if its value equals -1, no change should be made)
+    kal_int32 timer_T109; //default =  -1  (if its value equals -1, no change should be made)
+    kal_int32 timer_T401; //default =  -1  (if its value equals -1, no change should be made)
+    kal_int32   user_specified_1; //default =  -1  (if its value equals -1, no change should be made)
+    kal_int32   user_specified_2; //default =  -1  (if its value equals -1, no change should be made)
     kal_uint8   user_specified_3[64]; //get input length by strlen() (end by EOF)
 }vt_em_config_struct;
 
 typedef struct
-{			
+{
 	kal_uint8	mcc[3];	//MCC
 	kal_uint8	mnc[3];	//MNC
 	kal_uint8	lac[2];	//LAC
@@ -1670,7 +1670,7 @@
 typedef struct
 {
     LOCAL_PARA_HDR
-    
+
     kal_uint8 src_id;
     kal_uint16 arfcn;         /* input */
     kal_int16  afc;           /* input */
@@ -1687,7 +1687,7 @@
 typedef struct
 {
     LOCAL_PARA_HDR
-    
+
     kal_uint8 src_id;
     kal_int16 arfcn;      /* input */
     kal_int16 gain;       /* input */
@@ -1728,13 +1728,13 @@
 {
     LOCAL_PARA_HDR
     kal_uint8 src_id;              /* input */ /* output */
-    kal_uint8 band;                /* input */   
+    kal_uint8 band;                /* input */
     kal_int16 arfcn_in;            /* input */
     kal_int16 arfcn_out[20];       /* output */
-    kal_int16 power[20];           /* output */    
+    kal_int16 power[20];           /* output */
     kal_int16 error_cause;         /* output */
-}rf_test_gsm_power_scan_struct, 
-l4cl1_em_rf_test_gsm_power_scan_req_struct, 
+}rf_test_gsm_power_scan_struct,
+l4cl1_em_rf_test_gsm_power_scan_req_struct,
 l4cl1_em_rf_test_gsm_power_scan_cnf_struct;
 
 #if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
@@ -1751,11 +1751,11 @@
 typedef struct
 {
     rf_test_gsm_tx_test_struct gsm_tx_test;
-    rf_test_gsm_rx_test_struct gsm_rx_test;   
-    rf_test_gsm_power_scan_struct gsm_power_scan;    
-#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)	
+    rf_test_gsm_rx_test_struct gsm_rx_test;
+    rf_test_gsm_power_scan_struct gsm_power_scan;
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
     rf_test_gsm_rx_test_two_path_struct  gsm_rx_test_2_path;
-#endif	
+#endif
 }rf_test_gsm_param_struct;
 
 
@@ -1768,7 +1768,7 @@
     kal_uint8 rat;
     kal_uint8 repeat_times;
     kal_uint8 dl_bw;
-    kal_uint8 ul_bw; 
+    kal_uint8 ul_bw;
     kal_uint8 vrb_start;
     kal_uint8 vrb_len;
     kal_uint8 ant_state;
@@ -1776,14 +1776,14 @@
     kal_int16 rxm_gain;
     kal_int16 rxd_gain;
     kal_uint16 band;
-    EARFCN    arfcn; 
+    EARFCN    arfcn;
 }em_rf_scan_req_struct;
 
 typedef struct
 {
     kal_uint8 mono_enable;    /* input */
 }fm_radio_mono_struct;
-  
+
 typedef struct
 {
     kal_uint8 stereo_enable;  /* input */
@@ -1792,19 +1792,19 @@
 
 typedef struct
 {
-    kal_uint8 level;                  /* input */   
+    kal_uint8 level;                  /* input */
 }fm_radio_rssi_struct;
 
 typedef struct
 {
-    kal_uint8 item_value;          /* input */   
+    kal_uint8 item_value;          /* input */
 }fm_radio_if_count_delta_struct;
 
 typedef struct
 {
     fm_radio_mono_struct fm_radio_mono;
-    fm_radio_stereo_struct fm_radio_stereo;   
-    fm_radio_rssi_struct fm_radio_rssi;    
+    fm_radio_stereo_struct fm_radio_stereo;
+    fm_radio_rssi_struct fm_radio_rssi;
     fm_radio_if_count_delta_struct fm_radio_if;
 }fm_radio_config_param_struct;
 
@@ -1819,7 +1819,7 @@
 {
     kal_uint8 contry_code[2];   /* input */
     kal_uint32 ch_freq;               /* input */
-    kal_uint8 tx_rate;  /* input */    
+    kal_uint8 tx_rate;  /* input */
     kal_uint8 tx_ant;                /* input */
     kal_uint8 gain;                   /* input */
     wndrv_test_bandwidth_enum txBw;
@@ -1860,7 +1860,7 @@
     kal_uint32 rssi_variance;            /* int_rssi_variance */
     kal_uint32 int_long_preamble;    /* int_long_preamble_num */
     kal_uint32 int_short_preamble;   /* int_short_preamble_num */
-    wndrv_test_bandwidth_enum   rxBw;                         /* input */ 
+    wndrv_test_bandwidth_enum   rxBw;                         /* input */
 }rf_test_wifi_rx_cont_pkt_struct;
 
 typedef struct
@@ -1959,13 +1959,13 @@
 
 //eq end
 
-typedef struct 
+typedef struct
 {
     kal_uint8 addr_length;
     kal_uint8 addr_bcd[11];
 }l4c_sms_addr_struct;
 
-typedef struct 
+typedef struct
 {
 	l4c_sms_addr_struct          sca;
 	kal_uint8	tpdu[176];
@@ -1973,7 +1973,7 @@
 	kal_uint8 tpdu_len;
 }l4c_usm_cmgw_struct;
 
-typedef struct 
+typedef struct
 {
 	kal_uint8 mode;
 	kal_uint8	mt;
@@ -1982,7 +1982,7 @@
 	kal_uint8 bfr;
 }l4c_usm_cnmi_struct;
 
-typedef struct 
+typedef struct
 {
 	kal_uint16	reply_index;
 	kal_uint16	data_len;
@@ -2122,11 +2122,11 @@
     kal_uint8                   data_coding_scheme;
 } smsal_4g5g_cb_data_ind_struct;
 
-typedef struct 
+typedef struct
 {
     LOCAL_PARA_HDR
-    kal_uint16 message_id;          
-    kal_uint16 serial_number;        
+    kal_uint16 message_id;
+    kal_uint16 serial_number;
 } smsal_4g5g_cb_msg_removal_req_struct;
 
 typedef struct
@@ -2148,7 +2148,7 @@
 typedef struct {
    kal_uint8 storage;
    kal_uint8 type;
-   kal_uint8 num_index; 
+   kal_uint8 num_index;
    kal_uint8 aas_id;
    kal_uint16 index;
    kal_uint16 record_index;
@@ -2156,7 +2156,7 @@
    l4_name_struct alpha_id;
 } l4c_phb_entry_struct;
 
-typedef struct { 
+typedef struct {
     kal_uint16 record_size;   /* size of record in storage */
     kal_uint16 record_num;    /* rec number */
     kal_uint8  alpha_length;  /* alpha length */
@@ -2273,7 +2273,7 @@
     kal_uint8 esc; // emergency service category //
     kal_uint8 name_length;
     kal_uint8 name_dcs;
-    kal_uint8 name[MAX_SIM_NAME_LEN]; 
+    kal_uint8 name[MAX_SIM_NAME_LEN];
 } sim_ecc_entry_struct;
 
 typedef struct
@@ -2376,7 +2376,7 @@
     kal_uint8 ipv6[IPV6_ADDR_LEN];
 } ip_addr_struct;
 
-typedef struct 
+typedef struct
 {
     EARFCN                      earfcn;
     kal_uint8                   bandwidth;
@@ -2392,7 +2392,7 @@
     kal_uint8 dnsv6[IPV6_ADDR_LEN] ;
 } ipv6_dns_struct ;
 
-#define NUM_OF_DNS_ADDR 2 
+#define NUM_OF_DNS_ADDR 2
 typedef struct {
     ipv4_dns_struct v4[NUM_OF_DNS_ADDR];
     ipv6_dns_struct v6[NUM_OF_DNS_ADDR];
@@ -2456,7 +2456,7 @@
     sap_type        sap_id;
     kal_uint8       reconfig_type;
     kal_uint8       gemini_check;
-    SBP_RECONFIG_CUSTOM_FUNC             custom_func_ptr;     /* IMS customized  */            
+    SBP_RECONFIG_CUSTOM_FUNC             custom_func_ptr;     /* IMS customized  */
 }reconfigure_module_info_struct;
 
 typedef struct {
@@ -2469,7 +2469,7 @@
     sap_type        sap_id;
     kal_uint32       reconfig_type;
     kal_uint8       gemini_check;
-    SBP_RECONFIG_CUSTOM_FUNC             custom_func_ptr;     /* IMS customized  */            
+    SBP_RECONFIG_CUSTOM_FUNC             custom_func_ptr;     /* IMS customized  */
 }sbp_reconfigure_module_info_struct;
 
 typedef struct {
@@ -2522,13 +2522,13 @@
 
 typedef struct
 {
-    kal_uint8 result; 
-    kal_uint8 plmn_id[7];	
+    kal_uint8 result;
+    kal_uint8 plmn_id[7];
 	kal_uint8 lac[2];
 	kal_uint16 cell_id;
 	kal_uint16 arfcn;
 	kal_uint8 bsic;
-	kal_uint8 si3_raw_data[23];	
+	kal_uint8 si3_raw_data[23];
 }l4c_pseudo_bs_info_struct;
 
 
@@ -2614,13 +2614,13 @@
 typedef struct {
 	LOCAL_PARA_HDR
     kal_uint8  src_id;
-	kal_bool   result;		
+	kal_bool   result;
 }l4cnl1_set_max_tx_pwr_offset_cnf_struct;
 
 typedef struct {
 	kal_uint8  band;
 	kal_uint8  tx_path; /*0/1*/
-	kal_int32   pwr_value;		
+	kal_int32   pwr_value;
 }nl1_tx_pwr_struct;
 
 typedef struct {
@@ -2664,10 +2664,10 @@
     pam_procedure_enum  reject_proc;
 } pam_non_standard_backoff_timer_struct;
 
-typedef struct 
+typedef struct
 {
     LOCAL_PARA_HDR
-    at_cabtsri_ind_struct                  cabtsri_ind;  // for standard AT cmd: +CABTSRI    
+    at_cabtsri_ind_struct                  cabtsri_ind;  // for standard AT cmd: +CABTSRI
 	pam_non_standard_backoff_timer_struct  info;  // for other related back-off timer info
 } pam_backoff_timer_report_ind_struct; //this struct should be removed after L4/TCM remove MSG_ID_PAM_BACKOFF_TIMER_REPORT_IND
 
@@ -2675,13 +2675,13 @@
 typedef struct {
     kal_bool  is_sst_present;
     kal_uint8 sst;
-    
+
     kal_bool  is_sd_present;
     kal_uint8 sd[S_NSSAI_SD_LEN];
-    
+
     kal_bool  is_mapped_configured_sst_present;
     kal_uint8 mapped_configured_sst;
-    
+
     kal_bool  is_mapped_configured_sd_present;
     kal_uint8 mapped_configured_sd[S_NSSAI_SD_LEN];
 } pdus_s_nssai_struct;
@@ -2694,7 +2694,7 @@
     kal_bool   mfbr_dl_present;
     kal_bool   avg_window_present;
     kal_bool   ebi_present;
-    
+
     kal_uint8  qos_5qi;
     kal_uint64 gfbr_ul;
     kal_uint64 gfbr_dl;
@@ -2708,7 +2708,7 @@
     kal_uint8 qfi_with_default_rule;
     kal_uint32 num_of_active_flow;
     vgsm_flow_state_enum state[VGSM_MAX_QFI_NUM];
-    qos_params_struct flow_params[VGSM_MAX_QFI_NUM]; 
+    qos_params_struct flow_params[VGSM_MAX_QFI_NUM];
 
 } pdus_qos_flow_struct;
 
@@ -2725,13 +2725,13 @@
 typedef struct {
     kal_uint8 qfi;
     vgsm_flow_action_enum qfi_action;
-        
+
 } qos_flow_action_struct;
 
 typedef struct {
     kal_uint8 num_of_flow_action;
     qos_flow_action_struct flow_action[VGSM_MAX_QFI_NUM];
-    
+
 } qos_flow_action_table_struct;
 
 typedef struct {
@@ -2769,7 +2769,7 @@
 	sbp_reconfig_custom_param_struct sbp_parameters;
 } l4c_atci_dsbp_reconfigure_ind_struct;
 
-typedef struct 
+typedef struct
 {
     LOCAL_PARA_HDR
     vdm_call_status_enum                    indication;
@@ -2783,29 +2783,29 @@
     module_type     mod_id;
     sap_type        sap_id;
     vdm_call_status_enum       reg_type;
-    kal_uint8       gemini_check;          
+    kal_uint8       gemini_check;
 } call_status_notify_module_info_struct;
 
 typedef struct {
     LOCAL_PARA_HDR
 
     ia_apn_change_cause_enum cause;
-} ia_apn_change_req_struct; 
+} ia_apn_change_req_struct;
 
 typedef struct {
     LOCAL_PARA_HDR
-        
+
     kal_uint8 ap_cid;
     kal_uint8 d2_cid;
     kal_uint8 ps_cid;
-} l4aps_tcm_update_cid_mapping_req_struct; 
+} l4aps_tcm_update_cid_mapping_req_struct;
 
 typedef struct {
     LOCAL_PARA_HDR
-        
+
     kal_uint8 d2_cid;
     kal_bool result;
-} l4aps_tcm_update_cid_mapping_cnf_struct; 
+} l4aps_tcm_update_cid_mapping_cnf_struct;
 
 typedef struct {
     kal_uint16 ref; /* concat. message reference*/
@@ -2828,7 +2828,7 @@
 typedef struct
 {
     LOCAL_PARA_HDR
-    kal_uint8 hvolte_mode;    
+    kal_uint8 hvolte_mode;
 } l4c_hvolte_mode_switch_ind_struct;
 
 typedef struct
@@ -2854,7 +2854,7 @@
 typedef struct
 {
     kal_uint16 len;
-    kal_uint8  uri[MAX_PHB_XDN_URI_LEN + 1];    
+    kal_uint8  uri[MAX_PHB_XDN_URI_LEN + 1];
 
 } l4_phb_uri_struct;
 #endif /* (__ECALL_SUPPORT__) || (__NG_ECALL_SUPPORT__) */
@@ -2962,7 +2962,7 @@
     kal_bool             reg_status;      // 0: non-Serving cell; 1: Serving cell
 } network_scan_2g_output_struct;
 
-typedef struct 
+typedef struct
 {
     /* Cell Identity UMTS*/
     kal_uint16               uarfcn;              // UARFCN
@@ -2970,7 +2970,7 @@
     plmn_id_struct           plmn_id;             //  MCC + MNC
     kal_uint32               cell_id;             // CI
     kal_uint16               lac;                 //LAC
-    /* Signal Strength UMTS*/ 
+    /* Signal Strength UMTS*/
     kal_int16                rscp;                // rscp
     kal_int16                ecno;                // EcNO
     kal_int32                rssi;                // RSSI
@@ -2998,7 +2998,7 @@
     network_scan_4g_output_struct nw_scan_4g_output;
 	network_scan_5g_output_struct nw_scan_5g_output;
 } network_scan_rat_union_type;
-#endif 
+#endif
 
 typedef struct
 {
@@ -3013,7 +3013,7 @@
 
     l4bnw_cell_info_struct cs_cell_info;
     l4bnw_cell_info_struct ps_cell_info;
-    
+
     /* C2K cell info */
     kal_uint16 sid;
     kal_uint16 nid;
@@ -3087,4 +3087,27 @@
 	kal_uint8 phy_idx;
 }l4c_tx_pwr_info_per_antenna;
 #endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    rat_enum target_rat;
+} l4c_as_better_rat_detect_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8 src_id;
+    kal_bool result;
+} l4c_as_better_rat_detect_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    better_rat_detect_response_enum result;
+} l4c_as_better_rat_detect_ind_struct;
+
 #endif /* _PS_PUBLIC_STRUCT_H_ */
diff --git a/mcu/interface/protocol/general/sml_public_def.h b/mcu/interface/protocol/general/sml_public_def.h
old mode 100644
new mode 100755
index 6119acd..7afc907
--- a/mcu/interface/protocol/general/sml_public_def.h
+++ b/mcu/interface/protocol/general/sml_public_def.h
@@ -448,10 +448,8 @@
 } sml_tmo_context_struct;                                               /* 42 + N + M + 256 + 4*/
 typedef sml_tmo_context_struct nvram_sml_tmo_context_struct;
 
-#if defined(NVRAM_AUTO_GEN)
 extern const nvram_sml_tmo_context_struct NVRAM_EF_SML_TMO_DEFAULT;
 extern const nvram_sml_att_context_struct NVRAM_EF_L4_SML_ATT_DEFAULT;
-#endif
 
 
 typedef struct {
diff --git a/mcu/interface/protocol/sase/sase_if.h b/mcu/interface/protocol/sase/sase_if.h
old mode 100644
new mode 100755
index 4e98ef0..75fc7d3
--- a/mcu/interface/protocol/sase/sase_if.h
+++ b/mcu/interface/protocol/sase/sase_if.h
@@ -53,13 +53,18 @@
  * ==========================================================================
  * $Log$
  *
+ * 08 12 2022 tzuan.lin
+ * [MOLY00767952] The Requirement for SA silence mode in VoNR
+ * 	
+ * 	sa silence in handover
+ *
  * 02 14 2022 shih-yu.chen
- * [MOLY00663097] 【Clone from ALPS05378235】请协助评估实现SA功耗优化接口
+ * [MOLY00663097] ?Clone from ALPS05378235?‘请??åŠ©è¯„ä¼°å®žçŽ°SA??Ÿè?—ä?˜å?–接?£
  * 	
  * 	sa_silence merge to MD700.
  *
  * 03 23 2021 shih-yu.chen
- * [MOLY00576678] 请协助评估实现SA功耗优化接口
+ * [MOLY00576678] 请å?åŠ©è¯„ä¼°å®žçŽ°SA??Ÿè?—ä?˜å?–接?£
  * 	
  * add sa_silence interface.
  *
@@ -156,13 +161,20 @@
 }sase_nrrc_scg_event_ind_struct;
 
 typedef struct {
-	LOCAL_PARA_HDR
-	kal_bool sa_silence_on;
+    LOCAL_PARA_HDR
+    kal_bool is_sa_silence_on;
+    kal_bool is_ho_to_lte_on;
+    kal_bool is_direct_local_release_on;
 } sase_nrrc_sa_silence_ctrl_req_struct;
 
 typedef struct {
-	LOCAL_PARA_HDR
-	kal_bool redirect_to_lte;
+    LOCAL_PARA_HDR
+    kal_bool sa_silence_on;
+} sase_errc_sa_silence_ctrl_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_redirect_to_lte;
 } sase_nrrc_connection_release_ind_struct;
 
 typedef enum {
@@ -305,7 +317,6 @@
 typedef	sase_nrrc_scg_event_ind_struct sase_nrrc_scg_event_ind_struct;              // MSG_ID_SASE_NRRC_SCG_EVENT_IND
 // Mapping interface between TMC and SASE client
 typedef	sase_tmc_ue_status_ind_struct sase_tmc_ue_status_ind_struct;                // MSG_ID_SASE_TMC_UE_STATUS_IND
-typedef sase_nrrc_sa_silence_ctrl_req_struct sase_errc_sa_silence_ctrl_req_struct;
 typedef sase_general_modem_configure_query_req sase_general_modem_configure_query_req_struct;  // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_REQ
 typedef sase_general_modem_configure_query_cnf sase_general_modem_configure_query_cnf_struct;  // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_CNF
 #endif