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