Apply SMACK rule for RSA
[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
115         DBG("\n [CISS-ENGINE] local_bsg : %s", local_bsg);
116         while (n < MAX_BSG_ENTRY) {
117                 DBG("\n [CISS-ENGINE] n : %d", n);
118                 if (!strncmp(bsg_conversion_table[n].local_bsg, local_bsg, MAX_SC_LEN)) {
119                         DBG("\n [CISS-ENGINE] bsg_conversion_table[n].local_bsg : %s", bsg_conversion_table[n].local_bsg);
120                         *tapi_bsg = bsg_conversion_table[n].tapi_bsg_code;
121                         valid_bsg = TRUE;
122                         break;
123                 }
124                 n++;
125         }
126         DBG("\n [CISS-ENGINE] end _ciss_convert_bsg_to_tapi_bsg()");
127         return(valid_bsg);
128 }
129
130 int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type)
131 {
132         int valid_sc = FALSE;
133
134         int n = 0;
135         DBG("\n [CISS-ENGINE] sc : %s", sc);
136         while (n < MAX_SC_ENTRY) {
137                 if (!strncmp(sc_conversion_table_ss[n].local_sc, sc, MAX_SC_LEN)) {
138                         DBG("\n [CISS-ENGINE] sc_conversion_table_ss[n].local_sc : %s", sc_conversion_table_ss[n].local_sc);
139                         *tapi_flavor = sc_conversion_table_ss[n].tapi_flavor;
140                         *ss_type = sc_conversion_table_ss[n].ss_type;
141                         valid_sc = TRUE;
142                         break;
143                 }
144                 n++;
145         }
146         return(valid_sc);
147 }
148
149 int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err)
150 {
151         DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:defined =%x\n", tapi_err);
152         switch (tapi_err) {
153         case TAPI_SS_UNKNOWNSUBSCRIBER:
154                 *ciss_err = CISS_ERR_UNKNOWN_SUBSCRIBER;
155                 break;
156         case TAPI_SS_BEARERSERVICENOTPROVISIONED:
157                 *ciss_err = CISS_ERR_BEARER_NOT_PROVISIONED;
158                 break;
159         case TAPI_SS_TELESERVICENOTPROVISIONED:
160                 *ciss_err = CISS_ERR_TELESERVICE_NOT_PROVISIONED;
161                 break;
162         case TAPI_SS_CALLBARRED:
163                 *ciss_err = CISS_ERR_CALL_BARRED;
164                 break;
165         case TAPI_SS_ILLEGALSSOPERATION:
166                 *ciss_err = CISS_ERR_ILLEGAL_SS_OPER;
167                 break;
168         case TAPI_SS_ERRORSTATUS:
169                 *ciss_err = CISS_ERR_ERR_STATUS;
170                 break;
171         case TAPI_SS_NOTAVAILABLE:
172                 *ciss_err = CISS_ERR_NOT_AVAIL;
173                 break;
174         case TAPI_SS_SUBSCRIPTIONVIOLATION:
175                 *ciss_err = CISS_ERR_SUBSCRIPTION_VIOLATION;
176                 break;
177         case TAPI_SS_INCOMPATIBILITY:
178                 *ciss_err = CISS_ERR_INCOMPATIBILITY;
179                 break;
180         case TAPI_SS_FACILITYNOTSUPPORTED:
181                 *ciss_err = CISS_ERR_FACILITY_NOT_SUPPORT;
182                 break;
183         case TAPI_SS_SYSTEMFAILURE:
184                 *ciss_err = CISS_ERR_SYS_FAILURE;
185                 break;
186         case TAPI_SS_DATAMISSING:
187                 *ciss_err = CISS_ERR_DATA_MISSING;
188                 break;
189         case TAPI_SS_UNEXPECTEDDATAVALUE:
190                 *ciss_err = CISS_ERR_UNEXPECTED_DATA;
191                 break;
192         case TAPI_SS_MAXNOMPTYEXCEEDED:
193                 *ciss_err = CISS_ERR_MPTY_PARTICIPANTS_EXCEED;
194                 break;
195         case TAPI_SS_RESOURCESNOTAVAILABLE:
196                 *ciss_err = CISS_ERR_RESOURCE_NOT_AVAIL;
197                 break;
198                 /*Show message Password error for Vodafone R11 */
199         case TAPI_SS_PWREGISTRATIONFAILURE:
200                 *ciss_err = CISS_ERR_PW_REGIST_FAIL;
201                 break;
202         case TAPI_SS_NEGATIVEPWCHECK:
203                 *ciss_err = CISS_ERR_NEGATIVE_PW_CHECK;
204                 break;
205                 /*Show message password error
206                    this function has been locked, so please call customer center for Vodafone R11 */
207         case TAPI_SS_NUMBEROFPWATTEMPTSVIOLATION:
208                 *ciss_err = CISS_ERR_PW_ATTEMPS_VIOLATION;
209                 break;
210         default:
211                 DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:undefined =%x\n", tapi_err);
212                 *ciss_err = CISS_ERR_UNKNOWN;
213                 break;
214         }
215         return TRUE;
216 }
217
218 int _ciss_get_telecomm_svc(TelSsClass_t in_teleservice, ciss_telecomm_svc_t *out_teleservice)
219 {
220         switch (in_teleservice) {
221         case TAPI_SS_CLASS_VOICE:
222                 *out_teleservice = CISS_TELECOMM_SVC_VOICE;
223                 break;
224         case TAPI_SS_CLASS_AUX_VOICE:
225                 *out_teleservice = CISS_TELECOMM_SVC_AUX_VOICE;
226                 break;
227         case TAPI_SS_CLASS_FAX:
228                 *out_teleservice = CISS_TELECOMM_SVC_FAX;
229                 break;
230         case TAPI_SS_CLASS_SMS:
231                 *out_teleservice = CISS_TELECOMM_SVC_SMS;
232                 break;
233         case TAPI_SS_CLASS_ALL_CS_SYNC:
234                 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_SYNC;
235                 break;
236         case TAPI_SS_CLASS_ALL_TELE_BEARER:
237                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_BEARER;
238                 break;
239         case TAPI_SS_CLASS_ALL_TELE:
240                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE;
241                 break;
242         case TAPI_SS_CLASS_ALL_DATA_TELE:
243                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_TELE;
244                 break;
245         case TAPI_SS_CLASS_ALL_TELE_EXPT_SMS:
246                 *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS;
247                 break;
248         case TAPI_SS_CLASS_PLMN_TELE_ALL:
249                 *out_teleservice = CISS_TELECOMM_SVC_PLMN_TELE_ALL;
250                 break;
251         case TAPI_SS_CLASS_ALL_BEARER:
252                 *out_teleservice = CISS_TELECOMM_SVC_ALL_BEARER;
253                 break;
254         case TAPI_SS_CLASS_ALL_DATA_CDA:
255                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_CDA;
256                 break;
257         case TAPI_SS_CLASS_ALL_SYNC:
258                 *out_teleservice = CISS_TELECOMM_SVC_ALL_SYNC;
259                 break;
260         case TAPI_SS_CLASS_ALL_ASYNC:
261                 *out_teleservice = CISS_TELECOMM_SVC_ALL_ASYNC;
262                 break;
263         case TAPI_SS_CLASS_ALL_DEDI_PAD:
264                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PAD;
265                 break;
266         case TAPI_SS_CLASS_PLMN_BEAR_ALL:
267                 *out_teleservice = CISS_TELECOMM_SVC_PLMN_BEAR_ALL;
268                 break;
269         case TAPI_SS_CLASS_ALL_CS_ASYNC:
270                 *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_ASYNC;
271                 break;
272         case TAPI_SS_CLASS_ALL_DEDI_PS:
273                 *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PS;
274                 break;
275         default:
276                 *out_teleservice = CISS_TELECOMM_SVC_NONE;
277                 DBG("\n [CISS-ENGINE] _ciss_get_telecomm_svc: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
278                 break;
279         }
280         return TRUE;
281 }
282
283 int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor)
284 {
285         switch (in_flavor) {
286         case TAPI_SS_CF_WHEN_CFU:
287                 *out_flavor = CISS_FLAVOR_FORWARD_UNCONDITIONAL;
288                 break;
289         case TAPI_SS_CF_WHEN_CFB:
290                 *out_flavor = CISS_FLAVOR_FORWARD_BUSY;
291                 break;
292         case TAPI_SS_CF_WHEN_CFNRy:
293                 *out_flavor = CISS_FLAVOR_FORWARD_NOREPLY;
294                 break;
295         case TAPI_SS_CF_WHEN_CFNRc:
296                 *out_flavor = CISS_FLAVOR_FORWARD_UNREACHABLE;
297                 break;
298         case TAPI_SS_CF_WHEN_CFC:
299                 *out_flavor = CISS_FLAVOR_FORWARD_ALL_CONDITIONAL_FLAVORS;
300                 break;
301         case TAPI_SS_CF_WHEN_CF_ALL:
302                 *out_flavor = CISS_FLAVOR_FORWARD_ALL_FLAVORS;
303                 break;
304         default:
305                 *out_flavor = CISS_FLAVOR_NONE;
306                 DBG("\n [CISS-ENGINE] _ciss_get_forward_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
307                 break;
308         }
309         return TRUE;
310 }
311
312 int _ciss_get_barring_flavor_type(TelSsBarringType_t in_flavor, ciss_flavor_t *out_flavor)
313 {
314         switch (in_flavor) {
315         case TAPI_SS_CB_TYPE_AB:
316                 *out_flavor = CISS_FLAVOR_BARRING_ALL_FLAVORS;
317                 break;
318         case TAPI_SS_CB_TYPE_BAOC:
319                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
320                 break;
321         case TAPI_SS_CB_TYPE_BOIC:
322                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL;
323                 break;
324         case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
325                 *out_flavor = CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME;
326                 break;
327         case TAPI_SS_CB_TYPE_BAIC:
328                 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
329                 break;
330         case TAPI_SS_CB_TYPE_BIC_ROAM:
331                 *out_flavor = CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING;
332                 break;
333         case TAPI_SS_CB_TYPE_AOB:
334                 *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
335                 break;
336         case TAPI_SS_CB_TYPE_AIB:
337                 *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
338                 break;
339         default:
340                 *out_flavor = CISS_FLAVOR_NONE;
341                 DBG("\n [CISS-ENGINE] _ciss_get_barring_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
342                 break;
343         }
344         return TRUE;
345 }
346
347 int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status)
348 {
349         switch (in_status) {
350         case TAPI_SS_STATUS_REGISTERED:
351                 *out_status = CISS_STATUS_REGISTERED;
352                 break;
353         case TAPI_SS_STATUS_PROVISIONED:
354                 *out_status = CISS_STATUS_PROVISIONED;
355                 break;
356         case TAPI_SS_STATUS_ACTIVE:
357                 *out_status = CISS_STATUS_ACTIVE;
358                 break;
359         case TAPI_SS_STATUS_QUIESCENT:
360                 *out_status = CISS_STATUS_QUIESCENT;
361                 break;
362         case TAPI_SS_STATUS_NOTHING:
363                 *out_status = CISS_STATUS_NOTHING;
364                 break;
365         default:
366                 *out_status = CISS_STATUS_NOTHING;
367                 DBG("\n [CISS-ENGINE] _ciss_get_result_status_type: ERROR  Wrong  TelSsStatus_t = %d  come. \n", in_status);
368                 break;
369         }
370         return TRUE;
371 }
372
373 void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name)
374 {
375         switch (in_service) {
376         case CISS_SERVICE_FORWARDING:
377                 strncpy(service_name, CISS_STR_CALL_FORWARDING, CISS_TEXT_LEN_MAX - 1);
378                 break;
379         case CISS_SERVICE_BARRING:
380                 strncpy(service_name, CISS_STR_CALL_BARRING, CISS_TEXT_LEN_MAX - 1);
381                 break;
382         case CISS_SERVICE_WAITING:
383                 strncpy(service_name, CISS_STR_CALL_WAITING, CISS_TEXT_LEN_MAX - 1);
384                 break;
385         case CISS_SERVICE_CHANGE_BARRING_PASSWD:
386                 strncpy(service_name, CISS_STR_CHANGE_PASSWORD, CISS_TEXT_LEN_MAX - 1);
387                 break;
388         case CISS_SERVICE_USSD:
389                 strncpy(service_name, CISS_STR_INFORMATION, CISS_TEXT_LEN_MAX - 1);
390                 break;
391         case CISS_SERVICE_IDENTIFICATION:
392         default:
393                 strncpy(service_name, "", CISS_TEXT_LEN_MAX - 1);
394                 break;
395         }
396         service_name[CISS_TEXT_LEN_MAX - 1] = '\0';
397 }
398
399 void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name)
400 {
401         switch (in_flavor) {
402         case CISS_FLAVOR_FORWARD_UNCONDITIONAL:
403                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_ALWAYS, CISS_TEXT_LEN_MAX - 1);
404                 break;
405         case CISS_FLAVOR_FORWARD_BUSY:
406                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_WHEN_BUSY, CISS_TEXT_LEN_MAX - 1);
407                 break;
408         case CISS_FLAVOR_FORWARD_NOREPLY:
409                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_WHEN_NOREPLY, CISS_TEXT_LEN_MAX - 1);
410                 break;
411         case CISS_FLAVOR_FORWARD_UNREACHABLE:
412                 strncpy(flavor_name, CISS_STR_CALL_FORWARDING_ACTIVE_C_UNREACHABLE, CISS_TEXT_LEN_MAX - 1);
413                 break;
414         case CISS_FLAVOR_FORWARD_ALL_FLAVORS:
415                 strncpy(flavor_name, CISS_STR_ALL_CALLS, CISS_TEXT_LEN_MAX - 1);
416                 break;
417         case CISS_FLAVOR_FORWARD_ALL_CONDITIONAL_FLAVORS:
418                 strncpy(flavor_name, CISS_STR_CONDITIONAL, CISS_TEXT_LEN_MAX - 1);
419                 break;
420         case CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS:
421                 strncpy(flavor_name, CISS_STR_ALL_OUTGOING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
422                 break;
423         case CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL:
424                 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
425                 break;
426         case CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME:
427                 strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED, CISS_TEXT_LEN_MAX - 1);
428                 break;
429         case CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS:
430                 strncpy(flavor_name, CISS_STR_ALL_INCOMING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
431                 break;
432         case CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING:
433                 strncpy(flavor_name, CISS_STR_INCOMING_CALLS_BARRED_WHEN_ROAMING, CISS_TEXT_LEN_MAX - 1);
434                 break;
435         case CISS_FLAVOR_BARRING_ALL_FLAVORS:
436                 strncpy(flavor_name, CISS_STR_ALL_BARRING, CISS_TEXT_LEN_MAX - 1);
437                 break;
438         case CISS_FLAVOR_BARRING_OUTGOING:
439                 strncpy(flavor_name, CISS_STR_OUTGOING_BARRING, CISS_TEXT_LEN_MAX - 1);
440                 break;
441         case CISS_FLAVOR_BARRING_INCOMING:
442                 strncpy(flavor_name, CISS_STR_INCOMING_BARRING, CISS_TEXT_LEN_MAX - 1);
443                 break;
444         default:
445                 strncpy(flavor_name, "", CISS_TEXT_LEN_MAX - 1);
446         }
447         flavor_name[CISS_TEXT_LEN_MAX - 1] = '\0';
448 }
449
450 void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name)
451 {
452         DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: in_teleservice = %d  come. \n", in_teleservice);
453
454         switch (in_teleservice) {
455         case CISS_TELECOMM_SVC_VOICE:
456                 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
457                 break;
458         case CISS_TELECOMM_SVC_PLMN_TELE_1:
459                 strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
460                 break;
461         case CISS_TELECOMM_SVC_FAX:
462                 strncpy(teleservice_name, CISS_STR_FAX, CISS_TEXT_LEN_MAX - 1);
463                 break;
464         case CISS_TELECOMM_SVC_ALL_CS_SYNC:
465                 strncpy(teleservice_name, CISS_STR_VIDEO, CISS_TEXT_LEN_MAX - 1);
466                 break;
467         case CISS_TELECOMM_SVC_ALL_TELE_BEARER:
468                 strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
469                 break;
470         case CISS_TELECOMM_SVC_ALL_TELE:
471                 strncpy(teleservice_name, CISS_STR_ALL_TELECOM_SERVICES, CISS_TEXT_LEN_MAX - 1);
472                 break;
473         case CISS_TELECOMM_SVC_ALL_DATA_TELE:
474                 strncpy(teleservice_name, CISS_STR_ALL_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
475                 break;
476         case CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS:
477                 strncpy(teleservice_name, CISS_STR_FOR_ALL_TELE_SERVICES_EXCEPT_SMS, CISS_TEXT_LEN_MAX - 1);
478                 break;
479         case CISS_TELECOMM_SVC_PLMN_TELE_ALL:
480                 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
481                 break;
482         case CISS_TELECOMM_SVC_ALL_BEARER:
483                 strncpy(teleservice_name, CISS_STR_ALL_BEARER_SERVICES, CISS_TEXT_LEN_MAX - 1);
484                 break;
485         case CISS_TELECOMM_SVC_ALL_DATA_CDA:
486                 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
487                 break;
488         case CISS_TELECOMM_SVC_ALL_SYNC:
489                 strncpy(teleservice_name, CISS_STR_ALL_SYNCHRONOUS_SERVICES, CISS_TEXT_LEN_MAX - 1);
490                 break;
491         case CISS_TELECOMM_SVC_ALL_ASYNC:
492                 strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
493                 break;
494         case CISS_TELECOMM_SVC_ALL_DEDI_PAD:
495                 strncpy(teleservice_name, CISS_STR_ALL_PADCA_SERVICES, CISS_TEXT_LEN_MAX - 1);
496                 break;
497         case CISS_TELECOMM_SVC_PLMN_BEAR_ALL:
498                 strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
499                 break;
500         case CISS_TELECOMM_SVC_SMS:
501                 strncpy(teleservice_name, CISS_STR_SMS, CISS_TEXT_LEN_MAX - 1);
502                 break;
503         case CISS_TELECOMM_SVC_ALL_CS_ASYNC:
504                 strncpy(teleservice_name, CISS_STR_ASYNCHRONOUS_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
505                 break;
506         case CISS_TELECOMM_SVC_ALL_DEDI_PS:
507                 strncpy(teleservice_name, CISS_STR_ALL_PDS_SERVICES, CISS_TEXT_LEN_MAX - 1);
508                 break;
509         case CISS_TELECOMM_SVC_NONE:
510         default:
511                 DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
512                 if ((ss_type == CISS_SERVICE_WAITING) ||
513                                 (ss_type == CISS_SERVICE_IDENTIFICATION)) {
514                         strncpy(teleservice_name, "", CISS_TEXT_LEN_MAX - 1);
515                 } else {
516                         strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
517                 }
518         }
519         teleservice_name[CISS_TEXT_LEN_MAX - 1] = '\0';
520 }
521
522 void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult)
523 {
524         if (ss_type == CISS_SERVICE_FORWARDING) {
525                 switch (result_status) {
526                 case CISS_STATUS_ACTIVE:
527                         strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
528                         break;
529
530                 case CISS_STATUS_REGISTERED:
531                 case CISS_STATUS_PROVISIONED:
532                 case CISS_STATUS_QUIESCENT:
533                 case CISS_STATUS_NOTHING:
534                 default:
535                         strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
536                         break;
537                 }
538         } else {
539                 /* Wating or Barring case only have Act / Deact status */
540                 switch (result_status) {
541                 case CISS_STATUS_ACTIVE:
542                 case CISS_STATUS_REGISTERED:
543                         strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
544                         break;
545
546                 case CISS_STATUS_PROVISIONED:
547                 case CISS_STATUS_QUIESCENT:
548                 case CISS_STATUS_NOTHING:
549                 default:
550                         strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
551                         break;
552                 }
553         }
554         szResult[CISS_TEXT_LEN_MAX - 1] = '\0';
555 }
556
557