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