1e63ab86945c28b165e07a15f4bff16d1c839ead
[apps/core/preloaded/ciss.git] / src / ciss-converter.c
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  * 
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
7  * 
8  *     http://www.tizenopensource.org/license
9  * 
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.
15  */
16
17 #include "ciss-converter.h"
18
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}
40 };
41
42 /* table for conversion between local basic service group (BSG)
43    and tapi BSG.
44
45         elements represent - local BSG value,
46         BSG code : basic service code (BS code) or
47         tele  service code (TS code)
48         tapi BSG value
49
50 */
51
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},
60 #endif
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}
104 };
105
106 int _ciss_convert_bsg_to_tapi_bsg(char *local_bsg, TelSsTeleService_t *tapi_bsg)
107 {
108         int valid_bsg = false;
109
110         int n = 0;
111         int local_bsg_len =0;
112
113         local_bsg_len = strlen(local_bsg);
114         if (local_bsg_len > MAX_BSG_LEN)
115                 return false;
116
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;
123                         valid_bsg = TRUE;
124                         break;
125                 }
126                 n++;
127         }
128         DBG("\n [CISS-ENGINE] end _ciss_convert_bsg_to_tapi_bsg()");
129         return(valid_bsg);
130 }
131
132 int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type)
133 {
134         int valid_sc = false;
135
136         int n = 0;
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;
143                         valid_sc = TRUE;
144                         break;
145                 }
146                 n++;
147         }
148         return(valid_sc);
149 }
150
151 int _ciss_get_tapi_forward_type(TelSsTeleService_t TelecommSvc, TelSsForwardType_t *pForwardType)
152 {
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");
157                 break;
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");
161                 break;
162         case TAPI_SS_TS_FACS:
163                 *pForwardType = TAPI_CS_FORWARD_TYPE_FAX_EV;
164                 break;
165         case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
166                 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
167                 break;
168         case TAPI_SS_BS_ALL_ASYNCHRONOUS:
169                 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_ASYNC_EV;
170                 break;
171         case TAPI_SS_BS_ALL_SYNCHRONOUS:
172                 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
173                 break;
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");
178                 break;
179         case TAPI_SS_TS_SMS:
180                 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
181                 break;
182         default:
183                 DBG("\n [CISS-ENGINE] _ciss_get_tapi_forward_type:undefined =%d\n", TelecommSvc);
184                 *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
185                 break;
186         }
187
188         DBG("\n [CISS-ENGINE] TelecommSvc = %d, pForwardType= %d\n", TelecommSvc, *pForwardType);
189         return TRUE;
190 }
191
192 int _ciss_get_tapi_call_type(TelSsTeleService_t TelecommSvc, TelSsCallType_t *pCallType)
193 {
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");
198                 break;
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");
202                 break;
203         case TAPI_SS_TS_ALL_DATA_TELESERVICES:  /* Data */
204                 *pCallType = TAPI_CALL_TYPE_DATA_EV;
205                 break;
206         case TAPI_SS_TS_FACS:   /* Fax */
207                 *pCallType = TAPI_CALL_TYPE_FAX_EV;
208                 break;
209
210         case TAPI_SS_TS_SMS:    /* SMS */
211                 *pCallType = TAPI_CALL_TYPE_SHORT_MESS_EV;
212                 break;
213         case TAPI_SS_BS_ALL_ASYNCHRONOUS:
214                 *pCallType = TAPI_CALL_TYPE_ALL_ASYNC_EV;
215                 break;
216         case TAPI_SS_BS_ALL_SYNCHRONOUS:
217                 *pCallType = TAPI_CALL_TYPE_ALL_SYNC_EV;
218                 break;
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");
223                 break;
224         case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:   /* ALL */
225                 *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
226                 break;
227         default:
228                 DBG("\n [CISS-ENGINE] _ciss_get_tapi_call_type:undefined =%d\n", TelecommSvc);
229                 *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
230                 break;
231         }
232         return TRUE;
233 }
234
235 int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err)
236 {
237         DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:defined =%x\n", tapi_err);
238         switch (tapi_err) {
239         case TAPI_SS_UNKNOWNSUBSCRIBER:
240                 *ciss_err = CISS_ERR_UNKNOWN_SUBSCRIBER;
241                 break;
242         case TAPI_SS_BEARERSERVICENOTPROVISIONED:
243                 *ciss_err = CISS_ERR_BEARER_NOT_PROVISIONED;
244                 break;
245         case TAPI_SS_TELESERVICENOTPROVISIONED:
246                 *ciss_err = CISS_ERR_TELESERVICE_NOT_PROVISIONED;
247                 break;
248         case TAPI_SS_CALLBARRED:
249                 *ciss_err = CISS_ERR_CALL_BARRED;
250                 break;
251         case TAPI_SS_ILLEGALSSOPERATION:
252                 *ciss_err = CISS_ERR_ILLEGAL_SS_OPER;
253                 break;
254         case TAPI_SS_ERRORSTATUS:
255                 *ciss_err = CISS_ERR_ERR_STATUS;
256                 break;
257         case TAPI_SS_NOTAVAILABLE:
258                 *ciss_err = CISS_ERR_NOT_AVAIL;
259                 break;
260         case TAPI_SS_SUBSCRIPTIONVIOLATION:
261                 *ciss_err = CISS_ERR_SUBSCRIPTION_VIOLATION;
262                 break;
263         case TAPI_SS_INCOMPATIBILITY:
264                 *ciss_err = CISS_ERR_INCOMPATIBILITY;
265                 break;
266         case TAPI_SS_FACILITYNOTSUPPORTED:
267                 *ciss_err = CISS_ERR_FACILITY_NOT_SUPPORT;
268                 break;
269         case TAPI_SS_SYSTEMFAILURE:
270                 *ciss_err = CISS_ERR_SYS_FAILURE;
271                 break;
272         case TAPI_SS_DATAMISSING:
273                 *ciss_err = CISS_ERR_DATA_MISSING;
274                 break;
275         case TAPI_SS_UNEXPECTEDDATAVALUE:
276                 *ciss_err = CISS_ERR_UNEXPECTED_DATA;
277                 break;
278         case TAPI_SS_MAXNOMPTYEXCEEDED:
279                 *ciss_err = CISS_ERR_MPTY_PARTICIPANTS_EXCEED;
280                 break;
281         case TAPI_SS_RESOURCESNOTAVAILABLE:
282                 *ciss_err = CISS_ERR_RESOURCE_NOT_AVAIL;
283                 break;
284         case TAPI_SS_PWREGISTRATIONFAILURE:
285                 *ciss_err = CISS_ERR_PW_REGIST_FAIL;
286                 break;
287         case TAPI_SS_NEGATIVEPWCHECK:
288                 *ciss_err = CISS_ERR_NEGATIVE_PW_CHECK;
289                 break;
290         case TAPI_SS_NUMBEROFPWATTEMPTSVIOLATION:
291                 *ciss_err = CISS_ERR_PW_ATTEMPS_VIOLATION;
292                 break;
293         default:
294                 DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:undefined =%x\n", tapi_err);
295                 *ciss_err = CISS_ERR_UNKNOWN;
296                 break;
297         }
298         return TRUE;
299 }
300
301 int _ciss_get_tapi_ussd_resp_type(ciss_ussd_response_type_t resp_type, TelSsUssdRespType_t *pTapiRespType)
302 {
303         DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:defined =%d\n", resp_type);
304         switch (resp_type) {
305         case CISS_USSD_RES_UNKNOWN_ALPHABET:
306                 *pTapiRespType = TAPI_USSD_RES_UNKNOWN_ALPHABET;
307                 break;
308         case CISS_USSD_RES_DISPL_BUSY:
309                 *pTapiRespType = TAPI_USSD_RES_DISPL_BUSY;
310                 break;
311         case CISS_USSD_RES_OK:
312                 *pTapiRespType = TAPI_USSD_RES_OK;
313                 break;
314         case CISS_USSD_RES_NONE:
315                 *pTapiRespType = TAPI_USSD_RES_NONE;
316                 break;
317         default:
318                 DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:undefined =%d\n", resp_type);
319                 break;
320         }
321         return TRUE;
322 }
323
324 int _ciss_get_tapi_ussd_ind_type(ciss_ussd_ind_type_t ind_type, TelSsUssdIndType_t *pTapiIndType)
325 {
326         DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:defined =%d\n", ind_type);
327         switch (ind_type) {
328         case CISS_USSD_NOTIFY:
329                 *pTapiIndType = TAPI_USSD_IND_NOTIFY;
330                 break;
331         case CISS_USSD_IND_NO_ACTION_REQUIRE:
332                 *pTapiIndType = TAPI_USSD_IND_NO_ACTION_REQUIRE;
333                 break;
334         case CISS_USSD_IND_ACTION_REQUIRE:
335                 *pTapiIndType = TAPI_USSD_IND_ACTION_REQUIRE;
336                 break;
337         case CISS_USSD_TERMINATED_BY_NET:
338                 *pTapiIndType = TAPI_USSD_IND_TERMINATED_BY_NET;
339                 break;
340         case CISS_USSD_OTHER_CLIENT:
341                 *pTapiIndType = TAPI_USSD_IND_OTHER_CLIENT;
342                 break;
343         case CISS_USSD_NOT_SUPPORT:
344                 *pTapiIndType = TAPI_USSD_IND_NOT_SUPPORT;
345                 break;
346         case CISS_USSD_TIME_OUT:
347                 *pTapiIndType = TAPI_USSD_IND_TIME_OUT;
348                 break;
349         default:
350                 DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:undefined =%d\n", ind_type);
351                 break;
352         }
353         return TRUE;
354 }
355
356 int _ciss_get_telecomm_svc(TelSsTeleService_t in_teleservice, ciss_telecomm_svc_t *out_teleservice)
357 {
358         switch (in_teleservice) {
359 #ifdef _SHP_CPHS
360         case TAPI_SS_TS_ALL_SPEECH:
361                 *out_teleservice = CISS_TELECOMM_SVC_VOICE;
362                 break;
363         case TAPI_SS_TS_AUX_VOICE:
364                  *out_teleservice = CISS_TELECOMM_SVC_AUX_VOICE:
365                 break;
366 #else
367         case TAPI_SS_TS_ALL_SPEECH:
368                 *out_teleservice = CISS_TELECOMM_SVC_VOICE;
369                 break;
370 #endif
371
372         case TAPI_SS_TS_FACS:
373                 *out_teleservice = CISS_TELECOMM_SVC_FAX;
374                 break;
375         case TAPI_SS_TS_SMS:
376                 *out_teleservice = CISS_TELECOMM_SVC_SMS;
377                 break;
378         case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
379                 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_SYNC;
380                 break;
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;
384                 break;
385         case TAPI_SS_TS_ALL_TELESERVICES:
386                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE;
387                 break;
388         case TAPI_SS_TS_ALL_DATA_TELESERVICES:
389                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_TELE;
390                 break;
391         case TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS:
392                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS;
393                 break;
394         case TAPI_SS_TS_ALL_PLMN_SPEC_TELE:
395                 *out_teleservice = CISS_TELECOMM_SVC_PLMN_TELE_ALL;
396                 break;
397         case TAPI_SS_BS_ALL_BEARER_SERVICES:
398                 *out_teleservice = CISS_TELECOMM_SVC_ALL_BEARER;
399                 break;
400         case TAPI_SS_BS_ALL_DATA_CDA:
401                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_CDA;
402                 break;
403         case TAPI_SS_BS_ALL_SYNCHRONOUS:
404                 *out_teleservice = CISS_TELECOMM_SVC_ALL_SYNC;
405                 break;
406         case TAPI_SS_BS_ALL_ASYNCHRONOUS:
407                 *out_teleservice = CISS_TELECOMM_SVC_ALL_ASYNC;
408                 break;
409         case TAPI_SS_BS_ALL_DATA_PADCA:
410                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PAD;
411                 break;
412         case TAPI_SS_BS_ALL_PLMN_SPEC_BS:
413                 *out_teleservice = CISS_TELECOMM_SVC_PLMN_BEAR_ALL;
414                 break;
415         case TAPI_SS_BS_DATA_CIRCUIT_ASYNC:
416                 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_ASYNC;
417                 break;
418         case TAPI_SS_BS_DATA_ALL_PDS:
419                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PS;
420                 break;
421         case TAPI_SS_TS_NONE:
422         default:
423                 *out_teleservice = CISS_TELECOMM_SVC_NONE;
424                 DBG("\n [CISS-ENGINE] _ciss_get_telecomm_svc: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
425                 break;
426         }
427         return TRUE;
428 }
429
430 int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor)
431 {
432         switch (in_flavor) {
433         case TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV:
434                 *out_flavor = CISS_FLAVOR_DIVERT_UNCONDITIONAL;
435                 break;
436         case TAPI_SS_FORWARD_WHEN_BUSY_EV:
437                 *out_flavor = CISS_FLAVOR_DIVERT_BUSY;
438                 break;
439         case TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV:
440                 *out_flavor = CISS_FLAVOR_DIVERT_NOREPLY;
441                 break;
442         case TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV:
443                 *out_flavor = CISS_FLAVOR_DIVERT_UNREACHABLE;
444                 break;
445         case TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV:
446                 *out_flavor = CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS;
447                 break;
448         case TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV:
449                 *out_flavor = CISS_FLAVOR_DIVERT_ALL_FLAVORS;
450                 break;
451         default:
452                 *out_flavor = CISS_FLAVOR_NONE;
453                 DBG("\n [CISS-ENGINE] _ciss_get_forward_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
454                 break;
455         }
456         return TRUE;
457 }
458
459 int _ciss_get_barring_flavor_type(TelSsCallBarType_t in_flavor, ciss_flavor_t *out_flavor)
460 {
461         switch (in_flavor) {
462         case TAPI_CALL_BARRING_ALL:
463                 *out_flavor = CISS_FLAVOR_BARRING_ALL_FLAVORS;
464                 break;
465         case TAPI_CALL_BARRING_ALL_OUTGOING_CALLS:
466                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
467                 break;
468         case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL:
469                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL;
470                 break;
471         case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT:
472                 *out_flavor = CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME;
473                 break;
474         case TAPI_CALL_BARRING_ALL_INCOMING_CALLS:
475                 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
476                 break;
477         case TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING:
478                 *out_flavor = CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING;
479                 break;
480         case TAPI_CALL_BARRING_OUTGOING:
481                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
482                 break;
483         case TAPI_CALL_BARRING_INCOMING:
484                 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
485                 break;
486         default:
487                 *out_flavor = CISS_FLAVOR_NONE;
488                 DBG("\n [CISS-ENGINE] _ciss_get_barring_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
489                 break;
490         }
491         return TRUE;
492 }
493
494 int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status)
495 {
496         switch (in_status) {
497         case TAPI_SS_STATUS_ACTIVE:
498                 *out_status = CISS_STATUS_ACTIVE;
499                 break;
500         case TAPI_SS_STATUS_REGISTERED:
501                 *out_status = CISS_STATUS_REGISTERED;
502                 break;
503         case TAPI_SS_STATUS_PROVISIONED:
504                 *out_status = CISS_STATUS_PROVISIONED;
505                 break;
506         case TAPI_SS_STATUS_QUIESCENT:
507                 *out_status = CISS_STATUS_QUIESCENT;
508                 break;
509         case TAPI_SS_STATUS_NOTHING:
510                 *out_status = CISS_STATUS_NOTHING;
511                 break;
512         default:
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);
515                 break;
516         }
517         return TRUE;
518 }
519
520 int _ciss_get_requested_tapi_ussd_ind_type(ciss_ussd_ind_type_t *ind_type, TelSsUssdIndType_t pTapiIndType)
521 {
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;
526                 break;
527         case TAPI_USSD_IND_NO_ACTION_REQUIRE:
528                 *ind_type = CISS_USSD_IND_NO_ACTION_REQUIRE;
529                 break;
530         case TAPI_USSD_IND_ACTION_REQUIRE:
531                 *ind_type = CISS_USSD_IND_ACTION_REQUIRE;
532                 break;
533         case TAPI_USSD_IND_TERMINATED_BY_NET:
534                 *ind_type = CISS_USSD_TERMINATED_BY_NET;
535                 break;
536         case TAPI_USSD_IND_OTHER_CLIENT:
537                 *ind_type = CISS_USSD_OTHER_CLIENT;
538                 break;
539         case TAPI_USSD_IND_NOT_SUPPORT:
540                 *ind_type = CISS_USSD_NOT_SUPPORT;
541                 break;
542         case TAPI_USSD_IND_TIME_OUT:
543                 *ind_type = CISS_USSD_TIME_OUT;
544                 break;
545         default:
546                 DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:undefined =%d\n", pTapiIndType);
547                 break;
548         }
549         return TRUE;
550 }
551
552 void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name)
553 {
554         switch (in_service) {
555         case CISS_SERVICE_DIVERTING:
556                 strncpy(service_name, CISS_STR_CALL_DIVERTING, CISS_TEXT_LEN_MAX - 1);
557                 break;
558         case CISS_SERVICE_BARRING:
559                 strncpy(service_name, CISS_STR_CALL_BARRING, CISS_TEXT_LEN_MAX - 1);
560                 break;
561         case CISS_SERVICE_WAITING:
562                 strncpy(service_name, CISS_STR_CALL_WAITING, CISS_TEXT_LEN_MAX - 1);
563                 break;
564         case CISS_SERVICE_CHANGE_BARRING_PASSWD:
565                 strncpy(service_name, CISS_STR_CHANGE_PASSWORD, CISS_TEXT_LEN_MAX - 1);
566                 break;
567         case CISS_SERVICE_USSD:
568                 strncpy(service_name, CISS_STR_INFORMATION, CISS_TEXT_LEN_MAX - 1);
569                 break;
570         case CISS_SERVICE_IDENTIFICATION:
571         default:
572                 strncpy(service_name, "", CISS_TEXT_LEN_MAX - 1);
573                 break;
574         }
575         service_name[CISS_TEXT_LEN_MAX - 1] = '\0';
576 }
577
578 void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name)
579 {
580         switch (in_flavor) {
581         case CISS_FLAVOR_DIVERT_UNCONDITIONAL:
582                 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_ALWAYS, CISS_TEXT_LEN_MAX - 1);
583                 break;
584         case CISS_FLAVOR_DIVERT_BUSY:
585                 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY, CISS_TEXT_LEN_MAX - 1);
586                 break;
587         case CISS_FLAVOR_DIVERT_NOREPLY:
588                 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY, CISS_TEXT_LEN_MAX - 1);
589                 break;
590         case CISS_FLAVOR_DIVERT_UNREACHABLE:
591                 strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_UNREACHABLE, CISS_TEXT_LEN_MAX - 1);
592                 break;
593         case CISS_FLAVOR_DIVERT_ALL_FLAVORS:
594                 strncpy(flavor_name, CISS_STR_ALL_CALLS, CISS_TEXT_LEN_MAX - 1);
595                 break;
596         case CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS:
597                 strncpy(flavor_name, CISS_STR_CONDITIONAL, CISS_TEXT_LEN_MAX - 1);
598                 break;
599         case CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS:
600                 strncpy(flavor_name, CISS_STR_ALL_OUTGOING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
601                 break;
602         case CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL:
603                 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
604                 break;
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);
607                 break;
608         case CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS:
609                 strncpy(flavor_name, CISS_STR_ALL_INCOMING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
610                 break;
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);
613                 break;
614         case CISS_FLAVOR_BARRING_ALL_FLAVORS:
615                 strncpy(flavor_name, CISS_STR_ALL_BARRING, CISS_TEXT_LEN_MAX - 1);
616                 break;
617         case CISS_FLAVOR_BARRING_OUTGOING:
618                 strncpy(flavor_name, CISS_STR_OUTGOING_BARRING, CISS_TEXT_LEN_MAX - 1);
619                 break;
620         case CISS_FLAVOR_BARRING_INCOMING:
621                 strncpy(flavor_name, CISS_STR_INCOMING_BARRING, CISS_TEXT_LEN_MAX - 1);
622                 break;
623         default:
624                 strncpy(flavor_name, "", CISS_TEXT_LEN_MAX - 1);
625         }
626         flavor_name[CISS_TEXT_LEN_MAX - 1] = '\0';
627 }
628
629 void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name)
630 {
631         DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: in_teleservice = %d  come. \n", in_teleservice);
632
633         switch (in_teleservice) {
634 #ifdef _SHP_CPHS
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);
638                 else
639                         strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
640                 break;
641         case CISS_TELECOMM_SVC_PLMN_TELE_1:
642                 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
643                 break;
644 #else
645         case CISS_TELECOMM_SVC_VOICE:
646                 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
647                 break;
648 #endif
649         case CISS_TELECOMM_SVC_FAX:
650                 strncpy(teleservice_name, CISS_STR_FAX, CISS_TEXT_LEN_MAX - 1);
651                 break;
652         case CISS_TELECOMM_SVC_ALL_CS_SYNC:
653                 strncpy(teleservice_name, CISS_STR_VIDEO, CISS_TEXT_LEN_MAX - 1);
654                 break;
655         case CISS_TELECOMM_SVC_ALL_TELE_BEARER:
656                 strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
657                 break;
658         case CISS_TELECOMM_SVC_ALL_TELE:
659                 strncpy(teleservice_name, CISS_STR_ALL_TELECOM_SERVICES, CISS_TEXT_LEN_MAX - 1);
660                 break;
661         case CISS_TELECOMM_SVC_ALL_DATA_TELE:
662                 strncpy(teleservice_name, CISS_STR_ALL_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
663                 break;
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);
666                 break;
667         case CISS_TELECOMM_SVC_PLMN_TELE_ALL:
668                 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
669                 break;
670         case CISS_TELECOMM_SVC_ALL_BEARER:
671                 strncpy(teleservice_name, CISS_STR_ALL_BEARER_SERVICES, CISS_TEXT_LEN_MAX - 1);
672                 break;
673         case CISS_TELECOMM_SVC_ALL_DATA_CDA:
674                 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
675                 break;
676         case CISS_TELECOMM_SVC_ALL_SYNC:
677                 strncpy(teleservice_name, CISS_STR_ALL_SYNCHRONOUS_SERVICES, CISS_TEXT_LEN_MAX - 1);
678                 break;
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);
682                 break;
683 #else
684         case CISS_TELECOMM_SVC_ALL_ASYNC:
685                 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
686                 break;
687 #endif
688         case CISS_TELECOMM_SVC_ALL_DEDI_PAD:
689                 strncpy(teleservice_name, CISS_STR_ALL_PADCA_SERVICES, CISS_TEXT_LEN_MAX - 1);
690                 break;
691         case CISS_TELECOMM_SVC_PLMN_BEAR_ALL:
692                 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
693                 break;
694         case CISS_TELECOMM_SVC_SMS:
695                 strncpy(teleservice_name, CISS_STR_SMS, CISS_TEXT_LEN_MAX - 1);
696                 break;
697         case CISS_TELECOMM_SVC_ALL_CS_ASYNC:
698                 strncpy(teleservice_name, CISS_STR_ASYNCHRONOUS_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
699                 break;
700         case CISS_TELECOMM_SVC_ALL_DEDI_PS:
701                 strncpy(teleservice_name, CISS_STR_ALL_PDS_SERVICES, CISS_TEXT_LEN_MAX - 1);
702                 break;
703         case CISS_TELECOMM_SVC_NONE:
704         default:
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);
709                 else
710                         strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
711         }
712         teleservice_name[CISS_TEXT_LEN_MAX - 1] = '\0';
713 }
714
715 void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult)
716 {
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);
721                         break;
722
723                 case CISS_STATUS_REGISTERED:
724                 case CISS_STATUS_PROVISIONED:
725                 case CISS_STATUS_QUIESCENT:
726                 case CISS_STATUS_NOTHING:
727                 default:
728                         strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
729                         break;
730                 }
731         } else {
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);
737                         break;
738
739                 case CISS_STATUS_PROVISIONED:
740                 case CISS_STATUS_QUIESCENT:
741                 case CISS_STATUS_NOTHING:
742                 default:
743                         strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
744                         break;
745                 }
746         }
747         szResult[CISS_TEXT_LEN_MAX - 1] = '\0';
748 }
749
750