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