2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "ciss-converter.h"
19 static const sc_table_element_type sc_conversion_table_ss[] = {
20 {CISS_ENG_SC_CF, TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV, TAPI_SS_TYPE_FORWARDING},
21 {CISS_ENG_SC_CFC, TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV, TAPI_SS_TYPE_FORWARDING},
22 {CISS_ENG_SC_CFU, TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV, TAPI_SS_TYPE_FORWARDING},
23 {CISS_ENG_SC_CFB, TAPI_SS_FORWARD_WHEN_BUSY_EV, TAPI_SS_TYPE_FORWARDING},
24 {CISS_ENG_SC_CFNRY, TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV, TAPI_SS_TYPE_FORWARDING},
25 {CISS_ENG_SC_CFNRC, TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV, TAPI_SS_TYPE_FORWARDING},
26 {CISS_ENG_SC_CLIP, TAPI_SS_CLI_CLIP, TAPI_SS_TYPE_IDENTIFICATION},
27 {CISS_ENG_SC_CLIR, TAPI_SS_CLI_CLIR, TAPI_SS_TYPE_IDENTIFICATION},
28 {CISS_ENG_SC_COLP, TAPI_SS_CLI_COLP, TAPI_SS_TYPE_IDENTIFICATION},
29 {CISS_ENG_SC_COLR, TAPI_SS_CLI_COLR, TAPI_SS_TYPE_IDENTIFICATION},
30 {CISS_ENG_SC_CNAP, TAPI_SS_CLI_CNAP, TAPI_SS_TYPE_IDENTIFICATION},
31 {CISS_ENG_SC_CW, 0, TAPI_SS_TYPE_WAITING},
32 {CISS_ENG_SC_B, TAPI_CALL_BARRING_ALL, TAPI_SS_TYPE_BARRING},
33 {CISS_ENG_SC_OB, TAPI_CALL_BARRING_OUTGOING, TAPI_SS_TYPE_BARRING},
34 {CISS_ENG_SC_IB, TAPI_CALL_BARRING_INCOMING, TAPI_SS_TYPE_BARRING},
35 {CISS_ENG_SC_BAOC, TAPI_CALL_BARRING_ALL_OUTGOING_CALLS, TAPI_SS_TYPE_BARRING},
36 {CISS_ENG_SC_BOIC, TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL, TAPI_SS_TYPE_BARRING},
37 {CISS_ENG_SC_BOICEXHC, TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT, TAPI_SS_TYPE_BARRING},
38 {CISS_ENG_SC_BAIC, TAPI_CALL_BARRING_ALL_INCOMING_CALLS, TAPI_SS_TYPE_BARRING},
39 {CISS_ENG_SC_BICROAM, TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING, TAPI_SS_TYPE_BARRING}
42 /* table for conversion between local basic service group (BSG)
45 elements represent - local BSG value,
46 BSG code : basic service code (BS code) or
47 tele service code (TS code)
52 /* need to find mapping with the call type or forward type for call barring and call diverting else not required */
53 static const bsg_table_element_type bsg_conversion_table[MAX_BSG_ENTRY] = {
54 {CISS_ENG_BSG_ALL, 0, TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES},
55 {CISS_ENG_BSG_ALL_TS, TS_CODE, TAPI_SS_TS_ALL_TELESERVICES},
56 {CISS_ENG_BSG_TELEPHONY, TS_CODE, TAPI_SS_TS_ALL_SPEECH },
57 /* ALS_SUPPORT : added mapping for auxilliary telephony */
58 #ifdef FEATURE_SAMSUNG_ALS
59 {CISS_ENG_BSG_AUX_TELEPHONY, TS_CODE, TAPI_SS_TS_AUX_VOICE},
61 {CISS_ENG_BSG_ALL_DATA, TS_CODE, TAPI_SS_TS_ALL_DATA_TELESERVICES},
62 {CISS_ENG_BSG_FAX, TS_CODE, TAPI_SS_TS_FACS},
63 {CISS_ENG_BSG_SMS, TS_CODE, TAPI_SS_TS_SMS},
64 {CISS_ENG_BSG_ALL_TELE_EX_SMS, TS_CODE, TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS},
65 {CISS_ENG_BSG_PLMN_TELE_ALL, TS_CODE, TAPI_SS_TS_ALL_PLMN_SPEC_TELE },
66 {CISS_ENG_BSG_PLMN_TELE_1, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_1},
67 {CISS_ENG_BSG_PLMN_TELE_2, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_2},
68 {CISS_ENG_BSG_PLMN_TELE_3, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_3},
69 {CISS_ENG_BSG_PLMN_TELE_4, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_4},
70 {CISS_ENG_BSG_PLMN_TELE_5, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_5},
71 {CISS_ENG_BSG_PLMN_TELE_6, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_6},
72 {CISS_ENG_BSG_PLMN_TELE_7, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_7},
73 {CISS_ENG_BSG_PLMN_TELE_8, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_8},
74 {CISS_ENG_BSG_PLMN_TELE_9, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_9},
75 {CISS_ENG_BSG_PLMN_TELE_A, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_A},
76 {CISS_ENG_BSG_PLMN_TELE_B, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_B},
77 {CISS_ENG_BSG_PLMN_TELE_C, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_C},
78 {CISS_ENG_BSG_PLMN_TELE_D, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_D},
79 {CISS_ENG_BSG_PLMN_TELE_E, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_E},
80 {CISS_ENG_BSG_PLMN_TELE_F, TS_CODE, TAPI_SS_TS_PLMN_SPEC_TELE_F},
81 {CISS_ENG_BSG_ALL_BS, BS_CODE, TAPI_SS_BS_ALL_BEARER_SERVICES},
82 {CISS_ENG_BSG_ALL_ASYNC, BS_CODE, TAPI_SS_BS_ALL_ASYNCHRONOUS},
83 {CISS_ENG_BSG_ALL_SYNC, BS_CODE, TAPI_SS_BS_ALL_SYNCHRONOUS},
84 {CISS_ENG_BSG_ALL_DC_SYNC, BS_CODE, TAPI_SS_BS_DATA_CIRCUIT_SYNC},
85 {CISS_ENG_BSG_ALL_DC_ASYNC, BS_CODE, TAPI_SS_BS_DATA_CIRCUIT_ASYNC},
86 {CISS_ENG_BSG_ALL_DED_PACKET, BS_CODE, TAPI_SS_BS_DATA_ALL_PDS},
87 {CISS_ENG_BSG_ALL_DED_PAD, BS_CODE, TAPI_SS_BS_ALL_DATA_PADCA},
88 {CISS_ENG_BSG_PLMN_BEAR_ALL, BS_CODE, TAPI_SS_BS_ALL_PLMN_SPEC_BS},
89 {CISS_ENG_BSG_PLMN_BEAR_1, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_1},
90 {CISS_ENG_BSG_PLMN_BEAR_2, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_2},
91 {CISS_ENG_BSG_PLMN_BEAR_3, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_3},
92 {CISS_ENG_BSG_PLMN_BEAR_4, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_4},
93 {CISS_ENG_BSG_PLMN_BEAR_5, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_5},
94 {CISS_ENG_BSG_PLMN_BEAR_6, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_6},
95 {CISS_ENG_BSG_PLMN_BEAR_7, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_7},
96 {CISS_ENG_BSG_PLMN_BEAR_8, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_8},
97 {CISS_ENG_BSG_PLMN_BEAR_9, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_9},
98 {CISS_ENG_BSG_PLMN_BEAR_A, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_A},
99 {CISS_ENG_BSG_PLMN_BEAR_B, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_B},
100 {CISS_ENG_BSG_PLMN_BEAR_C, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_C},
101 {CISS_ENG_BSG_PLMN_BEAR_D, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_C},
102 {CISS_ENG_BSG_PLMN_BEAR_E, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_D},
103 {CISS_ENG_BSG_PLMN_BEAR_F, BS_CODE, TAPI_SS_BS_PLMN_SPEC_TELE_F}
106 int _ciss_convert_bsg_to_tapi_bsg(char *local_bsg, TelSsTeleService_t *tapi_bsg)
108 int valid_bsg = false;
111 int local_bsg_len =0;
113 local_bsg_len = strlen(local_bsg);
114 if (local_bsg_len > MAX_BSG_LEN)
117 DBG("\n [CISS-ENGINE] local_bsg : %s", local_bsg);
118 while (n < MAX_BSG_ENTRY) {
119 DBG("\n [CISS-ENGINE] n : %d", n);
120 if (!strncmp(bsg_conversion_table[n].local_bsg, local_bsg, MAX_SC_LEN)) {
121 DBG("\n [CISS-ENGINE] bsg_conversion_table[n].local_bsg : %s", bsg_conversion_table[n].local_bsg);
122 *tapi_bsg = bsg_conversion_table[n].tapi_bsg_code;
128 DBG("\n [CISS-ENGINE] end _ciss_convert_bsg_to_tapi_bsg()");
132 int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type)
134 int valid_sc = false;
137 DBG("\n [CISS-ENGINE] sc : %s", sc);
138 while (n < MAX_SC_ENTRY) {
139 if (!strncmp(sc_conversion_table_ss[n].local_sc, sc, MAX_SC_LEN)) {
140 DBG("\n [CISS-ENGINE] sc_conversion_table_ss[n].local_sc : %s", sc_conversion_table_ss[n].local_sc);
141 *tapi_flavor = sc_conversion_table_ss[n].tapi_flavor;
142 *ss_type = sc_conversion_table_ss[n].ss_type;
151 int _ciss_get_tapi_forward_type(TelSsTeleService_t TelecommSvc, TelSsForwardType_t *pForwardType)
153 switch (TelecommSvc) {
154 case TAPI_SS_TS_ALL_SPEECH:
155 *pForwardType = TAPI_CS_FORWARD_TYPE_VOICE_EV;
156 DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_SPEECH\n");
158 case TAPI_SS_TS_ALL_TELESERVICES:
159 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE;
160 DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_TELESERVICES\n");
162 case TAPI_SS_TS_FACS:
163 *pForwardType = TAPI_CS_FORWARD_TYPE_FAX_EV;
165 case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
166 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
168 case TAPI_SS_BS_ALL_ASYNCHRONOUS:
169 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_ASYNC_EV;
171 case TAPI_SS_BS_ALL_SYNCHRONOUS:
172 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
174 case TAPI_SS_BS_ALL_BEARER_SERVICES:
175 case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
176 *pForwardType = TAPI_CS_FORWARD_TYPE_DATA_EV;
177 DBG("\n [CISS-ENGINE] ********TAPI_SS_BS_DATA_CIRCUIT_SYNC\n");
180 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
183 DBG("\n [CISS-ENGINE] _ciss_get_tapi_forward_type:undefined =%d\n", TelecommSvc);
184 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
188 DBG("\n [CISS-ENGINE] TelecommSvc = %d, pForwardType= %d\n", TelecommSvc, *pForwardType);
192 int _ciss_get_tapi_call_type(TelSsTeleService_t TelecommSvc, TelSsCallType_t *pCallType)
194 switch (TelecommSvc) {
195 case TAPI_SS_TS_ALL_SPEECH: /* Voice */
196 *pCallType = TAPI_CALL_TYPE_VOICE_EV;
197 DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_SPEECH\n");
199 case TAPI_SS_TS_ALL_TELESERVICES:
200 *pCallType = TAPI_CALL_TYPE_ALL_TELE;
201 DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_TELESERVICES\n");
203 case TAPI_SS_TS_ALL_DATA_TELESERVICES: /* Data */
204 *pCallType = TAPI_CALL_TYPE_DATA_EV;
206 case TAPI_SS_TS_FACS: /* Fax */
207 *pCallType = TAPI_CALL_TYPE_FAX_EV;
210 case TAPI_SS_TS_SMS: /* SMS */
211 *pCallType = TAPI_CALL_TYPE_SHORT_MESS_EV;
213 case TAPI_SS_BS_ALL_ASYNCHRONOUS:
214 *pCallType = TAPI_CALL_TYPE_ALL_ASYNC_EV;
216 case TAPI_SS_BS_ALL_SYNCHRONOUS:
217 *pCallType = TAPI_CALL_TYPE_ALL_SYNC_EV;
219 case TAPI_SS_BS_ALL_BEARER_SERVICES: /* Video */
220 case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
221 *pCallType = TAPI_CALL_TYPE_DATA_CIRCUIT_SYNC_EV;
222 DBG("\n [CISS-ENGINE] ********TAPI_SS_BS_DATA_CIRCUIT_SYNC\n");
224 case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES: /* ALL */
225 *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
228 DBG("\n [CISS-ENGINE] _ciss_get_tapi_call_type:undefined =%d\n", TelecommSvc);
229 *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
235 int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err)
237 DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:defined =%x\n", tapi_err);
239 case TAPI_SS_UNKNOWNSUBSCRIBER:
240 *ciss_err = CISS_ERR_UNKNOWN_SUBSCRIBER;
242 case TAPI_SS_BEARERSERVICENOTPROVISIONED:
243 *ciss_err = CISS_ERR_BEARER_NOT_PROVISIONED;
245 case TAPI_SS_TELESERVICENOTPROVISIONED:
246 *ciss_err = CISS_ERR_TELESERVICE_NOT_PROVISIONED;
248 case TAPI_SS_CALLBARRED:
249 *ciss_err = CISS_ERR_CALL_BARRED;
251 case TAPI_SS_ILLEGALSSOPERATION:
252 *ciss_err = CISS_ERR_ILLEGAL_SS_OPER;
254 case TAPI_SS_ERRORSTATUS:
255 *ciss_err = CISS_ERR_ERR_STATUS;
257 case TAPI_SS_NOTAVAILABLE:
258 *ciss_err = CISS_ERR_NOT_AVAIL;
260 case TAPI_SS_SUBSCRIPTIONVIOLATION:
261 *ciss_err = CISS_ERR_SUBSCRIPTION_VIOLATION;
263 case TAPI_SS_INCOMPATIBILITY:
264 *ciss_err = CISS_ERR_INCOMPATIBILITY;
266 case TAPI_SS_FACILITYNOTSUPPORTED:
267 *ciss_err = CISS_ERR_FACILITY_NOT_SUPPORT;
269 case TAPI_SS_SYSTEMFAILURE:
270 *ciss_err = CISS_ERR_SYS_FAILURE;
272 case TAPI_SS_DATAMISSING:
273 *ciss_err = CISS_ERR_DATA_MISSING;
275 case TAPI_SS_UNEXPECTEDDATAVALUE:
276 *ciss_err = CISS_ERR_UNEXPECTED_DATA;
278 case TAPI_SS_MAXNOMPTYEXCEEDED:
279 *ciss_err = CISS_ERR_MPTY_PARTICIPANTS_EXCEED;
281 case TAPI_SS_RESOURCESNOTAVAILABLE:
282 *ciss_err = CISS_ERR_RESOURCE_NOT_AVAIL;
284 case TAPI_SS_PWREGISTRATIONFAILURE:
285 *ciss_err = CISS_ERR_PW_REGIST_FAIL;
287 case TAPI_SS_NEGATIVEPWCHECK:
288 *ciss_err = CISS_ERR_NEGATIVE_PW_CHECK;
290 case TAPI_SS_NUMBEROFPWATTEMPTSVIOLATION:
291 *ciss_err = CISS_ERR_PW_ATTEMPS_VIOLATION;
294 DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:undefined =%x\n", tapi_err);
295 *ciss_err = CISS_ERR_UNKNOWN;
301 int _ciss_get_tapi_ussd_resp_type(ciss_ussd_response_type_t resp_type, TelSsUssdRespType_t *pTapiRespType)
303 DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:defined =%d\n", resp_type);
305 case CISS_USSD_RES_UNKNOWN_ALPHABET:
306 *pTapiRespType = TAPI_USSD_RES_UNKNOWN_ALPHABET;
308 case CISS_USSD_RES_DISPL_BUSY:
309 *pTapiRespType = TAPI_USSD_RES_DISPL_BUSY;
311 case CISS_USSD_RES_OK:
312 *pTapiRespType = TAPI_USSD_RES_OK;
314 case CISS_USSD_RES_NONE:
315 *pTapiRespType = TAPI_USSD_RES_NONE;
318 DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:undefined =%d\n", resp_type);
324 int _ciss_get_tapi_ussd_ind_type(ciss_ussd_ind_type_t ind_type, TelSsUssdIndType_t *pTapiIndType)
326 DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:defined =%d\n", ind_type);
328 case CISS_USSD_NOTIFY:
329 *pTapiIndType = TAPI_USSD_IND_NOTIFY;
331 case CISS_USSD_IND_NO_ACTION_REQUIRE:
332 *pTapiIndType = TAPI_USSD_IND_NO_ACTION_REQUIRE;
334 case CISS_USSD_IND_ACTION_REQUIRE:
335 *pTapiIndType = TAPI_USSD_IND_ACTION_REQUIRE;
337 case CISS_USSD_TERMINATED_BY_NET:
338 *pTapiIndType = TAPI_USSD_IND_TERMINATED_BY_NET;
340 case CISS_USSD_OTHER_CLIENT:
341 *pTapiIndType = TAPI_USSD_IND_OTHER_CLIENT;
343 case CISS_USSD_NOT_SUPPORT:
344 *pTapiIndType = TAPI_USSD_IND_NOT_SUPPORT;
346 case CISS_USSD_TIME_OUT:
347 *pTapiIndType = TAPI_USSD_IND_TIME_OUT;
350 DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:undefined =%d\n", ind_type);
356 int _ciss_get_telecomm_svc(TelSsTeleService_t in_teleservice, ciss_telecomm_svc_t *out_teleservice)
358 switch (in_teleservice) {
360 case TAPI_SS_TS_ALL_SPEECH:
361 *out_teleservice = CISS_TELECOMM_SVC_VOICE;
363 case TAPI_SS_TS_AUX_VOICE:
364 *out_teleservice = CISS_TELECOMM_SVC_AUX_VOICE:
367 case TAPI_SS_TS_ALL_SPEECH:
368 *out_teleservice = CISS_TELECOMM_SVC_VOICE;
372 case TAPI_SS_TS_FACS:
373 *out_teleservice = CISS_TELECOMM_SVC_FAX;
376 *out_teleservice = CISS_TELECOMM_SVC_SMS;
378 case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
379 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_SYNC;
381 case TAPI_SS_ALL_TELE_BEARER:
382 case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
383 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_BEARER;
385 case TAPI_SS_TS_ALL_TELESERVICES:
386 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE;
388 case TAPI_SS_TS_ALL_DATA_TELESERVICES:
389 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_TELE;
391 case TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS:
392 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS;
394 case TAPI_SS_TS_ALL_PLMN_SPEC_TELE:
395 *out_teleservice = CISS_TELECOMM_SVC_PLMN_TELE_ALL;
397 case TAPI_SS_BS_ALL_BEARER_SERVICES:
398 *out_teleservice = CISS_TELECOMM_SVC_ALL_BEARER;
400 case TAPI_SS_BS_ALL_DATA_CDA:
401 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_CDA;
403 case TAPI_SS_BS_ALL_SYNCHRONOUS:
404 *out_teleservice = CISS_TELECOMM_SVC_ALL_SYNC;
406 case TAPI_SS_BS_ALL_ASYNCHRONOUS:
407 *out_teleservice = CISS_TELECOMM_SVC_ALL_ASYNC;
409 case TAPI_SS_BS_ALL_DATA_PADCA:
410 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PAD;
412 case TAPI_SS_BS_ALL_PLMN_SPEC_BS:
413 *out_teleservice = CISS_TELECOMM_SVC_PLMN_BEAR_ALL;
415 case TAPI_SS_BS_DATA_CIRCUIT_ASYNC:
416 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_ASYNC;
418 case TAPI_SS_BS_DATA_ALL_PDS:
419 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PS;
421 case TAPI_SS_TS_NONE:
423 *out_teleservice = CISS_TELECOMM_SVC_NONE;
424 DBG("\n [CISS-ENGINE] _ciss_get_telecomm_svc: ERROR Wrong Bearer = %d come. \n", in_teleservice);
430 int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor)
433 case TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV:
434 *out_flavor = CISS_FLAVOR_DIVERT_UNCONDITIONAL;
436 case TAPI_SS_FORWARD_WHEN_BUSY_EV:
437 *out_flavor = CISS_FLAVOR_DIVERT_BUSY;
439 case TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV:
440 *out_flavor = CISS_FLAVOR_DIVERT_NOREPLY;
442 case TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV:
443 *out_flavor = CISS_FLAVOR_DIVERT_UNREACHABLE;
445 case TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV:
446 *out_flavor = CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS;
448 case TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV:
449 *out_flavor = CISS_FLAVOR_DIVERT_ALL_FLAVORS;
452 *out_flavor = CISS_FLAVOR_NONE;
453 DBG("\n [CISS-ENGINE] _ciss_get_forward_flavor_type: ERROR Wrong Flavor = %d come. \n", in_flavor);
459 int _ciss_get_barring_flavor_type(TelSsCallBarType_t in_flavor, ciss_flavor_t *out_flavor)
462 case TAPI_CALL_BARRING_ALL:
463 *out_flavor = CISS_FLAVOR_BARRING_ALL_FLAVORS;
465 case TAPI_CALL_BARRING_ALL_OUTGOING_CALLS:
466 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
468 case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL:
469 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL;
471 case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT:
472 *out_flavor = CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME;
474 case TAPI_CALL_BARRING_ALL_INCOMING_CALLS:
475 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
477 case TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING:
478 *out_flavor = CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING;
480 case TAPI_CALL_BARRING_OUTGOING:
481 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
483 case TAPI_CALL_BARRING_INCOMING:
484 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
487 *out_flavor = CISS_FLAVOR_NONE;
488 DBG("\n [CISS-ENGINE] _ciss_get_barring_flavor_type: ERROR Wrong Flavor = %d come. \n", in_flavor);
494 int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status)
497 case TAPI_SS_STATUS_ACTIVE:
498 *out_status = CISS_STATUS_ACTIVE;
500 case TAPI_SS_STATUS_REGISTERED:
501 *out_status = CISS_STATUS_REGISTERED;
503 case TAPI_SS_STATUS_PROVISIONED:
504 *out_status = CISS_STATUS_PROVISIONED;
506 case TAPI_SS_STATUS_QUIESCENT:
507 *out_status = CISS_STATUS_QUIESCENT;
509 case TAPI_SS_STATUS_NOTHING:
510 *out_status = CISS_STATUS_NOTHING;
513 *out_status = CISS_STATUS_NOTHING;
514 DBG("\n [CISS-ENGINE] _ciss_get_result_status_type: ERROR Wrong TelSsStatus_t = %d come. \n", in_status);
520 int _ciss_get_requested_tapi_ussd_ind_type(ciss_ussd_ind_type_t *ind_type, TelSsUssdIndType_t pTapiIndType)
522 DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:defined =%d\n", pTapiIndType);
523 switch (pTapiIndType) {
524 case TAPI_USSD_IND_NOTIFY:
525 *ind_type = CISS_USSD_NOTIFY;
527 case TAPI_USSD_IND_NO_ACTION_REQUIRE:
528 *ind_type = CISS_USSD_IND_NO_ACTION_REQUIRE;
530 case TAPI_USSD_IND_ACTION_REQUIRE:
531 *ind_type = CISS_USSD_IND_ACTION_REQUIRE;
533 case TAPI_USSD_IND_TERMINATED_BY_NET:
534 *ind_type = CISS_USSD_TERMINATED_BY_NET;
536 case TAPI_USSD_IND_OTHER_CLIENT:
537 *ind_type = CISS_USSD_OTHER_CLIENT;
539 case TAPI_USSD_IND_NOT_SUPPORT:
540 *ind_type = CISS_USSD_NOT_SUPPORT;
542 case TAPI_USSD_IND_TIME_OUT:
543 *ind_type = CISS_USSD_TIME_OUT;
546 DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:undefined =%d\n", pTapiIndType);
552 void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name)
554 switch (in_service) {
555 case CISS_SERVICE_DIVERTING:
556 strncpy(service_name, CISS_STR_CALL_DIVERTING, CISS_TEXT_LEN_MAX - 1);
558 case CISS_SERVICE_BARRING:
559 strncpy(service_name, CISS_STR_CALL_BARRING, CISS_TEXT_LEN_MAX - 1);
561 case CISS_SERVICE_WAITING:
562 strncpy(service_name, CISS_STR_CALL_WAITING, CISS_TEXT_LEN_MAX - 1);
564 case CISS_SERVICE_CHANGE_BARRING_PASSWD:
565 strncpy(service_name, CISS_STR_CHANGE_PASSWORD, CISS_TEXT_LEN_MAX - 1);
567 case CISS_SERVICE_USSD:
568 strncpy(service_name, CISS_STR_INFORMATION, CISS_TEXT_LEN_MAX - 1);
570 case CISS_SERVICE_IDENTIFICATION:
572 strncpy(service_name, "", CISS_TEXT_LEN_MAX - 1);
575 service_name[CISS_TEXT_LEN_MAX - 1] = '\0';
578 void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name)
581 case CISS_FLAVOR_DIVERT_UNCONDITIONAL:
582 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_ALWAYS, CISS_TEXT_LEN_MAX - 1);
584 case CISS_FLAVOR_DIVERT_BUSY:
585 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY, CISS_TEXT_LEN_MAX - 1);
587 case CISS_FLAVOR_DIVERT_NOREPLY:
588 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY, CISS_TEXT_LEN_MAX - 1);
590 case CISS_FLAVOR_DIVERT_UNREACHABLE:
591 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_UNREACHABLE, CISS_TEXT_LEN_MAX - 1);
593 case CISS_FLAVOR_DIVERT_ALL_FLAVORS:
594 strncpy(flavor_name, CISS_STR_ALL_CALLS, CISS_TEXT_LEN_MAX - 1);
596 case CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS:
597 strncpy(flavor_name, CISS_STR_CONDITIONAL, CISS_TEXT_LEN_MAX - 1);
599 case CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS:
600 strncpy(flavor_name, CISS_STR_ALL_OUTGOING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
602 case CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL:
603 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
605 case CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME:
606 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED, CISS_TEXT_LEN_MAX - 1);
608 case CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS:
609 strncpy(flavor_name, CISS_STR_ALL_INCOMING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
611 case CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING:
612 strncpy(flavor_name, CISS_STR_INCOMING_CALLS_BARRED_WHEN_ROAMING, CISS_TEXT_LEN_MAX - 1);
614 case CISS_FLAVOR_BARRING_ALL_FLAVORS:
615 strncpy(flavor_name, CISS_STR_ALL_BARRING, CISS_TEXT_LEN_MAX - 1);
617 case CISS_FLAVOR_BARRING_OUTGOING:
618 strncpy(flavor_name, CISS_STR_OUTGOING_BARRING, CISS_TEXT_LEN_MAX - 1);
620 case CISS_FLAVOR_BARRING_INCOMING:
621 strncpy(flavor_name, CISS_STR_INCOMING_BARRING, CISS_TEXT_LEN_MAX - 1);
624 strncpy(flavor_name, "", CISS_TEXT_LEN_MAX - 1);
626 flavor_name[CISS_TEXT_LEN_MAX - 1] = '\0';
629 void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name)
631 DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: in_teleservice = %d come. \n", in_teleservice);
633 switch (in_teleservice) {
635 case CISS_TELECOMM_SVC_VOICE:
636 if (PshCphsCheckCsp(PSH_CPHS_CSP_ALS))
637 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
639 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
641 case CISS_TELECOMM_SVC_PLMN_TELE_1:
642 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
645 case CISS_TELECOMM_SVC_VOICE:
646 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
649 case CISS_TELECOMM_SVC_FAX:
650 strncpy(teleservice_name, CISS_STR_FAX, CISS_TEXT_LEN_MAX - 1);
652 case CISS_TELECOMM_SVC_ALL_CS_SYNC:
653 strncpy(teleservice_name, CISS_STR_VIDEO, CISS_TEXT_LEN_MAX - 1);
655 case CISS_TELECOMM_SVC_ALL_TELE_BEARER:
656 strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
658 case CISS_TELECOMM_SVC_ALL_TELE:
659 strncpy(teleservice_name, CISS_STR_ALL_TELECOM_SERVICES, CISS_TEXT_LEN_MAX - 1);
661 case CISS_TELECOMM_SVC_ALL_DATA_TELE:
662 strncpy(teleservice_name, CISS_STR_ALL_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
664 case CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS:
665 strncpy(teleservice_name, CISS_STR_FOR_ALL_TELE_SERVICES_EXCEPT_SMS, CISS_TEXT_LEN_MAX - 1);
667 case CISS_TELECOMM_SVC_PLMN_TELE_ALL:
668 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
670 case CISS_TELECOMM_SVC_ALL_BEARER:
671 strncpy(teleservice_name, CISS_STR_ALL_BEARER_SERVICES, CISS_TEXT_LEN_MAX - 1);
673 case CISS_TELECOMM_SVC_ALL_DATA_CDA:
674 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
676 case CISS_TELECOMM_SVC_ALL_SYNC:
677 strncpy(teleservice_name, CISS_STR_ALL_SYNCHRONOUS_SERVICES, CISS_TEXT_LEN_MAX - 1);
679 #ifdef _SHP_OPERATOR_VODAFONE
680 case CISS_TELECOMM_SVC_ALL_ASYNC:
681 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
684 case CISS_TELECOMM_SVC_ALL_ASYNC:
685 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
688 case CISS_TELECOMM_SVC_ALL_DEDI_PAD:
689 strncpy(teleservice_name, CISS_STR_ALL_PADCA_SERVICES, CISS_TEXT_LEN_MAX - 1);
691 case CISS_TELECOMM_SVC_PLMN_BEAR_ALL:
692 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
694 case CISS_TELECOMM_SVC_SMS:
695 strncpy(teleservice_name, CISS_STR_SMS, CISS_TEXT_LEN_MAX - 1);
697 case CISS_TELECOMM_SVC_ALL_CS_ASYNC:
698 strncpy(teleservice_name, CISS_STR_ASYNCHRONOUS_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
700 case CISS_TELECOMM_SVC_ALL_DEDI_PS:
701 strncpy(teleservice_name, CISS_STR_ALL_PDS_SERVICES, CISS_TEXT_LEN_MAX - 1);
703 case CISS_TELECOMM_SVC_NONE:
705 DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: ERROR Wrong Bearer = %d come. \n", in_teleservice);
706 if ((ss_type == CISS_SERVICE_WAITING) ||
707 (ss_type == CISS_SERVICE_IDENTIFICATION))
708 strncpy(teleservice_name, "", CISS_TEXT_LEN_MAX - 1);
710 strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
712 teleservice_name[CISS_TEXT_LEN_MAX - 1] = '\0';
715 void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult)
717 if (ss_type == CISS_SERVICE_DIVERTING) {
718 switch (result_status) {
719 case CISS_STATUS_ACTIVE:
720 strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
723 case CISS_STATUS_REGISTERED:
724 case CISS_STATUS_PROVISIONED:
725 case CISS_STATUS_QUIESCENT:
726 case CISS_STATUS_NOTHING:
728 strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
732 /* Wating or Barring case only have Act / Deact status */
733 switch (result_status) {
734 case CISS_STATUS_ACTIVE:
735 case CISS_STATUS_REGISTERED:
736 strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
739 case CISS_STATUS_PROVISIONED:
740 case CISS_STATUS_QUIESCENT:
741 case CISS_STATUS_NOTHING:
743 strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
747 szResult[CISS_TEXT_LEN_MAX - 1] = '\0';