2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "ciss-common.h"
18 #include "ciss-widget.h"
19 #include "ciss-resp.h"
20 #include "ciss-tapi-request.h"
21 #include "ciss-converter.h"
22 #include "ciss-util.h"
23 #include <TapiEvent.h>
25 static char resultstring[CISS_MAX_SS_RECORDS][CISS_USSD_DATA_SIZE_MAX];
27 static void __ciss_create_forward_result_string(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
30 DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string: num of param=%d\n", ss_info->NumberOfRecords);
31 /* Check Network result & Setting Proper result string to display */
32 /* Set Supplement service type string */
33 ciss_result->szSsType = CISS_SERVICE_DIVERTING;
34 ciss_result->nRecordNum = ss_info->NumberOfRecords;
35 /* Request from MMI string */
37 /* No SS Result received case.. */
38 if (ss_info->NumberOfRecords <= 0) {
39 DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string: (ME) parameter num=0!\n");
40 /* Set Display string : Default telecommSvc, Flavor, Result */
41 ciss_result->nRecordNum = 0;
42 _ciss_get_telecomm_svc(TAPI_SS_TS_NONE, &ciss_result->szBearer[0]);
43 _ciss_get_result_status_type(TAPI_SS_STATUS_PROVISIONED, &ciss_result->szResult[0]);
44 ciss_result->szFlavor = CISS_FLAVOR_NONE;
46 /* Single or Multiple result received case..
47 In case of all CF and all conditional CF, tapi always sends a no reply flavor.
48 So we have to get the flavor with requested data that is saved in ss_result_string structure. */
50 /* Set Display string : Network result value */
51 for (i = 0; i < ss_info->NumberOfRecords; i++) {
52 _ciss_get_telecomm_svc(ss_info->SsRecord.ForwardingRecord.rec_class[i].TeleCommService, &ciss_result->szBearer[i]);
53 _ciss_get_result_status_type(ss_info->SsRecord.ForwardingRecord.rec_class[i].Status, &ciss_result->szResult[i]);
55 if ((ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition == TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV) &&
56 (ss_info->SsRecord.ForwardingRecord.rec_class[i].NoReplyWaitTime != 0)) {
57 ciss_result->nDivertWaitingTime[i] = ss_info->SsRecord.ForwardingRecord.rec_class[i].NoReplyWaitTime;
58 DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string(Multiple %dth): No reply time=%d\n",
59 i, ciss_result->nDivertWaitingTime[i]);
61 DBG("\n [CISS-ENGINE] #########forwarding number = %s########\n\n",
62 ss_info->SsRecord.ForwardingRecord.rec_class[i].szCallForwardingNumber);
64 if (ss_info->SsRecord.ForwardingRecord.rec_class[i].bCallForwardingNumberPresent) {
65 _ciss_strcpy(ciss_result->szDivertNumber[i],
66 sizeof(ciss_result->szDivertNumber[i]),
67 (char *)ss_info->SsRecord.ForwardingRecord.rec_class[i].szCallForwardingNumber);
68 DBG("\n [CISS-ENGINE] #########forwarding number in response= %s########\n\n",
69 ciss_result->szDivertNumber[i]);
71 DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string(Multiple %dth): Bearer = %d, Favor = %d, Status = %d, num=%s\n",
72 i, ss_info->SsRecord.ForwardingRecord.rec_class[i].TeleCommService,
73 ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition,
74 ss_info->SsRecord.ForwardingRecord.rec_class[i].Status,
75 ciss_result->szDivertNumber[i]);
81 static void __ciss_create_barring_result_string(ciss_result_t *ciss_result /*out */, TelSsInfo_t *ss_info /*in */)
84 /* Set Supplement service type string */
85 ciss_result->szSsType = CISS_SERVICE_BARRING;
86 ciss_result->nRecordNum = ss_info->NumberOfRecords;
88 if (ss_info->NumberOfRecords <= 0) {
89 DBG("\n [CISS-ENGINE] __ciss_create_barring_result_string: (ME) parameter num=0!\n");
90 /* Set Display string : Default telecommSvc, Flavor, Result */
91 ciss_result->nRecordNum = 0;
92 _ciss_get_telecomm_svc(TAPI_SS_TS_NONE, &ciss_result->szBearer[0]);
93 _ciss_get_result_status_type(TAPI_SS_STATUS_PROVISIONED, &ciss_result->szResult[0]);
95 /* Single or Multiple result received case.. */
96 /* In case of all barring, tapi always sends a BAOC flavor. */
97 /* So we have to get the flavor with requested data that is saved in ss_result_string structure. */
99 for (i = 0; i < ss_info->NumberOfRecords; i++) {
100 _ciss_get_telecomm_svc(ss_info->SsRecord.BarringRecord.rec_class[i].TeleCommService, &ciss_result->szBearer[i]);
101 _ciss_get_result_status_type(ss_info->SsRecord.BarringRecord.rec_class[i].Status, &ciss_result->szResult[i]);
102 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_barring_cnf(Multiple %dth): Bearer = %d, Favor = %d, Status = %d\n",
103 i, ss_info->SsRecord.BarringRecord.rec_class[i].TeleCommService,
104 ss_info->SsRecord.BarringRecord.rec_class[i].Flavour,
105 ss_info->SsRecord.BarringRecord.rec_class[i].Status);
110 static void __ciss_create_waiting_result_string(ciss_result_t *ciss_result /*out */, TelSsInfo_t *ss_info /*in */)
112 TelSsStatus_t WaitingResultStatus;
114 /* Check Network result & Setting Proper result string to display */
115 /* Set Supplement service type string */
116 ciss_result->szSsType = CISS_SERVICE_WAITING;
118 /* Call waiting setting result state
119 1) Interrogate / Activate : all received bearers mean "Activate"
120 2) Deactivate : All received bearers mean "Deactivate"
122 if (ss_info->SsRecord.WaitingRecord.rec_class[0].Status == TAPI_SS_STATUS_QUIESCENT)
123 WaitingResultStatus = TAPI_SS_STATUS_PROVISIONED;
125 WaitingResultStatus = TAPI_SS_STATUS_ACTIVE;
127 DBG("\n [CISS-ENGINE] create_waiting_result_string : WaitingResultStatus = %d", WaitingResultStatus);
128 ciss_result->nRecordNum = ss_info->NumberOfRecords;
130 /* Request From MMI */
131 if (ss_info->NumberOfRecords <= 0) {
132 DBG("\n [CISS-ENGINE] __ciss_create_waiting_result_string: (ME) parameter num=0!\n");
133 /* Set Display string : Default telecommSvc, Flavor, Result */
134 _ciss_get_telecomm_svc(TAPI_SS_TS_NONE, &ciss_result->szBearer[0]);
135 _ciss_get_result_status_type(TAPI_SS_STATUS_PROVISIONED, &ciss_result->szResult[0]);
136 ciss_result->nRecordNum = 0;
138 /* Single or Multiple result received case.. */
139 /* Set Display string : Network result value */
141 for (i = 0; i < ss_info->NumberOfRecords; i++) {
142 _ciss_get_telecomm_svc(ss_info->SsRecord.WaitingRecord.rec_class[i].TeleCommService, &ciss_result->szBearer[i]);
143 _ciss_get_result_status_type(WaitingResultStatus, &ciss_result->szResult[i]);
144 DBG("\n [CISS-ENGINE] __ciss_create_waiting_result_string(Multiple %dth): Bearer = %d, Status = %d\n",
145 i, ss_info->SsRecord.WaitingRecord.rec_class[i].TeleCommService,
146 ss_info->SsRecord.WaitingRecord.rec_class[i].Status);
151 static void __ciss_create_cli_result_string(ciss_result_t *ciss_result /*out */, TelSsCliRecord_t *pCliRecord /*in */)
153 ciss_result->szSsType = CISS_SERVICE_IDENTIFICATION;
154 ciss_result->szFlavor = CISS_FLAVOR_NONE;
155 ciss_result->szBearer[0] = CISS_TELECOMM_SVC_NONE;
157 switch (pCliRecord->IdentificationType) {
158 case TAPI_CALLING_LINE_IDENTITY_PRESENTATION:
159 ciss_result->cli_type = CISS_CALLING_LINE_IDENTITY_PRESENTATION;
160 DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CALLING_LINE_IDENTITY_PRESENTATION (ciss_info.cli_record.status=%d)\n", pCliRecord->CliStatus);
161 /* CLIP : The CLIP Supplementary Service provides the called party with the possibility to receive the line identity of the calling party.
162 ** CLIP is activated with Provisioned . Generally it is provisioned by n/w.
163 ** *#30# MMI string is used to check the status:
164 ** case1: When CLIP is provisioned and activated.SS status sent by QMOCHA will be TAPI_SS_STATUS_ACTIVE.
165 ** UI should display: "Number of caller is shown" or message something like this
168 if ((pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) ||
169 pCliRecord->CliStatus == TAPI_CLI_STATUS_PROVISIONED) {
170 /* Display : Caller ID is shown */
171 ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
173 /* case2: When CLIP is not provisioned. SS status sent by QMOCHA will be TAPI_SS_STATUS_NOTHING.
174 ** UI should display: "CLIP not subscribed" or message something like this.
175 ** commented by Yongseock Choi : According to our police, because of no corresponding UI string, TAPI_SS_STATUS_NOTHING and TAPI_SS_STATUS_QUIESCENT
176 ** TAPI_SS_STATUS_REGISTERED are mapped into "Caller ID is not shown".
178 /* Display : Caller ID is not shown */
179 ciss_result->szResult[0] = CISS_STATUS_NOTHING;
183 case TAPI_CALLING_LINE_IDENTITY_RESTRICTION:
184 ciss_result->cli_type = CISS_CALLING_LINE_IDENTITY_RESTRICTION;
185 DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CALLING_LINE_IDENTITY_RESTRICTION (cli_status = %d)\n", pCliRecord->CliStatus);
186 /* CLIR : The CLIR Supplementary Service enables the calling party to prevent presentation of its line identity to the called party.
187 ** The CLIR Supplementary Service can be offered with one subscription option :
188 ** 1)permanent (invoked for all relevant calls) or
189 ** 2)temporary (suppressed by the user on a per call basis).
190 ** In temporary mode , defaults values are:
191 ** 1) presentation restricted: or
192 ** 2) presentation not restricted(allowed).
194 if (pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED ||
195 pCliRecord->CliStatus == TAPI_CLI_STATUS_PROVISIONED ||
196 pCliRecord->CliStatus == TAPI_CLI_STATUS_TEMP_RESTRICTED) {
197 ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
199 /* Display : My caller ID sent on calling */
200 ciss_result->szResult[0] = CISS_STATUS_NOTHING;
204 case TAPI_CONNECTED_LINE_IDENTITY_PRESENTATION:
205 ciss_result->cli_type = CISS_CONNECTED_LINE_IDENTITY_PRESENTATION;
206 DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CONNECTED_LINE_IDENTITY_PRESENTATION (ciss_info.cli_record.cli_status=%d)\n", pCliRecord->CliStatus);
207 if (pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) {
208 /* Display : Answering Caller ID is shown */
209 ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
211 /* Display : Answering Caller ID is not shown */
212 ciss_result->szResult[0] = CISS_STATUS_NOTHING;
216 case TAPI_CONNECTED_LINE_IDENTITY_RESTRICTION:
217 ciss_result->cli_type = CISS_CONNECTED_LINE_IDENTITY_RESTRICTION;
218 DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CONNECTED_LINE_IDENTITY_RESTRICTION (ciss_info.cli_record.status=%d)\n", pCliRecord->CliStatus);
219 if (pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) {
220 /* Display : My caller ID not sent on answering */
221 ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
223 /* Display : My caller ID sent on answering */
224 ciss_result->szResult[0] = CISS_STATUS_NOTHING;
228 case TAPI_CALLING_NAME_PRESENTATION:
229 ciss_result->cli_type = CISS_CALLING_NAME_PRESENTATION;
230 DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CALLING_NAME_PRESENTATION (ciss_info.cli_record.status=%d)\n", pCliRecord->CliStatus);
231 if ((pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) ||
232 (pCliRecord->CliStatus == TAPI_CLI_STATUS_PROVISIONED)) {
233 /* Display : My caller name sent on answering */
234 ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
236 /* Display : My caller name not sent on answering */
237 ciss_result->szResult[0] = CISS_STATUS_NOTHING;
242 ciss_result->cli_type = CISS_CC_VOICE_IDENTIFICATION_NONE;
243 ciss_result->szResult[0] = CISS_STATUS_NOTHING;
244 DBG("\n [CISS-ENGINE] ciss_callId_display_identification: ERROR Wrong tapi_ss_cnap_status_t = %d come. \n", pCliRecord->IdentificationType);
249 static void __ciss_ui_mmi_create_cnap_result_string(ciss_result_t *result, char *szResult)
251 switch (result->cli_type) {
252 case CISS_CALLING_LINE_IDENTITY_PRESENTATION:
253 switch (result->szResult[0]) {
254 case CISS_STATUS_ACTIVE:
255 strncpy(szResult, CISS_STR_CALLER_ID_SHOWN, CISS_USSD_DATA_SIZE_MAX - 1);
257 case CISS_STATUS_REGISTERED:
258 case CISS_STATUS_PROVISIONED:
259 case CISS_STATUS_QUIESCENT:
260 case CISS_STATUS_NOTHING:
262 strncpy(szResult, CISS_STR_CALLER_ID_HIDDEN, CISS_USSD_DATA_SIZE_MAX - 1);
266 case CISS_CALLING_LINE_IDENTITY_RESTRICTION:
267 switch (result->szResult[0]) {
268 case CISS_STATUS_ACTIVE:
269 strncpy(szResult, CISS_STR_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
271 case CISS_STATUS_REGISTERED:
272 case CISS_STATUS_PROVISIONED:
273 case CISS_STATUS_QUIESCENT:
274 case CISS_STATUS_NOTHING:
276 strncpy(szResult, CISS_STR_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
280 case CISS_CONNECTED_LINE_IDENTITY_PRESENTATION:
281 switch (result->szResult[0]) {
282 case CISS_STATUS_ACTIVE:
283 strncpy(szResult, CISS_STR_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
285 case CISS_STATUS_REGISTERED:
286 case CISS_STATUS_PROVISIONED:
287 case CISS_STATUS_QUIESCENT:
288 case CISS_STATUS_NOTHING:
290 strncpy(szResult, CISS_STR_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
294 case CISS_CONNECTED_LINE_IDENTITY_RESTRICTION:
295 switch (result->szResult[0]) {
296 case CISS_STATUS_ACTIVE:
297 strncpy(szResult, CISS_STR_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS, CISS_USSD_DATA_SIZE_MAX - 1);
299 case CISS_STATUS_REGISTERED:
300 case CISS_STATUS_PROVISIONED:
301 case CISS_STATUS_QUIESCENT:
302 case CISS_STATUS_NOTHING:
304 strncpy(szResult, CISS_STR_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS, CISS_USSD_DATA_SIZE_MAX - 1);
308 case CISS_CALLING_NAME_PRESENTATION:
309 switch (result->szResult[0]) {
310 case CISS_STATUS_ACTIVE:
311 strncpy(szResult, CISS_STR_CALLER_ID_AVAILABLE, CISS_USSD_DATA_SIZE_MAX - 1);
313 case CISS_STATUS_REGISTERED:
314 case CISS_STATUS_PROVISIONED:
315 case CISS_STATUS_QUIESCENT:
316 case CISS_STATUS_NOTHING:
318 strncpy(szResult, CISS_STR_CALLER_ID_RESTRICTED, CISS_USSD_DATA_SIZE_MAX - 1);
323 strncpy(szResult, "Incorrect Service", CISS_USSD_DATA_SIZE_MAX - 1);
326 DBG("\n \n [CISS-MMI] THe result String :%s\n", szResult);
329 static void __ciss_ui_mmi_create_mmi_result_string(ciss_result_t *pSSResult, int index, char *result_string)
332 char mszBuffer[CISS_TEXT_LEN_MAX];
333 char szBuffer[CISS_TEXT_LEN_MAX];
334 char service[CISS_TEXT_LEN_MAX];
335 char teleservice[CISS_TEXT_LEN_MAX];
336 char flavor[CISS_TEXT_LEN_MAX];
337 char status[CISS_TEXT_LEN_MAX];
339 _ciss_ui_mmi_get_service_name(pSSResult->szSsType, service);
340 _ciss_ui_mmi_get_flavor_name(pSSResult->szFlavor, flavor);
341 _ciss_ui_mmi_get_bearer_name(pSSResult->szSsType, pSSResult->szBearer[index], teleservice);
342 _ciss_ui_mmi_get_result_status_type(pSSResult->szSsType, pSSResult->szResult[index], status);
344 strncpy(mszBuffer, service, CISS_TEXT_LEN_MAX - 1);
345 mszBuffer[CISS_TEXT_LEN_MAX - 1] = '\0';
347 if (strlen(teleservice)) {
348 strncat(mszBuffer, "<br>", strlen("<br>"));
349 strncat(mszBuffer, " -", strlen(" -"));
350 strncat(mszBuffer, teleservice, strlen(teleservice));
352 DBG("create_result_string: Label Text(telecommSvc) = %d\n", pSSResult->szBearer[index]);
354 if (pSSResult->szSsType == CISS_SERVICE_DIVERTING) {
355 /* if Flavor case is 'no reply' then add timer information */
356 if ((strcmp(flavor, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY) == 0) &&
357 (pSSResult->nDivertWaitingTime[index] != 0)) {
358 snprintf(szBuffer, CISS_TEXT_LEN_MAX, "%s %02ds", flavor, pSSResult->nDivertWaitingTime[index]);
360 strncpy(szBuffer, flavor, CISS_TEXT_LEN_MAX - 1);
361 szBuffer[CISS_TEXT_LEN_MAX - 1] = '\0';
364 if (strlen(flavor) > 1) {
365 strncat(mszBuffer, "<br>", strlen("<br>"));
366 strncat(mszBuffer, " -", strlen(" -"));
367 strncat(mszBuffer, szBuffer, strlen(szBuffer));
369 DBG("\n [CISS-MMI] create_result_string: Label Text(flavor) = %s\n", flavor);
371 /* 4) Display Status */
372 strncat(mszBuffer, "<br>", strlen("<br>"));
373 strncat(mszBuffer, " -", strlen(" -"));
374 strncat(mszBuffer, status, strlen(szBuffer));
376 /* 5) Display telephone number */
377 if (strlen(pSSResult->szDivertNumber[index]) &&
378 (strcmp(status, CISS_STR_ACTIVATED) == 0)) {
379 DBG("\n [CISS-MMI] create_result_string: Call forwarding number = %s\n",
380 pSSResult->szDivertNumber[index]);
382 strncat(mszBuffer, "<br>", strlen("<br>"));
383 strncat(mszBuffer, " ", strlen(" "));
384 strncat(mszBuffer, pSSResult->szDivertNumber[index], strlen(pSSResult->szDivertNumber[index]));
386 DBG("\n [CISS-MMI] create_result_string: Call forwarding number is not need");
387 } else if (pSSResult->szSsType == CISS_SERVICE_BARRING) {
388 if (strlen(flavor) > 1) {
389 strncat(mszBuffer, "<br>", strlen("<br>"));
390 strncat(mszBuffer, " -", strlen(" -"));
391 strncat(mszBuffer, flavor, strlen(flavor));
394 /* 4) Display Status */
395 strncat(mszBuffer, "<br>", strlen("<br>"));
396 strncat(mszBuffer, " -", strlen(" -"));
397 strncat(mszBuffer, status, strlen(status));
398 } else if (pSSResult->szSsType == CISS_SERVICE_WAITING) {
399 /* 4) Display Status */
400 strncat(mszBuffer, "<br>", strlen("<br>"));
401 strncat(mszBuffer, " -", strlen("< ->"));
402 strncat(mszBuffer, status, strlen(status));
404 strncpy(result_string, mszBuffer, CISS_USSD_DATA_SIZE_MAX - 1);
406 DBG("Result String:%s\n", result_string);
410 static int __ciss_tapi_handle_forward_cnf(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
412 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_forward_cnf: TAPI_EVENT_SS_FORWARD_XXX_CNF received\n");
413 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_forward_cnf(Single): Bearer = %d, Flavor = %d, Status = %d \n",
414 ss_info->SsRecord.ForwardingRecord.rec_class[0].TeleCommService,
415 ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition,
416 ss_info->SsRecord.ForwardingRecord.rec_class[0].Status);
418 memset(ciss_result, 0, sizeof(ciss_result_t));
419 DBG("\n [CISS-ENGINE] ss_info.SsRecord.ForwardingRecord.rec_class[0].szCallForwardingNumber : %s %d",
420 ss_info->SsRecord.ForwardingRecord.rec_class[0].szCallForwardingNumber,
421 strlen((char *)ss_info->SsRecord.ForwardingRecord.rec_class[0].szCallForwardingNumber));
422 _ciss_get_forward_flavor_type(ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition,
423 &(ciss_result->szFlavor));
424 __ciss_create_forward_result_string(ciss_result, ss_info);
426 DBG("\n [CISS-ENGINE] this->ss_req_data.flavor: %d\n", ciss_result->szFlavor);
427 DBG("\n [CISS-ENGINE] this->ss_req_data.telecommSvc: %d\n, this->ss_req_data.action: %d \n",
428 ciss_result->szBearer[0], ciss_result->szResult[0]);
433 static int __ciss_tapi_handle_barring_cnf(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
435 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_barring_cnf: TAPI_EVENT_SS_BARRING_XXX_CNF received\n");
436 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_barring_cnf(Single): Bearer = %d, Favor = %d, Status = %d\n",
437 ss_info->SsRecord.BarringRecord.rec_class[0].TeleCommService,
438 ss_info->SsRecord.BarringRecord.rec_class[0].Flavour,
439 ss_info->SsRecord.BarringRecord.rec_class[0].Status);
441 memset(ciss_result, 0, sizeof(ciss_result_t));
442 _ciss_get_barring_flavor_type(ss_info->SsRecord.BarringRecord.rec_class[0].Flavour, &(ciss_result->szFlavor));
443 __ciss_create_barring_result_string(ciss_result, ss_info);
448 static int __ciss_tapi_handle_waiting_cnf(ciss_result_t *ciss_result /*out */, TelSsInfo_t *ss_info /*in */)
450 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_waiting_cnf: TAPI_EVENT_SS_WAITING_XXX_CNF received\n");
451 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_waiting_cnf(Single): Bearer = %d, Status = %d\n",
452 ss_info->SsRecord.WaitingRecord.rec_class[0].TeleCommService,
453 ss_info->SsRecord.WaitingRecord.rec_class[0].Status);
455 memset(ciss_result, 0, sizeof(ciss_result_t));
456 __ciss_create_waiting_result_string(ciss_result, ss_info);
461 static int __ciss_tapi_handle_call_id(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
463 DBG("\n [CISS-ENGINE] __ciss_tapi_handle_call_id: TAPI_EVENT_SS_IDENTITY_IND received\n");
465 memset(ciss_result, 0, sizeof(ciss_result_t));
466 __ciss_create_cli_result_string(ciss_result, &(ss_info->SsRecord.CliRecord));
467 ciss_result->nRecordNum = 1;
472 static int __ciss_create_ss_result_sting(char *ss_result_string /*out */, TelSsInfo_t *ss_info /*in */)
476 ciss_result_t ciss_result;
477 switch (ss_info->SsType) {
478 case TAPI_SS_TYPE_FORWARDING:
479 __ciss_tapi_handle_forward_cnf(&ciss_result, ss_info);
482 case TAPI_SS_TYPE_BARRING:
483 __ciss_tapi_handle_barring_cnf(&ciss_result, ss_info);
486 case TAPI_SS_TYPE_WAITING:
487 __ciss_tapi_handle_waiting_cnf(&ciss_result, ss_info);
490 case TAPI_SS_TYPE_IDENTIFICATION:
491 __ciss_tapi_handle_call_id(&ciss_result, ss_info);
498 memset(resultstring, 0x0, sizeof(resultstring));
499 if (ciss_result.szSsType == CISS_SERVICE_IDENTIFICATION) {
500 DBG("\n [CISS-MMI] CISS_SERVICE_IDENTIFICATION \n");
501 __ciss_ui_mmi_create_cnap_result_string(&ciss_result, resultstring[0]);
502 } else if (ciss_result.nRecordNum == 0) {
503 DBG("\n [CISS-MMI] result.nRecordNum == 0 \n");
504 strncpy(resultstring[0], CISS_STR_SUCCESS, CISS_TEXT_LEN_MAX - 1);
507 for (g_count = 0; g_count < ciss_result.nRecordNum; g_count++) {
508 __ciss_ui_mmi_create_mmi_result_string(&ciss_result, g_count, resultstring[g_count]);
509 DBG("\n [CISS-MMI] Copying data & parsing Result string ::::::::::: %s \n", resultstring[g_count]);
515 for (count = 0; count < ciss_result.nRecordNum; count++) {
516 strncat(ss_result_string, "<br> ", strlen("<br> "));
517 strncat(ss_result_string, resultstring[count], strlen(resultstring[count]));
518 strncat(ss_result_string, "<br> ", strlen("<br> "));
520 DBG("Final Result string : %s ", ss_result_string);
526 static void __ciss_ssresp_view_quit_cb(void *data, Evas_Object *obj, void *event_info)
531 Evas_Object *_ciss_create_ss_resp_view(Evas_Object *parent, TelSsInfo_t *ss_info, void *data)
534 retv_if(parent == NULL, NULL);
535 retv_if(data == NULL, NULL);
537 struct appdata *ad = (struct appdata *)data;
539 Evas_Object *l_button;
541 char ss_result_string[CISS_MMI_MAX_SS_RESP_STRING] = { };
544 __ciss_create_ss_result_sting(ss_result_string, ss_info);
546 snprintf(ss_result_string, CISS_MMI_MAX_SS_RESP_STRING, "%s", CISS_STR_SUCCESS);
548 nf = elm_naviframe_add(parent);
549 retv_if(nf == NULL, NULL);
551 Evas_Object *genlist =
552 _ciss_create_result_genlist(ss_result_string, CISS_MMI_MAX_SS_RESP_STRING, nf, ad);
553 retv_if(NULL == genlist, NULL);
555 l_button = elm_button_add(nf);
556 evas_object_smart_callback_add(l_button, "clicked",
557 __ciss_ssresp_view_quit_cb, NULL);
559 elm_naviframe_item_push(nf, CISS_STR_INFORMATION,
560 l_button, NULL, genlist, NULL);
561 elm_object_style_set(l_button, "naviframe/back_btn/default");
563 evas_object_show(nf);