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