blob: 666e2a1a3f6601cacc7fe1c185e9768635fabe1f [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * custom_ssds.c
41 *
42 * Project:
43 * --------
44 *
45 *
46 * Description:
47 * ------------
48 *
49 *
50 * Author:
51 * -------
52 *
53 *
54 ****************************************************************************/
55
56#include <string.h>
57#include "kal_trace.h"
58#include "kal_general_types.h"
59#include "kal_public_api.h"
60#include "custom_ssds.h"
61#include "custom_ssds_config.h"
62#include "sbp_public_utility.h"
63#include "ps_public_utility.h" //l4c_gemini_get_actual_sim_id
64
65/* SIM */
66#include "sim_common_enums.h" /* for is_test_sim */
67
68extern kal_bool ssds_path_is_pct_icccard(module_type dst_module);
69
70kal_bool _custom_ssds_is_cfu(custom_ssds_atcmd_info *atcmd_info)
71{
72 kal_char action_activate[] = "*";
73 kal_char action_deactivate[] = "#";
74 kal_char action_query[] = "*#";
75 kal_char action_rigester[] = "**";
76 kal_char action_erasure[] = "##";
77 kal_uint32 index = 0;
78 kal_bool is_cfu = KAL_FALSE;
79
80 /*find '=' */
81 while ((atcmd_info->atcmd_buff[index] != '=') && (index < atcmd_info->atcmd_len))
82 {
83 index++;
84 }
85
86 if (index >= atcmd_info->atcmd_len)
87 {
88 kal_prompt_trace(MOD_SSDS, "ERROR! Unexpected AT command!");
89 return KAL_FALSE;
90 } else {
91 index += 6;
92 }
93
94 /*skip the action*/
95 if ( (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_query, 2)) ||
96 (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_rigester, 2)) ||
97 (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_erasure, 2)) )
98 {
99 index += 2;
100 }
101 else if ( (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_activate, 1)) ||
102 (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, action_deactivate, 1)) )
103 {
104 index += 1;
105 }
106 else
107 {
108 kal_prompt_trace(MOD_SSDS, "ERROR! ACTION parse fail!");
109 return KAL_FALSE;
110 }
111
112 /*parse the CFU code*/
113 if (0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, "21", 2) ||
114 0 == kal_mem_cmp(atcmd_info->atcmd_buff+index, "22", 2))
115 {
116 is_cfu = KAL_TRUE;
117 }
118
119 return is_cfu;
120}
121
122kal_bool custom_ssds_need_sync_to_cs(custom_ssds_atcmd_type ss_type,kal_uint32 rsp_code)
123{
124 kal_bool is_need_to_sync = KAL_FALSE;
125 if((ss_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR) && (rsp_code == 200))
126 {
127 is_need_to_sync = KAL_TRUE;
128 }
129 return is_need_to_sync;
130}
131
132kal_bool _custom_ssds_cdma_only_path_variable(kal_uint32 op_id,
133 kal_char *mccmnc)
134{
135 kal_uint32 atcmd_request_cdma_only_table[] = { 12 };
136 kal_uint32 index;
137 kal_bool ret_value = KAL_FALSE;
138
139 /*Special case: support CDMA only*/
140 for (index=0; index<sizeof(atcmd_request_cdma_only_table)/sizeof(atcmd_request_cdma_only_table[0]); index++)
141 {
142 if (op_id == atcmd_request_cdma_only_table[index])
143 {
144 ret_value = KAL_TRUE;
145 }
146 }
147
148 return ret_value;
149
150}
151
152#if 1
153
154void _custom_ssds_ussd_req_path_ims_select_rule(custom_ssds_params_info_struct *params_info, custom_ssds_ussd_path_type *atcmd_ussd_path_type)
155{
156
157 if(params_info->is_ims_registered == KAL_TRUE)
158 {
159 //VoPS only works for cellular network,if UE is registered on VoWiFi,no need to check VoPS
160 if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
161 {
162 *atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
163 kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]registered on VoWiFi,send to IMS!");
164 }
165 else
166 {
167 if(params_info->is_imsvops_support == KAL_TRUE)
168 {
169 *atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
170 kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]IMSVoPS is support and ims is registered!");
171 }
172 else
173 {
174 *atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
175 kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]IMSVoPS is not support!");
176 }
177 }
178 }
179 else
180 {
181 *atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
182 kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[USSD]No IMS registered!");
183 }
184
185}
186
187
188custom_ssds_ussd_path_type _custom_ssds_get_ussd_req_path_default_config(custom_ssds_params_info_struct *params_info)
189{
190 custom_ssds_ussd_path_type atcmd_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_INVALID;
191
192 _custom_ssds_ussd_req_path_ims_select_rule(params_info, &atcmd_ussd_path_type);
193
194 if(atcmd_ussd_path_type != CUSTOM_SSDS_USSD_PATH_TYPE_INVALID)
195 {
196 kal_prompt_trace(MOD_SSDS+params_info->sim_id, "[Default Config]ussd path:%d",atcmd_ussd_path_type);
197 }
198 return atcmd_ussd_path_type;
199}
200
201
202void _custom_ssds_get_ussd_req_path_default_config_by_op(custom_ssds_params_info_struct *params_info,
203 custom_ssds_ussd_path_type *req_ussd_path_type)
204{
205 kal_bool is_changed = KAL_FALSE;
206
207 switch (params_info->op_id)
208 {
209 case 0: /* Default values */
210 break;
211 case 1:/* CMCC */
212 case 2:/* CU */
213 case 3:/* Orange */
214 case 102:/* Smartone */
215 case 112:/* Telcel */
216 case 125:/*DTAC-Thailand*/
217 case 140:/*MTN/Ghana*/
218 case 223: /* Indosat-Indonesia */
219 case 228: /* Celcom-Malaysia */
220 case 231: /* Maxis-Malaysia */
221 case 241: /* Claro-Puerto Rico */
222 case 244: /* Metfone-Cambodia */
223 case 278: /* Jazz-Pakistan */
224 case 294: /* MPT-Mayanmar */
225 case 296:/* CWW-US */
226 case 306: /* CUHK-Hongkong */
227 case 314: /* Telepost-Greenland */
rjw8e44aab2022-11-30 16:42:16 +0800228 case 315: /* Tele2-Kazakhstan */
rjw6c1fd8f2022-11-30 14:33:01 +0800229 case 318: /* Vianova/Italy */
230 case 320: /* Coriolis/France */
231 case 334:/* Tashicell-Bhutan */
232 case 335:/* TOT-Thailand*/
233 case 337:/* Antel-Uruguay*/
234 case 339:/* Unitel- Angola*/
235 case 340:/*VDF-Papua*/
236 case 341:/*Ucell-Uzbekistan*/
237 case 342:/*Ecotel-Canada*/
238 case 349:/*MTS-Armenia*/
239 case 353:/*We4G-Israel*/
240 case 354: /* Poste Mobile/Italy */
rjw8e44aab2022-11-30 16:42:16 +0800241 case 366: /* Appalachian-US */
242 case 385: /* BH Mobile */
rjw6c1fd8f2022-11-30 14:33:01 +0800243 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
244 is_changed = KAL_TRUE;
245 break;
246 case 5: /* TMOEU/DTAG Greece/Netherlands/Hungary/Slovakia */
247 if((0 == strcmp(params_info->mcc, "202")) || (0 == strcmp(params_info->mcc, "204")) ||
248 (0 == strcmp(params_info->mcc, "216")) || (0 == strcmp(params_info->mcc, "231")))
249 {
250 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
251 is_changed = KAL_TRUE;
252 }
253 break;
254 case 120:/* Claro */
255 {
256 if(0 == strcmp(params_info->mcc, "370")) /* Claro-Dominican support USSI */
257 {
258 break;
259 }
260 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
261 is_changed = KAL_TRUE;
262 break;
263 }
264 case 11: /* H3G */
265 if(0 == strcmp(params_info->mcc, "272")) /* H3G-Ireland */
266 {
267 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
268 is_changed = KAL_TRUE;
269 }
270 break;
271 case 137:/* Tele2 */
272 if(0 == strcmp(params_info->mcc, "250")) /* Tele2/Russia USSD over CS */
273 {
274 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
275 is_changed = KAL_TRUE;
276 }
277 break;
278 case 156: /* Telenor */
279 if(0 == strcmp(params_info->mcc, "297")) /* Telenor-Montenegro */
280 {
281 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
282 is_changed = KAL_TRUE;
283 }
284 break;
285 case 319: /* Monaco Telecom France/Epic Cyprus */
286 if(0 == strcmp(params_info->mcc, "212")) /* Monaco Telecom */
287 {
288 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
289 is_changed = KAL_TRUE;
290 }
291 break;
292 case 9:/* CT */
293 case 304:/* CTMO: only support CF and CW --aomen*/
294 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_NOT_SUPPORT;
295 is_changed = KAL_TRUE;
296 break;
rjw8e44aab2022-11-30 16:42:16 +0800297 case 6: /* VDF */
298 if(0 == strcmp(params_info->mcc, "655")) /* VDF-South Africa */
299 {
300 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
301 is_changed = KAL_TRUE;
302 }
303 break;
rjw6c1fd8f2022-11-30 14:33:01 +0800304 default:
305 break;
306 }
307 if(is_changed == KAL_TRUE)
308 {
309 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);
310 }
311 return;
312}
313
314
315void _custom_ssds_get_ussd_req_path_from_config_file(custom_ssds_params_info_struct *params_info,
316 custom_ssds_config_type cfg_type,
317 custom_ssds_ussd_path_type *req_ussd_path_type)
318{
319 nvram_ef_ssds_common_config_profile_struct *nvram_ptr = NULL;
320 custom_ssds_config_context_struct *context_root;
321 sim_interface_enum sim_id = params_info->sim_id;
322 kal_bool is_changed = KAL_FALSE;
323
324 context_root = _custom_ssds_get_context_by_simid(sim_id, cfg_type);
325
326 if (!context_root)
327 {
328 return;
329 }
330 nvram_ptr = &(context_root->common_config_record);
331
332 switch(nvram_ptr->ussd_path)
333 {
334 case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_IMS_IF_IMS_REGISTERED:
335 _custom_ssds_ussd_req_path_ims_select_rule(params_info, req_ussd_path_type);
336 is_changed = KAL_TRUE;
337 break;
338
339 case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_CS:
340 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_CS;
341 is_changed = KAL_TRUE;
342 break;
343
344 case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_IMS:
345 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_IMS;
346 is_changed = KAL_TRUE;
347 break;
348
349 case CUSTOM_SSDS_USSD_REQ_PATH_CONFIG_NOT_SUPPORT:
350 *req_ussd_path_type = CUSTOM_SSDS_USSD_PATH_TYPE_NOT_SUPPORT;
351 is_changed = KAL_TRUE;
352 break;
353
354 default:
355 break;
356 }
357 if(is_changed == KAL_TRUE)
358 {
359 kal_prompt_trace(MOD_SSDS+sim_id, "[Config file]cfg_type:%d,cfg_ussd_path:%d,atcmd_ussd_path_type:%d",
360 cfg_type, nvram_ptr->ussd_path, *req_ussd_path_type);
361 }
362
363 return;
364}
365
366
367custom_ssds_ussd_path_type custom_ssds_get_ussd_req_path_variable ( custom_ssds_params_info_struct *params_info )
368{
369 custom_ssds_ussd_path_type req_ussd_path_type;
370
371
372 /* Priority 5 :default config */
373 req_ussd_path_type = _custom_ssds_get_ussd_req_path_default_config(params_info);
374
375 /* Priority 4 :mcf ota config */
376 _custom_ssds_get_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_MCF_OTA, &req_ussd_path_type);
377
378 /* Priority 3 :default OP config */
379 _custom_ssds_get_ussd_req_path_default_config_by_op(params_info, &req_ussd_path_type);
380
381 /* Priority 2 :mcf ota by op config */
382 _custom_ssds_get_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP, &req_ussd_path_type);
383
384 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
385 _custom_ssds_get_ussd_req_path_from_config_file(params_info, CUSTOM_SSDS_CFG_TYPE_NVRAM, &req_ussd_path_type);
386
387 return req_ussd_path_type;
388}
389
390
391#endif
392
393kal_bool custom_ssds_is_csfb_allowed(kal_uint32 op_id, kal_char *mccmnc, custom_ssds_roaming_type roaming_type)
394{
395 kal_bool is_csfb_allowed = KAL_TRUE;
396
397 if (117 == op_id && CUSTOM_SSDS_ROAMING_TYPE_NO == roaming_type)
398 {
399 is_csfb_allowed = KAL_FALSE;
400 }
401 return is_csfb_allowed;
402}
403
404kal_bool custom_ssds_is_csfb_during_imsCall_allowed(kal_uint32 op_id,
405 kal_char *mccmnc,
406 custom_ssds_roaming_type roaming_type,
407 custom_ssds_ims_domain_type ims_domain,
408 kal_bool is_wfc_call)
409{
410 kal_bool is_csfb_allowed = KAL_FALSE;
411 if(KAL_TRUE == is_wfc_call)
412 {
413 is_csfb_allowed = KAL_TRUE;
414 }
415
416 return is_csfb_allowed;
417}
418
419#if 1
420void _custom_ssds_need_send_409_err_string_default_variable(module_type module,kal_bool *need_send)
421{
422 *need_send = KAL_FALSE;
423
424 return;
425}
426
427
428void _custom_ssds_need_send_409_err_string_variable(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
429{
430 switch(op_id)
431 {/* currently only for AT&T and AU Optus */
432 case 7:
433 case 145:
434 case 196:
435 case 152:
436 *need_send = KAL_TRUE;
437 break;
438 default:
439 break;
440 }
441
442 return;
443}
444void _custom_ssds_need_send_409_err_string_nvram_variable(module_type module,kal_bool *need_send,
445 custom_ssds_config_type cfg_type)
446{
447 sim_interface_enum sim_id;
448
449 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
450
451 if (KAL_TRUE == (custom_ssds_config_get_common_config(NVRAM_SSDS_NEED_SEND_409_ERR_STRING, sim_id,(void*)(&need_send),cfg_type)))
452 {
453 kal_prompt_trace(module, "Use NVRAM: if send 409 err string");
454 }
455
456 return;
457}
458
459void _custom_ssds_get_need_send_409_err_string_from_common_file(module_type module,kal_bool *need_send,
460 custom_ssds_config_type cfg_type)
461{
462 sim_interface_enum sim_id;
463 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
464 custom_ssds_config_get_need_send_409_err_string_from_common_file(sim_id,need_send,cfg_type);
465}
466
467
468void custom_ssds_need_send_409_err_string_variable(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
469{
470 /* Priority 5 :default config */
471 _custom_ssds_need_send_409_err_string_default_variable(module,need_send);
472
473 /* Priority 4 :mcf ota config */
474 _custom_ssds_need_send_409_err_string_nvram_variable(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
475 _custom_ssds_get_need_send_409_err_string_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
476
477 /* Priority 3 :default OP config */
478 _custom_ssds_need_send_409_err_string_variable(module,need_send,op_id,mccmnc);
479
480 /* Priority 2 :mcf ota by op config */
481 _custom_ssds_need_send_409_err_string_nvram_variable(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
482 _custom_ssds_get_need_send_409_err_string_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
483
484 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
485 _custom_ssds_need_send_409_err_string_nvram_variable(module,need_send,CUSTOM_SSDS_CFG_TYPE_NVRAM);
486 _custom_ssds_get_need_send_409_err_string_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_NVRAM);
487 return;
488}
489
490#endif
491
492#if 1
493void _custom_ssds_need_sync_cw_in_234g_variable_default(module_type module,kal_bool *need_sync)
494{
495 *need_sync = KAL_FALSE;
496
497 return;
498}
499
500
501void _custom_ssds_need_sync_cw_in_234g_variable(module_type module,kal_bool *need_sync,kal_uint32 op_id,kal_char *mccmnc)
502{
503 /* currently only for VHA which has such characters:CW always on in 4G and */
504 /* CW controlled by NW in non-4G and the CW not synced in 4G and non-4G NW */
505 /* So need UE to sync CW setting in 4G and non-4G by itself */
506 switch(op_id)
507 {
508 case 3:
509 case 108:
510 case 153:
511 *need_sync = KAL_TRUE;
512 break;
513 default:
514 break;
515 }
516
517 return;
518}
519void _custom_ssds_need_sync_cw_in_234g_nvram_variable(module_type module,kal_bool *need_sync,
520 custom_ssds_config_type cfg_type)
521{
522 sim_interface_enum sim_id;
523
524 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
525
526 if (KAL_TRUE == (custom_ssds_config_get_common_config(NVRAM_SSDS_NEED_SYNC_CW_IN_234G, sim_id,(void*)need_sync,cfg_type)))
527 {
528 kal_prompt_trace(module, "Use NVRAM: if send sync cw in 234g");
529 kal_prompt_trace(module,"need_sync is:%d ", *need_sync);//for debug
530 }
531
532 return;
533}
534
535void _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module_type module,kal_bool *need_sync,
536 custom_ssds_config_type cfg_type)
537{
538 sim_interface_enum sim_id;
539 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
540 custom_ssds_config_get_need_sync_cw_in_234g_from_common_file(sim_id,need_sync,cfg_type);
541}
542
543
544void custom_ssds_need_sync_cw_in_234g_variable(module_type module,kal_bool *need_sync,kal_uint32 op_id,kal_char *mccmnc)
545{
546 /* Priority 5 :default config */
547 _custom_ssds_need_sync_cw_in_234g_variable_default(module,need_sync);
548
549 /* Priority 4 :mcf ota config */
550 _custom_ssds_need_sync_cw_in_234g_nvram_variable(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
551 _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
552
553 /* Priority 3 :default OP config */
554 _custom_ssds_need_sync_cw_in_234g_variable(module,need_sync,op_id,mccmnc);
555
556 /* Priority 2 :mcf ota by op config */
557 _custom_ssds_need_sync_cw_in_234g_nvram_variable(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
558 _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module,need_sync,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
559
560 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
561 _custom_ssds_need_sync_cw_in_234g_nvram_variable(module,need_sync,CUSTOM_SSDS_CFG_TYPE_NVRAM);
562 _custom_ssds_get_need_sync_cw_in_234g_from_common_file(module,need_sync,CUSTOM_SSDS_CFG_TYPE_NVRAM);
563
564 return;
565}
566#endif
567
568#if 1
569
570void _custom_ssds_need_send_test_cmd_default(module_type module,kal_bool *need_send)
571{
572 *need_send = KAL_FALSE;
573
574 return;
575}
576
577
578void _custom_ssds_need_send_test_cmd(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
579{
580 switch(op_id)
581 {
582 case 5://DT
583 *need_send = KAL_TRUE;
584 break;
585 default:
586 break;
587 }
588
589 return;
590}
591
592void _custom_ssds_get_need_send_test_cmd_from_common_file(module_type module,
593 kal_bool *need_sync,
594 custom_ssds_config_type cfg_type)
595{
596 sim_interface_enum sim_id;
597 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(module - MOD_SSDS));
598 custom_ssds_config_get_need_send_test_cmd_from_common_file(sim_id,need_sync,cfg_type);
599}
600
601
602void custom_ssds_need_send_test_cmd(module_type module,kal_bool *need_send,kal_uint32 op_id,kal_char *mccmnc)
603{
604 /* Priority 5 :default config */
605 _custom_ssds_need_send_test_cmd_default(module,need_send);
606 /* Priority 4 :mcf ota config */
607 _custom_ssds_get_need_send_test_cmd_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
608 /* Priority 3 :default OP config */
609 _custom_ssds_need_send_test_cmd(module,need_send,op_id,mccmnc);
610 /* Priority 2 :mcf ota by op config */
611 _custom_ssds_get_need_send_test_cmd_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
612 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
613 _custom_ssds_get_need_send_test_cmd_from_common_file(module,need_send,CUSTOM_SSDS_CFG_TYPE_NVRAM);
614 return;
615}
616
617#endif
618
619
620/********new design begin***********/
621
622#if 1
623void custom_ssds_get_req_path_default_config(custom_ssds_params_info_struct *params_info,custom_ssds_path_type *atcmd_path_type)
624{
625 *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
626
627 if(CUSTOM_SSDS_ATCMD_TYPE_UNKNOWN == params_info->atcmd_type)
628 {/* unknown SS type: select CS domain */
629 *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
630 return;
631 }
632
633 /* default cofiguration: *
634 * when ims registered: PS domain *
635 * when ims not registered:CS domain *
636 * CW default configuratin: *
637 * when ims registered: TB solution *
638 * when ims not registered:CS domain */
639 if(KAL_TRUE == params_info->is_ims_registered)
640 {
641 *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
642
643 //default call waiting config: ims registered: terminal based solution; ims not registered: cs
644 if(CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING == params_info->atcmd_type
645 || CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING == params_info->atcmd_type)
646 {
647 *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
648 }
649 }
650 else
651 {
652 *atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
653 }
654
655 return;
656}
657
658custom_ssds_path_type custom_ssds_get_req_path_config(custom_ssds_params_info_struct *params_info,custom_ssds_path_type *req_path_type_in)
659{
660 custom_ssds_path_type atcmd_path_type = *req_path_type_in;
661 kal_bool need_check_roaming_data_off = KAL_TRUE;
662 kal_bool need_check_roaming_data_off_cs_only = KAL_FALSE;
663 kal_bool need_check_roaming_ims = KAL_FALSE;
664 kal_bool need_check_roaming = KAL_FALSE;
665#if 0
666/* under construction !*/
667/* under construction !*/
668/* under construction !*/
669/* under construction !*/
670/* under construction !*/
671/* under construction !*/
672/* under construction !*/
673/* under construction !*/
674/* under construction !*/
675/* under construction !*/
676/* under construction !*/
677/* under construction !*/
678/* under construction !*/
679/* under construction !*/
680/* under construction !*/
681/* under construction !*/
682/* under construction !*/
683/* under construction !*/
684/* under construction !*/
685/* under construction !*/
686/* under construction !*/
687/* under construction !*/
688/* under construction !*/
689/* under construction !*/
690/* under construction !*/
691/* under construction !*/
692/* under construction !*/
693/* under construction !*/
694/* under construction !*/
695/* under construction !*/
696/* under construction !*/
697/* under construction !*/
698/* under construction !*/
699/* under construction !*/
700 #if 0
701/* under construction !*/
702/* under construction !*/
703/* under construction !*/
704/* under construction !*/
705/* under construction !*/
706 #endif
707#endif
708
709 /* operator customization */
710 switch (params_info->op_id)
711 {
712 case 0: /* Default values */
713 {
714 break;
715 }
716 case 1:/* CMCC */
717 {
718 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
719 switch(params_info->atcmd_type)
720 {
721 //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
722 //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
723 // atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
724 // break;
725 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
726 if(KAL_TRUE != params_info->is_ims_registered)
727 {
728 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
729 params_info->only_use_real_error_code = KAL_TRUE;
730 }
731 else
732 {//TB based solution
733 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
734 }
735 break;
736 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
737 if(KAL_TRUE != params_info->is_ims_registered)
738 {
739 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
740 params_info->only_use_real_error_code = KAL_TRUE;
741 }
742 else
743 {//TB based solution(default value)
744 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
745 }
746
747 break;
748 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR://volte card:not support; non-volte card:cs
749 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
750 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
751 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
752 if(KAL_TRUE != params_info->is_ims_registered)
753 {
754 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
755 params_info->only_use_real_error_code = KAL_TRUE;
756 }
757 else
758 {
759 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
760 }
761 break;
762 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR://volte card:not support; non-volte card:cs
763 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
764 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
765 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
766 if(KAL_TRUE != params_info->is_ims_registered)
767 {
768 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
769 params_info->only_use_real_error_code = KAL_TRUE;
770 }
771 else
772 {
773 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
774 }
775 break;
776 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
777 if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type)
778 {
779 if(KAL_TRUE != params_info->is_ims_registered)
780 {
781 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
782 params_info->only_use_real_error_code = KAL_TRUE;
783 }
784 else
785 {//volte card:not support
786 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
787 }
788 }
789 break;
790 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
791 if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type)
792 {
793 if(KAL_TRUE != params_info->is_ims_registered)
794 {
795 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
796 params_info->only_use_real_error_code = KAL_TRUE;
797 }
798 else
799 {//volte card:not support
800 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
801 }
802 }
803 break;
804 default:
805 break;
806 }
807 if((KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id))) &&
808 ((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
809 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
810 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))&&
811 (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
812 {
813 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
814 return atcmd_path_type;
815 }
816 break;
817 }
818 case 2:/* CU */
819 {
820 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
821 switch(params_info->atcmd_type)
822 {
823 //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
824 //case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
825 // atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
826 // break;
827 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
828 if(KAL_TRUE != params_info->is_ims_registered)
829 {
830 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
831 params_info->only_use_real_error_code = KAL_TRUE;
832 }
833 else
834 {//TB based solution
835 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
836 }
837 break;
838 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
839 if(KAL_TRUE != params_info->is_ims_registered)
840 {
841 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
842 params_info->only_use_real_error_code = KAL_TRUE;
843 }
844 else
845 {//TB based solution
846 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
847 }
848
849 break;
850 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR://volte card:not support; non-volte card:cs
851 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
852 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
853 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
854 if(KAL_TRUE != params_info->is_ims_registered)
855 {
856 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
857 params_info->only_use_real_error_code = KAL_TRUE;
858 }
859 else
860 {
861 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
862 }
863 break;
864 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR://volte card:not support; non-volte card:cs
865 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
866 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
867 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
868 if(KAL_TRUE != params_info->is_ims_registered)
869 {
870 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
871 params_info->only_use_real_error_code = KAL_TRUE;
872 }
873 else
874 {
875 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
876 }
877 break;
878 default:
879 break;
880 }
881 break;
882 }
883 case 3: /* Orange_FR */
884 {
885 //atcmd_path_type = custom_ssds_get_ps_prefer_op_default_config(params_info->atcmd_type);
886 //custom_ssds_get_clir_tb_config(params_info->atcmd_type,&atcmd_path_type);
887 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
888 switch(params_info->atcmd_type)
889 {
890 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
891 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
892 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
893 break;
894 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
895 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
896 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
897 break;
898 default:
899 break;
900 }
901 /* special network config */
902 if(0 == strcmp(params_info->mcc, "214")) /* orange-Spain */
903 {
904 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
905 switch(params_info->atcmd_type)
906 {
907 //IMS registered: CW TB solution
908 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
909 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
910 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
911 break;
912 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
913 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
914 break;
915 default:
916 break;
917 }
918 }
919 else if(0 == strcmp(params_info->mcc, "226"))/* orange-Romania */
920 {
921 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
922 switch(params_info->atcmd_type)
923 {
924 //IMS registered: CW TB solution
925 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
926 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
927 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
928 break;
929 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
930 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
931 break;
932 default:
933 break;
934 }
935 }
936 else if(0 == strcmp(params_info->mcc, "260")) /* orange-Poland */
937 {
938 if(0 == strcmp(params_info->mnc, "03"))
939 {
940 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
941 // CLIR GET TB Solution
942 switch(params_info->atcmd_type)
943 {
944 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
945 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
946 break;
947 default:
948 break;
949 }
950 }
951 }
952 else if(0 == strcmp(params_info->mcc, "231")) /* orange-Slovakia */
953 {
954 if(0 == strcmp(params_info->mnc, "01"))
955 {
956 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
957 //IMS registered: CW TB solution
958 switch(params_info->atcmd_type)
959 {
960 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
961 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
962 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
963 break;
964 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
965 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
966 break;
967 default:
968 break;
969 }
970 }
971 }
972 else if(0 == strcmp(params_info->mcc, "206")) /* orange-Belgium */
973 {
974 if(0 == strcmp(params_info->mnc, "10"))
975 {
976 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
977 // CLIR GET TB Solution
978 switch(params_info->atcmd_type)
979 {
980 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
981 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
982 break;
983 default:
984 break;
985 }
986 }
987 }
988 else if(0 == strcmp(params_info->mcc, "308")) /* SPM-US */
989 {
990 if((0 == strcmp(params_info->mnc, "01")) || (0 == strcmp(params_info->mnc, "03")))
991 {
992 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
993 }
994 }
995 else if(0 == strcmp(params_info->mcc, "370"))/*orange-dominican*/
996 {
997 /*data off or roaming status*/
998 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
999 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
1000 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
1001 {
1002 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
1003 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
1004 {
1005 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1006 return atcmd_path_type;
1007 }
1008 }
1009 }
1010 else if(0 == strcmp(params_info->mcc, "602")) /* orange-Egypt */
1011 {
1012 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1013 }
1014 else if(0 == strcmp(params_info->mcc, "604")) /* orange-Morocco */
1015 {
1016 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1017 switch(params_info->atcmd_type)
1018 {
1019 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1020 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1021 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1022 break;
1023 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1024 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1025 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1026 break;
1027 default:
1028 break;
1029 }
1030 if((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
1031 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
1032 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))
1033 {
1034 need_check_roaming = KAL_TRUE;
1035 }
1036 }
1037 else if(0 == strcmp(params_info->mcc, "259")) /* orange-Moldova */
1038 {
1039 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1040 }
1041 else if(0 == strcmp(params_info->mcc, "270")) /* orange-Luxembourg */
1042 {
1043 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1044 switch(params_info->atcmd_type)
1045 {
1046 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1047 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1048 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1049 break;
1050 default:
1051 break;
1052 }
1053 }
1054 else if(0 == strcmp(params_info->mcc, "416")) /* orange-Jordan */
1055 {
1056 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1057 switch(params_info->atcmd_type)
1058 {
1059 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1060 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1061 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1062 break;
1063 default:
1064 break;
1065 }
1066 }
1067 else if(0 == strcmp(params_info->mcc, "608")) /* orange-Senagal */
1068 {
1069 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1070 switch(params_info->atcmd_type)
1071 {
1072 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1073 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1074 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1075 break;
1076 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1077 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1078 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1079 break;
1080 default:
1081 break;
1082 }
1083 }
1084 else if(0 == strcmp(params_info->mcc, "647")) /* orange-Reunion Mayotte */
1085 {
1086 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1087 switch(params_info->atcmd_type)
1088 {
1089 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1090 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1091 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1092 break;
1093 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1094 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1095 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1096 break;
1097 default:
1098 break;
1099 }
1100 }
1101 else if(0 == strcmp(params_info->mcc, "340")) /* orange-Caribbean */
1102 {
1103 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1104 switch(params_info->atcmd_type)
1105 {
1106 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1107 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1108 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1109 break;
1110 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1111 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1112 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1113 break;
1114 default:
1115 break;
1116 }
1117 }
rjw8e44aab2022-11-30 16:42:16 +08001118 else if(0 == strcmp(params_info->mcc, "612")) /* orange-Ivory Coast */
1119 {
1120 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1121 switch(params_info->atcmd_type)
1122 {
1123 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1124 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1125 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1126 break;
1127 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1128 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1129 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1130 break;
1131 default:
1132 break;
1133 }
1134 }
rjw6c1fd8f2022-11-30 14:33:01 +08001135 break;
1136 }
1137 case 5: /* TMOEU */
1138 {
1139 //atcmd_path_type = custom_ssds_get_ps_prefer_op_default_config(params_info->atcmd_type);
1140 //custom_ssds_get_clir_tb_config(params_info->atcmd_type,&atcmd_path_type);
1141 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1142 switch(params_info->atcmd_type)
1143 {
1144 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1145 if(KAL_TRUE != params_info->is_ims_registered)
1146 {
1147 //check whether the sim card is volte sim card
1148 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
1149 params_info->only_use_real_error_code = KAL_TRUE;
1150 }
1151 else
1152 {
1153 //if ims registered, do terminal based
1154 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1155 }
1156 break;
1157 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1158 if(KAL_TRUE != params_info->is_ims_registered)
1159 {
1160 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1161 params_info->only_use_real_error_code = KAL_TRUE;
1162 }
1163 else
1164 {
1165 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
1166 }
1167 break;
1168 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1169 if(KAL_TRUE != params_info->is_ims_registered)
1170 {
1171 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
1172 params_info->only_use_real_error_code = KAL_TRUE;
1173 }
1174 else
1175 {//TB based solution
1176 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1177 }
1178 break;
1179 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1180 if(KAL_TRUE != params_info->is_ims_registered)
1181 {
1182 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1183 params_info->only_use_real_error_code = KAL_TRUE;
1184 }
1185 else
1186 {//TB based solution
1187 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1188 }
1189 break;
1190 default:
1191 break;
1192 }
1193 /* special network config */
1194 if(0 == strcmp(params_info->mcc, "204")) /* Netherlands/DTAG */
1195 {
1196 switch(params_info->atcmd_type)
1197 {
1198 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1199 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1200 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1201 break;
1202 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1203 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1204 /* DTAG/Netherlands Call barring should not be supported in XCAP/Ut or CS domain */
1205 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1206 break;
1207 default:
1208 break;
1209 }
1210 }
1211 if(0 == strcmp(params_info->mcc, "216")) /* Hungary /DTAG */
1212 {
1213 switch(params_info->atcmd_type)
1214 {
1215 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1216 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1217 break;
1218 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1219 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1220 break;
1221 default:
1222 break;
1223 }
1224 }
1225
1226 if(0 == strcmp(params_info->mcc, "276")) /* Albania/DTAG */
1227 {
1228 need_check_roaming = KAL_TRUE;
1229 }
1230 /* for OP05, if roaming and data_roaming off, still can use xcap */
1231 else if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
1232 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
1233 {
1234 return atcmd_path_type;
1235 }
1236 break;
1237 }
1238 case 6: /* Vodafone */
1239 {
1240 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1241 switch(params_info->atcmd_type)
1242 {
1243 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1244 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1245 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1246 break;
1247 default:
1248 break;
1249 }
1250 /* special network config */
1251 if(0 == strcmp(params_info->mcc, "234")) /* Vodafone-United Kingdom */
1252 {
1253 if(0 == strcmp(params_info->mnc, "15"))
1254 {
1255 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
1256 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
1257 {
1258 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1259 }
1260 }
1261 }
1262 else if(0 == strcmp(params_info->mcc, "222"))
1263 {
1264 if(0 == strcmp(params_info->mnc, "10")) /* Vodafone-Italy */
1265 {
1266 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1267 if((KAL_TRUE != params_info->is_ims_registered) &&
1268 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
1269 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
1270 {
1271 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1272 }
1273 }
1274 }
1275 else if(0 == strcmp(params_info->mcc, "214")) /* Vodafone-Spain */
1276 {
1277 if(KAL_TRUE == params_info->is_ims_registered)
1278 {
1279 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1280 }
1281 else
1282 {
1283 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1284 }
1285
1286 switch(params_info->atcmd_type)
1287 {
1288 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1289 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1290 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1291 break;
1292 default:
1293 break;
1294 }
1295 }
1296 else if(0 == strcmp(params_info->mcc, "262"))
1297 {
1298 if(0 == strcmp(params_info->mnc, "02") ||
1299 0 == strcmp(params_info->mnc, "04") ||
1300 0 == strcmp(params_info->mnc, "09"))
1301 {/* Vodafone-Germany */
1302 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
1303 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
1304 {
1305 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1306 }
1307 }
1308 }
1309 else if(0 == strcmp(params_info->mcc, "286"))
1310 {
1311 /* Vodafone-Turkey */
1312 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
1313 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING )
1314 {
1315 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1316 }
1317 }
1318 else if(0 == strcmp(params_info->mcc, "204")) /* Vodafone-NL */
1319 {
1320 if(KAL_TRUE != params_info->is_ims_registered ||
1321 CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain)
1322 {
1323 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1324 }
1325 switch(params_info->atcmd_type)
1326 {
1327 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1328 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1329 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1330 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1331 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1332 break;
1333 default:
1334 break;
1335 }
1336 if((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) &&
1337 (KAL_TRUE == params_info->is_ct_card))
1338 {
1339 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1340 }
1341 }
1342 else if(0 == strcmp(params_info->mcc, "230"))
1343 {
1344 if(0 == strcmp(params_info->mnc, "03")) /* Vodafone-CZ */
1345 {
1346 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
1347 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
1348 {
1349 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1350 }
1351 }
1352 }
1353 else if(0 == strcmp(params_info->mcc, "602"))
1354 {
1355 if(0 == strcmp(params_info->mnc, "02")) /* Vodafone-Egypt */
1356 {
1357 if(atcmd_path_type != CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION &&
1358 (!params_info->is_mobile_data_setting_enabled || params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO))
1359 {
1360 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1361 }
1362 }
1363 }
1364 else if(0 == strcmp(params_info->mcc, "530"))
1365 {
1366 if(0 == strcmp(params_info->mnc, "01")) /* Vodafone-New Zealand */
1367 {
1368 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
1369 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
1370 {
1371 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1372 }
1373 if(params_info->is_ims_registered == KAL_FALSE)
1374 {
1375 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1376 }
1377 }
1378 }
1379 else if(0 == strcmp(params_info->mcc, "216")) /* Vodafone-Hungary */
1380 {
1381 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING ||
1382 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING)
1383 {
1384 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1385 }
1386 }
1387 else if(0 == strcmp(params_info->mcc, "280")) /* VDF/CyTa Cyprus */
1388 {
1389 switch(params_info->atcmd_type)
1390 {
1391 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1392 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1393 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1394 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1395 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1396 break;
1397 default:
1398 break;
1399 }
1400 /* data off CS only */
1401 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
1402 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
1403 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
1404 {
1405 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
1406 (KAL_TRUE != params_info->is_data_roaming_setting_enabled))
1407 {
1408 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1409 return atcmd_path_type;
1410 }
1411 }
1412 }
1413 else if(0 == strcmp(params_info->mcc, "427")) /* Vodafone-Qatar */
1414 {
1415 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1416 switch(params_info->atcmd_type)
1417 {
1418 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1419 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1420 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1421 break;
1422 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1423 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1424 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1425 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1426 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1427 break;
1428 default:
1429 break;
1430 }
1431 }
1432 else if(0 == strcmp(params_info->mcc, "640")) /* Vodacom/Tanzania */
1433 {
1434 switch(params_info->atcmd_type)
1435 {
1436 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1437 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1438 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1439 break;
1440 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1441 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1442 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1443 break;
1444 default:
1445 break;
1446 }
1447 }
1448 need_check_roaming_data_off = KAL_FALSE;
1449 break;
1450 }
1451 case 7: /* AT&T */
1452 {
1453 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1454 switch(params_info->atcmd_type)
1455 {
1456 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1457 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1458 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1459 break;
1460 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1461 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1462 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1463 break;
1464 default:
1465 break;
1466 }
1467 /* special network config */
1468 if(0 == strcmp(params_info->mcc, "334")) /* Mexico */
1469 {
1470 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1471 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
1472 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
1473 {
1474 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1475 }
1476 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING ||
1477 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING ||
1478 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
1479 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
1480 {
1481 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1482 }
1483 }
1484 /* for OP07, if roaming and data_roaming off, still can use xcap */
1485 if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
1486 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
1487 {
1488 return atcmd_path_type;
1489 }
1490 break;
1491 }
1492 case 145:/* CRICKET */
1493 case 196:/* FIRSTNET */
1494 {
1495 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1496 switch(params_info->atcmd_type)
1497 {
1498 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1499 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1500 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1501 break;
1502 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1503 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1504 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1505 break;
1506 default:
1507 break;
1508 }
1509 /* for OP07, if roaming and data_roaming off, still can use xcap */
1510 if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
1511 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
1512 {
1513 return atcmd_path_type;
1514 }
1515 break;
1516 }
1517 case 8:/* TMO */
1518 {
1519 switch(params_info->atcmd_type)
1520 {
1521 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1522 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1523 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1524 break;
1525 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1526 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1527 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1528 break;
1529 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1530 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1531 atcmd_path_type = params_info->is_ims_registered?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1532 break;
1533 default:
1534 break;
1535 }
1536 /* for OP08, if roaming and data_roaming off, still can use xcap */
1537 if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
1538 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
1539 {
1540 return atcmd_path_type;
1541 }
1542 break;
1543 }
1544 case 9:/* CT: only support CF and CW */
1545 case 304:/* CTMO: only support CF and CW --aomen*/
1546 {
1547 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1548 switch (params_info->atcmd_type)
1549 {//if international roaming,same as CMCC
1550 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
1551 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
1552 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1553 break;
1554 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1555 if(KAL_TRUE != params_info->is_ims_registered)
1556 {
1557 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY;
1558 params_info->only_use_real_error_code = KAL_TRUE;
1559 }
1560 else
1561 {//TB based solution
1562 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1563 }
1564 break;
1565 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1566 if(KAL_TRUE != params_info->is_ims_registered)
1567 {
1568 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1569 params_info->only_use_real_error_code = KAL_TRUE;
1570 }
1571 else
1572 {//TB based solution
1573 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1574 }
1575 break;
1576 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1577 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1578 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1579 break;
1580 default:
1581 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1582 break;
1583 }
1584 if((KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id))) &&
1585 ((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
1586 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
1587 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))&&
1588 (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
1589 {
1590 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
1591 return atcmd_path_type;
1592 }
1593 break;
1594 }
1595 case 11: /* H3G */
1596 {
1597 if((0 == strcmp(params_info->mcc, "240"))) // Sweden
1598 {
1599 if((0 == strcmp(params_info->mnc, "02")))
1600 {
1601 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1602 switch(params_info->atcmd_type)
1603 {
1604 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1605 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1606 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1607 break;
1608 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1609 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1610 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
1611 break;
1612 default:
1613 break;
1614 }
1615 need_check_roaming_data_off = KAL_FALSE;
1616 }
1617 }
1618 else if((0 == strcmp(params_info->mcc, "238"))) // Denmark
1619 {
1620 if((0 == strcmp(params_info->mnc, "06")))
1621 {
1622 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1623 switch(params_info->atcmd_type)
1624 {
1625 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1626 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1627 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1628 break;
1629 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1630 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1631 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1632 break;
1633 default:
1634 break;
1635 }
1636 need_check_roaming_data_off = KAL_FALSE;
1637 }
1638 }
1639 else if((0 == strcmp(params_info->mcc, "232"))) // Austria
1640 {
1641 if((0 == strcmp(params_info->mnc, "05")) || (0 == strcmp(params_info->mnc, "10")) || (0 == strcmp(params_info->mnc, "14")))
1642 {
1643 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1644 switch(params_info->atcmd_type)
1645 {
1646 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1647 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1648 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1649 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1650 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1651 break;
1652 default:
1653 break;
1654 }
1655 need_check_roaming_ims = KAL_TRUE;
1656 }
1657 }
1658 else if((0 == strcmp(params_info->mcc, "234")) || (0 == strcmp(params_info->mcc, "235")))
1659 {
1660 // UK: XCAP over LTE while WFC registered, otherwise CSFB
1661 if ((CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain) && (KAL_FALSE == params_info->lte_attached))
1662 {
1663 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1664 }
1665 switch(params_info->atcmd_type)
1666 {
1667 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1668 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1669 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1670 break;
1671 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1672 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1673 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1674 break;
1675 default:
1676 break;
1677 }
1678 }
1679 else if((0 == strcmp(params_info->mcc, "272"))) // Ireland
1680 {
1681 switch(params_info->atcmd_type)
1682 {
1683 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1684 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1685 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1686 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1687 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1688 break;
1689 default:
1690 break;
1691 }
1692 need_check_roaming = KAL_TRUE;
1693 }
1694 break;
1695 }
1696 case 12: /* VERIZON */
1697 {
1698 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1699 break;
1700 }
1701 case 15:/* TELEFONICA */
1702 {
1703 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1704 switch(params_info->atcmd_type)
1705 {
1706 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1707 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1708 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1709 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1710 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1711 break;
1712 default:
1713 break;
1714 }
1715 break;
1716 }
1717 case 16:/* EE */
1718 {
1719 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1720 switch(params_info->atcmd_type)
1721 {
1722 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1723 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1724 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1725 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1726 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1727 break;
1728 default:
1729 break;
1730 }
1731 break;
1732 }
1733 case 17: /* DOCOMO */
1734 {
1735 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1736 break;
1737 }
1738 case 18:/* RJIO-IND */
1739 {
1740 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1741 switch(params_info->atcmd_type)
1742 {
1743 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1744 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1745 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1746 break;
1747 default:
1748 break;
1749 }
1750 if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
1751 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
1752 {
1753 return atcmd_path_type;
1754 }
1755 break;
1756 }
1757 case 19:/* TELSTRA-Australia */
1758 {
1759 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1760 switch(params_info->atcmd_type)
1761 {
1762 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1763 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1764 if(KAL_TRUE == params_info->is_ims_registered)
1765 {
1766 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1767 }
1768 else
1769 {
1770 if(params_info->user_volte_subscription_status == CUSTOM_SSDS_STATUS_USER_VOLTE_SUBSCRIBED)
1771 {
1772 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1773 }
1774 else if(params_info->user_volte_subscription_status == CUSTOM_SSDS_STATUS_USER_VOLTE_NOT_SUBSCRIBED)
1775 {
1776 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1777 }
1778 else
1779 {
1780 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY_PDN;
1781 }
1782 }
1783 break;
1784 default:
1785 break;
1786 }
1787
1788 if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
1789 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
1790 {
1791 return atcmd_path_type;
1792 }
1793 break;
1794 }
1795 case 20: /* SPRINT */
1796 {
1797 switch(params_info->atcmd_type)
1798 {
1799 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
1800 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
1801 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1802 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1803 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1804 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1805 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1806 break;
1807 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1808 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1809 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1810 break;
1811 default:
1812 break;
1813 }
1814 break;
1815 }
1816 case 50:/* Softbank */
1817 {
1818 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1819 switch(params_info->atcmd_type)
1820 {
1821 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1822 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1823 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1824 break;
1825 default:
1826 break;
1827 }
1828 /* Special case for softbank [OTR-SS-110027] *
1829 * [Home Network] *
1830 * - turned off the "Cellular data" and the "4G" of the Preferred network type *
1831 * [Roaming Network] *
1832 * If the UE meets one of the following: *
1833 * - turned off the "Cellular data" and the "4G" of the Preferred network type *
1834 * - turned off the "4G" of the Preferred network type and the "Data roaming" *
1835 * And the UE shall notify to the user that SS Configuration was failed. */
1836 if((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
1837 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
1838 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type))
1839 {
1840 if (((params_info->preferred_network_type & RAT_LTE) != RAT_LTE) &&
1841 ((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
1842 ((KAL_TRUE != params_info->is_data_roaming_setting_enabled) && (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))))
1843 {
1844 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
1845 return atcmd_path_type;
1846 }
1847 }
1848 break;
1849 }
1850 case 100: /* CSL-HK */
1851 {
1852 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1853 break;
1854 }
1855 case 101: /* PCCW-HK */
1856 {
1857 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1858 break;
1859 }
1860 case 102: /* Smartone-HK */
1861 {
1862 switch(params_info->atcmd_type)
1863 {
1864 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1865 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1866 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1867 break;
1868 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
1869 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
1870 if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type)
1871 {
1872 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1873 }
1874 break;
1875 default:
1876 break;
1877 }
1878 break;
1879 }
1880 case 103: /* Singtel */
1881 {
1882 switch(params_info->atcmd_type)
1883 {
1884 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1885 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1886 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1887 break;
1888 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1889 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1890 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1891 break;
1892 default:
1893 break;
1894 }
1895 break;
1896 }
1897 case 104:/* Starhub-Singapore */
1898 {
1899 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1900 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
1901 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
1902 {/* CW service*/
1903 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1904 }
1905 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
1906 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
1907 {
1908 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1909 }
1910 break;
1911 }
1912 case 105: /* AMX */
1913 {/* default config */
1914 if(0 == strcmp(params_info->mcc, "744"))
1915 {
1916 /* Claro-Paragauy */
1917 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1918 switch(params_info->atcmd_type)
1919 {
1920 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1921 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1922 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1923 break;
1924 default:
1925 break;
1926 }
1927 }
1928 break;
1929 }
1930 case 106: /* 3HK-HK */
1931 {
1932 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1933 break;
1934 }
1935 case 107:/* SFR */
1936 {
1937 if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC &&
1938 params_info->rf_status == CUSTOM_SSDS_RF_OFF)
1939 {
1940 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1941 }else
1942 {
1943 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
1944 }
1945 switch(params_info->atcmd_type)
1946 {
1947 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1948 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1949 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1950 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1951 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1952 break;
1953 default:
1954 break;
1955 }
1956 break;
1957 }
1958 case 108: /* TWN */
1959 {
1960 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1961 break;
1962 }
1963 case 109: /* CHT */
1964 {
1965 switch(params_info->atcmd_type)
1966 {
1967 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
1968 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
1969 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1970 break;
1971 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
1972 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
1973 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
1974 break;
1975 default:
1976 break;
1977 }
1978 break;
1979 }
1980 case 110: /* FET */
1981 {
1982 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1983 break;
1984 }
1985 case 111: /* VDF-INDIA */
1986 {
1987 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
1988 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR)
1989 {
1990 /* MOLY00324132:
1991 1) Set CLIR: terminal based; CME Error:4 greys out CLIR settings
1992 2) Get CLIR: NW based to avoid invalid pop-up on MMI query */
1993 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
1994 }
1995 break;
1996 }
1997 case 112: /* TELCEL */
1998 {
1999 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2000 if((0 == strcmp(params_info->mcc, "334")))
2001 {
2002 /* TELCEL--Mexico */
2003 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2004 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2005 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2006 {/* CW service*/
2007 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2008 }
2009 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2010 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2011 {
2012 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2013 }
2014 }
2015 break;
2016 }
2017 case 113: /* Beeline */
2018 {
2019 switch(params_info->atcmd_type)
2020 {
2021 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2022 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2023 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2024 break;
2025 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2026 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2027 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2028 break;
2029 default:
2030 break;
2031 }
2032 break;
2033 }
2034 case 114: /* KT */
2035 {
2036 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2037 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR ||
2038 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP ||
2039 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP)
2040 {/* CLIR or CLIP service*/
2041 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2042 }
2043 else
2044 {
2045 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2046 }
2047 break;
2048 }
2049 case 115: /* SKT */
2050 {
2051 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2052 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR ||
2053 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP ||
2054 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP)
2055 {/* CLIR or CLIP service*/
2056 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2057 }
2058 else
2059 {
2060 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2061 }
2062 break;
2063 }
2064 case 116: /* UPLUS */
2065 {
2066 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2067 break;
2068 }
2069 case 117:/* SmartFren-Indonesia */
2070 {
2071 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2072 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
2073 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2074 {
2075 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2076 }
2077 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING
2078 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2079 {
2080 atcmd_path_type = (params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
2081 }
2082 else if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
2083 {
2084 atcmd_path_type = (params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2085 return atcmd_path_type;
2086 }
2087 break;
2088 }
2089 case 118: /* YTL-Malaysia */
2090 {
2091 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2092 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2093 {/* CLIR service*/
2094 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2095 }
2096 break;
2097 }
2098 case 119: /* NATCOM */
2099 {
2100 /* default config */
2101 break;
2102 }
2103 case 120:/* CLARO */
2104 {
2105 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2106 switch(params_info->atcmd_type)
2107 {
2108 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2109 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2110 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2111 break;
2112 default:
2113 break;
2114 }
2115 /* special network config */
2116 if(0 == strcmp(params_info->mcc, "732"))
2117 {
2118 /* Claro-Colombia */
2119 switch(params_info->atcmd_type)
2120 {
2121 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2122 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2123 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2124 break;
2125 default:
2126 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2127 break;
2128 }
2129 }
2130 else if(0 == strcmp(params_info->mcc, "724"))
2131 {
2132 /* Claro-Brazil */
2133 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2134 switch(params_info->atcmd_type)
2135 {
2136 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2137 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2138 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2139 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2140 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2141 break;
2142 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2143 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2144 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2145 break;
2146 default:
2147 break;
2148 }
2149 }
2150 else if(0 == strcmp(params_info->mcc, "722"))
2151 {
2152 /* Claro-Argentina */
2153 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2154 if(KAL_TRUE == params_info->is_ims_registered)
2155 {
2156 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING
2157 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2158 {
2159 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2160 }
2161 }
2162 }
2163 else if(0 == strcmp(params_info->mcc, "730"))
2164 {
2165 /* Claro-Chile */
2166 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2167 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING
2168 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2169 {
2170 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2171 }
2172 }
2173 else if(0 == strcmp(params_info->mcc, "740"))
2174 {
2175 /* Claro-Ecuador */
2176 switch(params_info->atcmd_type)
2177 {
2178 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2179 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2180 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2181 break;
2182 default:
2183 break;
2184 }
2185 }
2186 else if(0 == strcmp(params_info->mcc, "748"))
2187 {
2188 /* Claro-Uruguay */
2189 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2190 if(KAL_TRUE == params_info->is_ims_registered)
2191 {
2192 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING
2193 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2194 {
2195 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2196 }
2197 }
2198 }
2199 else if(0 == strcmp(params_info->mcc, "716"))
2200 {
2201 /* Claro-Peru */
2202 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2203 switch(params_info->atcmd_type)
2204 {
2205 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2206 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2207 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2208 break;
2209 default:
2210 break;
2211 }
2212 }
2213 /* 704,706,708,710,712,714 is in same group of Claro,
2214 * if one region is changed, please check whether need sync the changes to other region
2215 */
2216 else if((0 == strcmp(params_info->mcc, "704")) || /* Claro-Guatemala */
2217 (0 == strcmp(params_info->mcc, "706")) || /* Claro-Salvador */
2218 (0 == strcmp(params_info->mcc, "708")) || /* Claro-Honduras */
2219 (0 == strcmp(params_info->mcc, "710")) || /* Claro-Nicaragua */
2220 (0 == strcmp(params_info->mcc, "712")) || /* Claro-Costa Rica */
2221 (0 == strcmp(params_info->mcc, "714"))) /* Claro-Panama */
2222 {
2223 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2224 /*special case for Claro-Guatemala, NOT support XCAP. Issue CR: ALPS05342265/ALPS05367594*/
2225 if((0 == strcmp(params_info->mcc, "704"))) {
2226 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2227 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2228 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2229 {
2230 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2231 }
2232 }
2233 else if((0 == strcmp(params_info->mcc, "706"))) { /* modify CW TB for 70601 due to Issue CR:ALPS06187279*/
2234 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2235 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2236 {
2237 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2238 }
2239 }
2240
2241 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
2242 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2243 {
2244 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2245 }
2246 }
2247 break;
2248 }
2249 case 121: /* BELL */
2250 {
2251 switch(params_info->atcmd_type)
2252 {
2253 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2254 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2255 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2256 break;
2257 default:
2258 break;
2259 }
2260 break;
2261 }
2262 case 122: /* AIS-Thailand */
2263 {
2264 switch(params_info->atcmd_type)
2265 {
2266 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2267 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2268 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2269 break;
2270
2271 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2272 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2273 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2274 break;
2275
2276 default:
2277 break;
2278 }
2279 if ((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) && (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
2280 {
2281 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2282 return atcmd_path_type;
2283 }
2284 break;
2285 }
2286 case 124: /* APTG */
2287 {
2288 switch(params_info->atcmd_type)
2289 {
2290 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2291 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2292 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2293 break;
2294 default:
2295 break;
2296 }
2297 break;
2298 }
2299 case 125: /* DTAC-Thailand */
2300 {
2301 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2302 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2303 {/* CW service*/
2304 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2305 }
2306 break;
2307 }
2308 case 126: /* AVEA */
2309 {
2310 /* default config */
2311 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2312 break;
2313 }
2314 case 127: /* MEGAFON */
2315 {
2316 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2317 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2318 {/* CLIR service*/
2319 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2320 }
2321 else
2322 {
2323 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2324 }
2325
2326 if(0 == strcmp(params_info->mcc, "250"))
2327 {
2328 if(0 == strcmp(params_info->mnc, "02")) /* MEGAFON-Russian */
2329 {
2330 if ((KAL_FALSE == params_info->is_ims_registered) &&
2331 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2332 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
2333 {/* CW service*/
2334 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2335 }
2336 }
2337 }
2338 break;
2339 }
2340 case 128: /* DNA */
2341 {
2342 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2343 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2344 {/* CLIR service*/
2345 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2346 }
2347 break;
2348 }
2349 case 129: /* KDDI */
2350 {
2351 switch(params_info->atcmd_type)
2352 {
2353 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2354 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2355 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2356 break;
2357 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2358 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2359 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2360 break;
2361 default:
2362 break;
2363 }
2364 break;
2365 }
2366 case 130: /* TIM */
2367 {
2368 if(0 == strcmp(params_info->mcc, "222")) /* TIM Italy */
2369 {
2370 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2371 switch(params_info->atcmd_type)
2372 {
2373 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2374 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2375 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2376 break;
2377 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2378 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2379 break;
2380 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2381 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2382 break;
2383 default:
2384 break;
2385 }
2386 need_check_roaming_data_off_cs_only = KAL_TRUE;
2387 }
2388 else if(0 == strcmp(params_info->mcc, "724")) /* TIM Brazil */
2389 {
2390 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2391 switch(params_info->atcmd_type)
2392 {
2393 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2394 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2395 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2396 break;
2397 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2398 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2399 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2400 break;
2401 default:
2402 break;
2403 }
2404 }
2405 break;
2406 }
2407 case 131: /* TRUEMOVE-Thailand */
2408 {
2409 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2410 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2411 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2412 {/* CW service*/
2413 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2414 }
2415 break;
2416 }
2417 case 132: /* MOVISTAR */
2418 {
2419 if(0 == strcmp(params_info->mcc, "334"))
2420 {/* Movistar - Mexico */
2421 switch(params_info->atcmd_type)
2422 {
2423 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2424 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2425 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2426 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2427 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2428 break;
2429 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2430 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2431 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2432 break;
2433 default:
2434 break;
2435 }
2436 }
2437 else if(0 == strcmp(params_info->mcc, "724"))
2438 { /*Vivo - Brazil*/
2439 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2440 switch(params_info->atcmd_type)
2441 {
2442 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2443 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2444 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2445 break;
2446 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2447 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2448 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2449 break;
2450 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2451 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2452 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2453 break;
2454 default:
2455 break;
2456 }
2457 }
2458 else if(0 == strcmp(params_info->mcc, "716"))
2459 {/* Movisatr - Peru */
2460 if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
2461 {
2462 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2463 }
2464 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2465 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2466 {
2467 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2468 }
2469 break;
2470 }
2471 else if(0 == strcmp(params_info->mcc, "722"))
2472 {/* Movistar - Argentina */
2473 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2474 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2475 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2476 {
2477 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2478 }
2479 }
2480 else if(0 == strcmp(params_info->mcc, "730"))
2481 {/* Movistar - Chile */
2482 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2483 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2484 {
2485 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2486 }
2487 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING ||
2488 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING)
2489 {
2490 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2491 }
2492 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2493 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2494 {
2495 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2496 }
2497 }
2498 else if(0 == strcmp(params_info->mcc, "748"))
2499 {/* Movistar - Uruguay */
2500 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2501 if((params_info->is_ims_registered) &&
2502 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2503 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
2504 {
2505 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2506 }
2507 }
2508 else if(0 == strcmp(params_info->mcc, "732"))
2509 {/* Movistar - Colombia */
2510 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2511 switch(params_info->atcmd_type)
2512 {
2513 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2514 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2515 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2516 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2517 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2518 break;
2519 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2520 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2521 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2522 break;
2523 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
2524 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
2525 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2526 break;
2527 default:
2528 break;
2529 }
2530 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
2531 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
2532 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
2533 {
2534 if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
2535 {/*roaming or data off, CS*/
2536 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2537 return atcmd_path_type;
2538 }
2539 }
2540 }
2541 else if (0 == strcmp(params_info->mcc, "740"))
2542 {/* Movistar - Ecuador */
2543 /*other settings follow default*/
2544 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
2545 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
2546 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
2547 {
2548 if(KAL_FALSE == params_info->is_mobile_data_setting_enabled)
2549 {/*data off, CS*/
2550 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2551 }
2552 }
2553 }
2554 break;
2555 }
2556 case 133: /* DU */
2557 {
2558 if(0 == strcmp(params_info->mcc, "424")) /** United Arab Emirates **/
2559 {
2560 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2561 switch(params_info->atcmd_type)
2562 {
2563 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2564 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2565 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2566 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2567 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2568 break;
2569 default:
2570 break;
2571 }
2572 }
2573 break;
2574 }
2575 case 134: /* ELISA */
2576 {
2577 if(0 == strcmp(params_info->mcc, "244")) /* Finland */
2578 {
2579 switch(params_info->atcmd_type)
2580 {
2581 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2582 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2583 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2584 break;
2585 default:
2586 break;
2587 }
2588 }
2589 else if(0 == strcmp(params_info->mcc, "248")) /* Estonia */
2590 {
2591 switch(params_info->atcmd_type)
2592 {
2593 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2594 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2595 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2596 break;
2597 default:
2598 break;
2599 }
2600 }
2601 break;
2602 }
2603 case 135: /* MTS */
2604 {
2605 if(0 == strcmp(params_info->mcc, "250")) /* Russia */
2606 {
2607 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2608 switch(params_info->atcmd_type)
2609 {
2610 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2611 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2612 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2613 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2614 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2615 break;
2616 default:
2617 break;
2618 }
2619 }
2620 else if(0 == strcmp(params_info->mcc, "257")) /* Belarus */
2621 {
2622 /* CSFB if mobile data switch off */
2623 if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
2624 {
2625 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2626 }
2627 /* CSFB if mobile data when roaming switch off */
2628 need_check_roaming_data_off_cs_only = KAL_TRUE;
2629
2630 switch(params_info->atcmd_type)
2631 {
2632 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2633 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2634 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2635 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2636 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2637 break;
2638 default:
2639 break;
2640 }
2641 }
2642 break;
2643 }
2644 case 136: /* ENTEL */
2645 {
2646 if(0 == strcmp(params_info->mcc, "730")) /** Chile **/
2647 {
2648 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2649 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2650 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2651 {
2652 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2653 }
2654 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2655 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2656 {
2657 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2658 }
2659 }
2660
2661 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
2662 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY)
2663 {
2664 /* Ignore mobile data off for Entel/Chile due to ALPS05790200 */
2665 if((!params_info->is_mobile_data_setting_enabled) && (0 != strcmp(params_info->mcc, "730")))
2666 {
2667 if(KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id)))
2668 {
2669 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
2670 }
2671 else
2672 {
2673 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
2674 }
2675 }
2676 }
2677 break;
2678 }
2679 case 137: /* TELE2 */
2680 {
2681 if(0 == strcmp(params_info->mcc, "250")) //Russia
2682 {
2683 switch(params_info->atcmd_type)
2684 {
2685 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2686 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2687 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2688 break;
2689 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2690 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2691 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2692 break;
2693 default:
2694 break;
2695 }
2696 }
2697 else if(0 == strcmp(params_info->mcc, "240")) //Sweden
2698 {
2699 if(0 == strcmp(params_info->mnc, "07"))
2700 {
2701 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2702 }
2703 }
2704 else if(0 == strcmp(params_info->mcc, "204")) //NL)
2705 {
2706 switch(params_info->atcmd_type)
2707 {
2708 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2709 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2710 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2711 break;
2712 default:
2713 break;
2714 }
2715 }
2716 else if(0 == strcmp(params_info->mcc, "246")) //Lithuania)
2717 {
2718 switch(params_info->atcmd_type)
2719 {
2720 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2721 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2722 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2723 break;
2724 default:
2725 break;
2726 }
2727 }
2728 else if(0 == strcmp(params_info->mcc, "248")) //Estonia
2729 {
2730 switch(params_info->atcmd_type)
2731 {
2732 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2733 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2734 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2735 break;
2736 default:
2737 break;
2738 }
2739 }
2740 break;
2741 }
2742 case 139: /* BOUYGUES */
2743 {
2744 if (params_info->atcmd_type != CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING &&
2745 params_info->atcmd_type != CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING &&
2746 params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC &&
2747 params_info->rf_status == CUSTOM_SSDS_RF_OFF)
2748 {
2749 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2750 break;
2751 }
2752 switch(params_info->atcmd_type)
2753 {
2754 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2755 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2756 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2757 break;
2758 default:
2759 break;
2760 }
2761 break;
2762 }
2763 case 140: /* MTN */
2764 {
2765 if(0 == strcmp(params_info->mcc, "620")) /* MTN/Ghana */
2766 {
2767 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2768 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2769 {/* CW service*/
2770 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2771 }
2772 }
2773 break;
2774 }
2775 case 141: /* CELL_C */
2776 {
2777 /* default config */
2778 break;
2779 }
2780 case 143: /* TURKCELL */
2781 {
2782 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2783 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2784 {/* CW service*/
2785 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2786 }
2787 else
2788 {
2789 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2790 }
2791 break;
2792 }
2793 case 144: /* SMILTE */
2794 {
2795 /* default config */
2796 break;
2797 }
2798 case 146: /* ETISALAT */
2799 {
2800 if(0 == strcmp(params_info->mcc, "424")) /** United Arab Emirates **/
2801 {
2802 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2803 switch(params_info->atcmd_type)
2804 {
2805 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2806 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2807 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2808 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2809 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2810 break;
2811 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2812 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2813 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2814 break;
2815 default:
2816 break;
2817 }
2818 }
2819 break;
2820 }
2821 case 147: /* AIRTEL-India */
2822 {
2823 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2824 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR)
2825 {
2826 /* MOLY00324132:
2827 1) Set CLIR: terminal based; CME Error:4 greys out CLIR settings
2828 2) Get CLIR: NW based to avoid invalid pop-up on MMI query */
2829 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2830 }
2831 break;
2832 }
2833 case 148:/* Seatel-Cambodia(4G only solution) */
2834 {
2835 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2836 switch(params_info->atcmd_type)
2837 {
2838 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2839 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2840 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2841 break;
2842 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2843 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2844 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2845 break;
2846 default:
2847 break;
2848 }
2849 break;
2850 }
2851 case 149: /* CMHK-HK */
2852 {
2853 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2854 break;
2855 }
2856 case 150: /* SWISSCOM_SCHWEIZ_AG */
2857 {
2858 /* UT interface over 2G/3G/4G */
2859 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2860 switch(params_info->atcmd_type)
2861 {
2862 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2863 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2864 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2865 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2866 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2867 break;
2868 default:
2869 break;
2870 }
2871 break;
2872 }
2873 case 151: /* M1-Singapore */
2874 {
2875 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2876 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2877 {/* CW service*/
2878 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2879 }
2880 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2881 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2882 {/* CLIR service*/
2883 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2884 }
2885 else
2886 {
2887 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2888 }
2889 break;
2890 }
2891 case 152: /* OPTUS-AUS */
2892 {
2893 if ((params_info->is_ims_registered)&&
2894 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2895 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
2896 {/* CW service*/
2897 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
2898 }
2899 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2900 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
2901 {/* CLIR service*/
2902 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2903 }
2904 break;
2905 }
2906 case 153: /* VHA-AUS */
2907 {
2908 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2909 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2910 {/* CW service*/
2911 if(params_info->is_ims_registered && params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC
2912 && params_info->rf_status == CUSTOM_SSDS_RF_OFF)
2913 {
2914 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2915 }
2916 else
2917 {
2918 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2919 }
2920 }
2921 else if((params_info->is_ims_registered) &&
2922 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
2923 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR))
2924 {/* CLIR service*/
2925 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2926 }
2927 break;
2928 }
2929 case 154:/* TELIA */
2930 {
2931 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2932 switch(params_info->atcmd_type)
2933 {
2934 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
2935 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
2936 if(0 == strcmp(params_info->mcc, "248"))//EE
2937 {
2938 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2939 }
2940 else
2941 {
2942 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2943 }
2944 break;
2945 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
2946 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
2947 if(0 == strcmp(params_info->mcc, "246"))//LT
2948 {
2949 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
2950 }
2951 else
2952 {
2953 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2954 }
2955 break;
2956 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
2957 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
2958 if(0 == strcmp(params_info->mcc, "244"))//FI
2959 {
2960 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
2961 }
2962 break;
2963 default:
2964 break;
2965 }
2966 need_check_roaming_data_off = KAL_FALSE;
2967 break;
2968 }
2969 case 155: /* Digi */
2970 {
2971 /* default config */
2972 if(0 == strcmp(params_info->mcc, "502"))
2973 {
2974 if(0 == strcmp(params_info->mnc, "16")) /* Malaysia */
2975 {
2976 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2977 }
2978 }
2979 else if(0 == strcmp(params_info->mcc, "216"))
2980 {
2981 if(0 == strcmp(params_info->mnc, "03"))
2982 {
2983 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
2984 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
2985 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
2986 {/* CW service*/
2987 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2988 }
2989 }
2990 }
2991 else if(0 == strcmp(params_info->mcc, "226"))
2992 {
2993 if(0 == strcmp(params_info->mnc, "05"))
2994 {
2995 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
2996 }
2997 else if(0 == strcmp(params_info->mnc, "10"))
2998 {
2999 if (CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING == params_info->atcmd_type)
3000 {
3001 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
3002 }
3003 else
3004 {
3005 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_CCWA;
3006 }
3007 }
3008 }
3009 break;
3010 }
3011 case 156: /* TELENOR */
3012 {
3013 /* default config */
3014 if(0 == strcmp(params_info->mcc, "216")) /* Telenor HU */
3015 {
3016 if(0 == strcmp(params_info->mnc, "01"))
3017 {
3018 switch(params_info->atcmd_type)
3019 {
3020 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3021 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3022 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3023 break;
3024 default:
3025 break;
3026 }
3027 }
3028 }
3029 if(0 == strcmp(params_info->mcc, "238"))
3030 {
3031 if(0 == strcmp(params_info->mnc, "02") || 0 == strcmp(params_info->mnc, "77"))
3032 {
3033 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
3034 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
3035 {/* CLIR service*/
3036 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3037 }
3038 else if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3039 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
3040 {/* CW service*/
3041 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3042 }
3043 }
3044 }
3045 else if(0 == strcmp(params_info->mcc, "242")) /* Telenor NO */
3046 {
3047 if(0 == strcmp(params_info->mnc, "01"))
3048 {
3049 switch(params_info->atcmd_type)
3050 {
3051 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3052 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3053 break;
3054 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3055 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3056 break;
3057 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3058 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3059 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3060 break;
3061 default:
3062 break;
3063 }
3064 }
3065 }
3066 else if(0 == strcmp(params_info->mcc, "284"))
3067 {
3068 if(0 == strcmp(params_info->mnc, "05"))
3069 {
3070 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3071 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3072 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
3073 {/* CW service*/
3074 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;;
3075 }
3076 }
3077 }
3078 else if(0 == strcmp(params_info->mcc, "240")) /* Telenor SE*/
3079 {
rjw8e44aab2022-11-30 16:42:16 +08003080 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
rjw6c1fd8f2022-11-30 14:33:01 +08003081 switch(params_info->atcmd_type)
3082 {
3083 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3084 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3085 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3086 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3087 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3088 break;
3089 default:
3090 break;
3091 }
3092 }
3093 else if(0 == strcmp(params_info->mcc, "410"))
3094 {
3095 if(0 == strcmp(params_info->mnc, "06")) /* Pakistan */
3096 {
3097 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3098 if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
3099 {
3100 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3101 }
3102 switch(params_info->atcmd_type)
3103 {
3104 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3105 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3106 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3107 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
3108 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3109 break;
3110 default:
3111 break;
3112 }
3113 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
3114 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
3115 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
3116 {
3117 if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
3118 {
3119 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3120 return atcmd_path_type;
3121 }
3122 }
3123 }
3124 }
3125 else if(0 == strcmp(params_info->mcc, "414"))
3126 {
3127 if(0 == strcmp(params_info->mnc, "06")) /* Myanmmar */
3128 {
3129 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3130 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
3131 {/* CW service*/
3132 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3133 }
3134 else if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
3135 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
3136 {/* CLIR service*/
3137 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3138 }
3139 }
3140 }
3141 else if(0 == strcmp(params_info->mcc, "220")) /* Serbia */
3142 {
3143 switch(params_info->atcmd_type)
3144 {
3145 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3146 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
3147 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3148 break;
3149 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3150 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3151 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3152 break;
3153 default:
3154 break;
3155 }
3156 }
3157 else if((0 == strcmp(params_info->mcc, "297"))) /* Montenegro */
3158 {
3159 switch(params_info->atcmd_type)
3160 {
3161 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3162 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3163 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3164 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3165 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3166 break;
3167 default:
3168 break;
3169 }
3170 need_check_roaming = KAL_TRUE;
3171 }
3172 break;
3173 }
3174 case 157:/* TELUS */
3175 {
3176 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
3177 switch(params_info->atcmd_type)
3178 {
3179 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3180 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3181 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3182 break;
3183 default:
3184 break;
3185 }
3186 break;
3187 }
3188 case 158: /* Zain */
3189 {
3190 /*Kuwait*/
3191 if(0 == strcmp(params_info->mcc, "419"))
3192 {
3193 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3194 }
3195 else if(0 == strcmp(params_info->mcc, "420")) /* SA */
3196 {
3197 switch(params_info->atcmd_type)
3198 {
3199 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3200 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3201 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3202 break;
3203 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3204 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3205 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3206 break;
3207 default:
3208 break;
3209 }
3210 }
3211 break;
3212 }
3213 case 159: /* STC */
3214 {
3215 /*Bahrain*/
3216 if(0 == strcmp(params_info->mcc, "426"))
3217 {
3218 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3219 }
3220 /*Kuwait*/
3221 else if(0 == strcmp(params_info->mcc, "419"))
3222 {
3223 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3224 }
3225 /*Saudi Arabia*/
3226 else if(0 == strcmp(params_info->mcc, "420"))
3227 {
3228 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3229 switch(params_info->atcmd_type)
3230 {
3231 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3232 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
3233 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3234 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3235 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3236 break;
3237 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3238 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3239 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3240 break;
3241 default:
3242 break;
3243 }
3244 }
3245 break;
3246 }
3247 case 160: /* WEBE-Malaysia */
3248 {
3249 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3250 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
3251 {/* CW service*/
3252 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3253 }
3254 break;
3255 }
3256 case 161: /* PLAY */
3257 {
3258 switch(params_info->atcmd_type)
3259 {
3260 // CLIR SET CS
3261 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3262 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY_ALWAYS;
3263 break;
3264 // CLIR GET TB Solution
3265 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3266 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3267 break;
3268 default:
3269 break;
3270 }
3271
3272 if(0 == strcmp(params_info->mcc, "260"))
3273 {
3274 if(0 == strcmp(params_info->mnc, "06"))
3275 {
3276 // CW PS Prefer
3277 switch(params_info->atcmd_type)
3278 {
3279 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3280 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3281 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_PREFER:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3282 break;
3283 default:
3284 break;
3285 }
3286 }
3287 }
3288 break;
3289 }
3290 case 162: /* FREEDOM */
3291 {
3292 switch(params_info->atcmd_type)
3293 {
3294 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3295 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3296 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3297 break;
3298 default:
3299 break;
3300 }
3301
3302 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || atcmd_path_type ==CUSTOM_SSDS_PATH_TYPE_PS_PREFER )
3303 {
3304 if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
3305 {
3306 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3307 }
3308 }
3309 break;
3310 }
3311 case 163: /* DIALOG-Srilanka */
3312 {
3313 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3314 break;
3315 }
3316 case 164:/* Telenet Belgium */
3317 {
3318 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3319 switch(params_info->atcmd_type)
3320 {
3321 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3322 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3323 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3324 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3325 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3326 break;
3327 default:
3328 break;
3329 }
3330 break;
3331 }
3332 case 165: /* Sunrise */
3333 {
3334 if((KAL_TRUE == params_info->is_ims_registered) &&
3335 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3336 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3337 {
3338 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3339 }
3340
3341 break;
3342 }
3343 case 166: /* SALT */
3344 {
3345 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3346 break;
3347 }
3348 case 168: /* Eir */
3349 {
3350 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3351 switch(params_info->atcmd_type)
3352 {
3353 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3354 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3355 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3356 break;
3357 default:
3358 break;
3359 }
3360 break;
3361 }
3362 case 170: /* Partner */
3363 {
3364 if(0 == strcmp(params_info->mcc, "425")) /* Israel */
3365 {
3366 switch(params_info->atcmd_type)
3367 {
3368 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3369 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3370 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3371 break;
3372 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3373 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3374 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3375 break;
3376 default:
3377 break;
3378 }
3379 }
3380 break;
3381 }
3382 case 171: /* WOM */
3383 {
3384 /* default config */
3385 break;
3386 }
3387 case 172: /* Altice Dominican*/
3388 {
3389 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3390 break;
3391 }
3392 case 175:/* TDC */
3393 {
3394 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3395 switch(params_info->atcmd_type)
3396 {
3397 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3398 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3399 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3400 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3401 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3402 break;
3403 default:
3404 break;
3405 }
3406 break;
3407 }
3408 case 176: /* TStar */
3409 {
3410 if ((KAL_TRUE == params_info->is_ims_registered) &&
3411 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3412 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3413 {/* CW service*/
3414 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3415 }
3416 else
3417 {
3418 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3419 }
3420 break;
3421 }
3422 case 177: /* Telecom-Egypt */
3423 {
3424 /* default config */
3425 break;
3426 }
3427 case 178: /* SMART */
3428 {
3429 /* default config */
3430 if ((KAL_TRUE == params_info->is_ims_registered) &&
3431 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3432 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3433 {/* CW service*/
3434 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
3435 }
3436
3437 if(0 == strcmp(params_info->mcc, "515"))
3438 {
3439 if(0 == strcmp(params_info->mnc, "03")) /* Philippines */
3440 {
3441 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3442 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3443 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
3444 {/* CW service*/
3445 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3446 }
3447 }
3448 }
3449 break;
3450 }
3451 case 179: /* NEWROZ */
3452 {
3453 /* default config */
3454 break;
3455 }
3456 case 180: /* Swazi Mobile */
3457 {
3458 /* default config */
3459 break;
3460 }
3461 case 181: /* TelKom-SA */
3462 {
3463 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
3464 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
3465 {/* CLIR service*/
3466 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3467 }
3468 return atcmd_path_type;
3469 //break;
3470 }
3471 case 182: /* PROXIMUS */
3472 {
3473 if(0 == strcmp(params_info->mcc, "206"))
3474 {
3475 if(0 == strcmp(params_info->mnc, "01"))
3476 {
3477 switch(params_info->atcmd_type)
3478 {
3479 // CLIR SET CS
3480 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3481 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY_ALWAYS;
3482 break;
3483 // CLIR GET TB Solution
3484 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3485 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3486 break;
rjw8e44aab2022-11-30 16:42:16 +08003487 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3488 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3489 break;
rjw6c1fd8f2022-11-30 14:33:01 +08003490 default:
3491 break;
3492 }
3493 }
3494 }
3495 break;
3496 }
3497 case 183: /* PERSONAL */
3498 {
3499 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3500 switch(params_info->atcmd_type)
3501 {
3502 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3503 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3504 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3505 break;
3506 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3507 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3508 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3509 break;
3510 default:
3511 break;
3512 }
3513 /*data off or roaming status*/
3514 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
3515 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
3516 {
3517 return atcmd_path_type;
3518 }
3519 break;
3520 }
3521 case 184: /* VIETEL-Vietnam */
3522 {
3523 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3524 switch(params_info->atcmd_type)
3525 {
3526 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3527 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3528 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3529 break;
3530 default:
3531 break;
3532 }
3533 break;
3534 }
3535 case 185: /* 2DEGREES-NZ */
3536 {
3537 switch(params_info->atcmd_type)
3538 {
3539 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3540 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3541 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3542 break;
3543 default:
3544 break;
3545 }
3546 need_check_roaming = KAL_TRUE;
3547 break;
3548 }
3549 case 186: /* IDEA-IND */
3550 {
3551 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3552 switch(params_info->atcmd_type)
3553 {
3554 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3555 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3556 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3557 break;
3558 default:
3559 break;
3560 }
3561 if((KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
3562 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
3563 {
3564 return atcmd_path_type;
3565 }
3566 break;
3567 }
3568 case 187: /* SAFARICOM */
3569 {
3570 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3571 switch(params_info->atcmd_type)
3572 {
3573 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3574 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3575 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3576 break;
3577 default:
3578 break;
3579 }
3580 break;
3581 }
3582 case 188: /* A1 */
3583 {
3584 if (0 == strcmp(params_info->mcc, "232")) /* Austria */
3585 {
3586 switch(params_info->atcmd_type)
3587 {
3588 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3589 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3590 if (KAL_TRUE == params_info->is_ims_registered)
3591 {
3592 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3593 }
3594 break;
3595 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3596 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3597 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3598 break;
3599 default:
3600 break;
3601 }
3602 }
3603 if (0 == strcmp(params_info->mcc, "219")) /* Croatia */
3604 {
3605 switch(params_info->atcmd_type)
3606 {
3607 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3608 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3609 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3610 break;
3611 default:
3612 break;
3613 }
3614 }
3615 if (0 == strcmp(params_info->mcc, "257")) /* Belarus */
3616 {
3617 switch(params_info->atcmd_type)
3618 {
3619 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3620 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3621 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
3622 break;
3623 default:
3624 break;
3625 }
3626 }
3627 if(0 == strcmp(params_info->mcc, "293")) /* Slovenia */
3628 {
3629 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
3630 }
3631 break;
3632 }
3633 case 189: /* UMOBILE-Malaysia */
3634 {
3635 switch(params_info->atcmd_type)
3636 {
3637 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3638 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3639 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3640 break;
3641 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3642 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
3643 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3644 break;
3645 default:
3646 break;
3647 }
3648 need_check_roaming = KAL_TRUE;
3649 break;
3650 }
3651 case 190: /* TELKOM-KENYA */
3652 {
3653 /* default config */
3654 break;
3655 }
3656 case 191: /* GrameenPhone-Bangladesh */
3657 {
3658 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3659 break;
3660 }
3661 case 192: /* Robi-Bangladesh */
3662 {
3663 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3664 break;
3665 }
3666 case 193: /* Banglalink-Bangladesh */
3667 {
3668 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
3669 if ((KAL_TRUE == params_info->is_ims_registered) &&
3670 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3671 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3672 {/* CW service*/
3673 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3674 }
3675 break;
3676 }
3677 case 195: /* O2 */
3678 {
3679 if ((KAL_TRUE == params_info->is_ims_registered) &&
3680 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3681 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3682 {/* CW service*/
3683 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3684 }
3685
3686 if(0 == strcmp(params_info->mcc, "230"))
3687 {
3688 if(0 == strcmp(params_info->mnc, "02")) /* O2-Czech */
3689 {
3690 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
3691 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
3692 {
3693 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3694 }
3695 }
3696 }
3697 else if(0 == strcmp(params_info->mcc, "231"))
3698 {
3699 if(0 == strcmp(params_info->mnc, "06")) /* O2-Slovakia */
3700 {
3701 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR
3702 || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
3703 {
3704 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3705 }
3706 }
3707 }
3708 break;
3709 }
3710 case 199:/* VIVACOM */
3711 {
3712 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3713 switch(params_info->atcmd_type)
3714 {
3715 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3716 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3717 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3718 break;
3719 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3720 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3721 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3722 break;
3723 default:
3724 break;
3725 }
3726 break;
3727 }
3728 case 200: /* JTL_KENYA */
3729 {
3730 /* default config */
3731 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3732 switch(params_info->atcmd_type)
3733 {
3734 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3735 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3736 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3737 break;
3738 default:
3739 break;
3740 }
3741 break;
3742 }
3743 case 201:/* KPN-Netherlands */
3744 {
3745 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3746 switch(params_info->atcmd_type)
3747 {
3748 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3749 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:/* KPN/Netherlands Call barring should not be supported in XCAP/Ut and CS domain */
3750 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3751 break;
3752 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3753 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3754 if( CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain &&
3755 CUSTOM_SSDS_RF_OFF == params_info->rf_status )
3756 {
3757 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3758 }
3759 else
3760 {
3761 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3762 }
3763 break;
3764 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3765 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3766 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3767 break;
3768 default:
3769 break;
3770 }
3771 break;
3772 }
3773 case 202: /* SPARK-NZ */
3774 {
3775 if ((params_info->is_ims_registered)&&
3776 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3777 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3778 {/* CW service*/
3779 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
3780 }
3781 break;
3782 }
3783 case 203: /* NOS */
3784 {
3785 if(0 == strcmp(params_info->mnc, "03")) // NOS live does not support XCAP over Ut-interface but lab does
3786 {
3787 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3788 }
3789 switch(params_info->atcmd_type)
3790 {
3791 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3792 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3793 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3794 break;
3795 default:
3796 break;
3797 }
3798 break;
3799 }
3800 case 204: /* ROGERS */
3801 {
3802 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3803 switch(params_info->atcmd_type)
3804 {
3805 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3806 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3807 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3808 break;
3809 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3810 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3811 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3812 break;
3813 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3814 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:/* Rogers/Canada Call barring should not be supported in XCAP/Ut and CS domain */
3815 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3816 break;
3817 default:
3818 break;
3819 }
3820 break;
3821 }
3822 case 205: /* ALTAN-Mexico */
3823 {
3824 /* default config */
3825 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3826 switch(params_info->atcmd_type)
3827 {
3828 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3829 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3830 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3831 break;
3832 default:
3833 break;
3834 }
3835 if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
3836 {
3837 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
3838 }
3839 break;
3840 }
3841 case 206: /* Sky-UK */
3842 {
3843 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3844 switch(params_info->atcmd_type)
3845 {
3846 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3847 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3848 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3849 break;
3850 default:
3851 break;
3852 }
3853 need_check_roaming = KAL_TRUE;
3854 break;
3855 }
3856 case 207: /* CTM */
3857 {
3858 /* default config */
3859 break;
3860 }
3861 case 208: /* 3MACAU */
3862 {
3863 /* default config */
3864 break;
3865 }
3866 case 209: /* AVANTEL */
3867 {
3868 /* default config */
3869 if(((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
3870 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type)) &&
3871 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
3872 {
3873 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3874 }
3875 break;
3876 }
3877 case 210: /* BSNL-India */
3878 {
3879 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3880 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR)
3881 {
3882 /* 1) Set CLIR: terminal based; CME Error:4 greys out CLIR settings
3883 2) Get CLIR: NW based to avoid invalid pop-up on MMI query */
3884 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3885 }
3886 else if((KAL_TRUE == params_info->is_ims_registered) &&
3887 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3888 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3889 {/* CW service*/
3890 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
3891 }
3892 break;
3893 }
3894 case 211: /* CW */
3895 {
3896 if(0 == strcmp(params_info->mcc, "714")) /* panama*/
3897 {
3898 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3899 switch(params_info->atcmd_type)
3900 { /* CW service, issue encountered : ALPS05801202*/
3901 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3902 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3903 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3904 break;
3905 default:
3906 break;
3907 }
3908 }
3909 else if(0 == strcmp(params_info->mcc, "338")) /* Jamaica*/
3910 {
3911 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3912 if(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)
3913 {
3914 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3915 }
3916 }
3917 break;
3918 }
3919 case 214: /* IDC */
3920 {
3921 if(0 == strcmp(params_info->mcc, "259"))
3922 {
3923 if(0 == strcmp(params_info->mnc, "15")) /* IDC-Moldova */
3924 {
3925 if((KAL_TRUE == params_info->is_ims_registered) &&
3926 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
3927 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
3928 {
3929 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3930 }
3931 }
3932 }
3933 break;
3934 }
3935 case 215: /* CELLCARD */
3936 {
3937 if(0 == strcmp(params_info->mcc, "456"))
3938 {
3939 if(0 == strcmp(params_info->mnc, "01")) /* Cellcard-Cambodia */
3940 {
3941 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3942 }
3943 }
3944 break;
3945 }
3946 case 216:/* Zong-Pakistan */
3947 {
3948 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3949 switch(params_info->atcmd_type)
3950 {
3951 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3952 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3953 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
3954 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
3955 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3956 break;
3957 default:
3958 break;
3959 }
3960 break;
3961 }
3962 case 217:/* Telekom-Slovenia */
3963 {
3964 if(0 == strcmp(params_info->mcc, "293"))
3965 {
3966 if(0 == strcmp(params_info->mnc, "41")) /* Telekom-Slovenia */
3967 {
3968 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
3969 switch(params_info->atcmd_type)
3970 {
3971 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3972 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3973 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3974 break;
3975 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
3976 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3977 break;
3978 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
3979 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
3980 break;
3981 default:
3982 break;
3983 }
3984 }
3985 }
3986 break;
3987 }
3988 case 218:/* Rakuten-Japan */
3989 {
3990 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
3991 break;
3992 }
3993 case 219: /* MYTEL-Myanmmar */
3994 {
3995 switch(params_info->atcmd_type)
3996 {
3997 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
3998 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
3999 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4000 break;
4001 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4002 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4003 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4004 break;
4005 default:
4006 break;
4007 }
4008 if((atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER) &&
4009 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
4010 {
4011 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4012 return atcmd_path_type;
4013 }
4014 break;
4015 }
4016 case 220: /* Tigo */
4017 {
4018 if(0 == strcmp(params_info->mcc, "704"))/* Tigo-Guatemala */
4019 {
4020
4021 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
4022 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
4023 {
4024 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4025 }
4026
4027 }
4028 break;
4029 }
4030 case 221:/* TPG-Singapore */
4031 {
4032 /* If IMS registered: CF/CLIR/CLLP/COLR/COLP:PS; CW: TB based */
4033 /* TPG-Singapore(221) supports SS over Ut only if IMS registered, else SS not supported */
4034 /* TPG-Singapore(221): do not allow Ut when roaming */
4035 if((KAL_TRUE != params_info->is_ims_registered) ||
4036 ((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type)&&(CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status)))
4037 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
4038 break;
4039 }
4040 case 223:/* Indosat/Indonesia */
4041 {
4042 /* Supports XCAP regardless of IMS Reg status */
4043 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
4044 if(0 == strcmp(params_info->mcc, "419")) /* Ooredoo-Kuwait */
4045 {
4046 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4047 }
4048 break;
4049 }
4050 case 224: /* Telkomsel-Indonesia */
4051 {
4052 /* default config */
4053 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
4054 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
4055 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING)
4056 {/* CW service*/
4057 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4058 }
4059 else if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
4060 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
4061 {
4062 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4063 }
4064 break;
4065 }
4066 case 227: /* WIND */
4067 {
4068 /* default config */
4069 if(0 == strcmp(params_info->mcc, "222")) /* Wind-Italy */
4070 {
4071 /* Wind/3 Italy supports XCAP when IMS registered in LTE, otherwise CSFB */
4072 if ((CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC == params_info->ims_domain) || (KAL_FALSE == params_info->lte_attached))
4073 {
4074 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4075 }
4076 switch(params_info->atcmd_type)
4077 {
4078 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4079 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4080 /* Set to CS only to sync the status with CS, then retun terminal based */
4081 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4082 break;
4083 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4084 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4085 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4086 break;
4087 default:
4088 break;
4089 }
4090 need_check_roaming = KAL_TRUE;
4091 }
4092 else if(0 == strcmp(params_info->mcc, "202")) /* Wind-Greece */
4093 {
4094 switch(params_info->atcmd_type)
4095 {
4096 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4097 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4098 break;
4099 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4100 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4101 break;
4102 default:
4103 break;
4104 }
4105 }
4106 break;
4107 }
4108 case 228: /* Celcom-Malaysia */
4109 {
4110 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4111 switch(params_info->atcmd_type)
4112 {
4113 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4114 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
rjw6c1fd8f2022-11-30 14:33:01 +08004115 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4116 break;
rjw8e44aab2022-11-30 16:42:16 +08004117 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4118 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4119 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4120 break;
rjw6c1fd8f2022-11-30 14:33:01 +08004121 default:
4122 break;
4123 }
4124 break;
4125 }
4126 case 231: /* Maxis-Malaysia */
4127 {
4128 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
4129 need_check_roaming = KAL_TRUE;
4130 switch(params_info->atcmd_type)
4131 {
4132 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4133 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4134 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4135 break;
4136 default:
4137 break;
4138 }
4139 break;
4140 }
4141 case 232: /* MOBITEL-Srilanka */
4142 {
4143 switch(params_info->atcmd_type)
4144 {
4145 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4146 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4147 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4148 break;
4149 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4150 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4151 break;
4152 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4153 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4154 break;
4155 default:
4156 break;
4157 }
4158 if((atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY || atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER) &&
4159 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
4160 {
4161 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4162 return atcmd_path_type;
4163 }
4164 break;
4165 }
4166 case 233: /* Pelephone */
4167 {
4168 if(0 == strcmp(params_info->mcc, "425")) /* Israel */
4169 {
4170 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4171 switch(params_info->atcmd_type)
4172 {
4173 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4174 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4175 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4176 break;
4177 default:
4178 break;
4179 }
4180 }
4181 break;
4182 }
4183 case 234: /* PLUS */
4184 {
4185 if(0 == strcmp(params_info->mcc, "260")) /* PL - Poland */
4186 {
4187 if(0 == strcmp(params_info->mnc, "01"))
4188 {
4189 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4190 switch(params_info->atcmd_type)
4191 {
4192 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4193 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4194 break;
4195 default:
4196 break;
4197 }
4198 }
4199 }
4200 break;
4201 }
4202 case 235: /* VIP */
4203 {
4204 if(0 == strcmp(params_info->mcc, "220")) /* Serbia */
4205 {
4206 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4207 }
4208 break;
4209 }
4210 case 237: /* Ice Norway */
4211 {
4212 /* default config */
4213 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4214 switch(params_info->atcmd_type)
4215 {
4216 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4217 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4218 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4219 break;
4220 default:
4221 break;
4222 }
4223 break;
4224 }
4225 case 238:/* VideoTron */
4226 {
4227 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4228 switch(params_info->atcmd_type)
4229 {
4230 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4231 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4232 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4233 break;
4234 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4235 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4236 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4237 break;
4238 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4239 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4240 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4241 break;
4242 default:
4243 break;
4244 }
4245 break;
4246 }
4247 case 239:/* Eastlink-Canada */
4248 {
4249 switch(params_info->atcmd_type)
4250 {
4251 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4252 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4253 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4254 break;
4255 default:
4256 break;
4257 }
4258 break;
4259 }
4260 case 240:/* XPloreMobile-Canada */
4261 {
4262 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4263 switch(params_info->atcmd_type)
4264 {
4265 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4266 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4267 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4268 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4269 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4270 break;
4271 default:
4272 break;
4273 }
4274 break;
4275 }
4276 case 241: /* Claro-Puerto Rico */
4277 {
4278 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4279 switch(params_info->atcmd_type)
4280 {
4281 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4282 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4283 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4284 break;
4285 default:
4286 break;
4287 }
4288 break;
4289 }
4290 case 243: /* Globe-Philippines */
4291 {
4292 switch(params_info->atcmd_type)
4293 {
4294 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4295 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4296 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4297 break;
4298 default:
4299 break;
4300 }
4301 break;
4302 }
4303 case 244: /* Metfone- Cambodia */
4304 {
4305 switch(params_info->atcmd_type)
4306 {
4307 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4308 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4309 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4310 break;
4311 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4312 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4313 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4314 break;
4315 default:
4316 break;
4317 }
4318 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
4319 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY)
4320 {
4321 if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
4322 {
4323 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4324 return atcmd_path_type;
4325 }
4326 }
4327 break;
4328 }
4329 case 245: /* Vietnamobile-Vietnam */
4330 {
4331 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4332 break;
4333 }
4334 case 247: /* Maroc Telecom */
4335 {
4336 if(0 == strcmp(params_info->mcc, "604")) /* Morocco */
4337 {
4338 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4339 switch(params_info->atcmd_type)
4340 {
4341 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4342 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4343 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4344 break;
4345 default:
4346 break;
4347 }
4348 }
4349 break;
4350 }
rjw8e44aab2022-11-30 16:42:16 +08004351 case 255: /* Cellular one US */
4352 {
4353 if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC)
4354 {
4355 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4356 }
4357 switch(params_info->atcmd_type)
4358 {
4359 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4360 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4361 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4362 break;
4363 default:
4364 break;
4365 }
4366 break;
4367 }
rjw6c1fd8f2022-11-30 14:33:01 +08004368 case 257: /* Viaero/US */
4369 {
4370 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4371 switch(params_info->atcmd_type)
4372 {
4373 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4374 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4375 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4376 break;
4377 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4378 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4379 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4380 break;
4381 default:
4382 break;
4383 }
4384 break;
4385 }
4386 case 271:/*Sagebrush - US*/
4387 {
4388 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4389 break;
4390 }
4391 case 274: /* Yoigo */
4392 {
4393 switch(params_info->atcmd_type)
4394 {
4395 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4396 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4397 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4398 break;
4399 default:
4400 break;
4401 }
4402 break;
4403 }
4404 case 275:/* Lifecell Ukraine */
4405 {
4406 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4407 switch(params_info->atcmd_type)
4408 {
4409 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4410 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4411 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4412 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4413 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4414 break;
4415 default:
4416 break;
4417 }
4418 break;
4419 }
4420 case 276:/* Altice US */
4421 {
4422 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4423 switch(params_info->atcmd_type)
4424 {
4425 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4426 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4427 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4428 break;
4429 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4430 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4431 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4432 break;
4433 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4434 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4435 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4436 break;
4437 default:
4438 break;
4439 }
4440 break;
4441 }
4442 case 277: /* Telemach/Slovenia */
4443 {
4444 switch(params_info->atcmd_type)
4445 {
4446 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4447 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4448 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4449 break;
4450 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4451 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4452 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4453 break;
4454 default:
4455 break;
4456 }
4457 break;
4458 }
4459 case 278: /* Jazz-Pakistan */
4460 {
4461 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4462 switch(params_info->atcmd_type)
4463 {
4464 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4465 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4466 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4467 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4468 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4469 break;
4470 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4471 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4472 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4473 break;
4474 default:
4475 break;
4476 }
4477 break;
4478 }
4479 case 279:/* Dito-Philippines */
4480 {
4481 switch(params_info->atcmd_type)
4482 {
4483 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4484 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4485 if(KAL_FALSE == params_info->is_ims_registered)
4486 {
4487 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4488 }
4489 break;
4490 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4491 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4492 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4493 break;
4494 default:
4495 break;
4496 }
4497 break;
4498 }
4499 case 281: /* Kyivstar */
4500 {
4501 switch(params_info->atcmd_type)
4502 {
4503 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4504 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4505 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4506 break;
4507 default:
4508 break;
4509 }
4510 /*data off or roaming status*/
4511 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
4512 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
4513 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
4514 {
4515 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
4516 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
4517 {
4518 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4519 return atcmd_path_type;
4520 }
4521 }
4522 break;
4523 }
4524 case 282: /* Mobily Saudi Arabia*/
4525 {
4526 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4527 switch(params_info->atcmd_type)
4528 {
4529 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4530 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4531 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4532 break;
4533 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4534 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4535 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4536 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4537 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4538 break;
4539 default:
4540 break;
4541 }
4542 break;
4543 }
4544 case 283: /* MEO Portugal */
4545 {
4546 /*do not support Ut/XCAP in roaming NW*/
4547 need_check_roaming = KAL_TRUE;
4548 break;
4549 }
4550 case 285: /* Vinaphone-Vietnam */
4551 {
4552 switch(params_info->atcmd_type)
4553 {
4554 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4555 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4556 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
4557 break;
4558 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4559 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4560 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4561 break;
4562 default:
4563 break;
4564 }
4565 break;
4566 }
4567 case 287: /* Free France */
4568 {
4569 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4570 switch(params_info->atcmd_type)
4571 {
4572 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4573 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4574 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4575 break;
4576 default:
4577 break;
4578 }
4579 break;
4580 }
4581 case 288: /* Virgin UK */
4582 {
4583 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4584 break;
4585 }
4586 case 289: /* Batelco Bahrain */
4587 {
4588 switch(params_info->atcmd_type)
4589 {
4590 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4591 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4592 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4593 break;
4594 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4595 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4596 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4597 break;
4598 default:
4599 break;
4600 }
4601 /*mobile data off and roaming status*/
4602 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
4603 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
4604 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
4605 {
4606 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) &&
4607 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
4608 {
4609 if(params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_LTE )
4610 /* CS if VoLTE, UT if VoWifi*/
4611 {
4612 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4613 return atcmd_path_type;
4614 }
4615 }
4616 }
4617 break;
4618 }
4619 case 290: /* Omantel */
4620 {
4621 if(0 == strcmp(params_info->mcc, "422")) /** Oman **/
4622 {
4623 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4624 }
4625 break;
4626 }
4627 case 291: /* LMT Latvia */
4628 {
4629 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4630 switch(params_info->atcmd_type)
4631 {
4632 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4633 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4634 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4635 break;
4636 default:
4637 break;
4638 }
4639 break;
4640 }
4641 case 292: /* CMHK-Hongkong */
4642 {
4643 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4644 break;
4645 }
4646 case 295: /* NTC-Nepal */
4647 {
4648 switch(params_info->atcmd_type)
4649 {
4650 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4651 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4652 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4653 break;
4654 default:
4655 break;
4656 }
4657 need_check_roaming = KAL_TRUE;
4658 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) &&
4659 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
4660 {
4661 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4662 return atcmd_path_type;
4663 }
4664 break;
4665 }
4666 case 294: /* MPT-Mayanmar*/
4667 {
4668 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4669 break;
4670 }
4671 case 296: /* CWW-US */
4672 {
4673 switch(params_info->atcmd_type)
4674 {
4675 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4676 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4677 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4678 break;
4679 default:
4680 break;
4681 }
4682 break;
4683 }
4684 case 297: /* Fastweb/Italy */
4685 {
4686 switch(params_info->atcmd_type)
4687 {
4688 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4689 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4690 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4691 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4692 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4693 break;
4694 default:
4695 break;
4696 }
4697 need_check_roaming = KAL_TRUE;
4698 break;
4699 }
4700 case 302: /* Ooredoo/Oman */
4701 {
4702 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4703 switch(params_info->atcmd_type)
4704 {
4705 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4706 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4707 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4708 break;
4709 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4710 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4711 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4712 break;
4713 default:
4714 break;
4715 }
4716 break;
4717 }
4718 case 306:/* CUHK */
4719 {
4720 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4721 switch(params_info->atcmd_type)
4722 {
4723 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4724 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4725 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4726 break;
4727 default:
4728 break;
4729 }
4730 break;
4731 }
4732 case 307: /* Cellcom-Israel */
4733 {
4734 switch(params_info->atcmd_type)
4735 {
4736 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4737 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4738 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4739 break;
4740 default:
4741 break;
4742 }
4743 need_check_roaming = KAL_TRUE;
4744 break;
4745 }
4746 case 310: /* Hotmobile-Israel */
4747 {
4748 switch(params_info->atcmd_type)
4749 {
4750 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4751 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4752 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4753 break;
4754 default:
4755 break;
4756 }
4757 break;
4758 }
4759 case 313: /* Axtel-Mexico */
4760 {
4761 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4762 switch(params_info->atcmd_type)
4763 {
4764 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4765 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4766 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4767 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4768 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4769 break;
4770 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4771 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4772 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4773 break;
4774 default:
4775 break;
4776 }
4777 break;
4778 }
4779 case 314: /* Telepost - Greenland */
4780 {
4781 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4782 break;
4783 }
4784 case 315: /* Tele2-Kazakhstan */
4785 {
4786 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4787 switch(params_info->atcmd_type)
4788 {
4789 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4790 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4791 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4792 break;
4793 default:
4794 break;
4795 }
4796 break;
4797 }
4798 case 318: /* Vianova/Italy */
4799 {
4800 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4801 switch(params_info->atcmd_type)
4802 {
4803 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4804 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4805 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4806 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4807 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4808 break;
4809 default:
4810 break;
4811 }
4812 break;
4813 }
4814 case 319: /* Monaco Telecom France/Epic Cyprus */
4815 {
4816 if(0 == strcmp(params_info->mcc, "212")) /* Monaco Telecom */
4817 {
4818 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4819 }
4820 else if(0 == strcmp(params_info->mcc, "280")) /* Epic Cyprus */
4821 {
4822 switch(params_info->atcmd_type)
4823 {
4824 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4825 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4826 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4827 break;
4828 default:
4829 break;
4830 }
4831 /*data off or roaming status*/
4832 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER)
4833 {
4834 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
4835 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
4836 {
4837 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4838 return atcmd_path_type;
4839 }
4840 }
4841 }
4842 break;
4843 }
4844 case 322: /* UPC/Switzerland */
4845 {
4846 switch(params_info->atcmd_type)
4847 {
4848 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4849 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4850 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4851 break;
4852 default:
4853 break;
4854 }
4855 /* Do not support Ut when data disabled */
4856 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
4857 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
4858 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
4859 {
4860 if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
4861 {
4862 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4863 return atcmd_path_type;
4864 }
4865 }
4866 break;
4867 }
4868 case 323: /* Lycamobile Italy */
4869 {
4870 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4871 break;
4872 }
4873 case 324: /* Moldcell/Moldova */
4874 {
4875 switch(params_info->atcmd_type)
4876 {
4877 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4878 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4879 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4880 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4881 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4882 break;
4883 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
4884 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
4885 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
4886 break;
4887 default:
4888 break;
4889 }
4890 need_check_roaming = KAL_TRUE;
4891 break;
4892 }
4893 case 325: /* Jambotel-Kenya */
4894 {
4895 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4896 switch(params_info->atcmd_type)
4897 {
4898 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4899 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4900 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4901 break;
4902 default:
4903 break;
4904 }
4905 break;
4906 }
4907 case 326: /* 9mobile-Negeria */
4908 {
4909 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4910 switch(params_info->atcmd_type)
4911 {
4912 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
4913 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
4914 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4915 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4916 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4917 break;
4918 default:
4919 break;
4920 }
4921 break;
4922 }
4923 case 327:/* Sasktel-Canada */
4924 {
4925 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4926 break;
4927 }
4928 case 329: /* Plintron Italy */
4929 {
4930 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4931 break;
4932 }
4933 case 330: /* LTT-Libya */
4934 {
4935 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4936 switch(params_info->atcmd_type)
4937 {
4938 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4939 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4940 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4941 break;
4942 default:
4943 break;
4944 }
4945 break;
4946 }
4947 case 331: /* SPECTRANET Nigeria */
4948 {
4949 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
4950 switch(params_info->atcmd_type)
4951 {
4952 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4953 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4954 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
4955 break;
4956 default:
4957 break;
4958 }
4959 need_check_roaming_data_off_cs_only = KAL_TRUE;
4960 break;
4961 }
4962 case 335:/* TOT- Thailand*/
4963 {
4964 switch(params_info->atcmd_type)
4965 {
4966 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4967 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4968 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4969 break;
4970 default:
4971 break;
4972 }
4973 break;
4974 }
4975 case 336:/* Mobifone*-Vietnam */
4976 {
4977 switch(params_info->atcmd_type)
4978 {
4979 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
4980 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
4981 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4982 break;
4983 default:
4984 break;
4985 }
4986 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
4987 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
4988 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
4989 {
4990 if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
4991 {
4992 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
4993 return atcmd_path_type;
4994 }
4995 }
4996 break;
4997 }
4998 case 337:/* Antel- Uruguay*/
4999 {
5000 switch(params_info->atcmd_type)
5001 {
5002 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5003 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5004 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5005 break;
5006 default:
5007 break;
5008 }
5009 if((params_info->ims_domain == CUSTOM_SSDS_IMS_DOMAIN_TYPE_WFC) || (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
5010 {
5011 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5012 }
5013 break;
5014 }
5015 case 338: /* Spusu Austria */
5016 {
5017 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5018 break;
5019 }
5020 case 339:/* Unitel- Angola*/
5021 {
5022 switch(params_info->atcmd_type)
5023 {
5024 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5025 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5026 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5027 break;
5028 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5029 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5030 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5031 break;
5032 default:
5033 break;
5034 }
5035 if(atcmd_path_type != CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION &&
5036 (!params_info->is_mobile_data_setting_enabled && params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO))
5037 {
5038 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5039 }
5040 break;
5041 }
5042 case 340:/*VDF-Papua*/
5043 {
5044 if(params_info->ps_attached == KAL_TRUE)
5045 {
5046 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5047 }
5048 else
5049 {
5050 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5051 }
5052 switch(params_info->atcmd_type)
5053 {
5054 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5055 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5056 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5057 break;
5058 default:
5059 break;
5060 }
5061 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
5062 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER)
5063 {
5064 need_check_roaming = KAL_TRUE;
5065 }
5066 break;
5067 }
5068 case 341: /* Ucell-Uzbekistan */
5069 {
5070 switch(params_info->atcmd_type)
5071 {
5072 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5073 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5074 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5075 break;
5076 default:
5077 break;
5078 }
5079 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
5080 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
5081 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
5082 {
5083 if(KAL_TRUE != params_info->is_mobile_data_setting_enabled)
5084 {
5085 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5086 return atcmd_path_type;
5087 }
5088 }
5089 break;
5090 }
5091 case 342:/*Ecotel-Canada*/
5092 {
5093 switch(params_info->atcmd_type)
5094 {
5095 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5096 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5097 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5098 break;
5099 default:
5100 break;
5101 }
5102 break;
5103 }
5104 case 344: /* 4ka/Slovakia */
5105 {
5106 switch(params_info->atcmd_type)
5107 {
5108 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5109 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5110 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5111 break;
5112 default:
5113 break;
5114 }
5115 break;
5116 }
5117 case 345: /* PrimeTel/Cyprus */
5118 {
5119 switch(params_info->atcmd_type)
5120 {
5121 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5122 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5123 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_PS_ONLY:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5124 break;
5125 default:
5126 break;
5127 }
5128 /*data off or roaming status*/
5129 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
5130 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY)
5131 {
5132 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) ||
5133 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
5134 {
5135 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5136 return atcmd_path_type;
5137 }
5138 }
5139 break;
5140 }
rjw8e44aab2022-11-30 16:42:16 +08005141 case 346: /* Laotel-Lao */
5142 {
5143 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5144 switch(params_info->atcmd_type)
5145 {
5146 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5147 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5148 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5149 break;
5150 default:
5151 break;
5152 }
5153 break;
5154 }
rjw6c1fd8f2022-11-30 14:33:01 +08005155 case 348:/*Ncell-Nepal*/
5156 {
5157 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5158 switch(params_info->atcmd_type)
5159 {
5160 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5161 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5162 atcmd_path_type = (KAL_TRUE == params_info->is_ims_registered)?CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION:CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5163 break;
5164 default:
5165 break;
5166 }
5167 break;
5168 }
5169 case 349:/*MTS-Armenia*/
5170 {
5171 switch(params_info->atcmd_type)
5172 {
5173 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5174 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5175 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5176 break;
5177 default:
5178 break;
5179 }
5180 need_check_roaming = KAL_TRUE;
5181 break;
5182 }
5183 case 351:/*Hutch-Srilanka*/
5184 {
5185 switch(params_info->atcmd_type)
5186 {
5187 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5188 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5189 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5190 break;
5191 default:
5192 break;
5193 }
5194 if(atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_PREFER ||
5195 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY ||
5196 atcmd_path_type == CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY)
5197 {
5198 if((KAL_TRUE != params_info->is_mobile_data_setting_enabled) &&
5199 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) )
5200 {
5201 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5202 return atcmd_path_type;
5203 }
5204 }
5205 break;
5206 }
5207 case 353:/*We4G-Isreal*/
5208 {
5209 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5210 switch(params_info->atcmd_type)
5211 {
5212 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5213 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5214 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5215 break;
5216 default:
5217 break;
5218 }
5219 break;
5220 }
5221 case 357:/*CNT-Ecuador*/
5222 {
5223 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5224 switch(params_info->atcmd_type)
5225 {
5226 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5227 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5228 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5229 break;
5230 default:
5231 break;
5232 }
5233 break;
5234 }
5235 case 359:/*Aliv-Bahamas*/
5236 {
5237 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5238 switch(params_info->atcmd_type)
5239 {
5240 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5241 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5242 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5243 break;
5244 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5245 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5246 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5247 break;
5248 default:
5249 break;
5250 }
5251 break;
5252 }
5253 case 360:/*CTExcel-Hongkong*/
5254 {
5255 need_check_roaming_data_off = KAL_FALSE;
5256 switch(params_info->atcmd_type)
5257 {
5258 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5259 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5260 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5261 break;
5262 default:
5263 break;
5264 }
5265 break;
5266 }
5267 case 362:/*B-Mobile- Bhutan*/
5268 {
5269 need_check_roaming_data_off_cs_only = KAL_TRUE;
5270 break;
5271 }
5272 case 363:/*C Spire - US*/
5273 {
5274 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5275 break;
5276 }
5277 case 366:/*Appalachian - US*/
5278 {
5279 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5280 switch(params_info->atcmd_type)
5281 {
5282 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5283 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5284 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5285 break;
5286 default:
5287 break;
5288 }
5289 break;
5290 }
5291 case 379:/*PTCI- US*/
5292 {
5293 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5294 switch(params_info->atcmd_type)
5295 {
5296 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5297 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5298 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5299 break;
5300 default:
5301 break;
5302 }
5303 break;
5304 }
5305 case 381:/*Asiacell-Iraq*/
5306 {
5307 switch(params_info->atcmd_type)
5308 {
5309 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5310 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5311 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5312 break;
5313 default:
5314 break;
5315 }
5316 need_check_roaming = KAL_TRUE;
5317 break;
5318 }
5319 case 387:/*West Central Wireless - US*/
5320 {
5321 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5322 break;
5323 }
5324 case 1001: /* Ericsson-IODT */
5325 {
5326 /* default config */
5327 if(((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
5328 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type))&&
5329 (KAL_TRUE != params_info->is_mobile_data_setting_enabled))
5330 {
5331 if(KAL_TRUE == sbp_query_md_feature_by_ps(SBP_DISABLE_SS_WHEN_DATA_OFF,(protocol_id_enum)(params_info->ps_id)))
5332 {
5333 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NO_CONN_845;
5334 }
5335 else
5336 {
5337 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
5338 }
5339 }
5340 break;
5341 }
5342 case 320: /* Coriolis/France */
5343 {
5344 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5345 break;
5346 }
5347 case 350:/* Gibtelecom/Gibraltar */
5348 {
5349 switch(params_info->atcmd_type)
5350 {
5351 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5352 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5353 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5354 break;
5355 default:
5356 break;
5357 }
5358 break;
5359 }
5360 case 354: /* Poste Mobile/Italy */
5361 {
5362 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5363 break;
5364 }
5365 case 383: /* Magti/Georgia */
5366 {
5367 switch(params_info->atcmd_type)
5368 {
5369 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5370 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5371 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5372 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5373 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5374 break;
5375 default:
5376 break;
5377 }
5378 break;
5379 }
rjw8e44aab2022-11-30 16:42:16 +08005380 case 385: /* BH Mobile */
5381 {
5382 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_PREFER;
5383 switch(params_info->atcmd_type)
5384 {
5385 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5386 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5387 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5388 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5389 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5390 break;
5391 default:
5392 break;
5393 }
5394 break;
5395 }
rjw6c1fd8f2022-11-30 14:33:01 +08005396 case 386: /* ENetworks/Guyana */
5397 {
5398 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5399 switch(params_info->atcmd_type)
5400 {
5401 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5402 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5403 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5404 break;
5405 default:
5406 break;
5407 }
5408 if(atcmd_path_type != CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION &&
5409 (!params_info->is_mobile_data_setting_enabled && params_info->roaming_status != CUSTOM_SSDS_ROAMING_TYPE_NO))
5410 {
5411 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5412 }
5413 break;
rjw8e44aab2022-11-30 16:42:16 +08005414 }
5415 case 396: /* Thumb cellular -US */
5416 {
5417 switch(params_info->atcmd_type)
5418 {
5419 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5420 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5421 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5422 break;
5423 default:
5424 break;
5425 }
5426 break;
5427 }
5428 case 408: /* Bitel -Peru */
5429 {
5430 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5431 break;
5432 }
5433 case 411: /* Evolve - Broadband */
5434 {
5435 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5436 break;
5437 }
rjw6c1fd8f2022-11-30 14:33:01 +08005438 case 1002: /* Nokia IODT */
5439 {
5440 /* default config */
5441 break;
5442 }
5443 case 1003: /* MTK_HQLAB-Ericsson */
5444 {
5445 /* default config */
5446 break;
5447 }
5448 case 1004: /* Huawei IODT */
5449 {
5450 /* default config */
5451 break;
5452 }
5453 default:
5454 break;
5455 }
5456
5457 /* only mncmcc , no SBP ID? not suggest this method.currently all mncmcc mapping to SBP ID */
5458 if(0 == strcmp(params_info->mccmnc, "22603"))
5459 {
5460 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5461 }
5462 else if(0 == strcmp(params_info->mccmnc, "722070") || 0 == strcmp(params_info->mccmnc, "722010"))
5463 {
5464 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5465 if((KAL_TRUE == params_info->is_ims_registered) &&
5466 (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING ||
5467 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING))
5468 {
5469 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5470 }
5471 }
5472 else if(0 == strcmp(params_info->mccmnc, "23207") || 0 == strcmp(params_info->mccmnc, "23591")
5473 || 0 == strcmp(params_info->mccmnc, "23099"))
5474 {
5475 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
5476 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
5477 {
5478 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_TB_SOLUTION;
5479 }
5480 }
5481 else if(0 == strcmp(params_info->mccmnc, "33430"))
5482 {
5483 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR ||
5484 params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
5485 {
5486 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_OPERATION_NOT_SUPPORTED_4;
5487 }
5488 }
5489
5490
5491 //if roaming and roaming data setting off, can't use xcap by default
5492 if(((CUSTOM_SSDS_PATH_TYPE_PS_PREFER == atcmd_path_type) ||
5493 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY == atcmd_path_type) ||
5494 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY == atcmd_path_type) ||
5495 (CUSTOM_SSDS_PATH_TYPE_PS_ONLY_SET_TO_QUERY_PDN == atcmd_path_type))&&
5496 (KAL_TRUE != params_info->is_data_roaming_setting_enabled) &&
5497 (CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status))
5498 {
5499 if(need_check_roaming_data_off_cs_only)
5500 {
5501 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5502 }
5503 else if(need_check_roaming_data_off)
5504 {
5505 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
5506 }
5507 }
5508
5509 // If roaming, can't use XCAP
5510 if((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) && need_check_roaming)
5511 {
5512 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5513 }
5514
5515 // If roaming and IMS not registerd, can't use xcap
5516 if((CUSTOM_SSDS_ROAMING_TYPE_NO != params_info->roaming_status) &&
5517 (KAL_FALSE == params_info->is_ims_registered) && need_check_roaming_ims)
5518 {
5519 atcmd_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5520 }
5521 return atcmd_path_type;
5522}
5523
5524
5525void 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)
5526{
5527 nvram_ef_ssds_request_profile_value_struct request_info;
5528 nvram_ef_ssds_request_profile_action_struct request_action;
5529
5530 kal_mem_set(&request_info, 0x0, sizeof(nvram_ef_ssds_request_profile_value_struct));
5531
5532 request_info.ims_domain = params_info->ims_domain;
5533 request_info.ims_registered = params_info->is_ims_registered;
5534 request_info.atcmd_type = params_info->atcmd_type;
5535 request_info.roaming_type = params_info->roaming_status;
5536 request_info.sim_type = params_info->sim_type;
5537 request_info.lte_attached= params_info->lte_attached;
5538
5539 if (KAL_TRUE == (custom_ssds_config_get_request_path(params_info->sim_id, &request_info, &request_action,cfg_type)))
5540 {
5541 *req_path_type = request_action.req_path;
5542 kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Use NVRAM reqeust result");
5543 }
5544
5545}
5546
5547void _custom_ssds_get_req_path_from_common_file (sim_interface_enum sim_id,
5548 custom_ssds_atcmd_type atcmd_type,
5549 custom_ssds_path_type *req_path_type,
5550 custom_ssds_config_type cfg_type)
5551{
5552 nvram_ssds_req_path_type nvram_req_path = CUSTOM_SSDS_SS_REQ_PATH_MAX;
5553 kal_bool vaild_config = KAL_TRUE;
5554
5555 //get NVRAM/MCF config value
5556 custom_ssds_config_get_request_path_from_common_file(sim_id,atcmd_type,&nvram_req_path,cfg_type);
5557
5558 if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_PS)
5559 {
5560 *req_path_type = CUSTOM_SSDS_PATH_TYPE_PS_ONLY;
5561 }
5562 else if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_CS)
5563 {
5564 *req_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
5565 }
5566 else if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_NOT_SUPPORT)
5567 {
5568 *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_100;
5569 }
5570 else if(nvram_req_path == CUSTOM_SSDS_SS_REQ_PATH_TB)
5571 {
5572 switch(atcmd_type)
5573 {
5574 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5575 *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
5576 break;
5577 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5578 *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_CCWA;
5579 break;
5580
5581 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5582 *req_path_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY_ALWAYS;
5583 break;
5584 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5585 *req_path_type = CUSTOM_SSDS_PATH_TYPE_NOT_SUPPORT_832;
5586 break;
5587
5588 default:
5589 //trace:invalid config
5590 vaild_config = KAL_FALSE;
5591 kal_prompt_trace(MOD_SSDS+sim_id, "invalid TB configuration in common config file ");
5592 break;
5593 }
5594 }
5595 else
5596 {
5597 //trace:invalid config
5598 vaild_config = KAL_FALSE;
5599 kal_prompt_trace(MOD_SSDS+sim_id, "There is no valid req_path configuration in common config file ");
5600 }
5601
5602 if(vaild_config)
5603 {
5604 kal_prompt_trace(MOD_SSDS+sim_id, "There is valid configuration for SS:%d",nvram_req_path);
5605 }
5606}
5607
5608custom_ssds_path_type custom_ssds_get_req_path(custom_ssds_params_info_struct *params_info)
5609{
5610 custom_ssds_path_type req_path_type;
5611
5612 /* Priority 5 :default config */
5613 custom_ssds_get_req_path_default_config(params_info, &req_path_type);
5614
5615 /* Priority 4 :mcf ota config */
5616 custom_ssds_get_req_path_config_from_nvram(params_info, &req_path_type,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
5617 _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);
5618
5619 /* Priority 3 :default OP config */
5620 req_path_type = custom_ssds_get_req_path_config(params_info, &req_path_type);
5621
5622 /* Priority 2 :mcf ota by op config */
5623 custom_ssds_get_req_path_config_from_nvram(params_info, &req_path_type,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
5624 _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);
5625
5626 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
5627 custom_ssds_get_req_path_config_from_nvram(params_info, &req_path_type,CUSTOM_SSDS_CFG_TYPE_NVRAM);
5628 _custom_ssds_get_req_path_from_common_file(params_info->sim_id,params_info->atcmd_type,&req_path_type,CUSTOM_SSDS_CFG_TYPE_NVRAM);
5629
5630 return req_path_type;
5631}
5632#endif
5633
5634void custom_ssds_get_rsp_path_default_config(custom_ssds_params_info_struct *params_info,custom_ssds_csfb_type *rsp_path)
5635{
5636 *rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
5637
5638 /*set the default value*/
5639 switch (params_info->rsp_id)
5640 {
5641 case 200:
5642 case 404:
5643 case 409:
5644 *rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
5645 break;
5646
5647 case 403:
5648 case 843:
5649 *rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5650 break;
5651
5652 case 831:
5653 *rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5654 break;
5655
5656 default:
5657 *rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
5658 break;
5659 }
5660
5661 return;
5662}
5663
5664custom_ssds_csfb_type custom_ssds_get_rsp_path_config(custom_ssds_params_info_struct *params_info,custom_ssds_csfb_type *rsp_path_in)
5665{
5666 custom_ssds_csfb_type rsp_path = *rsp_path_in;
5667 kal_bool is_need_sync_to_cs = KAL_TRUE;
5668
5669 switch(params_info->op_id)
5670 {
5671 case 0: /* Default values */
5672 {
5673 break;
5674 }
5675 case 1:/* CMCC */
5676 {
5677 is_need_sync_to_cs = KAL_FALSE;
5678 switch (params_info->atcmd_type)
5679 {
5680 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5681 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5682 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
5683 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
5684 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
5685 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
5686 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
5687 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
5688 if ((KAL_TRUE == params_info->is_ims_registered) ||
5689 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5690 {//VOLTE card: not support CLIR/CLIP/COLR/COLP
5691 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
5692 }
5693 break;
5694 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
5695 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
5696 //is_ocb = _custom_ssds_is_ocb(&(req_info->atcmd_info));
5697 if(CUSTOM_SSDS_OUTGOING_CALL_BARRING == params_info->cb_type && ((KAL_TRUE == params_info->is_ims_registered) ||
5698 (403 != params_info->rsp_id && 831 != params_info->rsp_id)))
5699 {//VOLTE card: not support OCB
5700 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
5701 }
5702 break;
5703 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5704 if((KAL_TRUE == params_info->is_ims_registered) ||
5705 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5706 {
5707 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5708 }
5709 break;
5710 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5711 if((KAL_TRUE == params_info->is_ims_registered) ||
5712 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5713 {
5714 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
5715 }
5716 break;
5717 default:
5718 break;
5719 }
5720 break;
5721 }
5722 case 2:/* CU */
5723 {
5724 is_need_sync_to_cs = KAL_FALSE;
5725 if(400 == params_info->rsp_id)
5726 {
5727 params_info->rsp_id = 403;
5728 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5729 }
5730
5731 switch (params_info->atcmd_type)
5732 {
5733 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5734 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5735 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIP:
5736 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIP:
5737 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLR:
5738 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLR:
5739 case CUSTOM_SSDS_ATCMD_TYPE_SET_COLP:
5740 case CUSTOM_SSDS_ATCMD_TYPE_GET_COLP:
5741 if ((KAL_TRUE == params_info->is_ims_registered) ||
5742 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5743 {//VOLTE card: not support CLIR/CLIP/COLR/COLP
5744 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
5745 }
5746 break;
5747 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5748 if((KAL_TRUE == params_info->is_ims_registered) ||
5749 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5750 {
5751 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5752 }
5753 break;
5754 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5755 if((KAL_TRUE == params_info->is_ims_registered) ||
5756 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5757 {
5758 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
5759 }
5760 break;
5761 default:
5762 break;
5763 }
5764 break;
5765 }
5766 case 3: /* Orange */
5767 {
5768 /* Orange France requires to start 4hr timer for 403 or 831 (PDN Connectivity reject) */
5769 if(0 == strcmp(params_info->mccmnc, "20801") || 0 == strcmp(params_info->mccmnc, "20802")) /* Orange France */
5770 {
5771 if(((403 == params_info->rsp_id) || (831 == params_info->rsp_id)) && (0 == params_info->real_rsp_id))
5772 {
5773 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5774 }
5775 }
5776 break;
5777 }
5778 case 5:/* TMOEU */
5779 {
5780 switch (params_info->atcmd_type)
5781 {
5782 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5783 if(403 != params_info->rsp_id && 831 != params_info->rsp_id)
5784 {
5785 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5786 }
5787 break;
5788 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5789 if(403 != params_info->rsp_id && 831 != params_info->rsp_id)
5790 {
5791 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
5792 }
5793 break;
5794 case CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR:
5795 if (KAL_FALSE == params_info->is_ims_registered)
5796 {
5797 //if NW response 403, it is non-volte sim card.
5798 if (403 == params_info->rsp_id)
5799 {
5800 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5801 }
5802 else if (831 == params_info->rsp_id)
5803 {
5804 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5805 }
5806 else
5807 {
5808 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5809 }
5810 }
5811 else
5812 {
5813 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5814 }
5815 break;
5816 case CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR:
5817 if (KAL_FALSE == params_info->is_ims_registered)
5818 {
5819 //if NW response 403, it is non-volte sim card.
5820 if (403 == params_info->rsp_id)
5821 {
5822 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5823 }
5824 else if (831 == params_info->rsp_id)
5825 {
5826 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5827 }
5828 else
5829 {
5830 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5831 }
5832 }
5833 else
5834 {
5835 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5836 }
5837 break;
5838 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
5839 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
5840 if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
5841 { // No support
5842 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
5843 }
5844 break;
5845 default:
5846 break;
5847 }
5848 break;
5849 }
5850 case 6: /* VDF */
5851 {
5852 /* TCD-BEAR-REQ-012124 expects UE to always use CSFB as a backup option */
5853 if (403 == params_info->rsp_id)
5854 {
5855 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5856 }
5857 else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
5858 {
5859 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5860 }
5861 /* Exclude 404 for Call Barring not supported (404 is mapped to 831 and 844 on XCAP) */
5862 switch (params_info->atcmd_type)
5863 {
5864 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
5865 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
5866 if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
5867 { // No support
5868 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
5869 }
5870 break;
5871 default:
5872 break;
5873 }
5874 break;
5875 }
5876 case 8:/* TMO-US */
5877 {
5878 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
5879 break;
5880 }
5881 case 9:/* CT-only support CF and CW */
5882 {
5883 //international roaming: same as CMCC
5884 //non international roaming:
5885 switch (params_info->atcmd_type)
5886 {
5887 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_FORWARDING:
5888 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_FORWARDING:
5889 if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL != params_info->roaming_status)
5890 {
5891 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
5892 }
5893 break;
5894 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5895 if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL == params_info->roaming_status)
5896 {
5897 if((KAL_TRUE == params_info->is_ims_registered) ||
5898 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5899 {
5900 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5901 }
5902 }
5903 else
5904 {
5905 if(KAL_TRUE == params_info->is_ims_registered)
5906 {
5907 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5908 }
5909 else if(403 == params_info->rsp_id)
5910 {
5911 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_403;
5912 }
5913 else if(831 == params_info->rsp_id)
5914 {
5915 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_31;
5916 }
5917 else
5918 {
5919 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
5920 }
5921 }
5922 break;
5923 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5924 if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL == params_info->roaming_status)
5925 {
5926 if((KAL_TRUE == params_info->is_ims_registered) ||
5927 (403 != params_info->rsp_id && 831 != params_info->rsp_id))
5928 {
5929 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
5930 }
5931 }
5932 else
5933 {
5934 if(KAL_TRUE == params_info->is_ims_registered)
5935 {
5936 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
5937 }
5938 else if(403 == params_info->rsp_id)
5939 {
5940 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_403;
5941 }
5942 else if(831 == params_info->rsp_id)
5943 {
5944 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_31;
5945 }
5946 else
5947 {
5948 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
5949 }
5950 }
5951 break;
5952 default:
5953 break;
5954 }
5955 break;
5956 }
5957 case 15:/* Telefonica requires that after UE receives 40x error response (other than 403) from NW, it needs to CSFB */
5958 {
5959 if (403 == params_info->rsp_id)
5960 {
5961 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
5962 }
5963 else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
5964 {
5965 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5966 }
5967 break;
5968 }
5969 case 16:/* EE UK requires that when UE receives 404 or 408 Error response from NW, it needs to CSFB */
5970 {
5971 if (404 == params_info->rsp_id || 408 == params_info->rsp_id)
5972 {
5973 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5974 }
5975 break;
5976 }
5977 case 18: /* RJIO-IND */
5978 {
5979 /* ALPS04349217: In international romaing, Server not responding, try on CS once */
5980 if (CUSTOM_SSDS_ROAMING_TYPE_INTERNATIONAL == params_info->roaming_status && 200 != params_info->rsp_id)
5981 {
5982 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
5983 }
5984 else
5985 {
5986 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
5987 }
5988 break;
5989 }
5990 case 19: /*Telstra-Aus*/
5991 {
5992 switch (params_info->atcmd_type)
5993 {
5994 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING:
5995 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_WAITING:
5996 /* If PDN formed successfully,rsp_id=200, set TB CW
5997 If PDN establishment fails with esm_cause=33, rsp_id=403,CSFB always
5998 If PDN establishment fails with esm_cause!=33,rsp_id=831,CSFB once */
5999 if(200 == params_info->rsp_id)
6000 {
6001 if (params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_WAITING)
6002 {
6003 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_832;
6004 }
6005 else
6006 {
6007 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_CCWA;
6008 }
6009 }
6010 break;
6011 default:
6012 break;
6013 }
6014 break;
6015 }
6016 case 20:/* Sprint(CDMA solution) */
6017 {
6018 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6019 break;
6020 }
6021 case 102:/* Smartone-Hongkong */
6022 {
6023 if (200 != params_info->rsp_id)
6024 {
6025 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6026 }
6027 break;
6028 }
6029 case 104:/* Starhub:no special case,default config */
6030 break;
6031
6032 case 117:/* SmartFren Indonesia(CDMA solution) */
6033 {
6034 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6035 break;
6036 }
6037 case 121:/* Bell Canada */
6038 {
6039 if (500 == params_info->rsp_id)
6040 {
6041 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6042 }
6043 break;
6044 }
6045 case 130:/* TIM */
6046 {
6047 if (0 == strcmp(params_info->mcc, "222")) //TIM Italy
6048 {
6049 if ((401 == params_info->rsp_id) && (KAL_TRUE != params_info->is_ims_registered))
6050 {
6051 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6052 }
6053
6054 switch (params_info->atcmd_type)
6055 {
6056 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
6057 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
6058 /* 404 is mapped to 831 and 844 on XCAP */
6059 if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
6060 { // No support
6061 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
6062 }
6063 break;
6064 default:
6065 break;
6066 }
6067 }
6068 break;
6069 }
6070 case 134:/* Elisa/Finland requires that when UE receives 400 Error response from NW, it needs to CSFB */
6071 {
6072 if (400 == params_info->rsp_id)
6073 {
6074 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6075 }
6076 break;
6077 }
6078 case 140:/* MTN */
6079 {
6080 if(0 == strcmp(params_info->mcc, "620")) /* Special case for MTN/Ghana, Usage of SS CS fallback for HTTP error: No */
6081 {
6082 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6083 }
6084 break;
6085 }
6086 case 148:/* Seatel - Cambodia(4G only solution) */
6087 {
6088 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6089 break;
6090 }
6091 case 154:/* Telia */
6092 {
6093 if (0 == strcmp(params_info->mcc, "240")) //Sweden
6094 {
6095 switch (params_info->atcmd_type)
6096 {
6097 case CUSTOM_SSDS_ATCMD_TYPE_SET_CALL_BARRING:
6098 case CUSTOM_SSDS_ATCMD_TYPE_GET_CALL_BARRING:
6099 /* Telia Sweden requires that UE should not do CS fallback in case call barring rule is not found from server */
6100 if ((831 == params_info->rsp_id) && (844 == params_info->real_rsp_id))
6101 {
6102 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO_4;
6103 }
6104 break;
6105 default:
6106 break;
6107 }
6108 }
6109 break;
6110 }
6111 case 156:/* Telenor */
6112 {
6113 if (0 == strcmp(params_info->mcc, "220")) //Serbia
6114 {
6115 if (403 == params_info->rsp_id)
6116 {
6117 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
6118 }
6119 else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
6120 {
6121 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6122 }
6123 }
6124 break;
6125 }
6126 case 164:/* Telenet Belgium requires that after UE receives 40x error response (other than 403) from NW, it needs to CSFB */
6127 {
6128 if (403 == params_info->rsp_id)
6129 {
6130 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ALWAYS;
6131 }
6132 else if (params_info->rsp_id >= 400 && params_info->rsp_id < 410)
6133 {
6134 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6135 }
6136 break;
6137 }
6138 case 178:/*Opearator: Smart. Oppo hope UE does CSFB when receive 409 when do CLIR like reference's behavior */
6139 {
6140 if(params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_SET_CLIR || params_info->atcmd_type == CUSTOM_SSDS_ATCMD_TYPE_GET_CLIR)
6141 {
6142 if (409 == params_info->rsp_id)
6143 {
6144 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6145 }
6146 }
6147 break;
6148 }
6149 case 186:/* IDEA-IND */
6150 {
6151 /* Requires that when UE receives 304, 403, 404, 409 or 412 Error response from NW, it needs to CSFB */
6152 if (304 == params_info->rsp_id || 403 == params_info->rsp_id || 404 == params_info->rsp_id
6153 || 409 == params_info->rsp_id || 412 == params_info->rsp_id || (500 <= params_info->rsp_id && 599 >= params_info->rsp_id))
6154 {
6155 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6156 }
6157 break;
6158 }
6159 case 185:/* 2DEGREES-NZ */
6160 {
6161 /* Requires that when UE receives 403, 404, 501, 502, 503 or 504 Error response from NW, it needs to CSFB */
6162 if (403 == params_info->rsp_id || 404 == params_info->rsp_id || 501 == params_info->rsp_id
6163 || 502 == params_info->rsp_id || 503 == params_info->rsp_id || 504 == params_info->rsp_id)
6164 {
6165 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6166 }
6167 break;
6168 }
6169 case 195:/* O2 CZ requires that when UE receives 409 Error response from NW, it needs to CSFB */
6170 {
6171 if (409 == params_info->rsp_id)
6172 {
6173 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6174 }
6175 break;
6176 }
6177 case 202:/* Spark-NZ */
6178 {
6179 if (200 != params_info->rsp_id)
6180 {
6181 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6182 }
6183 break;
6184 }
6185 case 221:/* TPG-Singapore(4G only solution) */
6186 {
6187 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6188 break;
6189 }
6190 case 224:/* Telkomsel-Indonesia */
6191 {
6192 if (400 == params_info->rsp_id)
6193 {
6194 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6195 }
6196 break;
6197 }
6198 case 225: /* XL-Indonesia */
6199 {
6200 if (403 == params_info->rsp_id || 404 == params_info->rsp_id || 500 == params_info->rsp_id ||
6201 502 == params_info->rsp_id || 503 == params_info->rsp_id || 504 == params_info->rsp_id)
6202 {
6203 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6204 }
6205 break;
6206 }
6207 case 238:/* VideoTron Canada requires that when UE receives 409 Error response from NW, it needs to CSFB */
6208 {
6209 if (409 == params_info->rsp_id)
6210 {
6211 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6212 }
6213 break;
6214 }
6215 case 239:/* Eastlink-Canada */
6216 {
6217 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6218 break;
6219 }
6220 case 307: /* Cellcom-Israel */
6221 {
6222 if (300 <= params_info->rsp_id && 599 >= params_info->rsp_id)
6223 {
6224 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6225 }
6226 break;
6227 }
6228 case 340:/*VDF-Papua*/
6229 {
6230 if (403 == params_info->rsp_id)
6231 {
6232 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6233 }
6234 else
6235 {
6236 rsp_path = CUSTOM_SSDS_CSFB_TYPE_NO;
6237 }
6238 break;
6239 }
6240 default:
6241 break;
6242 }
6243
6244 /* If CLIR activation/deactivation is successful over XCAP then SSDS need to sync its status to CS */
6245 if((custom_ssds_need_sync_to_cs(params_info->atcmd_type,params_info->rsp_id) == KAL_TRUE) && is_need_sync_to_cs)
6246 {
6247 rsp_path = CUSTOM_SSDS_CSFB_TYPE_ONCE;
6248 }
6249
6250 return rsp_path;
6251}
6252
6253
6254
6255void custom_ssds_get_rsp_path_config_from_nvram(custom_ssds_params_info_struct *params_info,
6256 custom_ssds_csfb_type *csfb_type,
6257 custom_ssds_config_type cfg_type)
6258{
6259 nvram_ef_ssds_response_profile_value_struct request_info;
6260 nvram_ef_ssds_response_profile_action_struct request_action;
6261
6262 kal_mem_set(&request_info, 0x0, sizeof(nvram_ef_ssds_response_profile_value_struct));
6263
6264 request_info.ims_registered = params_info->is_ims_registered;
6265 request_info.atcmd_type = params_info->atcmd_type;
6266 request_info.roaming_type = params_info->roaming_status;
6267 request_info.rsp_id = params_info->rsp_id;
6268 request_info.sim_type = params_info->sim_type;
6269
6270 if (KAL_TRUE == (custom_ssds_config_get_response_path(params_info->sim_id, &request_info, &request_action,cfg_type)))
6271 {
6272 *csfb_type = request_action.rsp_path;
6273 kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Use NVRAM response result");
6274 }
6275
6276}
6277
6278void _custom_ssds_get_rsp_path_from_common_file(sim_interface_enum sim_id,
6279 kal_uint32 xcap_error_code,
6280 custom_ssds_csfb_type *csfb_type,
6281 custom_ssds_config_type cfg_type)
6282{
6283 custom_ssds_config_get_response_path_from_common_file(sim_id,xcap_error_code,csfb_type,cfg_type);
6284}
6285
6286
6287custom_ssds_csfb_type custom_ssds_get_rsp_path(custom_ssds_params_info_struct *params_info)
6288{
6289 custom_ssds_csfb_type rsp_path;
6290
6291 /* Priority 5 :default config */
6292 custom_ssds_get_rsp_path_default_config(params_info,&rsp_path);
6293
6294 /* Priority 4 :mcf ota config */
6295 custom_ssds_get_rsp_path_config_from_nvram(params_info, &rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
6296 _custom_ssds_get_rsp_path_from_common_file(params_info->sim_id,params_info->rsp_id,&rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
6297
6298 /* Priority 3 :default OP config */
6299 rsp_path = custom_ssds_get_rsp_path_config(params_info,&rsp_path);
6300
6301 /* Priority 2 :mcf ota by op config */
6302 custom_ssds_get_rsp_path_config_from_nvram(params_info, &rsp_path,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
6303 _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);
6304
6305 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
6306 custom_ssds_get_rsp_path_config_from_nvram(params_info, &rsp_path,CUSTOM_SSDS_CFG_TYPE_NVRAM);
6307 _custom_ssds_get_rsp_path_from_common_file(params_info->sim_id,params_info->rsp_id,&rsp_path,CUSTOM_SSDS_CFG_TYPE_NVRAM);
6308
6309 return rsp_path;
6310}
6311
6312void custom_ssds_get_disable_ut_timer_value_default_config(custom_ssds_params_info_struct *params_info,kal_uint32 *timer_value)
6313{
6314 *timer_value = INVALID_SSDS_TIMER_VALUE;
6315 //for gen93
6316 if(params_info->ssds_xcap_error_info == NULL)
6317 {
6318 *timer_value = INVALID_SSDS_TIMER_VALUE; //0xffffffff means always disable UT until restarting UE or changing SIM card.
6319 kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is max ");
6320 if((0 == kal_mem_cmp(params_info->mccmnc, "20801", 5) || 0 == kal_mem_cmp(params_info->mccmnc, "20802", 5)) &&
6321 (((403 == params_info->rsp_id) || (831 == params_info->rsp_id)) && (0 == params_info->real_rsp_id)))
6322 {
6323 *timer_value = KAL_TICKS_1_MIN * 240; // 4h timer
6324 kal_prompt_trace(MOD_SSDS+params_info->ps_id, "The Orange disable UT timer value is:%d ", *timer_value);
6325 }
6326 else
6327 {
6328 *timer_value = INVALID_SSDS_TIMER_VALUE; //0xffffffff means always disable UT until restarting UE or changing SIM card.
6329 kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is max (no XCAP error info) ");
6330 }
6331
6332 }
6333 //for gen95/97
6334 else
6335 {
6336 if((0 == kal_mem_cmp(params_info->mccmnc, "20801", 5) || 0 == kal_mem_cmp(params_info->mccmnc, "20802", 5)) &&
6337 (((403 == params_info->rsp_id) || (831 == params_info->rsp_id)) && (0 == params_info->real_rsp_id)))
6338 {
6339 *timer_value = KAL_TICKS_1_MIN * 240; // 4h timer
6340 kal_prompt_trace(MOD_SSDS+params_info->ps_id, "The Orange disable UT timer value is:%d ", *timer_value);
6341 }
6342 else if(params_info->ssds_xcap_error_info->error_info == CUSTOM_SSDS_XCAP_NW_ERROR_NW_NO_RESPONSE)
6343 {
6344 *timer_value = KAL_TICKS_1_SEC * 10; //
6345 kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is:%d ",*timer_value);
6346 }
6347 else
6348 {
6349 *timer_value = INVALID_SSDS_TIMER_VALUE; //0xffffffff means always disable UT until restarting UE or changing SIM card.
6350 kal_prompt_trace(MOD_SSDS+params_info->ps_id,"the disable UT timer value is max ");
6351 }
6352 }
6353
6354 return;
6355}
6356
6357
6358kal_uint32 custom_ssds_get_disable_ut_timer_value_config(custom_ssds_params_info_struct *params_info,kal_uint32 *timer_value_in)
6359{
6360 kal_uint32 timer_value = *timer_value_in;
6361
6362 return timer_value;
6363}
6364
6365void custom_ssds_get_disable_ut_timer_value_config_from_nvram(custom_ssds_params_info_struct *params_info,
6366 kal_uint32 *timer_value,
6367 custom_ssds_config_type cfg_type)
6368{
6369 nvram_ef_ssds_timer_value_profile_value_struct request_info;
6370 nvram_ef_ssds_timer_value_profile_action_struct request_action;
6371 sim_interface_enum sim_id;
6372 ssds_timer_id_enum timer_id = SSDS_MAX_TIMER;
6373
6374 kal_mem_set(&request_info, 0x0, sizeof(nvram_ef_ssds_timer_value_profile_value_struct));
6375 //request_info.op_id = op_id;
6376 //kal_mem_cpy(&(request_info.mccmnc[0]), mccmnc, 6);
6377 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(params_info->ps_id));
6378
6379 //for gen93
6380 if(params_info->ssds_xcap_error_info == NULL)
6381 {
6382 timer_id = DISABLE_UT_TIMER;
6383 }
6384 //for gen95/97
6385 else
6386 {
6387 if(params_info->ssds_xcap_error_info->error_info == CUSTOM_SSDS_XCAP_NW_ERROR_NW_NO_RESPONSE)
6388 {
6389 timer_id = DISABLE_UT_NW_NO_RESP_TIMER;
6390 }
6391 else
6392 {
6393 timer_id = DISABLE_UT_TIMER;
6394 }
6395 }
6396 if(KAL_TRUE == (custom_ssds_config_get_timer_value(timer_id, sim_id, &request_info, &request_action,cfg_type)))
6397 {
6398 *timer_value = request_action.timer_value * KAL_TICKS_1_SEC;
6399 kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Use NVRAM disable UT timer,timer value:%d",request_action.timer_value);
6400 }
6401
6402 return;
6403}
6404
6405void _custom_ssds_get_disable_ut_timer_value_from_common_file(module_type src_module,
6406 kal_uint32 *timer_value,
6407 custom_ssds_config_type cfg_type)
6408{
6409 sim_interface_enum sim_id;
6410 sim_id = l4c_gemini_get_actual_sim_id((sim_interface_enum)(src_module - MOD_SSDS));
6411
6412 custom_ssds_config_get_timer_value_from_common_file(sim_id,NVRAM_SSDS_DISABLE_UT_TIMER,timer_value,cfg_type);
6413}
6414
6415
6416kal_uint32 custom_ssds_get_disable_ut_timer_value(custom_ssds_params_info_struct *params_info)
6417{
6418 kal_uint32 timer_value;
6419
6420 /* Priority 5 :default config */
6421 custom_ssds_get_disable_ut_timer_value_default_config(params_info,&timer_value);
6422
6423 /* Priority 4 :mcf ota config */
6424 custom_ssds_get_disable_ut_timer_value_config_from_nvram(params_info,&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
6425 _custom_ssds_get_disable_ut_timer_value_from_common_file((params_info->ps_id+ MOD_SSDS),&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA);
6426
6427 /* Priority 3 :default OP config */
6428 timer_value = custom_ssds_get_disable_ut_timer_value_config(params_info,&timer_value);
6429
6430 /* Priority 2 :mcf ota by op config */
6431 custom_ssds_get_disable_ut_timer_value_config_from_nvram(params_info,&timer_value,CUSTOM_SSDS_CFG_TYPE_MCF_OTA_BY_OP);
6432 _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);
6433
6434 /* Priority 1 :nvram file- By ELT(Nvram editor) or Meta Tool */
6435 custom_ssds_get_disable_ut_timer_value_config_from_nvram(params_info,&timer_value,CUSTOM_SSDS_CFG_TYPE_NVRAM);
6436 _custom_ssds_get_disable_ut_timer_value_from_common_file((params_info->ps_id+ MOD_SSDS),&timer_value,CUSTOM_SSDS_CFG_TYPE_NVRAM);
6437
6438 return timer_value;
6439}
6440
6441/********new design end*************/
6442
6443kal_bool custom_only_ps_supported_atcmd( custom_ssds_params_info_struct *params_info,
6444 custom_ssds_path_type *atcmd_req_type)
6445
6446{
6447 if((params_info->atcmd_type== CUSTOM_SSDS_ATCMD_TYPE_SET_COLR) && (params_info->op_id == 1 || params_info->op_id == 2))
6448 {//special case for CMCC/CU
6449 *atcmd_req_type = custom_ssds_get_req_path(params_info);
6450 return KAL_TRUE;
6451 }
6452 return KAL_FALSE;
6453}
6454
6455kal_bool custom_only_cs_supported_atcmd(custom_ssds_params_info_struct *params_info,
6456 custom_ssds_path_type *atcmd_req_type)
6457{
6458 return KAL_FALSE;
6459}
6460
6461void custom_ssds_ussd_is_csfb_retry_allowed(custom_ssds_params_info_struct *params_info,kal_bool *is_ussd_csfb_retry_allowed)
6462{
6463 *is_ussd_csfb_retry_allowed = KAL_TRUE;
6464
6465 switch(params_info->op_id)
6466 {
6467 case 8:/*TMO-US */
6468 case 117:
6469 case 9:/* CT: only support CF and CW */
6470 case 304:/* CTMO: only support CF and CW --aomen*/
6471 *is_ussd_csfb_retry_allowed = KAL_FALSE;
6472 break;
6473 default:
6474 break;
6475 }
6476
6477 return;
6478}
6479
6480kal_bool custom_ssds_is_ussi_allowed_during_ims_call(custom_ssds_params_info_struct *params_info)
6481{
6482 kal_bool is_ussi_allowed_during_ims_call = KAL_TRUE;
6483 switch(params_info->op_id)
6484 {
6485 case 122:/*AIS-Thailand*/
6486 case 131:/*Truemove-Thailand */
6487 case 178:/*Smartfone-Cambodia */
6488 case 232:/*MOBITEL-Srilanka*/
6489 is_ussi_allowed_during_ims_call = KAL_FALSE;
6490 break;
6491 case 171: /* WOM */
6492 if(0 == strcmp(params_info->mcc, "732")) /* WOM-Colombia */
6493 {
6494 is_ussi_allowed_during_ims_call = KAL_FALSE;
6495 }
6496 break;
6497 default:
6498 break;
6499 }
6500 return is_ussi_allowed_during_ims_call;
6501}
6502
6503kal_bool custom_ssds_is_rat_mode_change_allowed(custom_ssds_params_info_struct *params_info)
6504{
6505 kal_bool is_rat_mode_change_allowed = KAL_FALSE;
6506
6507 if(params_info->nr_attached == KAL_TRUE)
6508 {
6509 switch(params_info->op_id)
6510 {
6511 case 6: /* Vodafone */
6512 if(0 == strcmp(params_info->mcc, "262")) /* Vodafone-Germany */
6513 {
6514 is_rat_mode_change_allowed = KAL_TRUE;
6515 }
6516 break;
6517 case 102: /* Smartone-HK */
6518 is_rat_mode_change_allowed = KAL_TRUE;
6519 break;
6520 case 103: /* Singtel */
6521 case 104:/* Starhub-Singapore */
6522 case 151: /* M1-Singapore */
6523 is_rat_mode_change_allowed = KAL_TRUE;
6524 break;
6525 default:
6526 break;
6527 }
6528 }
6529 kal_prompt_trace(MOD_SSDS+params_info->ps_id, "Is RAT mode change allowed:%d",is_rat_mode_change_allowed);
6530 return is_rat_mode_change_allowed;
6531}
6532
6533
6534kal_uint32 custom_ssds_get_rat_mode_change_timer_value(custom_ssds_rat_mode_change_timer_type timer_type)
6535{
6536 kal_uint32 timer_value = 0;
6537
6538 switch(timer_type)
6539 {
6540 case CUSTOM_SSDS_RAT_MODE_CHANGE_TIMER_TYPE_TRIGGER:
6541 timer_value = KAL_TICKS_1_SEC * 1;
6542 break;
6543 case CUSTOM_SSDS_RAT_MODE_CHANGE_TIMER_TYPE_WAIT:
6544 timer_value = KAL_TICKS_1_SEC * 2;
6545 break;
6546 case CUSTOM_SSDS_RAT_MODE_CHANGE_TIMER_TYPE_CS_REG:
6547 timer_value = KAL_TICKS_1_SEC * 9;
6548 break;
6549 default:
6550 break;
6551 }
6552 kal_prompt_trace(MOD_SSDS, "RAT mode timer value and type: %d/%d",timer_type,timer_value);
6553 return timer_value;
6554}