[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/custom/protocol/common/ps/custom_ssds.c b/mcu/custom/protocol/common/ps/custom_ssds.c
new file mode 100644
index 0000000..43d073a
--- /dev/null
+++ b/mcu/custom/protocol/common/ps/custom_ssds.c
@@ -0,0 +1,6451 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * custom_ssds.c
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ ****************************************************************************/
+
+#include <string.h>
+#include "kal_trace.h"
+#include "kal_general_types.h"
+#include "kal_public_api.h"
+#include "custom_ssds.h"
+#include "custom_ssds_config.h"
+#include "sbp_public_utility.h"
+#include "ps_public_utility.h" //l4c_gemini_get_actual_sim_id
+
+/* SIM */
+#include "sim_common_enums.h" /* for is_test_sim */
+
+extern kal_bool ssds_path_is_pct_icccard(module_type dst_module);
+
+kal_bool  _custom_ssds_is_cfu(custom_ssds_atcmd_info *atcmd_info)
+{
+    kal_char action_activate[] = "*";
+    kal_char action_deactivate[] = "#";
+    kal_char action_query[]  = "*#";
+    kal_char action_rigester[]  = "**";
+    kal_char action_erasure[] = "##";
+    kal_uint32  index = 0;
+    kal_bool    is_cfu = KAL_FALSE;
+
+    /*find '=' */
+    while ((atcmd_info->atcmd_buff[index] != '=') && (index < atcmd_info->atcmd_len))
+    {
+        index++;
+    }
+
+    if (index >= atcmd_info->atcmd_len)
+    {
+        kal_prompt_trace(MOD_SSDS, "ERROR! Unexpected AT command!");
+        return KAL_FALSE;
+    } else {
+        index += 6;      
+    }
+
+    /*skip the action*/
+    if ( (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_query, 2)) ||
+         (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_rigester, 2)) ||
+         (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_erasure, 2)) )
+    {
+        index += 2;
+    }
+    else if ( (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_activate, 1)) ||
+              (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_deactivate, 1)) )
+    {
+        index += 1;
+    }
+    else
+    {
+        kal_prompt_trace(MOD_SSDS, "ERROR! ACTION parse fail!");
+        return KAL_FALSE;
+    }
+
+    /*parse the CFU code*/
+    if (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, "21", 2) ||
+        0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, "22", 2))
+    {
+        is_cfu = KAL_TRUE;
+    }
+
+    return  is_cfu;
+}
+
+kal_bool custom_ssds_need_sync_to_cs(custom_ssds_atcmd_type ss_type,kal_uint32 rsp_code)
+{
+	kal_bool is_need_to_sync = KAL_FALSE;
+	if((ss_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR) && (rsp_code == 200))
+	{
+		is_need_to_sync = KAL_TRUE;
+	}
+	return is_need_to_sync;
+}
+
+kal_bool  _custom_ssds_cdma_only_path_variable(kal_uint32  op_id,
+                                                               kal_char    *mccmnc)
+{
+    kal_uint32 atcmd_request_cdma_only_table[] = { 12 };
+    kal_uint32    index;
+    kal_bool      ret_value = KAL_FALSE;
+
+    /*Special case: support CDMA only*/
+    for (index=0; index<sizeof(atcmd_request_cdma_only_table)/sizeof(atcmd_request_cdma_only_table[0]); index++)
+    {
+       if (op_id == atcmd_request_cdma_only_table[index])
+       {
+           ret_value = KAL_TRUE;
+       }
+    }
+
+    return  ret_value;
+
+}
+
+#if 1
+
+void  _custom_ssds_ussd_req_path_ims_select_rule(custom_ssds_params_info_struct  *params_info, custom_ssds_ussd_path_type *atcmd_ussd_path_type)
+{
+	
+	if(params_info->is_ims_registered == KAL_TRUE) 
+	{
+		//VoPS only works for cellular network,if UE is registered on VoWiFi,no need to check VoPS
+		if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
+		{
+			*atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
+			kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]registered on VoWiFi,send to IMS!");
+		}
+		else
+		{
+			if(params_info->is_imsvops_support == KAL_TRUE)
+			{
+				*atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
+				kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]IMSVoPS is support and ims is registered!");
+			}
+			else
+			{
+				*atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+				kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]IMSVoPS is not support!");
+			}
+		}
+	}
+	else
+	{
+		*atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+		kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]No IMS registered!");
+	}
+
+}
+
+
+custom_ssds_ussd_path_type  _custom_ssds_get_ussd_req_path_default_config(custom_ssds_params_info_struct  *params_info)
+{
+    custom_ssds_ussd_path_type   atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_INVALID;
+	
+    _custom_ssds_ussd_req_path_ims_select_rule(params_info, &atcmd_ussd_path_type);
+
+	if(atcmd_ussd_path_type != CUSTOM_SSDS_USSD_PATH_TYPE_INVALID)
+	{
+	    kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[Default Config]ussd path:%d",atcmd_ussd_path_type);
+	}
+	return atcmd_ussd_path_type;
+}
+
+
+void  _custom_ssds_get_ussd_req_path_default_config_by_op(custom_ssds_params_info_struct  *params_info,
+	                                                                                             custom_ssds_ussd_path_type	*req_ussd_path_type)
+{
+	kal_bool                     is_changed = KAL_FALSE;
+	
+	switch (params_info->op_id)
+    {
+        case 0: /* Default values */
+            break;
+        case 1:/* CMCC */
+        case 2:/* CU */
+        case 3:/* Orange */
+        case 102:/* Smartone */
+        case 112:/* Telcel */		
+        case 125:/*DTAC-Thailand*/
+		case 140:/*MTN/Ghana*/
+        case 223: /* Indosat-Indonesia */
+		case 228: /* Celcom-Malaysia */
+        case 231: /* Maxis-Malaysia */
+        case 241: /* Claro-Puerto Rico */		
+		case 244: /* Metfone-Cambodia */
+		case 278: /* Jazz-Pakistan */
+		case 294: /* MPT-Mayanmar */
+		case 296:/* CWW-US */
+		case 306: /* CUHK-Hongkong */
+		case 314: /* Telepost-Greenland */
+        case 318: /* Vianova/Italy */
+        case 320: /* Coriolis/France */
+		case 334:/* Tashicell-Bhutan */
+		case 335:/* TOT-Thailand*/
+        case 337:/* Antel-Uruguay*/
+		case 339:/* Unitel- Angola*/
+		case 340:/*VDF-Papua*/
+		case 341:/*Ucell-Uzbekistan*/
+		case 342:/*Ecotel-Canada*/
+		case 349:/*MTS-Armenia*/
+		case 353:/*We4G-Israel*/
+        case 354: /* Poste Mobile/Italy */
+            *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+			is_changed = KAL_TRUE;
+            break;
+        case 5: /* TMOEU/DTAG Greece/Netherlands/Hungary/Slovakia */
+            if((0 == strcmp(params_info->mcc, "202")) || (0 == strcmp(params_info->mcc, "204")) ||
+               (0 == strcmp(params_info->mcc, "216")) || (0 == strcmp(params_info->mcc, "231")))
+            {
+                *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+                is_changed = KAL_TRUE;
+            }
+            break;
+        case 120:/* Claro */
+		{
+			if(0 == strcmp(params_info->mcc, "370")) /* Claro-Dominican support USSI */
+			{
+                break;
+			}
+            *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+            is_changed = KAL_TRUE;			
+            break;			
+		}
+        case 11: /* H3G */
+            if(0 == strcmp(params_info->mcc, "272"))  /* H3G-Ireland */
+            {
+                *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+                is_changed = KAL_TRUE;
+            }
+            break;
+		case 137:/* Tele2 */
+           	if(0 == strcmp(params_info->mcc, "250")) /* Tele2/Russia USSD over CS */
+           	{
+               	*req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+               	is_changed = KAL_TRUE;
+          	}
+           	break;
+        case 156: /* Telenor */
+            if(0 == strcmp(params_info->mcc, "297"))  /* Telenor-Montenegro */
+            {
+                *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+                is_changed = KAL_TRUE;
+            }
+            break;
+        case 319: /* Monaco Telecom France/Epic Cyprus */
+            if(0 == strcmp(params_info->mcc, "212")) /* Monaco Telecom */
+            {
+                *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+                is_changed = KAL_TRUE;
+            }
+            break;
+	    case 9:/* CT */
+		case 304:/* CTMO: only support CF and CW --aomen*/
+            *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_NOT_SUPPORT;
+            is_changed = KAL_TRUE;
+            break;
+        default:
+            break;
+    }
+    if(is_changed == KAL_TRUE)
+    {
+        kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[Default Config by OP]ussd path:%d, opid:%d",*req_ussd_path_type, params_info->op_id);
+    }
+    return;
+}
+
+
+void  _custom_ssds_get_ussd_req_path_from_config_file(custom_ssds_params_info_struct  *params_info,
+	                                                                 custom_ssds_config_type  cfg_type,
+	                                                                 custom_ssds_ussd_path_type	*req_ussd_path_type)
+{
+    nvram_ef_ssds_common_config_profile_struct		*nvram_ptr = NULL;	
+	custom_ssds_config_context_struct			    *context_root;
+    sim_interface_enum                              sim_id = params_info->sim_id;
+	kal_bool                                        is_changed = KAL_FALSE;
+	
+    context_root = _custom_ssds_get_context_by_simid(sim_id, cfg_type);
+
+	if (!context_root)
+	{
+		return;
+	}
+	nvram_ptr = &(context_root->common_config_record);
+	
+    switch(nvram_ptr->ussd_path)
+    {
+        case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_IMS_IF_IMS_REGISTERED:
+			_custom_ssds_ussd_req_path_ims_select_rule(params_info, req_ussd_path_type);
+			is_changed = KAL_TRUE;
+			break;
+        
+		case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_CS:
+			*req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
+			is_changed = KAL_TRUE;
+			break;
+			
+		case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_IMS:
+	        *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
+			is_changed = KAL_TRUE;
+			break;
+			
+		case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_NOT_SUPPORT:
+			*req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_NOT_SUPPORT;
+			is_changed = KAL_TRUE;
+			break;
+			
+		default:
+			break;      
+    }
+	if(is_changed == KAL_TRUE)
+	{
+        kal_prompt_trace(MOD_SSDS+sim_id, "[Config file]cfg_type:%d,cfg_ussd_path:%d,atcmd_ussd_path_type:%d",
+			                               cfg_type, nvram_ptr->ussd_path, *req_ussd_path_type);
+	}
+	
+	return;
+}
+
+
+custom_ssds_ussd_path_type  custom_ssds_get_ussd_req_path_variable ( custom_ssds_params_info_struct *params_info )
+{
+	custom_ssds_ussd_path_type	req_ussd_path_type;
+
+
+    /* Priority 5 :default config */
+	req_ussd_path_type = _custom_ssds_get_ussd_req_path_default_config(params_info);
+
+    /* Priority 4 :mcf ota config */
+	_custom_ssds_get_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_MCF_OTA, &req_ussd_path_type);
+
+    /* Priority 3 :default OP config */
+	_custom_ssds_get_ussd_req_path_default_config_by_op(params_info, &req_ussd_path_type);
+
+    /* Priority 2 :mcf ota by op config */
+	_custom_ssds_get_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP, &req_ussd_path_type);
+
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+	_custom_ssds_get_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_NVRAM, &req_ussd_path_type);
+	
+	return	req_ussd_path_type;
+}
+
+
+#endif
+
+kal_bool custom_ssds_is_csfb_allowed(kal_uint32 op_id, kal_char *mccmnc, custom_ssds_roaming_type roaming_type)
+{
+    kal_bool is_csfb_allowed = KAL_TRUE;
+
+    if (117 == op_id && CUSTOM_SSDS_ROAMING_TYPE_NO == roaming_type)
+    {
+        is_csfb_allowed = KAL_FALSE;
+    }
+    return is_csfb_allowed;
+}
+
+kal_bool custom_ssds_is_csfb_during_imsCall_allowed(kal_uint32 op_id,
+                                                    kal_char *mccmnc,
+                                                    custom_ssds_roaming_type roaming_type,
+                                                    custom_ssds_ims_domain_type ims_domain,
+                                                    kal_bool is_wfc_call)
+{
+    kal_bool is_csfb_allowed = KAL_FALSE;
+    if(KAL_TRUE == is_wfc_call)
+    {
+        is_csfb_allowed = KAL_TRUE;
+    }
+
+    return is_csfb_allowed;
+}
+
+#if 1
+void _custom_ssds_need_send_409_err_string_default_variable(module_type module,kal_bool *need_send)
+{
+    *need_send = KAL_FALSE;
+
+    return;
+}
+
+
+void _custom_ssds_need_send_409_err_string_variable(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
+{
+    switch(op_id)
+    {/* currently only for AT&T and AU Optus */
+        case 7:
+        case 145:
+        case 196:
+        case 152:
+            *need_send = KAL_TRUE;
+            break;
+        default:
+            break;
+    }
+
+    return;
+}
+void _custom_ssds_need_send_409_err_string_nvram_variable(module_type module,kal_bool *need_send,
+                                                          custom_ssds_config_type  cfg_type)
+{
+    sim_interface_enum	sim_id;
+
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
+			
+    if (KAL_TRUE == (custom_ssds_config_get_common_config(NVRAM_SSDS_NEED_SEND_409_ERR_STRING, sim_id,(void*)(&need_send),cfg_type)))
+    {
+        kal_prompt_trace(module, "Use NVRAM: if send 409 err string");
+    }
+
+    return;
+}
+
+void _custom_ssds_get_need_send_409_err_string_from_common_file(module_type module,kal_bool *need_send,
+                                                                custom_ssds_config_type  cfg_type)
+{
+    sim_interface_enum sim_id;
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
+    custom_ssds_config_get_need_send_409_err_string_from_common_file(sim_id,need_send,cfg_type);
+}
+
+
+void custom_ssds_need_send_409_err_string_variable(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
+{
+    /* Priority 5 :default config */
+    _custom_ssds_need_send_409_err_string_default_variable(module,need_send);
+
+    /* Priority 4 :mcf ota config */
+    _custom_ssds_need_send_409_err_string_nvram_variable(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+    _custom_ssds_get_need_send_409_err_string_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+
+    /* Priority 3 :default OP config */
+    _custom_ssds_need_send_409_err_string_variable(module,need_send,op_id,mccmnc);
+
+    /* Priority 2 :mcf ota by op config */
+    _custom_ssds_need_send_409_err_string_nvram_variable(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+    _custom_ssds_get_need_send_409_err_string_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+	_custom_ssds_need_send_409_err_string_nvram_variable(module,need_send,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    _custom_ssds_get_need_send_409_err_string_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    return;
+}
+
+#endif
+
+#if 1
+void _custom_ssds_need_sync_cw_in_234g_variable_default(module_type module,kal_bool *need_sync)
+{
+    *need_sync = KAL_FALSE;
+
+    return;
+}
+
+
+void _custom_ssds_need_sync_cw_in_234g_variable(module_type module,kal_bool *need_sync,kal_uint32 op_id,kal_char *mccmnc)
+{
+    /* currently only for VHA which has such characters:CW always on in 4G and */
+    /* CW controlled by NW in non-4G and the CW not synced in 4G and non-4G NW */
+    /* So need UE to sync CW setting in 4G and non-4G by itself */
+    switch(op_id)
+    {
+        case 3:
+        case 108:
+        case 153:
+            *need_sync = KAL_TRUE;
+            break;
+        default:
+            break;
+    }
+
+    return;
+}
+void _custom_ssds_need_sync_cw_in_234g_nvram_variable(module_type module,kal_bool *need_sync,
+                                                          custom_ssds_config_type  cfg_type)
+{
+    sim_interface_enum	sim_id;
+
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
+			
+    if (KAL_TRUE == (custom_ssds_config_get_common_config(NVRAM_SSDS_NEED_SYNC_CW_IN_234G, sim_id,(void*)need_sync,cfg_type)))
+    {
+        kal_prompt_trace(module, "Use NVRAM: if send sync cw in 234g");
+        kal_prompt_trace(module,"need_sync is:%d ", *need_sync);//for debug
+    }
+
+    return;
+}
+
+void _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module_type module,kal_bool *need_sync,
+                                                          custom_ssds_config_type  cfg_type)
+{
+    sim_interface_enum sim_id;
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
+    custom_ssds_config_get_need_sync_cw_in_234g_from_common_file(sim_id,need_sync,cfg_type);
+}
+
+
+void custom_ssds_need_sync_cw_in_234g_variable(module_type module,kal_bool *need_sync,kal_uint32 op_id,kal_char *mccmnc)
+{
+    /* Priority 5 :default config */
+    _custom_ssds_need_sync_cw_in_234g_variable_default(module,need_sync);
+
+    /* Priority 4 :mcf ota config */
+    _custom_ssds_need_sync_cw_in_234g_nvram_variable(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+    _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+
+    /* Priority 3 :default OP config */
+    _custom_ssds_need_sync_cw_in_234g_variable(module,need_sync,op_id,mccmnc);
+
+    /* Priority 2 :mcf ota by op config */
+    _custom_ssds_need_sync_cw_in_234g_nvram_variable(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+    _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+    _custom_ssds_need_sync_cw_in_234g_nvram_variable(module,need_sync,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module,need_sync,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+
+    return;
+}
+#endif
+
+#if 1
+
+void _custom_ssds_need_send_test_cmd_default(module_type module,kal_bool *need_send)
+{
+    *need_send = KAL_FALSE;
+
+	return;
+}
+
+
+void _custom_ssds_need_send_test_cmd(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
+{
+    switch(op_id)
+    {
+        case 5://DT
+            *need_send = KAL_TRUE;
+            break;
+        default:
+            break;
+    }
+
+	return;
+}
+
+void _custom_ssds_get_need_send_test_cmd_from_common_file(module_type module,
+	                                                      kal_bool *need_sync,
+                                                          custom_ssds_config_type  cfg_type)
+{
+    sim_interface_enum sim_id;
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
+    custom_ssds_config_get_need_send_test_cmd_from_common_file(sim_id,need_sync,cfg_type);
+}
+
+
+void custom_ssds_need_send_test_cmd(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
+{
+    /* Priority 5 :default config */
+    _custom_ssds_need_send_test_cmd_default(module,need_send);
+    /* Priority 4 :mcf ota config */
+    _custom_ssds_get_need_send_test_cmd_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+    /* Priority 3 :default OP config */
+    _custom_ssds_need_send_test_cmd(module,need_send,op_id,mccmnc);
+    /* Priority 2 :mcf ota by op config */
+    _custom_ssds_get_need_send_test_cmd_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+    _custom_ssds_get_need_send_test_cmd_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    return;
+}
+
+#endif
+
+
+/********new design begin***********/
+
+#if 1
+void custom_ssds_get_req_path_default_config(custom_ssds_params_info_struct *params_info,custom_ssds_path_type *atcmd_path_type)
+{
+    *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+
+    if(CUSTOM_SSDS_ATCMD_TYPE_UNKNOWN == params_info->atcmd_type)
+    {/* unknown SS type: select CS domain */
+        *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+        return;
+    }
+
+    /* default cofiguration:                 *
+     *   when ims registered: PS domain      *
+     *   when ims not registered:CS domain   *
+     * CW default configuratin:              *
+     *     when ims registered: TB solution  *
+     *     when ims not registered:CS domain */
+    if(KAL_TRUE == params_info->is_ims_registered)
+    {
+        *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+
+        //default call waiting config: ims registered: terminal based solution; ims not registered: cs
+        if(CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING == params_info->atcmd_type
+            || CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING == params_info->atcmd_type)
+        {
+            *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+        }
+    }
+    else
+    {
+        *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+    }
+
+    return;
+}
+
+custom_ssds_path_type custom_ssds_get_req_path_config(custom_ssds_params_info_struct *params_info,custom_ssds_path_type *req_path_type_in)
+{
+    custom_ssds_path_type   atcmd_path_type = *req_path_type_in;
+    kal_bool need_check_roaming_data_off = KAL_TRUE;
+    kal_bool need_check_roaming_data_off_cs_only = KAL_FALSE;
+    kal_bool need_check_roaming_ims = KAL_FALSE;
+    kal_bool need_check_roaming = KAL_FALSE;
+#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 !*/
+    #if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+    #endif
+#endif
+
+    /* operator customization */
+    switch (params_info->op_id)
+    {
+        case 0: /* Default values */
+        {
+            break;
+        }
+        case 1:/* CMCC */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                //    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                //    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution(default value)
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR://volte card:not support; non-volte card:cs
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR://volte card:not support; non-volte card:cs
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type)
+                    {
+                        if(KAL_TRUE != params_info->is_ims_registered)
+                        {
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                            params_info->only_use_real_error_code = KAL_TRUE;
+                        }
+                        else
+                        {//volte card:not support
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        }
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type)
+                    {
+                        if(KAL_TRUE != params_info->is_ims_registered)
+                        {
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                            params_info->only_use_real_error_code = KAL_TRUE;
+                        }
+                        else
+                        {//volte card:not support
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        }
+                    }
+                    break;
+                default:
+                    break;
+            }
+            if((KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id))) &&
+               ((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+               (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
+               (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))&&
+               (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 2:/* CU */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                //    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                //    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR://volte card:not support; non-volte card:cs
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR://volte card:not support; non-volte card:cs
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    }
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 3: /* Orange_FR */
+        {
+            //atcmd_path_type = custom_ssds_get_ps_prefer_op_default_config(params_info->atcmd_type);
+            //custom_ssds_get_clir_tb_config(params_info->atcmd_type,&atcmd_path_type);
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /* special network config */
+            if(0 == strcmp(params_info->mcc, "214"))  /* orange-Spain */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    //IMS registered: CW TB solution
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "226"))/* orange-Romania */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    //IMS registered: CW TB solution
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "260")) /* orange-Poland */
+            {
+                if(0 == strcmp(params_info->mnc, "03"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    // CLIR GET TB Solution
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "231"))  /* orange-Slovakia */
+            {
+                if(0 == strcmp(params_info->mnc, "01"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    //IMS registered: CW TB solution
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "206")) /* orange-Belgium */
+            {
+                if(0 == strcmp(params_info->mnc, "10"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    // CLIR GET TB Solution
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+			else if(0 == strcmp(params_info->mcc, "308")) /* SPM-US */
+            {
+                if((0 == strcmp(params_info->mnc, "01")) || (0 == strcmp(params_info->mnc, "03")))
+                {
+                   atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "370"))/*orange-dominican*/
+            {
+                /*data off or roaming status*/
+                if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+                {
+                    if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                       (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        return atcmd_path_type;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "602")) /* orange-Egypt */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            else if(0 == strcmp(params_info->mcc, "604")) /* orange-Morocco */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+                if((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+                   (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type)   ||
+                   (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))
+                   {
+                       need_check_roaming = KAL_TRUE;
+                   }
+            }
+            else if(0 == strcmp(params_info->mcc, "259")) /* orange-Moldova */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            else if(0 == strcmp(params_info->mcc, "270")) /* orange-Luxembourg */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+			else if(0 == strcmp(params_info->mcc, "416")) /* orange-Jordan */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "608")) /* orange-Senagal */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;						
+                    default:
+                        break;
+                }
+            }		
+			else if(0 == strcmp(params_info->mcc, "647")) /* orange-Reunion Mayotte */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "340")) /* orange-Caribbean */
+            {
+                atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 5: /* TMOEU */
+        {
+            //atcmd_path_type = custom_ssds_get_ps_prefer_op_default_config(params_info->atcmd_type);
+            //custom_ssds_get_clir_tb_config(params_info->atcmd_type,&atcmd_path_type);
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        //check whether the sim card is volte sim card
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;                        
+                    }
+                    else
+                    {
+                        //if ims registered, do terminal based
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }			 
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    break;
+                default:
+                    break;
+            }
+            /* special network config */
+            if(0 == strcmp(params_info->mcc, "204")) /* Netherlands/DTAG */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        /* DTAG/Netherlands Call barring should not be supported in XCAP/Ut or CS domain */
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    default:
+                        break;
+                }
+            }            
+            if(0 == strcmp(params_info->mcc, "216")) /* Hungary /DTAG */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            
+            if(0 == strcmp(params_info->mcc, "276")) /* Albania/DTAG */
+            {
+                need_check_roaming = KAL_TRUE;
+            }
+            /* for OP05, if roaming and data_roaming off, still can use xcap */
+            else if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 6: /* Vodafone */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            /* special network config */
+            if(0 == strcmp(params_info->mcc, "234")) /* Vodafone-United Kingdom */
+            {
+                if(0 == strcmp(params_info->mnc, "15"))
+                {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "222"))
+            {
+                if(0 == strcmp(params_info->mnc, "10")) /* Vodafone-Italy */
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    if((KAL_TRUE != params_info->is_ims_registered) &&
+                        (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                         params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "214")) /* Vodafone-Spain */
+            {
+                if(KAL_TRUE == params_info->is_ims_registered)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                }
+                else
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "262"))
+            {
+                if(0 == strcmp(params_info->mnc, "02") ||
+                    0 == strcmp(params_info->mnc, "04") ||
+                    0 == strcmp(params_info->mnc, "09"))
+                {/* Vodafone-Germany */
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "286"))
+            {
+                /* Vodafone-Turkey */
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                    params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING )
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+            }
+            else if(0 == strcmp(params_info->mcc, "204")) /* Vodafone-NL */
+            {
+                if(KAL_TRUE != params_info->is_ims_registered ||
+                    CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                if((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) &&
+                    (KAL_TRUE == params_info->is_ct_card))
+                {
+                   atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "230"))
+            {
+                if(0 == strcmp(params_info->mnc, "03")) /* Vodafone-CZ */
+                {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "602"))
+            {
+                if(0 == strcmp(params_info->mnc, "02")) /* Vodafone-Egypt */
+                {
+                    if(atcmd_path_type != CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION &&
+                        (!params_info->is_mobile_data_setting_enabled || params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO))
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "530"))
+            {
+                if(0 == strcmp(params_info->mnc, "01")) /* Vodafone-New Zealand */
+                {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    if(params_info->is_ims_registered == KAL_FALSE)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "216")) /* Vodafone-Hungary */
+            {
+                if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING ||
+                    params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "280")) /* VDF/CyTa Cyprus */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                /* data off CS only */
+                if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+                {
+                    if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                       (KAL_TRUE != params_info->is_data_roaming_setting_enabled))
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        return atcmd_path_type;
+                    }
+               }
+            }
+            else if(0 == strcmp(params_info->mcc, "427")) /* Vodafone-Qatar */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    default:
+                        break;
+                }
+            }
+			else if(0 == strcmp(params_info->mcc, "640")) /* Vodacom/Tanzania */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            need_check_roaming_data_off = KAL_FALSE;
+            break;
+        }
+        case 7: /* AT&T */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /* special network config */
+            if(0 == strcmp(params_info->mcc, "334")) /* Mexico */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                    params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                }
+                else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING ||
+						params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+						params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                }
+            }
+            /* for OP07, if roaming and data_roaming off, still can use xcap */
+            if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 145:/* CRICKET */
+        case 196:/* FIRSTNET */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /* for OP07, if roaming and data_roaming off, still can use xcap */
+            if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 8:/* TMO */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = params_info->is_ims_registered?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /* for OP08, if roaming and data_roaming off, still can use xcap */
+            if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 9:/* CT: only support CF and CW */
+	    case 304:/* CTMO: only support CF and CW --aomen*/
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch (params_info->atcmd_type)
+            {//if international roaming,same as CMCC
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(KAL_TRUE != params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        params_info->only_use_real_error_code = KAL_TRUE;
+                    }
+                    else
+                    {//TB based solution
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+					break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+				case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    break;
+                default:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+            }
+            if((KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id))) &&
+               ((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+               (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
+               (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))&&
+               (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 11: /* H3G */
+        {
+            if((0 == strcmp(params_info->mcc, "240"))) // Sweden
+            {
+                if((0 == strcmp(params_info->mnc, "02")))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                            break;
+                        default:
+                            break;
+                    }
+                    need_check_roaming_data_off = KAL_FALSE;
+                }
+            }
+            else if((0 == strcmp(params_info->mcc, "238"))) // Denmark
+            {
+                if((0 == strcmp(params_info->mnc, "06")))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        default:
+                            break;
+                    }
+                    need_check_roaming_data_off = KAL_FALSE;
+                }
+            }
+            else if((0 == strcmp(params_info->mcc, "232"))) // Austria
+            {
+                if((0 == strcmp(params_info->mnc, "05")) || (0 == strcmp(params_info->mnc, "10")) || (0 == strcmp(params_info->mnc, "14")))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        default:
+                            break;
+                    }
+                    need_check_roaming_ims = KAL_TRUE;
+                }
+            }
+            else if((0 == strcmp(params_info->mcc, "234")) || (0 == strcmp(params_info->mcc, "235")))
+            {
+                // UK: XCAP over LTE while WFC registered, otherwise CSFB
+                if ((CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain) && (KAL_FALSE == params_info->lte_attached))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if((0 == strcmp(params_info->mcc, "272"))) // Ireland
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                need_check_roaming = KAL_TRUE;
+            }
+            break;
+        }
+        case 12: /* VERIZON */
+        {
+            atcmd_path_type =  CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            break;
+        }
+        case 15:/* TELEFONICA */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 16:/* EE */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 17: /* DOCOMO */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 18:/*  RJIO-IND */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 19:/* TELSTRA-Australia */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(KAL_TRUE == params_info->is_ims_registered)
+					{
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+					}
+					else
+					{
+						if(params_info->user_volte_subscription_status == CUSTOM_SSDS_STATUS_USER_VOLTE_SUBSCRIBED)
+						{
+							atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+						}
+						else if(params_info->user_volte_subscription_status == CUSTOM_SSDS_STATUS_USER_VOLTE_NOT_SUBSCRIBED)
+						{
+							atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+						}
+						else
+						{
+							atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY_PDN;
+						}
+					}
+                    break;
+                default:
+                    break;
+            }
+
+            if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 20: /* SPRINT */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }           
+			break;
+        }
+        case 50:/* Softbank */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            /* Special case for softbank [OTR-SS-110027]                                      *
+             * [Home Network]                                                                 *
+             *   - turned off the "Cellular data" and the "4G" of the Preferred network type  *
+             *  [Roaming Network]                                                             *
+             *  If the UE meets one of the following:                                         *
+             *   - turned off the "Cellular data" and the "4G" of the Preferred network type  *
+             *   - turned off the "4G" of the Preferred network type and the "Data roaming"   *
+             *  And the UE shall notify to the user that SS Configuration was failed.         */
+            if((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+                (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
+                (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))
+            {
+                if (((params_info->preferred_network_type & RAT_LTE) != RAT_LTE) &&
+                    ((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                    ((KAL_TRUE != params_info->is_data_roaming_setting_enabled) && (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+                    return atcmd_path_type;
+                }
+            }
+            break;
+        }
+        case 100: /* CSL-HK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 101: /* PCCW-HK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 102: /* Smartone-HK */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type) 
+					{
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+					}
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 103: /* Singtel */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 104:/* Starhub-Singapore */
+       	{
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+			else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                    params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+			{			    
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+			}
+            break;
+        }
+        case 105: /* AMX */
+        {/* default config */
+            if(0 == strcmp(params_info->mcc, "744"))
+			{
+			     /* Claro-Paragauy */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }				
+			}		
+            break;
+        }
+        case 106: /* 3HK-HK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 107:/* SFR */
+        {
+            if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC &&
+               params_info->rf_status == CUSTOM_SSDS_RF_OFF)
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            }else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            }
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 108: /* TWN */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 109: /* CHT */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 110: /* FET */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 111: /* VDF-INDIA */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR)
+            {
+                /* MOLY00324132:
+                1) Set CLIR: terminal based; CME Error:4 greys out CLIR settings
+                2) Get CLIR: NW based to avoid invalid pop-up on MMI query */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            }
+            break;
+        }
+        case 112: /* TELCEL */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            if((0 == strcmp(params_info->mcc, "334")))
+            {
+                /* TELCEL--Mexico */
+				atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                    params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {/* CW service*/
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                } 
+				if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+					params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+				{
+					atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;	
+				}
+            }
+            break;
+        }
+        case 113: /* Beeline */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 114: /* KT */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP)
+            {/* CLIR or CLIP service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            }
+            break;
+        }
+        case 115: /* SKT */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP)
+            {/* CLIR or CLIP service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            }
+            break;
+        }
+        case 116: /* UPLUS */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            break;
+        }
+        case 117:/* SmartFren-Indonesia */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
+                || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+			}
+            else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING
+                || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {
+                atcmd_path_type = (params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+            }
+            else if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
+            {
+                atcmd_path_type = (params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 118: /* YTL-Malaysia */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {/* CLIR service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 119: /* NATCOM */
+        {
+            /* default config */
+            break;
+        }
+        case 120:/* CLARO */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /* special network config */
+            if(0 == strcmp(params_info->mcc, "732"))
+			{
+			    /* Claro-Colombia */
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                }
+			}
+            else if(0 == strcmp(params_info->mcc, "724"))
+			{
+			    /* Claro-Brazil */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+			}
+            else if(0 == strcmp(params_info->mcc, "722"))
+			{
+			    /* Claro-Argentina */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                if(KAL_TRUE == params_info->is_ims_registered)
+                {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING 
+                        || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+			}
+            else if(0 == strcmp(params_info->mcc, "730"))
+			{
+                /* Claro-Chile */
+                atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING 
+                    || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                }
+			}
+			else if(0 == strcmp(params_info->mcc, "740"))
+			{
+			    /* Claro-Ecuador */
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+			}
+            else if(0 == strcmp(params_info->mcc, "748"))
+			{
+			     /* Claro-Uruguay */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                if(KAL_TRUE == params_info->is_ims_registered)
+                {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING 
+                        || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+			}
+            else if(0 == strcmp(params_info->mcc, "716"))
+			{
+			     /* Claro-Peru */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }				
+			}
+            /* 704,706,708,710,712,714 is in same group of Claro, 
+             * if one region is changed, please check whether need sync the changes to other region
+             */
+            else if((0 == strcmp(params_info->mcc, "704")) || /* Claro-Guatemala */
+                    (0 == strcmp(params_info->mcc, "706")) || /* Claro-Salvador */
+                    (0 == strcmp(params_info->mcc, "708")) || /* Claro-Honduras */
+                    (0 == strcmp(params_info->mcc, "710")) || /* Claro-Nicaragua */
+                    (0 == strcmp(params_info->mcc, "712")) || /* Claro-Costa Rica */
+                    (0 == strcmp(params_info->mcc, "714")))   /* Claro-Panama */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				/*special case for Claro-Guatemala, NOT support XCAP. Issue CR: ALPS05342265/ALPS05367594*/
+                if((0 == strcmp(params_info->mcc, "704"))) {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+				else if((0 == strcmp(params_info->mcc, "706"))) { /* modify CW TB for 70601 due to Issue CR:ALPS06187279*/
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
+                    || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                }
+            }
+            break;
+        }
+        case 121: /* BELL */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 122: /* AIS-Thailand */
+        {
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+				
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+				case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+					atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    break;
+					
+                default:
+                    break;
+            }
+            if ((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) && (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				return atcmd_path_type;
+            }
+            break;
+        }
+        case 124: /* APTG */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+			}
+            break;
+        }
+        case 125: /* DTAC-Thailand */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 126: /* AVEA */
+        {
+            /* default config */
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 127: /* MEGAFON */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {/* CLIR service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+
+            if(0 == strcmp(params_info->mcc, "250"))
+			{
+			    if(0 == strcmp(params_info->mnc, "02")) /* MEGAFON-Russian */
+			    {
+                    if ((KAL_FALSE == params_info->is_ims_registered) &&
+						(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+                    {/* CW service*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+			    }
+            }
+            break;
+        }
+        case 128: /* DNA */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {/* CLIR service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 129: /* KDDI */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 130: /* TIM */
+        {
+            if(0 == strcmp(params_info->mcc, "222")) /* TIM Italy */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                need_check_roaming_data_off_cs_only = KAL_TRUE;
+            }
+            else if(0 == strcmp(params_info->mcc, "724")) /* TIM Brazil */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 131: /* TRUEMOVE-Thailand */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 132: /* MOVISTAR */
+        {
+            if(0 == strcmp(params_info->mcc, "334"))
+			{/* Movistar - Mexico */
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "724"))
+            { /*Vivo - Brazil*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "716"))
+			{/* Movisatr - Peru */
+                if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                break;
+            }
+            else if(0 == strcmp(params_info->mcc, "722"))
+			{/* Movistar - Argentina */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "730"))
+			{/* Movistar - Chile */
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                }
+                else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+				else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "748"))
+			{/* Movistar - Uruguay */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                if((params_info->is_ims_registered) && 
+                    (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                     params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "732"))
+            {/* Movistar - Colombia */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                        break;
+                    default:
+                        break;
+                }
+                if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+                {
+                    if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
+                    {/*roaming or data off, CS*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        return atcmd_path_type;
+                    }
+                }
+            }
+            else if (0 == strcmp(params_info->mcc, "740"))
+            {/* Movistar - Ecuador */
+                /*other settings follow default*/
+                if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+                   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+                {
+                    if(KAL_FALSE == params_info->is_mobile_data_setting_enabled)
+                    {/*data off, CS*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+            }
+            break;
+        }
+        case 133: /* DU */
+        {
+            if(0 == strcmp(params_info->mcc, "424")) /** United Arab Emirates **/
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                 switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    default:
+                        break;
+				}		
+            }
+            break;
+        }
+        case 134: /* ELISA */
+        {
+            if(0 == strcmp(params_info->mcc, "244")) /* Finland */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "248")) /* Estonia */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            } 
+            break;
+        }
+        case 135: /* MTS */
+        {
+            if(0 == strcmp(params_info->mcc, "250")) /* Russia */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "257")) /* Belarus */
+            {
+                /* CSFB if mobile data switch off */
+                if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                /* CSFB if mobile data when roaming switch off */                
+                need_check_roaming_data_off_cs_only = KAL_TRUE;
+                
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 136: /* ENTEL */
+        {
+            if(0 == strcmp(params_info->mcc, "730")) /** Chile **/
+			{
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                {
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                }
+            }
+
+            if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY)
+            {
+				/* Ignore mobile data off for Entel/Chile due to ALPS05790200 */
+                if((!params_info->is_mobile_data_setting_enabled) && (0 != strcmp(params_info->mcc, "730")))
+                {
+                    if(KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id)))
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+                    }
+                }
+            }
+            break;
+        }
+        case 137: /* TELE2 */
+        {
+            if(0 == strcmp(params_info->mcc, "250"))  //Russia
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "240")) //Sweden
+            {                        
+                if(0 == strcmp(params_info->mnc, "07"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "204")) //NL)
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "246")) //Lithuania)
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "248")) //Estonia
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 139: /* BOUYGUES */
+        {
+            if (params_info->atcmd_type != CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING &&
+                params_info->atcmd_type != CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING &&
+                params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC &&
+                params_info->rf_status == CUSTOM_SSDS_RF_OFF)
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                break;
+            }
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 140: /* MTN */
+        {
+            if(0 == strcmp(params_info->mcc, "620")) /* MTN/Ghana */
+			{
+				if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+					params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+				{/* CW service*/
+					atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+				}
+			}
+            break;
+        }
+        case 141: /* CELL_C */
+        {
+            /* default config */
+            break;
+        }
+        case 143: /* TURKCELL */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            break;
+        }
+        case 144: /* SMILTE */
+        {
+            /* default config */
+            break;
+        }
+        case 146: /* ETISALAT */
+        {
+            if(0 == strcmp(params_info->mcc, "424")) /** United Arab Emirates **/
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:		
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+					default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 147: /* AIRTEL-India */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR)
+            {
+                /* MOLY00324132:
+                1) Set CLIR: terminal based; CME Error:4 greys out CLIR settings
+                2) Get CLIR: NW based to avoid invalid pop-up on MMI query */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            }
+            break;
+        }
+        case 148:/* Seatel-Cambodia(4G only solution) */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 149: /* CMHK-HK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 150: /* SWISSCOM_SCHWEIZ_AG */
+        {
+            /* UT interface over 2G/3G/4G */ 
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 151: /* M1-Singapore */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }		
+			else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                    params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+			{/* CLIR service*/			    
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+			}
+            else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            break;
+        }
+        case 152: /* OPTUS-AUS */
+        {
+            if ((params_info->is_ims_registered)&&
+                (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            }
+            else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {/* CLIR service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 153: /* VHA-AUS */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                if(params_info->is_ims_registered && params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC
+                    && params_info->rf_status == CUSTOM_SSDS_RF_OFF)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                }
+				else
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            else if((params_info->is_ims_registered) &&
+                (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR))
+            {/* CLIR service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 154:/* TELIA */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    if(0 == strcmp(params_info->mcc, "248"))//EE
+                    {
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(0 == strcmp(params_info->mcc, "246"))//LT
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    else
+                    {
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    if(0 == strcmp(params_info->mcc, "244"))//FI
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    }
+                    break;                    
+                default:
+                    break;
+            }
+            need_check_roaming_data_off = KAL_FALSE;
+            break;
+        }
+        case 155: /* Digi */
+        {
+            /* default config */
+            if(0 == strcmp(params_info->mcc, "502"))
+			{
+			    if(0 == strcmp(params_info->mnc, "16"))  /* Malaysia */
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "216"))
+			{
+			    if(0 == strcmp(params_info->mnc, "03"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {/* CW service*/
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "226"))
+			{
+			    if(0 == strcmp(params_info->mnc, "05"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+			    else if(0 == strcmp(params_info->mnc, "10"))
+                {
+                    if (CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING == params_info->atcmd_type)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_CCWA;
+                    }
+                }
+            }
+            break;
+        }
+        case 156: /* TELENOR */
+        {
+            /* default config */
+            if(0 == strcmp(params_info->mcc, "216")) /* Telenor HU */
+            {
+                if(0 == strcmp(params_info->mnc, "01"))
+                {                
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            if(0 == strcmp(params_info->mcc, "238"))
+            {
+                if(0 == strcmp(params_info->mnc, "02") || 0 == strcmp(params_info->mnc, "77"))
+                {
+                    if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {/* CLIR service*/
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                    else if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                             params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {/* CW service*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "242")) /* Telenor NO */
+            {
+                if(0 == strcmp(params_info->mnc, "01"))
+                {                
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break; 
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "284"))
+            {
+                if(0 == strcmp(params_info->mnc, "05"))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {/* CW service*/
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "240"))  /* Telenor SE*/
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "410"))
+            {
+                if(0 == strcmp(params_info->mnc, "06"))  /* Pakistan */
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+					if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
+					{
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+					}
+					switch(params_info->atcmd_type)
+					{
+						case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+						case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+						case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+						case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+							atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+							break;
+						default:
+							break;
+					}
+					if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+						atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+						atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+					{
+						if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
+						{
+							atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+							return atcmd_path_type;
+						}
+					}
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "414"))
+            {
+                if(0 == strcmp(params_info->mnc, "06")) /* Myanmmar */
+                {
+                    if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {/* CW service*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    }
+                    else if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                             params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {/* CLIR service*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+            }
+            else if(0 == strcmp(params_info->mcc, "220")) /* Serbia */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            else if((0 == strcmp(params_info->mcc, "297"))) /* Montenegro */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                need_check_roaming = KAL_TRUE;
+            }
+            break;
+        }
+        case 157:/* TELUS */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 158: /* Zain */
+        {
+           /*Kuwait*/
+            if(0 == strcmp(params_info->mcc, "419"))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            else if(0 == strcmp(params_info->mcc, "420")) /* SA */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }			
+            break;
+        }
+        case 159: /* STC */
+        {
+            /*Bahrain*/
+            if(0 == strcmp(params_info->mcc, "426"))  
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            /*Kuwait*/
+            else if(0 == strcmp(params_info->mcc, "419"))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            /*Saudi Arabia*/
+            else if(0 == strcmp(params_info->mcc, "420"))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+					case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+					case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:					
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                        break;
+					case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+					case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+						break;
+                    default:
+                        break;
+			    }
+            }
+            break;
+        }
+        case 160: /* WEBE-Malaysia */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 161: /* PLAY */
+        {
+            switch(params_info->atcmd_type)
+            {
+                // CLIR SET CS
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY_ALWAYS;
+                    break;
+                // CLIR GET TB Solution 
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR: 
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+
+            if(0 == strcmp(params_info->mcc, "260"))
+			{
+			    if(0 == strcmp(params_info->mnc, "06"))
+                {
+                    // CW PS Prefer
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:                    
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            break;
+        }
+        case 162: /* FREEDOM */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+
+            if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || atcmd_path_type ==CUSTOM_SSDS_PATH_TYPE_PS_PREFER )
+            {
+                if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+            }
+            break;
+        }
+        case 163: /* DIALOG-Srilanka */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 164:/* Telenet Belgium */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 165: /* Sunrise */
+        {
+            if((KAL_TRUE == params_info->is_ims_registered) &&
+                (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            }
+
+            break;
+        }
+        case 166: /* SALT */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 168: /* Eir */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+		case 170: /* Partner */
+        {
+            if(0 == strcmp(params_info->mcc, "425"))  /* Israel */
+            {
+				switch(params_info->atcmd_type)
+				{
+					case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+					case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+						break;
+					case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+					case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+						break;
+					default:
+						break;
+				}
+            }
+            break;
+        }
+        case 171: /* WOM */
+        {
+            /* default config */
+            break;
+        }
+        case 172: /* Altice Dominican*/
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 175:/* TDC */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 176: /* TStar */
+        {
+            if ((KAL_TRUE == params_info->is_ims_registered) &&
+				(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            else
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            break;
+        }
+        case 177: /* Telecom-Egypt */
+        {
+            /* default config */
+            break;
+        }
+        case 178: /* SMART */
+        {
+            /* default config */
+            if ((KAL_TRUE == params_info->is_ims_registered) &&
+				(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            }
+
+            if(0 == strcmp(params_info->mcc, "515"))
+			{
+			    if(0 == strcmp(params_info->mnc, "03")) /* Philippines */
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                        params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+                    {/* CW service*/
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                }
+            }
+            break;
+        }
+        case 179: /* NEWROZ */
+        {
+            /* default config */
+            break;
+        }
+        case 180: /* Swazi Mobile */
+        {
+            /* default config */
+            break;
+        }
+        case 181: /* TelKom-SA */
+        {
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {/* CLIR service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            return atcmd_path_type;
+            //break;
+        }
+        case 182: /* PROXIMUS */
+		{
+            if(0 == strcmp(params_info->mcc, "206"))
+			{
+			    if(0 == strcmp(params_info->mnc, "01"))
+                {
+                    switch(params_info->atcmd_type)
+                    {
+                        // CLIR SET CS
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY_ALWAYS;
+                            break;
+                        // CLIR GET TB Solution 
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR: 
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            break;
+        }
+        case 183: /* PERSONAL */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;                    
+                default:
+                    break;
+            }
+            /*data off or roaming status*/
+            if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 184: /* VIETEL-Vietnam */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 185: /* 2DEGREES-NZ */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            need_check_roaming = KAL_TRUE;
+            break;
+        }
+        case 186: /* IDEA-IND */
+        {
+            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 187: /* SAFARICOM */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+			{
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+				case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+					atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;                      
+					break;
+				default:
+					break;
+			}			
+            break;
+        }
+        case 188: /* A1 */
+        {
+            if (0 == strcmp(params_info->mcc, "232")) /* Austria */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        if (KAL_TRUE == params_info->is_ims_registered)
+                        {
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        }                        
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            if (0 == strcmp(params_info->mcc, "219")) /* Croatia */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            if (0 == strcmp(params_info->mcc, "257")) /* Belarus */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            if(0 == strcmp(params_info->mcc, "293")) /* Slovenia */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            }
+            break;
+        }
+        case 189: /* UMOBILE-Malaysia */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+				 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+					break;	
+                default:
+                    break;
+            }
+			need_check_roaming = KAL_TRUE;
+            break;
+        }
+        case 190: /* TELKOM-KENYA */
+        {
+            /* default config */
+            break;
+        }
+        case 191: /* GrameenPhone-Bangladesh */
+        {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 192: /* Robi-Bangladesh */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+		case 193: /* Banglalink-Bangladesh */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			if ((KAL_TRUE == params_info->is_ims_registered) &&
+				(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 195: /* O2 */
+        {
+            if ((KAL_TRUE == params_info->is_ims_registered) &&
+				(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            }
+
+            if(0 == strcmp(params_info->mcc, "230"))
+			{
+			    if(0 == strcmp(params_info->mnc, "02")) /* O2-Czech */
+			    {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
+                        || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+			    }
+            }
+            else if(0 == strcmp(params_info->mcc, "231"))
+			{
+			    if(0 == strcmp(params_info->mnc, "06")) /* O2-Slovakia */
+			    {
+                    if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
+                        || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+			    }
+            }
+            break;
+        }
+        case 199:/* VIVACOM */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 200: /* JTL_KENYA */
+        {
+            /* default config */
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 201:/* KPN-Netherlands */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:/* KPN/Netherlands Call barring should not be supported in XCAP/Ut and CS domain */
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if( CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain &&
+                        CUSTOM_SSDS_RF_OFF == params_info->rf_status )
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    }
+                    else
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 202: /* SPARK-NZ */
+        {
+            if ((params_info->is_ims_registered)&&
+                (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            }
+            break;
+        }
+        case 203: /* NOS */
+        {
+            if(0 == strcmp(params_info->mnc, "03")) // NOS live does not support XCAP over Ut-interface but lab does
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 204: /* ROGERS */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:/* Rogers/Canada Call barring should not be supported in XCAP/Ut and CS domain */
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+			}
+            break;
+        }
+        case 205: /* ALTAN-Mexico */
+        {
+            /* default config */
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+			}
+            break;
+        }
+        case 206: /* Sky-UK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            need_check_roaming = KAL_TRUE;
+            break;
+        }
+        case 207: /* CTM */
+        {
+            /* default config */
+            break;
+        }
+        case 208: /* 3MACAU */
+        {
+            /* default config */
+            break;
+        }
+        case 209: /* AVANTEL */
+        {
+            /* default config */
+            if(((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+                (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type)) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            break;
+        }
+        case 210: /* BSNL-India */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR)
+            {
+                /* 1) Set CLIR: terminal based; CME Error:4 greys out CLIR settings
+                2) Get CLIR: NW based to avoid invalid pop-up on MMI query */
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            }
+            else if((KAL_TRUE == params_info->is_ims_registered) &&
+				    (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                     params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+            break;
+        }
+        case 211: /* CW */
+        {
+			if(0 == strcmp(params_info->mcc, "714")) /* panama*/
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                switch(params_info->atcmd_type)
+                { /* CW service, issue encountered : ALPS05801202*/
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+				}
+			}
+			else if(0 == strcmp(params_info->mcc, "338")) /* Jamaica*/
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+			}
+            break;
+        }
+        case 214: /* IDC */
+        {
+            if(0 == strcmp(params_info->mcc, "259"))
+			{
+			    if(0 == strcmp(params_info->mnc, "15")) /* IDC-Moldova */
+			    {
+                    if((KAL_TRUE == params_info->is_ims_registered) &&
+                        (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                         params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    }
+			    }
+            }
+            break;
+        }
+        case 215: /* CELLCARD */
+        {
+            if(0 == strcmp(params_info->mcc, "456"))
+			{
+			    if(0 == strcmp(params_info->mnc, "01")) /* Cellcard-Cambodia */
+			    {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			    }
+            }
+            break;
+        }
+        case 216:/* Zong-Pakistan */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 217:/* Telekom-Slovenia */
+        {
+            if(0 == strcmp(params_info->mcc, "293"))
+			{
+			    if(0 == strcmp(params_info->mnc, "41")) /* Telekom-Slovenia */
+			    {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break; 
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                            break;
+                        default:
+                            break;
+                    }
+			    }
+            }
+            break;
+        }
+		case 218:/* Rakuten-Japan */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+            break;
+		}	
+        case 219: /* MYTEL-Myanmmar */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+		            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            if((atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER) &&
+				(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 220: /* Tigo */
+        {
+            if(0 == strcmp(params_info->mcc, "704"))/* Tigo-Guatemala */
+            {
+
+                if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+                   params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                }
+
+            }
+            break;
+        }
+        case 221:/* TPG-Singapore */
+        {
+            /* If IMS registered:  CF/CLIR/CLLP/COLR/COLP:PS;   CW: TB based */
+            /* TPG-Singapore(221) supports SS over Ut only if IMS registered, else SS not supported */
+            /* TPG-Singapore(221): do not allow Ut when roaming */
+            if((KAL_TRUE != params_info->is_ims_registered) ||
+                ((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type)&&(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)))
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+            break;
+        }
+        case 223:/* Indosat/Indonesia */
+        {
+            /* Supports XCAP regardless of IMS Reg status */
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            if(0 == strcmp(params_info->mcc, "419")) /* Ooredoo-Kuwait */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            break;
+        }
+        case 224: /* Telkomsel-Indonesia */
+        {
+            /* default config */
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+                params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
+            {/* CW service*/
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+            }
+			else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+				params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+			}
+            break;
+        }
+        case 227: /* WIND */
+        {
+            /* default config */
+            if(0 == strcmp(params_info->mcc, "222")) /* Wind-Italy */
+            {
+                /* Wind/3 Italy supports XCAP when IMS registered in LTE, otherwise CSFB */
+                if ((CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain) || (KAL_FALSE == params_info->lte_attached))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                }
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        /* Set to CS only to sync the status with CS, then retun terminal based */
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                need_check_roaming = KAL_TRUE;            
+            }
+            else if(0 == strcmp(params_info->mcc, "202"))  /* Wind-Greece */     
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 228: /* Celcom-Malaysia */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+		            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 231: /* Maxis-Malaysia */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+            need_check_roaming = KAL_TRUE;
+			switch(params_info->atcmd_type)
+            {
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+		            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 232: /* MOBITEL-Srilanka */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            if((atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER) &&
+                (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                return atcmd_path_type;
+            }
+            break;
+        }
+        case 233: /* Pelephone */
+        {
+            if(0 == strcmp(params_info->mcc, "425")) /* Israel */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				switch(params_info->atcmd_type)
+				{
+					case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+					case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+						break;
+					default:
+						break;
+				}
+            }
+            break;
+        }
+        case 234: /* PLUS */
+        {
+            if(0 == strcmp(params_info->mcc, "260")) /* PL - Poland */
+            {
+                if(0 == strcmp(params_info->mnc, "01")) 
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    switch(params_info->atcmd_type)
+                    {
+                        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            break;
+        }
+        case 235: /* VIP */
+        {
+            if(0 == strcmp(params_info->mcc, "220")) /* Serbia */
+            {
+                 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            }
+            break;
+        }
+        case 237: /* Ice Norway */
+        {
+            /* default config */
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 238:/* VideoTron */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+		case 239:/* Eastlink-Canada */
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 240:/* XPloreMobile-Canada */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 241: /* Claro-Puerto Rico */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+				default:
+                    break;
+            }
+            break;
+        }
+        case 243: /* Globe-Philippines */
+        {
+           	switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+				default:
+                    break;
+            }
+            break;
+        }
+		case 244: /* Metfone- Cambodia */
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+				default:
+                    break;
+            }
+			if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY)
+            {
+                if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    return atcmd_path_type;
+                }
+            }
+			break;
+		}
+        case 245: /* Vietnamobile-Vietnam */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+		case 247: /* Maroc Telecom */
+        {
+            if(0 == strcmp(params_info->mcc, "604")) /* Morocco */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				switch(params_info->atcmd_type)
+				{
+					case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+					case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+						atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+						break;
+					default:
+						break;
+				}				
+            }
+            break;
+        }
+        case 257: /* Viaero/US */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+		case 271:/*Sagebrush - US*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			break;
+		}		
+        case 274: /* Yoigo */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 275:/* Lifecell Ukraine */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 276:/* Altice US */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 277: /* Telemach/Slovenia  */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+		case 278: /* Jazz-Pakistan */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+			{
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+				case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+				case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:	
+					atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+					break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+				default:
+					break;
+			}
+			break;
+		}
+        case 279:/* Dito-Philippines */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(KAL_FALSE == params_info->is_ims_registered)
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                    }
+                    break;
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+		        case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 281: /* Kyivstar */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /*data off or roaming status*/
+            if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+            {
+                if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                   (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    return atcmd_path_type;
+                }
+            }
+            break;
+        }
+        case 282: /* Mobily Saudi Arabia*/
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:				
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+					break;				
+                default:
+                    break;
+            }
+            break;
+        }
+        case 283: /* MEO Portugal */
+        {
+            /*do not support Ut/XCAP in roaming NW*/
+            need_check_roaming = KAL_TRUE;
+            break;
+        }
+        case 285: /* Vinaphone-Vietnam */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
+                    break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+					break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 287: /* Free France */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 288: /* Virgin UK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 289: /* Batelco Bahrain */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            /*mobile data off and  roaming status*/
+            if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+            {
+                if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) &&
+                   (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+                {
+                     if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_LTE )
+                    /* CS if VoLTE, UT if VoWifi*/
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        return atcmd_path_type;
+                    }
+                }
+            }
+            break;
+        }
+        case 290: /* Omantel */
+        {
+            if(0 == strcmp(params_info->mcc, "422")) /** Oman **/
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            break;
+        }
+        case 291: /* LMT Latvia */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 292: /* CMHK-Hongkong */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            break;
+        }
+		case 295: /* NTC-Nepal */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			need_check_roaming = KAL_TRUE;
+			if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) &&
+                   (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+				return atcmd_path_type;
+			}
+            break;
+        }
+		case 294: /* MPT-Mayanmar*/
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+		case 296: /* CWW-US */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 297: /* Fastweb/Italy */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }        
+            need_check_roaming = KAL_TRUE;
+            break;
+        }
+        case 302: /* Ooredoo/Oman */
+        {
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:				
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+					break;					
+                default:
+                    break;
+            }
+            break;
+        }
+		case 306:/* CUHK */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+		case 307: /* Cellcom-Israel */
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            need_check_roaming = KAL_TRUE;
+            break;
+		}
+		case 310: /* Hotmobile-Israel */
+		{
+			switch(params_info->atcmd_type)
+            {
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+		}
+		case 313: /* Axtel-Mexico */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+			}
+			break;
+		}
+		case 314: /* Telepost - Greenland */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            break;
+		}
+		case 315: /* Tele2-Kazakhstan */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+		}
+        case 318: /* Vianova/Italy */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 319: /* Monaco Telecom France/Epic Cyprus */
+        {
+            if(0 == strcmp(params_info->mcc, "212")) /* Monaco Telecom */
+            {
+                atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            }
+            else if(0 == strcmp(params_info->mcc, "280")) /* Epic Cyprus */
+            {
+                switch(params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                        break;
+                    default:
+                        break;
+                }
+                /*data off or roaming status*/
+                if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER)
+                {
+                    if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                       (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+                    {
+                        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                        return atcmd_path_type;
+                    }
+                }
+            }
+            break;
+        }
+        case 322: /* UPC/Switzerland */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            /* Do not support Ut when data disabled */
+            if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+            {
+                if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    return atcmd_path_type;
+                }
+            }
+            break;
+        }
+        case 323: /* Lycamobile Italy */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 324: /* Moldcell/Moldova */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+                    break;
+                default:
+                    break;
+            }
+            need_check_roaming = KAL_TRUE;
+            break;
+        }
+		case 325: /* Jambotel-Kenya */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+		}
+		case 326: /* 9mobile-Negeria */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+		        case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+		}
+		case 327:/* Sasktel-Canada */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            break;
+		}
+        case 329: /* Plintron Italy */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+		case 330: /* LTT-Libya */
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+		}
+		case 331: /* SPECTRANET Nigeria */
+        {
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            need_check_roaming_data_off_cs_only = KAL_TRUE;
+            break;
+        }
+		case 335:/* TOT- Thailand*/
+	    {
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 336:/* Mobifone*-Vietnam */
+	    {
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+			if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+            {
+                if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    return atcmd_path_type;
+                }
+            }
+			break;
+		}
+        case 337:/* Antel- Uruguay*/
+	    {
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+			if((params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC) || (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			}			
+			break;
+		}	
+        case 338: /* Spusu Austria */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+		case 339:/* Unitel- Angola*/
+	    {
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;					
+                default:
+                    break;
+            }
+			if(atcmd_path_type != CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION &&
+				(!params_info->is_mobile_data_setting_enabled && params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO))
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			}			
+			break;
+		}
+		case 340:/*VDF-Papua*/
+		{
+			if(params_info->ps_attached == KAL_TRUE)
+			{
+				 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			}
+			else
+			{
+				 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			}
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;					
+                default:
+                    break;
+            }
+			if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || 
+			   atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER)
+            {
+                need_check_roaming = KAL_TRUE;
+            }
+			break;
+		}
+		case 341: /* Ucell-Uzbekistan */
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+			if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+            {
+                if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
+                {
+					atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+					return atcmd_path_type;
+                }
+            }
+			break;
+		}
+		case 342:/*Ecotel-Canada*/
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;					
+                default:
+                    break;
+            }
+			break;
+		}
+        case 344: /* 4ka/Slovakia */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 345: /* PrimeTel/Cyprus */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+            /*data off or roaming status*/
+            if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY)
+            {
+                if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
+                   (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    return atcmd_path_type;
+                }
+            }
+            break;
+        }
+		case 348:/*Ncell-Nepal*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 349:/*MTS-Armenia*/
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			need_check_roaming = KAL_TRUE;
+			break;
+		}
+		case 351:/*Hutch-Srilanka*/
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+                    break;
+                default:
+                    break;
+            }
+			if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY   ||
+               atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
+            {
+                if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) &&
+                   (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
+                {
+					atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+					return atcmd_path_type;
+                }
+            }
+			break;
+		}
+		case 353:/*We4G-Isreal*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 357:/*CNT-Ecuador*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}	
+		case 359:/*Aliv-Bahamas*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;	
+                    break;					
+                default:
+                    break;
+            }
+			break;
+		}	
+		case 360:/*CTExcel-Hongkong*/
+		{
+			need_check_roaming_data_off = KAL_FALSE;
+			switch(params_info->atcmd_type)
+            {
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;				
+                default:
+                    break;
+            }
+			break;
+		}
+		case 362:/*B-Mobile- Bhutan*/
+		{
+			need_check_roaming_data_off_cs_only = KAL_TRUE;
+			break;
+		}
+		case 363:/*C Spire - US*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			break;
+		}
+		case 366:/*Appalachian - US*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 379:/*PTCI- US*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			break;
+		}
+		case 381:/*Asiacell-Iraq*/
+		{
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			need_check_roaming = KAL_TRUE;
+			break;
+		}
+		case 387:/*West Central Wireless - US*/
+		{
+			atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			break;
+		}
+        case 1001: /* Ericsson-IODT */
+        {
+            /* default config */
+            if(((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+                (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type))&&
+                (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
+            {
+                if(KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id)))
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
+                }
+                else
+                {
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+                }
+            }
+            break;
+        }
+        case 320: /* Coriolis/France */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 350:/* Gibtelecom/Gibraltar */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 354: /* Poste Mobile/Italy */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+            break;
+        }
+        case 383: /* Magti/Georgia */
+        {
+            switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 386: /* ENetworks/Guyana */
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+			switch(params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+                    break;
+                default:
+                    break;
+            }
+			if(atcmd_path_type != CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION &&
+				(!params_info->is_mobile_data_setting_enabled && params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO))
+			{
+				atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+			}			
+            break;
+        }		
+        case 1002: /* Nokia IODT */
+        {
+            /* default config */
+            break;
+        }
+        case 1003: /* MTK_HQLAB-Ericsson */
+        {
+            /* default config */
+            break;
+        }
+        case 1004: /* Huawei IODT */
+        {
+            /* default config */
+            break;
+        }
+        default:
+            break;
+    }
+
+    /* only mncmcc , no SBP ID?  not suggest this method.currently all mncmcc mapping to SBP ID */
+    if(0 == strcmp(params_info->mccmnc, "22603"))
+    {
+        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+    }
+    else if(0 == strcmp(params_info->mccmnc, "722070") || 0 == strcmp(params_info->mccmnc, "722010"))
+    {
+        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+        if((KAL_TRUE == params_info->is_ims_registered) &&
+            (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
+            params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+        }
+    }
+    else if(0 == strcmp(params_info->mccmnc, "23207") || 0 == strcmp(params_info->mccmnc, "23591")
+              || 0 == strcmp(params_info->mccmnc, "23099"))
+    {
+        if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+            params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
+        }
+    }
+    else if(0 == strcmp(params_info->mccmnc, "33430"))
+    {
+        if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
+            params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
+        }
+    }
+
+
+    //if roaming and roaming data setting off, can't use xcap by default
+    if(((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
+        (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
+        (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type) ||
+		(CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY_PDN == atcmd_path_type))&&
+        (KAL_TRUE != params_info->is_data_roaming_setting_enabled) && 
+        (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
+    {
+        if(need_check_roaming_data_off_cs_only)
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+        }
+        else if(need_check_roaming_data_off)
+        {
+            atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+        }
+    }
+
+    // If roaming, can't use XCAP 
+    if((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) && need_check_roaming)
+    {        
+        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+    }
+
+    // If roaming and IMS not registerd, can't use xcap
+    if((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) && 
+        (KAL_FALSE == params_info->is_ims_registered) && need_check_roaming_ims)
+    {
+        atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+    }
+    return atcmd_path_type;
+}
+
+
+void  custom_ssds_get_req_path_config_from_nvram (custom_ssds_params_info_struct *params_info,custom_ssds_path_type *req_path_type,custom_ssds_config_type cfg_type)
+{
+	nvram_ef_ssds_request_profile_value_struct	request_info;
+	nvram_ef_ssds_request_profile_action_struct	request_action;
+
+	kal_mem_set(&request_info, 0x0, sizeof(nvram_ef_ssds_request_profile_value_struct));
+
+	request_info.ims_domain = params_info->ims_domain;
+	request_info.ims_registered = params_info->is_ims_registered;
+	request_info.atcmd_type = params_info->atcmd_type;
+	request_info.roaming_type = params_info->roaming_status;
+	request_info.sim_type = params_info->sim_type;
+    request_info.lte_attached= params_info->lte_attached;
+
+	if (KAL_TRUE == (custom_ssds_config_get_request_path(params_info->sim_id, &request_info, &request_action,cfg_type)))
+	{
+		*req_path_type = request_action.req_path;
+    	kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Use NVRAM reqeust result");
+	}
+
+}
+
+void  _custom_ssds_get_req_path_from_common_file (sim_interface_enum	     sim_id,
+	                                        custom_ssds_atcmd_type   atcmd_type,
+                                            custom_ssds_path_type	 *req_path_type,
+                                            custom_ssds_config_type  cfg_type)
+{
+    nvram_ssds_req_path_type nvram_req_path = CUSTOM_SSDS_SS_REQ_PATH_MAX;
+    kal_bool vaild_config = KAL_TRUE;
+
+    //get NVRAM/MCF config value
+    custom_ssds_config_get_request_path_from_common_file(sim_id,atcmd_type,&nvram_req_path,cfg_type);
+
+    if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_PS)
+    {
+        *req_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
+    }
+    else if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_CS)
+    {
+        *req_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
+    }
+    else if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_NOT_SUPPORT)
+    {
+        *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
+    }
+    else if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_TB)
+    {
+        switch(atcmd_type)
+        {
+            case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
+                break;
+            case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_CCWA;
+                break;
+
+            case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                *req_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY_ALWAYS;
+                break;
+            case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
+                break;
+
+            default:
+                //trace:invalid config
+                vaild_config = KAL_FALSE;
+                kal_prompt_trace(MOD_SSDS+sim_id, "invalid TB configuration in common config file ");
+                break;
+        }
+    }
+    else
+    {
+        //trace:invalid config
+        vaild_config = KAL_FALSE;
+        kal_prompt_trace(MOD_SSDS+sim_id, "There is no valid req_path configuration in common config file ");
+    }
+
+    if(vaild_config)
+    {
+        kal_prompt_trace(MOD_SSDS+sim_id, "There is valid configuration for SS:%d",nvram_req_path);
+    }
+}
+
+custom_ssds_path_type  custom_ssds_get_req_path(custom_ssds_params_info_struct *params_info)
+{
+    custom_ssds_path_type req_path_type;
+
+    /* Priority 5 :default config */
+    custom_ssds_get_req_path_default_config(params_info, &req_path_type);
+
+    /* Priority 4 :mcf ota config */
+    custom_ssds_get_req_path_config_from_nvram(params_info, &req_path_type,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+    _custom_ssds_get_req_path_from_common_file(params_info->sim_id,params_info->atcmd_type,&req_path_type,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+
+    /* Priority 3 :default OP config */
+	req_path_type = custom_ssds_get_req_path_config(params_info, &req_path_type);
+
+    /* Priority 2 :mcf ota by op config */
+    custom_ssds_get_req_path_config_from_nvram(params_info, &req_path_type,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+    _custom_ssds_get_req_path_from_common_file(params_info->sim_id,params_info->atcmd_type,&req_path_type,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+    custom_ssds_get_req_path_config_from_nvram(params_info, &req_path_type,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    _custom_ssds_get_req_path_from_common_file(params_info->sim_id,params_info->atcmd_type,&req_path_type,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+
+    return  req_path_type;
+}
+#endif
+
+void custom_ssds_get_rsp_path_default_config(custom_ssds_params_info_struct *params_info,custom_ssds_csfb_type *rsp_path)
+{
+    *rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+
+    /*set the default value*/
+    switch (params_info->rsp_id)
+    {
+        case 200:
+        case 404:
+        case 409:
+            *rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+
+        case 403:
+        case 843:
+            *rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+            break;
+
+        case 831:
+            *rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            break;
+
+        default:
+            *rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+    }
+
+    return;
+}
+
+custom_ssds_csfb_type custom_ssds_get_rsp_path_config(custom_ssds_params_info_struct *params_info,custom_ssds_csfb_type *rsp_path_in)
+{
+    custom_ssds_csfb_type rsp_path = *rsp_path_in;
+	kal_bool is_need_sync_to_cs = KAL_TRUE;
+	
+    switch(params_info->op_id)
+    {
+        case 0: /* Default values */
+        {
+            break;
+        }
+        case 1:/* CMCC */
+        {
+			is_need_sync_to_cs = KAL_FALSE;
+            switch (params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
+                    if ((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                    {//VOLTE card: not support CLIR/CLIP/COLR/COLP
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    //is_ocb = _custom_ssds_is_ocb(&(req_info->atcmd_info));
+                    if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type && ((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id)))
+                    {//VOLTE card: not support OCB
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+                    }
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 2:/* CU */
+        {
+			is_need_sync_to_cs = KAL_FALSE;
+            if(400 == params_info->rsp_id)
+            {
+                params_info->rsp_id = 403;
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+            }
+
+            switch (params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
+                    if ((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                    {//VOLTE card: not support CLIR/CLIP/COLR/COLP
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if((KAL_TRUE == params_info->is_ims_registered) ||
+                        (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+                    }
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 3: /* Orange */
+        {
+            /* Orange France requires to start 4hr timer for 403 or 831 (PDN Connectivity reject) */
+            if(0 == strcmp(params_info->mccmnc, "20801") || 0 == strcmp(params_info->mccmnc, "20802")) /* Orange France */
+            {
+                if(((403 == params_info->rsp_id) || (831 == params_info->rsp_id)) && (0 == params_info->real_rsp_id))
+                {
+                    rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+                }
+            }
+            break;
+        }
+        case 5:/* TMOEU */
+        {
+            switch (params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if(403 != params_info->rsp_id && 831 != params_info->rsp_id)
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if(403 != params_info->rsp_id && 831 != params_info->rsp_id)
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
+                    if (KAL_FALSE == params_info->is_ims_registered)
+                    {  
+                        //if NW response 403, it is non-volte sim card.
+                        if (403 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+                        }
+                        else if (831 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                        }
+                        else
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                        }
+                    }
+                    else
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                    }                
+                    break;                
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
+                    if (KAL_FALSE == params_info->is_ims_registered)
+                    {  
+                        //if NW response 403, it is non-volte sim card.
+                        if (403 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+                        }
+                        else if (831 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                        }
+                        else
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                        }
+                    }
+                    else
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                    }
+                    break;
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
+                    { // No support
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                    }
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 6: /* VDF */
+        {
+            /* TCD-BEAR-REQ-012124 expects UE to always use CSFB as a backup option */
+            if (403 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+            }
+            else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }            
+            /* Exclude 404 for Call Barring not supported (404 is mapped to 831 and 844 on XCAP) */
+            switch (params_info->atcmd_type)
+            {                
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                    if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
+                    { // No support
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                    }
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+		case 8:/* TMO-US */
+        {
+            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+        }
+        case 9:/* CT-only support CF and CW */
+        {
+            //international roaming: same as CMCC
+            //non international roaming:
+            switch (params_info->atcmd_type)
+            {
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
+                    if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL != params_info->roaming_status)
+                    {
+                        rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+                    if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL == params_info->roaming_status)
+                    {
+                        if((KAL_TRUE == params_info->is_ims_registered) ||
+                            (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                        }
+                    }
+                    else
+                    {
+                        if(KAL_TRUE == params_info->is_ims_registered)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                        }
+                        else if(403 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_403;
+                        }
+                        else if(831 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_31;
+                        }
+                        else
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+                        }
+                    }
+                    break;
+                case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+                    if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL == params_info->roaming_status)
+                    {
+                        if((KAL_TRUE == params_info->is_ims_registered) ||
+                            (403 != params_info->rsp_id && 831 != params_info->rsp_id))
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+                        }
+                    }
+                    else
+                    {
+                        if(KAL_TRUE == params_info->is_ims_registered)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+                        }
+                        else if(403 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_403;
+                        }
+                        else if(831 == params_info->rsp_id)
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_31;
+                        }
+                        else
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+                        }
+                    }
+                    break;
+                default:
+                    break;
+            }
+            break;
+        }
+        case 15:/* Telefonica requires that after UE receives 40x error response (other than 403) from NW, it needs to CSFB */
+        {
+            if (403 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+            }
+            else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 16:/* EE UK requires that when UE receives 404 or 408 Error response from NW, it needs to CSFB */
+        {
+            if (404 == params_info->rsp_id || 408 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 18:    /* RJIO-IND */
+        {
+            /* ALPS04349217: In international romaing, Server not responding, try on CS once */
+            if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL == params_info->roaming_status && 200 != params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            else
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            }
+            break;
+        }
+		case 19: /*Telstra-Aus*/
+		{
+			switch (params_info->atcmd_type)
+			{
+				case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
+				case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
+				/* If PDN formed successfully,rsp_id=200, set TB CW
+			    If PDN establishment fails with esm_cause=33, rsp_id=403,CSFB always
+			    If PDN establishment fails with esm_cause!=33,rsp_id=831,CSFB once */
+					if(200 == params_info->rsp_id)
+					{
+						if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING)
+						{
+							rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
+						}
+						else
+						{
+							rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
+						}
+					}
+					break;
+				default:
+					break;
+			}
+			break;
+		}
+        case 20:/* Sprint(CDMA solution) */
+        {
+            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+        }
+        case 102:/* Smartone-Hongkong */
+        {
+            if (200 != params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 104:/* Starhub:no special case,default config */
+            break;
+
+        case 117:/* SmartFren Indonesia(CDMA solution) */
+        {
+            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+        }
+        case 121:/* Bell Canada  */
+        {
+            if (500 == params_info->rsp_id)
+            {
+               rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 130:/* TIM */
+        {
+            if (0 == strcmp(params_info->mcc, "222")) //TIM Italy
+            {
+                if ((401 == params_info->rsp_id) && (KAL_TRUE != params_info->is_ims_registered))
+                {
+                    rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                }
+                
+                switch (params_info->atcmd_type)
+                {                
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        /* 404 is mapped to 831 and 844 on XCAP */
+                        if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
+                        { // No support
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                        }
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 134:/* Elisa/Finland requires that when UE receives 400 Error response from NW, it needs to CSFB */
+        {
+            if (400 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+		case 140:/* MTN */
+		{
+			if(0 == strcmp(params_info->mcc, "620")) /* Special case for MTN/Ghana, Usage of SS CS fallback for HTTP error: No */
+			{
+				rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+			}
+            break;
+		}
+        case 148:/* Seatel - Cambodia(4G only solution) */
+        {
+            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+        }
+        case 154:/* Telia */
+        {
+            if (0 == strcmp(params_info->mcc, "240")) //Sweden
+            {
+                switch (params_info->atcmd_type)
+                {
+                    case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
+                    case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
+                        /* Telia Sweden requires that UE should not do CS fallback in case call barring rule is not found from server */
+                        if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
+                        {
+                            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
+                        }
+                        break;
+                    default:
+                        break;
+                }
+            }
+            break;
+        }
+        case 156:/* Telenor */
+        {
+            if (0 == strcmp(params_info->mcc, "220")) //Serbia
+            {
+                if (403 == params_info->rsp_id)
+                {
+                    rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+                }
+                else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
+                {
+                    rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                }
+            }
+            break;
+        }
+        case 164:/* Telenet Belgium requires that after UE receives 40x error response (other than 403) from NW, it needs to CSFB */
+        {
+            if (403 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
+            }
+            else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 178:/*Opearator: Smart. Oppo hope UE does CSFB when receive 409 when do CLIR like reference's behavior */
+        {
+            if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
+            {
+                if (409 == params_info->rsp_id)
+                {
+                    rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+                }
+            }
+            break;
+        }
+        case 186:/* IDEA-IND */
+        {
+            /* Requires that when UE receives 304, 403, 404, 409 or 412 Error response from NW, it needs to CSFB */
+            if (304 == params_info->rsp_id || 403 == params_info->rsp_id || 404 == params_info->rsp_id
+                || 409 == params_info->rsp_id || 412 == params_info->rsp_id || (500 <= params_info->rsp_id && 599 >= params_info->rsp_id))
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 185:/* 2DEGREES-NZ */
+        {
+            /* Requires that when UE receives 403, 404, 501, 502, 503 or 504 Error response from NW, it needs to CSFB */
+            if (403 == params_info->rsp_id || 404 == params_info->rsp_id || 501 == params_info->rsp_id
+                || 502 == params_info->rsp_id || 503 == params_info->rsp_id || 504 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 195:/* O2 CZ requires that when UE receives 409 Error response from NW, it needs to CSFB */
+        {
+            if (409 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 202:/* Spark-NZ */
+        {
+            if (200 != params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+        case 221:/* TPG-Singapore(4G only solution) */
+        {
+            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+        }
+		case 224:/* Telkomsel-Indonesia */
+        {
+            if (400 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+		case 225: /* XL-Indonesia */
+		{
+			if (403 == params_info->rsp_id || 404 == params_info->rsp_id || 500 == params_info->rsp_id ||
+			502 == params_info->rsp_id || 503 == params_info->rsp_id || 504 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+			break;
+		}
+        case 238:/* VideoTron Canada requires that when UE receives 409 Error response from NW, it needs to CSFB */
+        {
+            if (409 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+            break;
+        }
+		case 239:/* Eastlink-Canada */
+        {
+            rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+            break;
+        }
+		case 307: /* Cellcom-Israel */
+		{
+			if (300 <= params_info->rsp_id && 599 >= params_info->rsp_id)
+			{
+				rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+			}
+			break;
+		}
+		case 340:/*VDF-Papua*/
+		{
+			if (403 == params_info->rsp_id)
+            {
+                rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+            }
+			else
+			{
+				rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
+			}
+            break;
+		}
+        default:
+            break;
+    }
+	
+	/* If CLIR activation/deactivation is successful over XCAP then SSDS need to sync its status to CS */
+	if((custom_ssds_need_sync_to_cs(params_info->atcmd_type,params_info->rsp_id) == KAL_TRUE) && is_need_sync_to_cs)
+	{
+		rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
+	}
+	
+    return rsp_path;
+}
+
+
+
+void custom_ssds_get_rsp_path_config_from_nvram(custom_ssds_params_info_struct *params_info,
+                                                custom_ssds_csfb_type          *csfb_type,
+                                                custom_ssds_config_type        cfg_type)
+{
+	nvram_ef_ssds_response_profile_value_struct		request_info;
+	nvram_ef_ssds_response_profile_action_struct	request_action;
+
+	kal_mem_set(&request_info, 0x0, sizeof(nvram_ef_ssds_response_profile_value_struct));
+
+	request_info.ims_registered = params_info->is_ims_registered;
+	request_info.atcmd_type = params_info->atcmd_type;
+	request_info.roaming_type = params_info->roaming_status;
+	request_info.rsp_id = params_info->rsp_id;
+	request_info.sim_type = params_info->sim_type;
+
+	if (KAL_TRUE == (custom_ssds_config_get_response_path(params_info->sim_id, &request_info, &request_action,cfg_type)))
+	{
+		*csfb_type = request_action.rsp_path;
+    	kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Use NVRAM response result");
+	}
+
+}
+
+void _custom_ssds_get_rsp_path_from_common_file(sim_interface_enum	   sim_id,
+	                                      kal_uint32               xcap_error_code,
+                                          custom_ssds_csfb_type    *csfb_type,
+                                          custom_ssds_config_type  cfg_type)
+{
+    custom_ssds_config_get_response_path_from_common_file(sim_id,xcap_error_code,csfb_type,cfg_type);
+}
+
+
+custom_ssds_csfb_type custom_ssds_get_rsp_path(custom_ssds_params_info_struct *params_info)
+{
+    custom_ssds_csfb_type rsp_path;
+
+    /* Priority 5 :default config */
+    custom_ssds_get_rsp_path_default_config(params_info,&rsp_path);
+
+    /* Priority 4 :mcf ota config */
+    custom_ssds_get_rsp_path_config_from_nvram(params_info, &rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+    _custom_ssds_get_rsp_path_from_common_file(params_info->sim_id,params_info->rsp_id,&rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+
+    /* Priority 3 :default OP config */
+    rsp_path = custom_ssds_get_rsp_path_config(params_info,&rsp_path);
+
+    /* Priority 2 :mcf ota by op config */
+    custom_ssds_get_rsp_path_config_from_nvram(params_info, &rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+    _custom_ssds_get_rsp_path_from_common_file(params_info->sim_id,params_info->rsp_id,&rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+    custom_ssds_get_rsp_path_config_from_nvram(params_info, &rsp_path,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    _custom_ssds_get_rsp_path_from_common_file(params_info->sim_id,params_info->rsp_id,&rsp_path,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+
+    return rsp_path;
+}
+
+void custom_ssds_get_disable_ut_timer_value_default_config(custom_ssds_params_info_struct *params_info,kal_uint32 *timer_value)
+{
+    *timer_value = INVALID_SSDS_TIMER_VALUE;
+    //for gen93
+    if(params_info->ssds_xcap_error_info == NULL)
+    {
+        *timer_value = INVALID_SSDS_TIMER_VALUE; //0xffffffff means always disable UT until restarting UE or changing SIM card.
+        kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is max ");
+        if((0 == kal_mem_cmp(params_info->mccmnc, "20801", 5) || 0 == kal_mem_cmp(params_info->mccmnc, "20802", 5)) &&
+           (((403 == params_info->rsp_id) || (831 == params_info->rsp_id)) && (0 == params_info->real_rsp_id)))
+        {
+            *timer_value = KAL_TICKS_1_MIN * 240; // 4h timer
+            kal_prompt_trace(MOD_SSDS+params_info->ps_id, "The Orange disable UT timer value is:%d ", *timer_value);
+        }    
+        else
+        {
+            *timer_value = INVALID_SSDS_TIMER_VALUE; //0xffffffff means always disable UT until restarting UE or changing SIM card.
+            kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is max (no XCAP error info) ");
+        }
+
+    }
+    //for gen95/97
+    else
+    {
+        if((0 == kal_mem_cmp(params_info->mccmnc, "20801", 5) || 0 == kal_mem_cmp(params_info->mccmnc, "20802", 5)) &&
+           (((403 == params_info->rsp_id) || (831 == params_info->rsp_id)) && (0 == params_info->real_rsp_id)))
+        {
+            *timer_value = KAL_TICKS_1_MIN * 240; // 4h timer
+            kal_prompt_trace(MOD_SSDS+params_info->ps_id, "The Orange disable UT timer value is:%d ", *timer_value);
+        }
+        else if(params_info->ssds_xcap_error_info->error_info == CUSTOM_SSDS_XCAP_NW_ERROR_NW_NO_RESPONSE)
+        {
+            *timer_value = KAL_TICKS_1_SEC * 10; //
+            kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is:%d ",*timer_value);
+        }
+        else
+        {
+            *timer_value = INVALID_SSDS_TIMER_VALUE; //0xffffffff means always disable UT until restarting UE or changing SIM card.
+            kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is max ");
+        }
+    }
+
+	return;
+}
+
+
+kal_uint32 custom_ssds_get_disable_ut_timer_value_config(custom_ssds_params_info_struct *params_info,kal_uint32 *timer_value_in)
+{
+    kal_uint32 timer_value = *timer_value_in;
+
+	return timer_value;
+}
+
+void custom_ssds_get_disable_ut_timer_value_config_from_nvram(custom_ssds_params_info_struct *params_info,
+                                                              kal_uint32                     *timer_value,
+                                                              custom_ssds_config_type        cfg_type)
+{
+    nvram_ef_ssds_timer_value_profile_value_struct		request_info;
+    nvram_ef_ssds_timer_value_profile_action_struct 	request_action;
+    sim_interface_enum	sim_id;
+    ssds_timer_id_enum  timer_id = SSDS_MAX_TIMER;
+
+    kal_mem_set(&request_info, 0x0, sizeof(nvram_ef_ssds_timer_value_profile_value_struct));
+    //request_info.op_id = op_id;
+    //kal_mem_cpy(&(request_info.mccmnc[0]), mccmnc, 6);
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(params_info->ps_id));
+
+    //for gen93
+	if(params_info->ssds_xcap_error_info == NULL)
+    {
+        timer_id = DISABLE_UT_TIMER;
+	}
+	//for gen95/97
+	else
+	{
+	    if(params_info->ssds_xcap_error_info->error_info == CUSTOM_SSDS_XCAP_NW_ERROR_NW_NO_RESPONSE)
+	    {
+            timer_id = DISABLE_UT_NW_NO_RESP_TIMER;
+	    }
+	    else
+	    {
+	        timer_id = DISABLE_UT_TIMER;
+	    }
+	}
+	if(KAL_TRUE == (custom_ssds_config_get_timer_value(timer_id, sim_id, &request_info, &request_action,cfg_type)))
+	{
+        *timer_value = request_action.timer_value * KAL_TICKS_1_SEC;
+        kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Use NVRAM disable UT timer,timer value:%d",request_action.timer_value);
+	}
+
+	return;
+}
+
+void _custom_ssds_get_disable_ut_timer_value_from_common_file(module_type   src_module,
+                                                              kal_uint32    *timer_value,
+                                                              custom_ssds_config_type        cfg_type)
+{
+    sim_interface_enum sim_id;
+    sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(src_module - MOD_SSDS));
+
+    custom_ssds_config_get_timer_value_from_common_file(sim_id,NVRAM_SSDS_DISABLE_UT_TIMER,timer_value,cfg_type);
+}
+
+
+kal_uint32 custom_ssds_get_disable_ut_timer_value(custom_ssds_params_info_struct *params_info)
+{
+    kal_uint32 timer_value;
+
+	/* Priority 5 :default config */
+    custom_ssds_get_disable_ut_timer_value_default_config(params_info,&timer_value);
+
+    /* Priority 4 :mcf ota config */
+    custom_ssds_get_disable_ut_timer_value_config_from_nvram(params_info,&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+    _custom_ssds_get_disable_ut_timer_value_from_common_file((params_info->ps_id+ MOD_SSDS),&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
+
+    /* Priority 3 :default OP config */
+    timer_value = custom_ssds_get_disable_ut_timer_value_config(params_info,&timer_value);
+
+    /* Priority 2 :mcf ota by op config */
+    custom_ssds_get_disable_ut_timer_value_config_from_nvram(params_info,&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+    _custom_ssds_get_disable_ut_timer_value_from_common_file((params_info->ps_id+ MOD_SSDS),&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
+
+    /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
+    custom_ssds_get_disable_ut_timer_value_config_from_nvram(params_info,&timer_value,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+    _custom_ssds_get_disable_ut_timer_value_from_common_file((params_info->ps_id+ MOD_SSDS),&timer_value,CUSTOM_SSDS_CFG_TYPE_NVRAM);
+
+    return timer_value;
+}
+
+/********new design end*************/
+
+kal_bool custom_only_ps_supported_atcmd( custom_ssds_params_info_struct  *params_info,
+                                                              custom_ssds_path_type           *atcmd_req_type)
+    
+{
+    if((params_info->atcmd_type== CUSTOM_SSDS_ATCMD_TYPE_SET_COLR) && (params_info->op_id == 1 || params_info->op_id == 2))
+    {//special case for CMCC/CU
+        *atcmd_req_type = custom_ssds_get_req_path(params_info);
+        return KAL_TRUE;
+    }
+    return KAL_FALSE;
+}
+
+kal_bool custom_only_cs_supported_atcmd(custom_ssds_params_info_struct  *params_info,
+                                                              custom_ssds_path_type           *atcmd_req_type)
+{
+    return KAL_FALSE;
+}
+
+void custom_ssds_ussd_is_csfb_retry_allowed(custom_ssds_params_info_struct  *params_info,kal_bool *is_ussd_csfb_retry_allowed)
+{
+	*is_ussd_csfb_retry_allowed = KAL_TRUE;
+	
+	switch(params_info->op_id)
+	{
+		case 8:/*TMO-US */
+		case 117:
+	    case 9:/* CT: only support CF and CW */
+		case 304:/* CTMO: only support CF and CW --aomen*/
+			*is_ussd_csfb_retry_allowed = KAL_FALSE;
+			break;
+		default:
+			break;
+	}
+	
+	return;
+}
+
+kal_bool custom_ssds_is_ussi_allowed_during_ims_call(custom_ssds_params_info_struct  *params_info)
+{
+	kal_bool	is_ussi_allowed_during_ims_call = KAL_TRUE;
+	switch(params_info->op_id)
+	{
+		case 122:/*AIS-Thailand*/
+		case 131:/*Truemove-Thailand */
+		case 178:/*Smartfone-Cambodia */
+		case 232:/*MOBITEL-Srilanka*/
+			is_ussi_allowed_during_ims_call  = KAL_FALSE;
+			break;
+        case 171: /* WOM */
+            if(0 == strcmp(params_info->mcc, "732")) /* WOM-Colombia */
+            {
+                is_ussi_allowed_during_ims_call  = KAL_FALSE;
+            }
+            break;			
+		default:
+			break;
+	}
+	return is_ussi_allowed_during_ims_call;
+}
+
+kal_bool custom_ssds_is_rat_mode_change_allowed(custom_ssds_params_info_struct  *params_info)
+{
+    kal_bool    is_rat_mode_change_allowed = KAL_FALSE;
+    
+    if(params_info->nr_attached == KAL_TRUE)
+    {
+        switch(params_info->op_id)
+        {    
+            case 6: /* Vodafone */
+                if(0 == strcmp(params_info->mcc, "262")) /* Vodafone-Germany */
+                {
+                    is_rat_mode_change_allowed  = KAL_TRUE;
+                }
+                break;
+            case 102: /* Smartone-HK */
+                is_rat_mode_change_allowed  = KAL_TRUE;
+                break;			
+			case 103: /* Singtel */
+			case 104:/* Starhub-Singapore */
+			case 151: /* M1-Singapore */			
+                is_rat_mode_change_allowed  = KAL_TRUE;
+                break;
+            default:
+                break;
+        }
+    }
+    kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Is RAT mode change allowed:%d",is_rat_mode_change_allowed);
+    return is_rat_mode_change_allowed;
+}
+
+
+kal_uint32 custom_ssds_get_rat_mode_change_timer_value(custom_ssds_rat_mode_change_timer_type timer_type)
+{
+    kal_uint32 timer_value = 0;
+    
+    switch(timer_type)
+    {    
+        case CUSTOM_SSDS_RAT_MODE_CHANGE_TIMER_TYPE_TRIGGER:
+            timer_value = KAL_TICKS_1_SEC * 1;
+            break;
+        case CUSTOM_SSDS_RAT_MODE_CHANGE_TIMER_TYPE_WAIT:
+            timer_value = KAL_TICKS_1_SEC * 2;
+            break;
+        case CUSTOM_SSDS_RAT_MODE_CHANGE_TIMER_TYPE_CS_REG:
+            timer_value = KAL_TICKS_1_SEC * 9;
+            break;            
+        default:
+            break;
+    }
+    kal_prompt_trace(MOD_SSDS, "RAT mode timer value and type: %d/%d",timer_type,timer_value);
+    return timer_value;
+}