blob: 62b9fa41ac4432449c7ef1dfdc40c6c11b54f0c4 [file] [log] [blame]
/*****************************************************************************
* 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 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 303: /* Iliad/Italy */
case 306: /* CUHK-Hongkong */
case 314: /* Telepost-Greenland */
case 315: /* Tele2-Kazakhstan */
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 */
case 366: /* Appalachian-US */
case 385: /* BH Mobile */
case 397:/* Mectel-Myanmar */
case 410: /* Mtel-Bosnia and Herzegovina*/
case 415: /*my.t-Mauritius*/
case 420: /* Saudi Arabia -Redbull*/
case 430: /* Airtel- Nigeria */
case 436: /* Flow - Barbados*/
case 439: /* Airtel - Tanzania */
*req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
is_changed = KAL_TRUE;
break;
case 426: /* NLC - Pakistan */
*req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
is_changed = KAL_TRUE;
break;
case 3: /* Orange */
if(0 == strcmp(params_info->mcc, "226")) /* Orange-Romania supports USSI */
{
break;
}
*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")) ||
(0 == strcmp(params_info->mcc, "226")))
{
*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")) || (0 == strcmp(params_info->mcc, "740"))) /* Claro-Dominican/Ecuador 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 113: /* Beeline */
if(0 == strcmp(params_info->mcc, "250")) /* Beeline-Russia */
{
*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;
case 6: /* VDF-South Africa and VDF-EU IOT */
if((0 == strcmp(params_info->mcc, "655")) || (0 == strcmp(params_info->mcc, "901")))
{
*req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
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;
}
void _custom_ssds_get_stk_ussd_req_path_default_config_by_op(custom_ssds_params_info_struct *params_info,
custom_ssds_ussd_path_type *req_stk_ussd_path_type)
{
kal_bool is_changed = KAL_FALSE;
switch (params_info->op_id)
{
case 0: /* Default values */
break;
case 127: /*MEGAFON -RUSSIA */
*req_stk_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
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]stk_ussd path:%d, opid:%d",*req_stk_ussd_path_type, params_info->op_id);
}
return;
}
void _custom_ssds_get_stk_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_stk_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->stk_ussd_path)
{
case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_IMS_IF_IMS_REGISTERED:
_custom_ssds_ussd_req_path_ims_select_rule(params_info, req_stk_ussd_path_type);
is_changed = KAL_TRUE;
break;
case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_CS:
*req_stk_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
is_changed = KAL_TRUE;
break;
case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_IMS:
*req_stk_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
is_changed = KAL_TRUE;
break;
case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_NOT_SUPPORT:
*req_stk_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_stk_ussd_path:%d,atcmd_stk_ussd_path_type:%d",
cfg_type, nvram_ptr->stk_ussd_path, *req_stk_ussd_path_type);
}
return;
}
custom_ssds_ussd_path_type custom_ssds_get_stk_ussd_req_path_variable ( custom_ssds_params_info_struct *params_info)
{
custom_ssds_ussd_path_type req_stk_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_INVALID;
/* Default configuration is same as USSD */
/* Priority 4 :mcf ota config */
_custom_ssds_get_stk_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_MCF_OTA, &req_stk_ussd_path_type);
/* Priority 3 :default OP config */
_custom_ssds_get_stk_ussd_req_path_default_config_by_op(params_info, &req_stk_ussd_path_type);
/* Priority 2 :mcf ota by op config */
_custom_ssds_get_stk_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP, &req_stk_ussd_path_type);
/* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
_custom_ssds_get_stk_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_NVRAM, &req_stk_ussd_path_type);
return req_stk_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_get_config_value_match(custom_ssds_params_info_struct *params_info,
custom_ssds_cw_sync_type *need_sync,
kal_uint8 cfg_value_id)
{
if(cfg_value_id == NVRAM_SSDS_NEED_SYNC_CW_IN_234G)
{
if(*need_sync == SSDS_CW_SYNC_IMS_REGISTERED_NON_REAL_TIME_ELSE_REAL_TIME)
{
if(params_info->is_ims_registered == KAL_TRUE)
*need_sync = SSDS_CW_SYNC_TYPE_NON_REAL_TIME;
else
*need_sync = SSDS_CW_SYNC_TYPE_REAL_TIME;
}
}
return;
}
void _custom_ssds_need_sync_cw_in_234g_variable_default(custom_ssds_params_info_struct *params_info,custom_ssds_cw_sync_type *need_sync)
{
*need_sync = SSDS_CW_SYNC_TYPE_NONE;
return;
}
void _custom_ssds_need_sync_cw_in_234g_variable(custom_ssds_params_info_struct *params_info,custom_ssds_cw_sync_type *need_sync)
{
kal_bool is_changed = KAL_FALSE;
/* 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(params_info->op_id)
{
case 3: /* Orange */
case 108: /* TWN-TAIWAN */
case 201: /* KPN-Netherlands */
*need_sync = SSDS_CW_SYNC_TYPE_REAL_TIME;
is_changed = KAL_TRUE;
break;
case 120: /* CLARO */
{
if(0 == strcmp(params_info->mcc, "724")) /*Brazil */
{
*need_sync = SSDS_CW_SYNC_IMS_REGISTERED_NON_REAL_TIME_ELSE_REAL_TIME;
is_changed = KAL_TRUE;
}
break;
}
case 153: /* VHA-AUS */
*need_sync = SSDS_CW_SYNC_IMS_REGISTERED_NON_REAL_TIME_ELSE_REAL_TIME;
is_changed = KAL_TRUE;
break;
case 227: /* WIND */
{
if(0 == strcmp(params_info->mcc, "222")) /* Wind-Italy */
{
*need_sync = SSDS_CW_SYNC_TYPE_REAL_TIME;
is_changed = KAL_TRUE;
}
break;
}
case 235: /* VIP */
{
if(0 == strcmp(params_info->mcc, "220")) /* Serbia */
{
*need_sync = SSDS_CW_SYNC_TYPE_REAL_TIME;
is_changed = KAL_TRUE;
}
break;
}
case 155: /* Digi */
{
if(0 == strcmp(params_info->mcc, "502"))
{
if(0 == strcmp(params_info->mnc, "16")) /* Malaysia */
{
*need_sync = SSDS_CW_SYNC_TYPE_REAL_TIME;
is_changed = KAL_TRUE;
}
}
break;
}
case 6: /* Vodafone */
{
if(0 == strcmp(params_info->mcc, "530")) /* Vodafone - New Zealand*/
{
if(0 == strcmp(params_info->mnc, "01"))
{
*need_sync = SSDS_CW_SYNC_IMS_REGISTERED_NON_REAL_TIME_ELSE_REAL_TIME;
is_changed = KAL_TRUE;
}
}
break;
}
case 121:/* BELL-CANADA */
{
*need_sync = SSDS_CW_SYNC_IMS_REGISTERED_NON_REAL_TIME_ELSE_REAL_TIME;
is_changed = KAL_TRUE;
break;
}
default:
break;
}
if(is_changed == KAL_TRUE)
{
custom_ssds_get_config_value_match(params_info,&(*need_sync),NVRAM_SSDS_NEED_SYNC_CW_IN_234G);
kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[Default Config by OP]CW sync:%d, opid:%d",*need_sync, params_info->op_id);
}
return;
}
void _custom_ssds_need_sync_cw_in_234g_nvram_variable(custom_ssds_params_info_struct *params_info,custom_ssds_cw_sync_type *need_sync,
custom_ssds_config_type cfg_type)
{
sim_interface_enum sim_id = params_info->sim_id;
if (KAL_TRUE == (custom_ssds_config_get_common_config(NVRAM_SSDS_NEED_SYNC_CW_IN_234G, sim_id,&(*need_sync),cfg_type)))
{
custom_ssds_get_config_value_match(params_info,&(*need_sync),NVRAM_SSDS_NEED_SYNC_CW_IN_234G);
kal_prompt_trace(MOD_SSDS, "Use NVRAM: if send sync cw in 234g");
kal_prompt_trace(MOD_SSDS,"need_sync is:%d ", *need_sync);//for debug
}
return;
}
void _custom_ssds_get_need_sync_cw_in_234g_from_common_file(custom_ssds_params_info_struct *params_info,custom_ssds_cw_sync_type *need_sync,
custom_ssds_config_type cfg_type)
{
custom_ssds_config_get_need_sync_cw_in_234g_from_common_file(params_info,&(*need_sync),cfg_type);
if(INVALID_VALUE != *need_sync) // Invalid value
{
custom_ssds_get_config_value_match(params_info,&(*need_sync),NVRAM_SSDS_NEED_SYNC_CW_IN_234G);
kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[Config file]cfg_type:%d,need_sync_cw_in_234g is 0x%x in common config file",cfg_type,*need_sync);
}
}
void custom_ssds_need_sync_cw_in_234g_variable(custom_ssds_params_info_struct *params_info,custom_ssds_cw_sync_type *need_sync)
{
/* Priority 5 :default config */
_custom_ssds_need_sync_cw_in_234g_variable_default(params_info,&(*need_sync));
/* Priority 4 :mcf ota config */
_custom_ssds_need_sync_cw_in_234g_nvram_variable(params_info,&(*need_sync),CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
_custom_ssds_get_need_sync_cw_in_234g_from_common_file(params_info,&(*need_sync),CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
/* Priority 3 :default OP config */
_custom_ssds_need_sync_cw_in_234g_variable(params_info,&(*need_sync));
/* Priority 2 :mcf ota by op config */
_custom_ssds_need_sync_cw_in_234g_nvram_variable(params_info,&(*need_sync),CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
_custom_ssds_get_need_sync_cw_in_234g_from_common_file(params_info,&(*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(params_info,&(*need_sync),CUSTOM_SSDS_CFG_TYPE_NVRAM);
_custom_ssds_get_need_sync_cw_in_234g_from_common_file(params_info,&(*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 */
case 388:/* CBN China*/
{
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)
{
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;
}
}
else if(0 == strcmp(params_info->mcc, "612")) /* orange-Ivory Coast */
{
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;
}
}
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, "655"))
{
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;
}
}
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;
}
}
else if(0 == strcmp(params_info->mcc, "901")) /* VDF-EU IOT */
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
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 */
{
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 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:
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;
}
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;
}
/* special network config */
if(0 == strcmp(params_info->mcc, "635"))
{
/* KTRN Rwanda*/
need_check_roaming_data_off = KAL_FALSE;
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:
case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
break;
default:
break;
}
}
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_PS_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;
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;
}
}
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;
}
}
else if((0 == strcmp(params_info->mcc, "370")))
{
/*Claro-Dominican*/
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;
}
}
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 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;
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 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_CLIP:
case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
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;
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 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 **/
{
if ((KAL_TRUE != params_info->is_ims_registered) || (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
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_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;
}
}
else if(0 == strcmp(params_info->mcc, "247")) //Latvia)
{
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;
}
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)
{
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;
}
}
}
else if(0 == strcmp(params_info->mcc, "214"))
{
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;
}
}
else if(0 == strcmp(params_info->mcc, "222"))
{
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 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*/
{
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;
}
}
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*Jordan*/
if((0 == strcmp(params_info->mcc, "419")) || (0 == strcmp(params_info->mcc, "416")))
{
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;
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;
case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
break;
default:
break;
}
}
}
break;
}
case 183: /* PERSONAL */
{
if (0 == strcmp(params_info->mcc, "722")) /* Argentina */
{
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;
}
else if (0 == strcmp(params_info->mcc, "744")) /* Paraguay */
{
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 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 */
{
need_check_roaming_data_off = KAL_FALSE;
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;
} 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 = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
}
else if(0 == strcmp(params_info->mcc, "714"))/* Tigo-Panama */
{
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;
}
}
else if(0 == strcmp(params_info->mcc, "708")) /* Tigo-Honduras*/
{
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 = KAL_FALSE;
}
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:
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;
}
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;
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;
}
}
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 246: /* Ooredoo */
{
if(0 == strcmp(params_info->mcc, "427")) /* Qatar */
{
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;
}
}
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 255: /* Cellular one US */
{
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_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 = (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;
}
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_CLIR:
case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
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 303: /* Iliad/Italy */
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
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 346: /* Laotel-Lao */
{
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 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*/
{
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 382:/*Zeop-French Reunion*/
{
if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
break;
}
case 387:/*West Central Wireless - US*/
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
break;
}
case 416: /* Brazil-Brisanet special requirement for SS. Only CLIR/CW should be kept for Brazil-Brisanet*/
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
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 418: /* Emtel - Mauritius */
{
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 438: /* Ooredoo - Algeria */
{
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 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 385: /* BH Mobile */
{
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 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 393:/* IT-E Wireless - USA */
{
need_check_roaming_data_off = KAL_FALSE;
break;
}
case 394: /* Telecom Andorra */
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
/*Special case: Support XCAP when LTE attached */
if(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:
/* Support XCAP when LTE attached, else terminal based */
if (KAL_FALSE == params_info->lte_attached)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
}
break;
default:
break;
}
break;
}
case 396: /* Thumb cellular -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 397: /* Mectel-Myanmar */
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
break;
}
case 400: /* Nova Iceland */
{
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;
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 401: /* Ooredo-Maldives */
{
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 408: /* Bitel -Peru */
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
break;
}
case 410: /* Mtel/Bosnia and Herzegovina */
{
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 411: /* Evolve - Broadband */
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
break;
}
case 415:/*my.t-Mauritius*/
{
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 417: /* ATLAS TELECOM - UAE */
{
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 419: /* Airtel - Uganda */
{
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 420: /* Redbull - Saudi Arabia */
{
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_CALL_WAITING:
case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
break;
default:
break;
}
break;
}
case 421: /* Mobile - Yemen */
{
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_PS_ONLY;
break;
default:
break;
}
if(params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
break;
}
case 423: /* Siminn/Iceland */
{
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;
}
if(params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
break;
}
case 424: /* Vodafone/Iceland */
{
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(params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
break;
}
case 426: /* NLC - Pakistan*/
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
break;
}
case 428: /* MCOM - Nigeria */
{
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_CS_ONLY;
break;
default:
break;
}
need_check_roaming_data_off = KAL_FALSE;
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 429: /* Ethio/Telecom */
{
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)
{
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 430: /* Airtel - Nigeria*/
{
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;
}
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;
}
}
need_check_roaming_data_off_cs_only = KAL_TRUE;
break;
}
case 431: /* Unifique - Brazil */
{
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_PS_PREFER;
break;
default:
break;
}
break;
}
case 432: /* Azercell - Azerbaijan */
{
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 435: /* Airtel - Zambia */
{
need_check_roaming_data_off_cs_only = KAL_TRUE;
break;
}
case 436: /* Flow - Barbados*/
{
if(params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
break;
}
case 437:
{
/*Special case: Support XCAP when LTE attached */
if(KAL_TRUE == params_info->lte_attached)
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
}
else
{
atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
}
break;
}
case 439: /* Airtel - Tanzania */
{
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;
}
need_check_roaming = KAL_TRUE;
break;
}
case 442: /* Liberty- Puerto Rico*/
{
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_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 443: /* Cubic Telecom*/
{
if(0 == strcmp(params_info->mccmnc, "29506") || 0 == strcmp(params_info->mccmnc, "72446"))
{
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 388:/* CBN China*/
{
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;
}
if(403 == params_info->rsp_id || 831 == params_info->rsp_id)
{
rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
}
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;
}
case 397:/* Mectel - Myanmar */
{
if (200 != params_info->rsp_id)
{
rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
}
break;
}
case 442:/* Liberty-Puerto Rico */
{
/* Requires that when UE receives 404, 500, 502, 503 or 504 Error response from NW, it needs to CSFB */
if (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;
}
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;
case 220: /* Tigo */
if(0 == strcmp(params_info->mcc, "704")) /* Tigo-Guatemala */
{
is_ussi_allowed_during_ims_call = KAL_FALSE;
}
break;
case 246: /* Ooredoo */
if(0 == strcmp(params_info->mcc, "427")) /* Ooredoo-Qatar */
{
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 3: /* Orange */
if(0 == strcmp(params_info->mcc, "214")) /* Spain */
{
is_rat_mode_change_allowed = KAL_TRUE;
}
break;
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;
case 120: /* Claro */
if (0 == strcmp(params_info->mcc,"724")) /* Brazil */
{
is_rat_mode_change_allowed = KAL_TRUE;
}
break;
case 132: /* Movistar*/
if(0 == strcmp(params_info->mcc,"724")) /* Brazil*/
{
is_rat_mode_change_allowed = KAL_TRUE;
}
break;
case 158: /* Zain */
if(0 == strcmp(params_info->mcc, "420")) /*SA*/
{
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;
}