[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;
+}