add new files to open just into INTEL.
[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_CF_WHEN_CF_ALL,                                                         CISS_SERVICE_FORWARDING},
21         {CISS_ENG_SC_CFC,               TAPI_SS_CF_WHEN_CFC,                                                            CISS_SERVICE_FORWARDING},
22         {CISS_ENG_SC_CFU,               TAPI_SS_CF_WHEN_CFU,                                                            CISS_SERVICE_FORWARDING},
23         {CISS_ENG_SC_CFB,               TAPI_SS_CF_WHEN_CFB,                                                            CISS_SERVICE_FORWARDING},
24         {CISS_ENG_SC_CFNRY,             TAPI_SS_CF_WHEN_CFNRy,                                                          CISS_SERVICE_FORWARDING},
25         {CISS_ENG_SC_CFNRC,             TAPI_SS_CF_WHEN_CFNRc,                                                          CISS_SERVICE_FORWARDING},
26         {CISS_ENG_SC_CLIP,              TAPI_SS_CLI_CLIP,                                                                       CISS_SERVICE_IDENTIFICATION},
27         {CISS_ENG_SC_CLIR,              TAPI_SS_CLI_CLIR,                                                                       CISS_SERVICE_IDENTIFICATION},
28         {CISS_ENG_SC_COLP,              TAPI_SS_CLI_COLP,                                                                       CISS_SERVICE_IDENTIFICATION},
29         {CISS_ENG_SC_COLR,              TAPI_SS_CLI_COLR,                                                                       CISS_SERVICE_IDENTIFICATION},
30         {CISS_ENG_SC_CNAP,              TAPI_SS_CLI_CNAP,                                                                       CISS_SERVICE_IDENTIFICATION},
31         {CISS_ENG_SC_CW,                0,                                                                                                      CISS_SERVICE_WAITING},
32         {CISS_ENG_SC_B,                 TAPI_SS_CB_TYPE_AB,                                                                     CISS_SERVICE_BARRING},
33         {CISS_ENG_SC_OB,                TAPI_SS_CB_TYPE_AOB,                                                            CISS_SERVICE_BARRING},
34         {CISS_ENG_SC_IB,                TAPI_SS_CB_TYPE_AIB,                                                            CISS_SERVICE_BARRING},
35         {CISS_ENG_SC_BAOC,              TAPI_SS_CB_TYPE_BAOC,                                                           CISS_SERVICE_BARRING},
36         {CISS_ENG_SC_BOIC,              TAPI_SS_CB_TYPE_BOIC,                                                           CISS_SERVICE_BARRING},
37         {CISS_ENG_SC_BOICEXHC,  TAPI_SS_CB_TYPE_BOIC_NOT_HC,                                            CISS_SERVICE_BARRING},
38         {CISS_ENG_SC_BAIC,              TAPI_SS_CB_TYPE_BAIC,                                                           CISS_SERVICE_BARRING},
39         {CISS_ENG_SC_BICROAM,   TAPI_SS_CB_TYPE_BIC_ROAM,                                                       CISS_SERVICE_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 forwarding else not required */
53 static const bsg_table_element_type bsg_conversion_table[MAX_BSG_ENTRY] = {
54         {CISS_ENG_BSG_ALL,                      0,                  TAPI_SS_CLASS_ALL_TELE_BEARER},
55         {CISS_ENG_BSG_ALL_TS,                   TS_CODE,   TAPI_SS_CLASS_ALL_TELE},
56         {CISS_ENG_BSG_TELEPHONY,        TS_CODE,   TAPI_SS_CLASS_VOICE },
57         {CISS_ENG_BSG_AUX_TELEPHONY,    TS_CODE,   TAPI_SS_CLASS_AUX_VOICE},
58         {CISS_ENG_BSG_ALL_DATA,                 TS_CODE,   TAPI_SS_CLASS_ALL_DATA_TELE},
59         {CISS_ENG_BSG_FAX,                      TS_CODE,   TAPI_SS_CLASS_FAX},
60         {CISS_ENG_BSG_SMS,                      TS_CODE,   TAPI_SS_CLASS_SMS},
61         {CISS_ENG_BSG_ALL_TELE_EX_SMS,  TS_CODE,   TAPI_SS_CLASS_ALL_TELE_EXPT_SMS},
62         {CISS_ENG_BSG_PLMN_TELE_ALL,    TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_ALL },
63         {CISS_ENG_BSG_PLMN_TELE_1,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_1},
64         {CISS_ENG_BSG_PLMN_TELE_2,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_2},
65         {CISS_ENG_BSG_PLMN_TELE_3,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_3},
66         {CISS_ENG_BSG_PLMN_TELE_4,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_4},
67         {CISS_ENG_BSG_PLMN_TELE_5,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_5},
68         {CISS_ENG_BSG_PLMN_TELE_6,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_6},
69         {CISS_ENG_BSG_PLMN_TELE_7,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_7},
70         {CISS_ENG_BSG_PLMN_TELE_8,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_8},
71         {CISS_ENG_BSG_PLMN_TELE_9,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_9},
72         {CISS_ENG_BSG_PLMN_TELE_A,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_A},
73         {CISS_ENG_BSG_PLMN_TELE_B,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_B},
74         {CISS_ENG_BSG_PLMN_TELE_C,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_C},
75         {CISS_ENG_BSG_PLMN_TELE_D,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_D},
76         {CISS_ENG_BSG_PLMN_TELE_E,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_E},
77         {CISS_ENG_BSG_PLMN_TELE_F,      TS_CODE,   TAPI_SS_CLASS_PLMN_TELE_F},
78         {CISS_ENG_BSG_ALL_BS,                   BS_CODE,   TAPI_SS_CLASS_ALL_BEARER},
79         {CISS_ENG_BSG_ALL_ASYNC,        BS_CODE,   TAPI_SS_CLASS_ALL_ASYNC},
80         {CISS_ENG_BSG_ALL_SYNC,         BS_CODE,   TAPI_SS_CLASS_ALL_SYNC},
81         {CISS_ENG_BSG_ALL_DC_SYNC,      BS_CODE,   TAPI_SS_CLASS_ALL_CS_SYNC},
82         {CISS_ENG_BSG_ALL_DC_ASYNC,     BS_CODE,   TAPI_SS_CLASS_ALL_CS_ASYNC},
83         {CISS_ENG_BSG_ALL_DED_PACKET,   BS_CODE,   TAPI_SS_CLASS_ALL_DEDI_PS},
84         {CISS_ENG_BSG_ALL_DED_PAD,      BS_CODE,   TAPI_SS_CLASS_ALL_DEDI_PAD},
85         {CISS_ENG_BSG_PLMN_BEAR_ALL,    BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_ALL},
86         {CISS_ENG_BSG_PLMN_BEAR_1,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_1},
87         {CISS_ENG_BSG_PLMN_BEAR_2,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_2},
88         {CISS_ENG_BSG_PLMN_BEAR_3,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_3},
89         {CISS_ENG_BSG_PLMN_BEAR_4,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_4},
90         {CISS_ENG_BSG_PLMN_BEAR_5,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_5},
91         {CISS_ENG_BSG_PLMN_BEAR_6,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_6},
92         {CISS_ENG_BSG_PLMN_BEAR_7,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_7},
93         {CISS_ENG_BSG_PLMN_BEAR_8,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_8},
94         {CISS_ENG_BSG_PLMN_BEAR_9,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_9},
95         {CISS_ENG_BSG_PLMN_BEAR_A,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_A},
96         {CISS_ENG_BSG_PLMN_BEAR_B,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_B},
97         {CISS_ENG_BSG_PLMN_BEAR_C,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_C},
98         {CISS_ENG_BSG_PLMN_BEAR_D,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_D},
99         {CISS_ENG_BSG_PLMN_BEAR_E,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_E},
100         {CISS_ENG_BSG_PLMN_BEAR_F,      BS_CODE,   TAPI_SS_CLASS_PLMN_BEAR_F}
101 };
102
103 int _ciss_convert_bsg_to_tapi_bsg(char *local_bsg, TelSsClass_t *tapi_bsg)
104 {
105         int valid_bsg = FALSE;
106
107         int n = 0;
108         int local_bsg_len =0;
109
110         local_bsg_len = strlen(local_bsg);
111         if (local_bsg_len > MAX_BSG_LEN)
112                 return FALSE;
113
114         DBG("\n [CISS-ENGINE] local_bsg : %s", local_bsg);
115         while (n < MAX_BSG_ENTRY) {
116                 DBG("\n [CISS-ENGINE] n : %d", n);
117                 if (!strncmp(bsg_conversion_table[n].local_bsg, local_bsg, MAX_SC_LEN)) {
118                         DBG("\n [CISS-ENGINE] bsg_conversion_table[n].local_bsg : %s", bsg_conversion_table[n].local_bsg);
119                         *tapi_bsg = bsg_conversion_table[n].tapi_bsg_code;
120                         valid_bsg = TRUE;
121                         break;
122                 }
123                 n++;
124         }
125         DBG("\n [CISS-ENGINE] end _ciss_convert_bsg_to_tapi_bsg()");
126         return(valid_bsg);
127 }
128
129 int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type)
130 {
131         int valid_sc = FALSE;
132
133         int n = 0;
134         DBG("\n [CISS-ENGINE] sc : %s", sc);
135         while (n < MAX_SC_ENTRY) {
136                 if (!strncmp(sc_conversion_table_ss[n].local_sc, sc, MAX_SC_LEN)) {
137                         DBG("\n [CISS-ENGINE] sc_conversion_table_ss[n].local_sc : %s", sc_conversion_table_ss[n].local_sc);
138                         *tapi_flavor = sc_conversion_table_ss[n].tapi_flavor;
139                         *ss_type = sc_conversion_table_ss[n].ss_type;
140                         valid_sc = TRUE;
141                         break;
142                 }
143                 n++;
144         }
145         return(valid_sc);
146 }
147
148 int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err)
149 {
150         DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:defined =%x\n", tapi_err);
151         switch (tapi_err) {
152         case TAPI_SS_UNKNOWNSUBSCRIBER:
153                 *ciss_err = CISS_ERR_UNKNOWN_SUBSCRIBER;
154                 break;
155         case TAPI_SS_BEARERSERVICENOTPROVISIONED:
156                 *ciss_err = CISS_ERR_BEARER_NOT_PROVISIONED;
157                 break;
158         case TAPI_SS_TELESERVICENOTPROVISIONED:
159                 *ciss_err = CISS_ERR_TELESERVICE_NOT_PROVISIONED;
160                 break;
161         case TAPI_SS_CALLBARRED:
162                 *ciss_err = CISS_ERR_CALL_BARRED;
163                 break;
164         case TAPI_SS_ILLEGALSSOPERATION:
165                 *ciss_err = CISS_ERR_ILLEGAL_SS_OPER;
166                 break;
167         case TAPI_SS_ERRORSTATUS:
168                 *ciss_err = CISS_ERR_ERR_STATUS;
169                 break;
170         case TAPI_SS_NOTAVAILABLE:
171                 *ciss_err = CISS_ERR_NOT_AVAIL;
172                 break;
173         case TAPI_SS_SUBSCRIPTIONVIOLATION:
174                 *ciss_err = CISS_ERR_SUBSCRIPTION_VIOLATION;
175                 break;
176         case TAPI_SS_INCOMPATIBILITY:
177                 *ciss_err = CISS_ERR_INCOMPATIBILITY;
178                 break;
179         case TAPI_SS_FACILITYNOTSUPPORTED:
180                 *ciss_err = CISS_ERR_FACILITY_NOT_SUPPORT;
181                 break;
182         case TAPI_SS_SYSTEMFAILURE:
183                 *ciss_err = CISS_ERR_SYS_FAILURE;
184                 break;
185         case TAPI_SS_DATAMISSING:
186                 *ciss_err = CISS_ERR_DATA_MISSING;
187                 break;
188         case TAPI_SS_UNEXPECTEDDATAVALUE:
189                 *ciss_err = CISS_ERR_UNEXPECTED_DATA;
190                 break;
191         case TAPI_SS_MAXNOMPTYEXCEEDED:
192                 *ciss_err = CISS_ERR_MPTY_PARTICIPANTS_EXCEED;
193                 break;
194         case TAPI_SS_RESOURCESNOTAVAILABLE:
195                 *ciss_err = CISS_ERR_RESOURCE_NOT_AVAIL;
196                 break;
197                 /*Show message Password error for Vodafone R11 */
198         case TAPI_SS_PWREGISTRATIONFAILURE:
199                 *ciss_err = CISS_ERR_PW_REGIST_FAIL;
200                 break;
201         case TAPI_SS_NEGATIVEPWCHECK:
202                 *ciss_err = CISS_ERR_NEGATIVE_PW_CHECK;
203                 break;
204                 /*Show message password error
205                    this function has been locked, so please call customer center for Vodafone R11 */
206         case TAPI_SS_NUMBEROFPWATTEMPTSVIOLATION:
207                 *ciss_err = CISS_ERR_PW_ATTEMPS_VIOLATION;
208                 break;
209         default:
210                 DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:undefined =%x\n", tapi_err);
211                 *ciss_err = CISS_ERR_UNKNOWN;
212                 break;
213         }
214         return TRUE;
215 }
216
217 int _ciss_get_telecomm_svc(TelSsClass_t in_teleservice, ciss_telecomm_svc_t *out_teleservice)
218 {
219         switch (in_teleservice) {
220         case TAPI_SS_CLASS_VOICE:
221                 *out_teleservice = CISS_TELECOMM_SVC_VOICE;
222                 break;
223         case TAPI_SS_CLASS_AUX_VOICE:
224                  *out_teleservice = CISS_TELECOMM_SVC_AUX_VOICE;
225                 break;
226         case TAPI_SS_CLASS_FAX:
227                 *out_teleservice = CISS_TELECOMM_SVC_FAX;
228                 break;
229         case TAPI_SS_CLASS_SMS:
230                 *out_teleservice = CISS_TELECOMM_SVC_SMS;
231                 break;
232         case TAPI_SS_CLASS_ALL_CS_SYNC:
233                 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_SYNC;
234                 break;
235         case TAPI_SS_CLASS_ALL_TELE_BEARER:
236                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_BEARER;
237                 break;
238         case TAPI_SS_CLASS_ALL_TELE:
239                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE;
240                 break;
241         case TAPI_SS_CLASS_ALL_DATA_TELE:
242                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_TELE;
243                 break;
244         case TAPI_SS_CLASS_ALL_TELE_EXPT_SMS:
245                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS;
246                 break;
247         case TAPI_SS_CLASS_PLMN_TELE_ALL:
248                 *out_teleservice = CISS_TELECOMM_SVC_PLMN_TELE_ALL;
249                 break;
250         case TAPI_SS_CLASS_ALL_BEARER:
251                 *out_teleservice = CISS_TELECOMM_SVC_ALL_BEARER;
252                 break;
253         case TAPI_SS_CLASS_ALL_DATA_CDA:
254                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_CDA;
255                 break;
256         case TAPI_SS_CLASS_ALL_SYNC:
257                 *out_teleservice = CISS_TELECOMM_SVC_ALL_SYNC;
258                 break;
259         case TAPI_SS_CLASS_ALL_ASYNC:
260                 *out_teleservice = CISS_TELECOMM_SVC_ALL_ASYNC;
261                 break;
262         case TAPI_SS_CLASS_ALL_DEDI_PAD:
263                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PAD;
264                 break;
265         case TAPI_SS_CLASS_PLMN_BEAR_ALL:
266                 *out_teleservice = CISS_TELECOMM_SVC_PLMN_BEAR_ALL;
267                 break;
268         case TAPI_SS_CLASS_ALL_CS_ASYNC:
269                 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_ASYNC;
270                 break;
271         case TAPI_SS_CLASS_ALL_DEDI_PS:
272                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PS;
273                 break;
274         default:
275                 *out_teleservice = CISS_TELECOMM_SVC_NONE;
276                 DBG("\n [CISS-ENGINE] _ciss_get_telecomm_svc: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
277                 break;
278         }
279         return TRUE;
280 }
281
282 int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor)
283 {
284         switch (in_flavor) {
285         case TAPI_SS_CF_WHEN_CFU:
286                 *out_flavor = CISS_FLAVOR_FORWARD_UNCONDITIONAL;
287                 break;
288         case TAPI_SS_CF_WHEN_CFB:
289                 *out_flavor = CISS_FLAVOR_FORWARD_BUSY;
290                 break;
291         case TAPI_SS_CF_WHEN_CFNRy:
292                 *out_flavor = CISS_FLAVOR_FORWARD_NOREPLY;
293                 break;
294         case TAPI_SS_CF_WHEN_CFNRc:
295                 *out_flavor = CISS_FLAVOR_FORWARD_UNREACHABLE;
296                 break;
297         case TAPI_SS_CF_WHEN_CFC:
298                 *out_flavor = CISS_FLAVOR_FORWARD_ALL_CONDITIONAL_FLAVORS;
299                 break;
300         case TAPI_SS_CF_WHEN_CF_ALL:
301                 *out_flavor = CISS_FLAVOR_FORWARD_ALL_FLAVORS;
302                 break;
303         default:
304                 *out_flavor = CISS_FLAVOR_NONE;
305                 DBG("\n [CISS-ENGINE] _ciss_get_forward_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
306                 break;
307         }
308         return TRUE;
309 }
310
311 int _ciss_get_barring_flavor_type(TelSsBarringType_t in_flavor, ciss_flavor_t *out_flavor)
312 {
313         switch (in_flavor) {
314         case TAPI_SS_CB_TYPE_AB:
315                 *out_flavor = CISS_FLAVOR_BARRING_ALL_FLAVORS;
316                 break;
317         case TAPI_SS_CB_TYPE_BAOC:
318                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
319                 break;
320         case TAPI_SS_CB_TYPE_BOIC:
321                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL;
322                 break;
323         case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
324                 *out_flavor = CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME;
325                 break;
326         case TAPI_SS_CB_TYPE_BAIC:
327                 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
328                 break;
329         case TAPI_SS_CB_TYPE_BIC_ROAM:
330                 *out_flavor = CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING;
331                 break;
332         case TAPI_SS_CB_TYPE_AOB:
333                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
334                 break;
335         case TAPI_SS_CB_TYPE_AIB:
336                 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
337                 break;
338         default:
339                 *out_flavor = CISS_FLAVOR_NONE;
340                 DBG("\n [CISS-ENGINE] _ciss_get_barring_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
341                 break;
342         }
343         return TRUE;
344 }
345
346 int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status)
347 {
348         switch (in_status) {
349         case TAPI_SS_STATUS_REGISTERED:
350                 *out_status = CISS_STATUS_REGISTERED;
351                 break;
352         case TAPI_SS_STATUS_PROVISIONED:
353                 *out_status = CISS_STATUS_PROVISIONED;
354                 break;
355         case TAPI_SS_STATUS_ACTIVE:
356                 *out_status = CISS_STATUS_ACTIVE;
357                 break;
358         case TAPI_SS_STATUS_QUIESCENT:
359                 *out_status = CISS_STATUS_QUIESCENT;
360                 break;
361         case TAPI_SS_STATUS_NOTHING:
362                 *out_status = CISS_STATUS_NOTHING;
363                 break;
364         default:
365                 *out_status = CISS_STATUS_NOTHING;
366                 DBG("\n [CISS-ENGINE] _ciss_get_result_status_type: ERROR  Wrong  TelSsStatus_t = %d  come. \n", in_status);
367                 break;
368         }
369         return TRUE;
370 }
371
372 void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name)
373 {
374         switch (in_service) {
375         case CISS_SERVICE_FORWARDING:
376                 strncpy(service_name, CISS_STR_CALL_FORWARDING, CISS_TEXT_LEN_MAX - 1);
377                 break;
378         case CISS_SERVICE_BARRING:
379                 strncpy(service_name, CISS_STR_CALL_BARRING, CISS_TEXT_LEN_MAX - 1);
380                 break;
381         case CISS_SERVICE_WAITING:
382                 strncpy(service_name, CISS_STR_CALL_WAITING, CISS_TEXT_LEN_MAX - 1);
383                 break;
384         case CISS_SERVICE_CHANGE_BARRING_PASSWD:
385                 strncpy(service_name, CISS_STR_CHANGE_PASSWORD, CISS_TEXT_LEN_MAX - 1);
386                 break;
387         case CISS_SERVICE_USSD:
388                 strncpy(service_name, CISS_STR_INFORMATION, CISS_TEXT_LEN_MAX - 1);
389                 break;
390         case CISS_SERVICE_IDENTIFICATION:
391         default:
392                 strncpy(service_name, "", CISS_TEXT_LEN_MAX - 1);
393                 break;
394         }
395         service_name[CISS_TEXT_LEN_MAX - 1] = '\0';
396 }
397
398 void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name)
399 {
400         switch (in_flavor) {
401         case CISS_FLAVOR_FORWARD_UNCONDITIONAL:
402                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_ALWAYS, CISS_TEXT_LEN_MAX - 1);
403                 break;
404         case CISS_FLAVOR_FORWARD_BUSY:
405                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_WHEN_BUSY, CISS_TEXT_LEN_MAX - 1);
406                 break;
407         case CISS_FLAVOR_FORWARD_NOREPLY:
408                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_WHEN_NOREPLY, CISS_TEXT_LEN_MAX - 1);
409                 break;
410         case CISS_FLAVOR_FORWARD_UNREACHABLE:
411                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_UNREACHABLE, CISS_TEXT_LEN_MAX - 1);
412                 break;
413         case CISS_FLAVOR_FORWARD_ALL_FLAVORS:
414                 strncpy(flavor_name, CISS_STR_ALL_CALLS, CISS_TEXT_LEN_MAX - 1);
415                 break;
416         case CISS_FLAVOR_FORWARD_ALL_CONDITIONAL_FLAVORS:
417                 strncpy(flavor_name, CISS_STR_CONDITIONAL, CISS_TEXT_LEN_MAX - 1);
418                 break;
419         case CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS:
420                 strncpy(flavor_name, CISS_STR_ALL_OUTGOING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
421                 break;
422         case CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL:
423                 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
424                 break;
425         case CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME:
426                 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED, CISS_TEXT_LEN_MAX - 1);
427                 break;
428         case CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS:
429                 strncpy(flavor_name, CISS_STR_ALL_INCOMING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
430                 break;
431         case CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING:
432                 strncpy(flavor_name, CISS_STR_INCOMING_CALLS_BARRED_WHEN_ROAMING, CISS_TEXT_LEN_MAX - 1);
433                 break;
434         case CISS_FLAVOR_BARRING_ALL_FLAVORS:
435                 strncpy(flavor_name, CISS_STR_ALL_BARRING, CISS_TEXT_LEN_MAX - 1);
436                 break;
437         case CISS_FLAVOR_BARRING_OUTGOING:
438                 strncpy(flavor_name, CISS_STR_OUTGOING_BARRING, CISS_TEXT_LEN_MAX - 1);
439                 break;
440         case CISS_FLAVOR_BARRING_INCOMING:
441                 strncpy(flavor_name, CISS_STR_INCOMING_BARRING, CISS_TEXT_LEN_MAX - 1);
442                 break;
443         default:
444                 strncpy(flavor_name, "", CISS_TEXT_LEN_MAX - 1);
445         }
446         flavor_name[CISS_TEXT_LEN_MAX - 1] = '\0';
447 }
448
449 void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name)
450 {
451         DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: in_teleservice = %d  come. \n", in_teleservice);
452
453         switch (in_teleservice) {
454         case CISS_TELECOMM_SVC_VOICE:
455                 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
456                 break;
457         case CISS_TELECOMM_SVC_PLMN_TELE_1:
458                 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
459                 break;
460         case CISS_TELECOMM_SVC_FAX:
461                 strncpy(teleservice_name, CISS_STR_FAX, CISS_TEXT_LEN_MAX - 1);
462                 break;
463         case CISS_TELECOMM_SVC_ALL_CS_SYNC:
464                 strncpy(teleservice_name, CISS_STR_VIDEO, CISS_TEXT_LEN_MAX - 1);
465                 break;
466         case CISS_TELECOMM_SVC_ALL_TELE_BEARER:
467                 strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
468                 break;
469         case CISS_TELECOMM_SVC_ALL_TELE:
470                 strncpy(teleservice_name, CISS_STR_ALL_TELECOM_SERVICES, CISS_TEXT_LEN_MAX - 1);
471                 break;
472         case CISS_TELECOMM_SVC_ALL_DATA_TELE:
473                 strncpy(teleservice_name, CISS_STR_ALL_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
474                 break;
475         case CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS:
476                 strncpy(teleservice_name, CISS_STR_FOR_ALL_TELE_SERVICES_EXCEPT_SMS, CISS_TEXT_LEN_MAX - 1);
477                 break;
478         case CISS_TELECOMM_SVC_PLMN_TELE_ALL:
479                 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
480                 break;
481         case CISS_TELECOMM_SVC_ALL_BEARER:
482                 strncpy(teleservice_name, CISS_STR_ALL_BEARER_SERVICES, CISS_TEXT_LEN_MAX - 1);
483                 break;
484         case CISS_TELECOMM_SVC_ALL_DATA_CDA:
485                 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
486                 break;
487         case CISS_TELECOMM_SVC_ALL_SYNC:
488                 strncpy(teleservice_name, CISS_STR_ALL_SYNCHRONOUS_SERVICES, CISS_TEXT_LEN_MAX - 1);
489                 break;
490         case CISS_TELECOMM_SVC_ALL_ASYNC:
491                 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
492                 break;
493         case CISS_TELECOMM_SVC_ALL_DEDI_PAD:
494                 strncpy(teleservice_name, CISS_STR_ALL_PADCA_SERVICES, CISS_TEXT_LEN_MAX - 1);
495                 break;
496         case CISS_TELECOMM_SVC_PLMN_BEAR_ALL:
497                 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
498                 break;
499         case CISS_TELECOMM_SVC_SMS:
500                 strncpy(teleservice_name, CISS_STR_SMS, CISS_TEXT_LEN_MAX - 1);
501                 break;
502         case CISS_TELECOMM_SVC_ALL_CS_ASYNC:
503                 strncpy(teleservice_name, CISS_STR_ASYNCHRONOUS_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
504                 break;
505         case CISS_TELECOMM_SVC_ALL_DEDI_PS:
506                 strncpy(teleservice_name, CISS_STR_ALL_PDS_SERVICES, CISS_TEXT_LEN_MAX - 1);
507                 break;
508         case CISS_TELECOMM_SVC_NONE:
509         default:
510                 DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
511                 if ((ss_type == CISS_SERVICE_WAITING) ||
512                     (ss_type == CISS_SERVICE_IDENTIFICATION))
513                         strncpy(teleservice_name, "", CISS_TEXT_LEN_MAX - 1);
514                 else
515                         strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
516         }
517         teleservice_name[CISS_TEXT_LEN_MAX - 1] = '\0';
518 }
519
520 void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult)
521 {
522         if (ss_type == CISS_SERVICE_FORWARDING) {
523                 switch (result_status) {
524                 case CISS_STATUS_ACTIVE:
525                         strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
526                         break;
527
528                 case CISS_STATUS_REGISTERED:
529                 case CISS_STATUS_PROVISIONED:
530                 case CISS_STATUS_QUIESCENT:
531                 case CISS_STATUS_NOTHING:
532                 default:
533                         strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
534                         break;
535                 }
536         } else {
537                 /* Wating or Barring case only have Act / Deact status */
538                 switch (result_status) {
539                 case CISS_STATUS_ACTIVE:
540                 case CISS_STATUS_REGISTERED:
541                         strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
542                         break;
543
544                 case CISS_STATUS_PROVISIONED:
545                 case CISS_STATUS_QUIESCENT:
546                 case CISS_STATUS_NOTHING:
547                 default:
548                         strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
549                         break;
550                 }
551         }
552         szResult[CISS_TEXT_LEN_MAX - 1] = '\0';
553 }
554
555