| /***************************************************************************** |
| * 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; |
| } |