2 * tel-plugin-socket-communicator
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Ja-young Gu <jygu@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
25 #include <glib-object.h>
33 #include <communicator.h>
34 #include <core_object.h>
36 #include <user_request.h>
41 #include "tapi_common.h"
42 #include "module_req.h"
44 gboolean scomm_service_reqeust_call(unsigned int ch_id, Communicator *c, TcorePlugin *plugin, tapi_service_command_e cmd, gchar *data, void **outparam)
47 gboolean result = TRUE; int err_cause = 0;
49 gchar *serial_d = NULL;
51 GSList *co_list = NULL;
52 CoreObject *co_call = NULL;
53 UserRequest *ur = NULL;
54 struct tcore_user_info ui = { 0, 0, 0, NULL,0,0, NULL };
56 struct _sipc_marshal_object *out_obj;
57 struct _sipc_marshal_object *in_obj;
59 co_list = tcore_plugin_get_core_objects_bytype(plugin, CORE_OBJECT_TYPE_CALL);
64 co_call = (CoreObject *)co_list->data;
68 g_slist_free(co_list);
70 in_obj = sipc_util_marshal_object_deserializer(data);
75 ui.channel_id = ch_id;
76 ui.client_cmd = (unsigned int)cmd;
77 ur = tcore_user_request_new(c, tcore_plugin_get_description(plugin)->name);
81 tcore_user_request_set_user_info(ur, &ui);
84 case TAPI_SERVICE_CALL_DIAL: {
85 struct treq_call_dial data;
88 * get_data from in_obj
90 * ONLY SYNC API & RETURN DATA
91 * out_obj = sipc_util_marshal_object_create();
92 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
93 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
95 * serial_d = sipc_util_marshal_object_serializer(out_obj);
96 * s_data_len = strlen(serial_d);
97 * sipc_util_marshal_object_destory(out_obj);
99 * *outparam = g_new0(char, s_data_len);
100 * memcpy(*outparam, serial_d, hdr.s_data_len);
105 tcore_user_request_set_data(ur, sizeof( struct treq_call_dial ), &data);
106 tcore_user_request_set_command(ur, TREQ_CALL_DIAL);
108 case TAPI_SERVICE_ANSWER: {
109 struct treq_call_answer data;
112 * get_data from in_obj
114 * ONLY SYNC API & RETURN DATA
115 * out_obj = sipc_util_marshal_object_create();
116 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
117 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
119 * serial_d = sipc_util_marshal_object_serializer(out_obj);
120 * s_data_len = strlen(serial_d);
121 * sipc_util_marshal_object_destory(out_obj);
123 * *outparam = g_new0(char, s_data_len);
124 * memcpy(*outparam, serial_d, hdr.s_data_len);
129 tcore_user_request_set_data(ur, sizeof( struct treq_call_answer ), &data);
130 tcore_user_request_set_command(ur, TREQ_CALL_ANSWER);
132 case TAPI_SERVICE_END: {
133 //TAPI_CS_CALL_RELEASEALL
134 //TAPI_CS_CALL_RELEASEALL_ACTIVE
135 //TAPI_CS_CALL_RELEASEALL_HELD
136 struct treq_call_end data;
139 * get_data from in_obj
141 * ONLY SYNC API & RETURN DATA
142 * out_obj = sipc_util_marshal_object_create();
143 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
144 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
146 * serial_d = sipc_util_marshal_object_serializer(out_obj);
147 * s_data_len = strlen(serial_d);
148 * sipc_util_marshal_object_destory(out_obj);
150 * *outparam = g_new0(char, s_data_len);
151 * memcpy(*outparam, serial_d, hdr.s_data_len);
156 tcore_user_request_set_data(ur, sizeof( struct treq_call_end ), &data);
157 tcore_user_request_set_command(ur, TREQ_CALL_END);
162 case TAPI_SERVICE_HOLD: {
166 * get_data from in_obj
168 * ONLY SYNC API & RETURN DATA
169 * out_obj = sipc_util_marshal_object_create();
170 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
171 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
173 * serial_d = sipc_util_marshal_object_serializer(out_obj);
174 * s_data_len = strlen(serial_d);
175 * sipc_util_marshal_object_destory(out_obj);
177 * *outparam = g_new0(char, s_data_len);
178 * memcpy(*outparam, serial_d, hdr.s_data_len);
183 tcore_user_request_set_data(ur, sizeof( unsigned int ), &id);
184 tcore_user_request_set_command(ur, TREQ_CALL_HOLD);
186 case TAPI_SERVICE_ACTIVE: {
190 * get_data from in_obj
192 * ONLY SYNC API & RETURN DATA
193 * out_obj = sipc_util_marshal_object_create();
194 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
195 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
197 * serial_d = sipc_util_marshal_object_serializer(out_obj);
198 * s_data_len = strlen(serial_d);
199 * sipc_util_marshal_object_destory(out_obj);
201 * *outparam = g_new0(char, s_data_len);
202 * memcpy(*outparam, serial_d, hdr.s_data_len);
207 tcore_user_request_set_data(ur, sizeof( unsigned int ), &id);
208 tcore_user_request_set_command(ur, TREQ_CALL_ACTIVE);
210 case TAPI_SERVICE_SWAP: {
214 * get_data from in_obj
216 * ONLY SYNC API & RETURN DATA
217 * out_obj = sipc_util_marshal_object_create();
218 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
219 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
221 * serial_d = sipc_util_marshal_object_serializer(out_obj);
222 * s_data_len = strlen(serial_d);
223 * sipc_util_marshal_object_destory(out_obj);
225 * *outparam = g_new0(char, s_data_len);
226 * memcpy(*outparam, serial_d, hdr.s_data_len);
231 tcore_user_request_set_data(ur, sizeof( unsigned int ), &id);
232 tcore_user_request_set_command(ur, TREQ_CALL_SWAP);
234 case TAPI_SERVICE_JOIN: {
238 * get_data from in_obj
240 * ONLY SYNC API & RETURN DATA
241 * out_obj = sipc_util_marshal_object_create();
242 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
243 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
245 * serial_d = sipc_util_marshal_object_serializer(out_obj);
246 * s_data_len = strlen(serial_d);
247 * sipc_util_marshal_object_destory(out_obj);
249 * *outparam = g_new0(char, s_data_len);
250 * memcpy(*outparam, serial_d, hdr.s_data_len);
255 tcore_user_request_set_data(ur, sizeof( unsigned int ), &id);
256 tcore_user_request_set_command(ur, TREQ_CALL_JOIN);
258 case TAPI_SERVICE_SPLIT: {
262 * get_data from in_obj
264 * ONLY SYNC API & RETURN DATA
265 * out_obj = sipc_util_marshal_object_create();
266 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
267 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
269 * serial_d = sipc_util_marshal_object_serializer(out_obj);
270 * s_data_len = strlen(serial_d);
271 * sipc_util_marshal_object_destory(out_obj);
273 * *outparam = g_new0(char, s_data_len);
274 * memcpy(*outparam, serial_d, hdr.s_data_len);
279 tcore_user_request_set_data(ur, sizeof( unsigned int ), &id);
280 tcore_user_request_set_command(ur, TREQ_CALL_SPLIT);
282 case TAPI_SERVICE_DEFLECT: {
285 * get_data from in_obj
287 * ONLY SYNC API & RETURN DATA
288 * out_obj = sipc_util_marshal_object_create();
289 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
290 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
292 * serial_d = sipc_util_marshal_object_serializer(out_obj);
293 * s_data_len = strlen(serial_d);
294 * sipc_util_marshal_object_destory(out_obj);
296 * *outparam = g_new0(char, s_data_len);
297 * memcpy(*outparam, serial_d, hdr.s_data_len);
302 tcore_user_request_set_command(ur, TREQ_CALL_DEFLECT);
304 case TAPI_SERVICE_TRANSFER: {
308 * get_data from in_obj
310 * ONLY SYNC API & RETURN DATA
311 * out_obj = sipc_util_marshal_object_create();
312 * sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
313 * sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
315 * serial_d = sipc_util_marshal_object_serializer(out_obj);
316 * s_data_len = strlen(serial_d);
317 * sipc_util_marshal_object_destory(out_obj);
319 * *outparam = g_new0(char, s_data_len);
320 * memcpy(*outparam, serial_d, hdr.s_data_len);
325 tcore_user_request_set_data(ur, sizeof( unsigned int ), &id);
326 tcore_user_request_set_command(ur, TREQ_CALL_TRANSFER);
329 //TAPI_CS_CALL_GETACTIVELINE
330 //TAPI_CS_CALL_SETACTIVELINE
332 case TAPI_SERVICE_SEND_DTMF: {}break;
333 case TAPI_SERVICE_SET_SOUND_PATH: {}break;
334 case TAPI_SERVICE_GET_SOUND_VOLUME_LEVEL: {}break;
335 case TAPI_SERVICE_SET_SOUND_VOLUME_LEVEL: {}break;
336 case TAPI_SERVICE_MUTE: {}break;
337 case TAPI_SERVICE_UNMUTE: {}break;
338 case TAPI_SERVICE_GET_MUTE_STATUS: {}break;
341 ret = tcore_communicator_dispatch_request(c, ur);
342 if (ret != TCORE_RETURN_SUCCESS) {
349 gboolean scomm_service_response_call(Communicator *comm, UserRequest *ur, enum tcore_response_command command, unsigned int data_len, const void *data)
353 gboolean result = TRUE; int err_cause = 0;
354 gchar *out_d= NULL, *serial_d = NULL;
355 struct custom_data *ctx = NULL;
356 const struct tcore_user_info *ui;
358 sipc_server_t *s = NULL;
359 struct _tapi_header hdr;
360 struct _sipc_marshal_object* out_obj = NULL;
362 memset(&hdr, 0, sizeof(struct _tapi_header));
364 ctx = tcore_communicator_ref_user_data(comm);
366 dbg("user_data is NULL");
370 ui = tcore_user_request_ref_user_info(ur);
373 dbg("application channel id(%d), Command = [0x%x], data_len = %d", ui->channel_id, command, data_len);
374 hdr.cmd = (tapi_service_command_e)ui->client_cmd;
377 case TRESP_CALL_DIAL: {
378 struct tresp_call_general* resp_data = 0;
379 resp_data = (struct tresp_call_general*)data;
381 /*{create output data and create serialized data}
382 out_obj = sipc_util_marshal_object_create();
383 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
384 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
389 case TRESP_CALL_ANSWER: {
390 struct tresp_call_general* resp_data = 0;
391 resp_data = (struct tresp_call_general*)data;
393 /*{create output data and create serialized data}
394 out_obj = sipc_util_marshal_object_create();
395 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
396 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
401 case TRESP_CALL_END: {
402 struct tresp_call_general* resp_data = 0;
403 resp_data = (struct tresp_call_general*)data;
405 /*{create output data and create serialized data}
406 out_obj = sipc_util_marshal_object_create();
407 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
408 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
413 case TRESP_CALL_END_ALL: {
414 struct tresp_call_general* resp_data = 0;
415 resp_data = (struct tresp_call_general*)data;
417 /*{create output data and create serialized data}
418 out_obj = sipc_util_marshal_object_create();
419 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
420 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
425 case TRESP_CALL_END_ALL_ACTIVE: {
426 struct tresp_call_general* resp_data = 0;
427 resp_data = (struct tresp_call_general*)data;
429 /*{create output data and create serialized data}
430 out_obj = sipc_util_marshal_object_create();
431 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
432 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
436 case TRESP_CALL_END_ALL_HELD: {
437 struct tresp_call_general* resp_data = 0;
438 resp_data = (struct tresp_call_general*)data;
440 /*{create output data and create serialized data}
441 out_obj = sipc_util_marshal_object_create();
442 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
443 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
447 case TRESP_CALL_HOLD: {
448 struct tresp_call_general* resp_data = 0;
449 resp_data = (struct tresp_call_general*)data;
451 /*{create output data and create serialized data}
452 out_obj = sipc_util_marshal_object_create();
453 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
454 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
458 case TRESP_CALL_ACTIVE: {
459 struct tresp_call_general* resp_data = 0;
460 resp_data = (struct tresp_call_general*)data;
462 /*{create output data and create serialized data}
463 out_obj = sipc_util_marshal_object_create();
464 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
465 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
469 case TRESP_CALL_SWAP: {
470 struct tresp_call_general* resp_data = 0;
471 resp_data = (struct tresp_call_general*)data;
473 /*{create output data and create serialized data}
474 out_obj = sipc_util_marshal_object_create();
475 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
476 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
480 case TRESP_CALL_JOIN: {
481 struct tresp_call_general* resp_data = 0;
482 resp_data = (struct tresp_call_general*)data;
484 /*{create output data and create serialized data}
485 out_obj = sipc_util_marshal_object_create();
486 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
487 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
491 case TRESP_CALL_SPLIT: {
492 struct tresp_call_general* resp_data = 0;
493 resp_data = (struct tresp_call_general*)data;
495 /*{create output data and create serialized data}
496 out_obj = sipc_util_marshal_object_create();
497 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
498 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
502 case TRESP_CALL_DEFLECT: {
505 case TRESP_CALL_TRANSFER: {
506 struct tresp_call_general* resp_data = 0;
507 resp_data = (struct tresp_call_general*)data;
509 /*{create output data and create serialized data}
510 out_obj = sipc_util_marshal_object_create();
511 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
512 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
516 case TRESP_CALL_SEND_DTMF: {
519 case TRESP_CALL_SET_SOUND_PATH: {
520 struct tresp_call_sound_general* resp_data = 0;
521 //tapi_sound_error_info_t error_info = { 0 };
523 resp_data = (struct tresp_call_sound_general*)data;
525 /*{create output data and create serialized data}
526 out_obj = sipc_util_marshal_object_create();
527 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
528 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
533 case TRESP_CALL_SET_SOUND_VOLUME_LEVEL: {
534 struct tresp_call_sound_general* resp_data = 0;
535 //tapi_sound_error_info_t error_info = { 0 };
536 unsigned int err = 0;
538 resp_data = (struct tresp_call_sound_general*)data;
540 /*{create output data and create serialized data}
541 out_obj = sipc_util_marshal_object_create();
542 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
543 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
548 case TRESP_CALL_GET_SOUND_VOLUME_LEVEL: {
552 case TRESP_CALL_MUTE:
553 case TRESP_CALL_UNMUTE: {
554 struct tresp_call_sound_general* resp_data = 0;
555 //tapi_sound_error_info_t error_info = { 0 };
556 unsigned int err = 0;
558 resp_data = (struct tresp_call_sound_general*)data;
560 /*{create output data and create serialized data}
561 out_obj = sipc_util_marshal_object_create();
562 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
563 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
568 case TRESP_CALL_GET_MUTE_STATUS: {
577 serial_d = sipc_util_marshal_object_serializer(out_obj);
578 hdr.data_len = strlen(serial_d);
579 sipc_util_marshal_object_destory(out_obj);
582 out_d = g_new0(char, sizeof(struct _tapi_header)+hdr.data_len);
583 memcpy(out_d, &hdr, sizeof(struct _tapi_header));
585 memcpy(out_d+sizeof(struct _tapi_header), serial_d, hdr.data_len);
589 ret = sipc_server_send(s, ui->channel_id, out_d, sizeof(struct _tapi_header)+hdr.data_len, SIPC_SEND_DATA_ASYNC);
599 gboolean scomm_service_notification_call(Communicator *comm, CoreObject *source, enum tcore_notification_command command, unsigned int data_len, const void *data)
602 gboolean result = TRUE; int err_cause = 0;
603 gchar *out_d= NULL, *serial_d = NULL;
605 struct custom_data *ctx = NULL;
606 sipc_server_t *s = NULL;
608 struct _tapi_header hdr;
609 struct _sipc_marshal_object* out_obj = NULL;
611 memset(&hdr, 0, sizeof(struct _tapi_header));
613 ctx = tcore_communicator_ref_user_data(comm);
615 dbg("user_data is NULL");
620 dbg("notification !!! (command = 0x%x, data_len = %d)", command, data_len);
623 case TNOTI_CALL_STATUS_IDLE: {
624 //TelCallEndInfo_t resp_data;
625 int *id = (int*)data;
627 //resp_data.CallEndCause = 0;
628 //resp_data.pCallHandle = *id;
629 //resp_data.CallStartTime = 0;
630 //resp_data.CallEndTime = 0;
632 /*{create output data and create serialized data}
634 out_obj = sipc_util_marshal_object_create();
635 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
636 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
640 //TAPI_EVENT_CLASS_CALL_VOICE,
641 //TAPI_EVENT_CALL_END_IND,
645 case TNOTI_CALL_STATUS_DIALING:
648 case TNOTI_CALL_STATUS_ALERT:
650 /*{create output data and create serialized data}
652 out_obj = sipc_util_marshal_object_create();
653 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
654 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
658 //TAPI_EVENT_CLASS_CALL_VOICE,
659 //TAPI_EVENT_CALL_ALERT_IND,
662 case TNOTI_CALL_STATUS_ACTIVE:
664 /*{create output data and create serialized data}
666 out_obj = sipc_util_marshal_object_create();
667 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
668 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
672 //TAPI_EVENT_CLASS_CALL_VOICE,
673 //TAPI_EVENT_CALL_CONNECTED_IND,
676 case TNOTI_CALL_STATUS_HELD:
678 /*{create output data and create serialized data}
680 out_obj = sipc_util_marshal_object_create();
681 sipc_util_marshal_object_add_data(out_obj, "result", &result, SIPC_MARSHAL_DATA_BOOLEAN_TYPE);
682 sipc_util_marshal_object_add_data(out_obj, "err_cause", &err_cause, SIPC_MARSHAL_DATA_BOOLEAN_INT);
686 //TAPI_EVENT_CLASS_CALL_VOICE,
687 //TAPI_EVENT_CALL_HOLD_IND,
690 case TNOTI_CALL_STATUS_INCOMING: {
691 struct tnoti_call_status_incoming *incoming = 0;
694 char forward[2] = {0, };
695 char active_line[2] = {0, };
697 char number[83] = {0, };
698 char name[83] = {0, };
703 incoming = (struct tnoti_call_status_incoming*)data;
705 snprintf( id, 2, "%d", incoming->id );
706 dbg("id : [%s]", id );
707 snprintf( cli, 2, "%d", incoming->cli.mode );
708 dbg("cli : [%s]", id );
709 snprintf( number, 83, "%s", incoming->cli.number );
710 dbg("number : [%s]", number );
711 snprintf( forward, 2, "%d", incoming->forward );
712 dbg("forward : [%s]", forward );
713 snprintf( active_line, 2, "%d", incoming->active_line );
714 dbg("active_line : [%s]", active_line );
715 snprintf( cna, 2, "%d", incoming->cna.mode );
716 dbg("cna : [%s]", cna );
717 snprintf( name, 83, "%s", incoming->cna.name );
718 dbg("name : [%s]", name );
720 kb = bundle_create();
721 bundle_add(kb, "launch-type", "MT");
722 bundle_add(kb, "handle", id);
723 bundle_add(kb, "number", number);
724 bundle_add(kb, "name_mode", cna);
725 bundle_add(kb, "name", name);
726 bundle_add(kb, "clicause", cli);
727 bundle_add(kb, "fwded", forward);
728 bundle_add(kb, "activeline", active_line);
730 ret = aul_launch_app("com.samsung.call", kb);
733 dbg("aul_launch_app [ voice call ] : %d", ret);
738 case TNOTI_CALL_STATUS_WAITING:
744 serial_d = sipc_util_marshal_object_serializer(out_obj);
745 hdr.data_len = strlen(serial_d);
746 sipc_util_marshal_object_destory(out_obj);
749 out_d = g_new0(char, sizeof(struct _tapi_header)+hdr.data_len);
750 memcpy(out_d, &hdr, sizeof(struct _tapi_header));
752 memcpy(out_d+sizeof(struct _tapi_header), serial_d, hdr.data_len);
756 ret = sipc_server_broadcast(s, out_d, sizeof(struct _tapi_header)+hdr.data_len);