2 * Copyright (c) 2011-2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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.
19 #include "vc_widget_client.h"
20 #include "vc_widget_dbus.h"
23 static int g_w_waiting_time = 3000;
25 static Ecore_Fd_Handler* g_w_fd_handler = NULL;
27 static DBusConnection* g_w_conn_sender = NULL;
28 static DBusConnection* g_w_conn_listener = NULL;
30 extern int __vc_widget_cb_error(int reason, int daemon_pid, char* msg);
32 extern void __vc_widget_cb_show_tooltip(int pid, bool show);
34 extern void __vc_widget_cb_result();
36 extern int __vc_widget_cb_service_state(int state);
39 static Eina_Bool widget_listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
41 if (NULL == g_w_conn_listener) return ECORE_CALLBACK_RENEW;
43 dbus_connection_read_write_dispatch(g_w_conn_listener, 50);
46 DBusMessage* msg = NULL;
47 msg = dbus_connection_pop_message(g_w_conn_listener);
49 /* loop again if we haven't read a message */
54 SLOG(LOG_DEBUG, TAG_VCW, "[DEBUG] Message is arrived");
57 dbus_error_init(&err);
59 char if_name[64] = {0, };
60 snprintf(if_name, 64, "%s", VC_WIDGET_SERVICE_INTERFACE);
62 if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_HELLO)) {
63 SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget hello");
67 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
69 if (dbus_error_is_set(&err)) {
70 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
71 dbus_error_free(&err);
75 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get hello : pid(%d) ", pid);
78 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get hello : invalid pid ");
81 DBusMessage* reply = NULL;
82 reply = dbus_message_new_method_return(msg);
85 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
87 if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
88 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to send reply");
90 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get hello : result(%d)", response);
92 dbus_connection_flush(g_w_conn_listener);
93 dbus_message_unref(reply);
95 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to create reply message");
98 SLOG(LOG_DEBUG, TAG_VCW, "=====");
99 SLOG(LOG_DEBUG, TAG_VCW, " ");
100 } /* VCD_WIDGET_METHOD_HELLO */
102 else if (dbus_message_is_signal(msg, if_name, VCD_WIDGET_METHOD_SET_SERVICE_STATE)) {
105 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
106 if (dbus_error_is_set(&err)) {
107 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Get arguments error (%s)", err.message);
108 dbus_error_free(&err);
111 SLOG(LOG_DEBUG, TAG_VCW, "<<<< service state changed : %d", state);
113 __vc_widget_cb_service_state(state);
115 } /* VCD_WIDGET_METHOD_SET_SERVICE_STATE */
117 else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_SHOW_TOOLTIP)) {
118 SLOG(LOG_DEBUG, TAG_VCW, "===== Show / Hide tooltip");
122 dbus_message_get_args(msg, &err,
123 DBUS_TYPE_INT32, &pid,
124 DBUS_TYPE_INT32, &show,
127 if (dbus_error_is_set(&err)) {
128 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
129 dbus_error_free(&err);
133 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget show tooltip : pid(%d), show(%d)", pid, show);
134 __vc_widget_cb_show_tooltip(pid, (bool)show);
136 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget show tooltip : invalid pid");
139 SLOG(LOG_DEBUG, TAG_VCW, "=====");
140 SLOG(LOG_DEBUG, TAG_VCW, " ");
141 } /* VCD_WIDGET_METHOD_SHOW_TOOLTIP */
143 else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_RESULT)) {
144 SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget result");
146 __vc_widget_cb_result();
149 reply = dbus_message_new_method_return(msg);
152 if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
153 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get result : fail to send reply");
155 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get result");
157 dbus_connection_flush(g_w_conn_listener);
158 dbus_message_unref(reply);
160 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get result : fail to create reply message");
164 SLOG(LOG_DEBUG, TAG_VCW, "=====");
165 SLOG(LOG_DEBUG, TAG_VCW, " ");
167 } /* VCD_WIDGET_METHOD_RESULT */
169 else if (dbus_message_is_signal(msg, if_name, VCD_WIDGET_METHOD_ERROR)) {
170 SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget error");
175 dbus_message_get_args(msg, &err,
176 DBUS_TYPE_INT32, &reason,
177 DBUS_TYPE_INT32, &daemon_pid,
178 DBUS_TYPE_STRING, &err_msg,
181 if (dbus_error_is_set(&err)) {
182 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get error message : Get arguments error (%s)", err.message);
183 dbus_error_free(&err);
185 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get error message : reason(%d), daemon_pid(%d), msg(%s)", reason, daemon_pid, err_msg);
186 __vc_widget_cb_error(reason, daemon_pid, err_msg);
190 reply = dbus_message_new_method_return(msg);
193 if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
194 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget error message : fail to send reply");
196 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget error message");
198 dbus_connection_flush(g_w_conn_listener);
199 dbus_message_unref(reply);
201 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget error message : fail to create reply message");
205 SLOG(LOG_DEBUG, TAG_VCW, "=====");
206 SLOG(LOG_DEBUG, TAG_VCW, " ");
207 } /* VCD_WIDGET_METHOD_ERROR */
210 SLOG(LOG_ERROR, TAG_VCW, "Message is NOT valid");
211 dbus_message_unref(msg);
215 /* free the message */
216 dbus_message_unref(msg);
219 return ECORE_CALLBACK_PASS_ON;
222 int vc_widget_dbus_open_connection()
224 if (NULL != g_w_conn_sender && NULL != g_w_conn_listener) {
225 SLOG(LOG_WARN, TAG_VCW, "Already existed connection ");
232 /* initialise the error value */
233 dbus_error_init(&err);
235 /* connect to the DBUS system bus, and check for errors */
236 g_w_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
238 if (dbus_error_is_set(&err)) {
239 SLOG(LOG_ERROR, TAG_VCW, "Dbus Connection Error (%s)", err.message);
240 dbus_error_free(&err);
243 if (NULL == g_w_conn_sender) {
244 SLOG(LOG_ERROR, TAG_VCW, "Fail to get dbus connection ");
245 return VC_ERROR_OPERATION_FAILED;
248 g_w_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
250 if (dbus_error_is_set(&err)) {
251 SLOG(LOG_ERROR, TAG_VCW, "Dbus Connection Error (%s)", err.message);
252 dbus_error_free(&err);
255 if (NULL == g_w_conn_listener) {
256 SLOG(LOG_ERROR, TAG_VCW, "Fail to get dbus connection ");
257 return VC_ERROR_OPERATION_FAILED;
262 char service_name[64];
263 memset(service_name, '\0', 64);
264 snprintf(service_name, 64, "%s%d", VC_WIDGET_SERVICE_NAME, pid);
266 SLOG(LOG_DEBUG, TAG_VCW, "service name is %s", service_name);
268 /* register our name on the bus, and check for errors */
269 ret = dbus_bus_request_name(g_w_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
271 if (dbus_error_is_set(&err)) {
272 SLOG(LOG_ERROR, TAG_VCW, "Name Error (%s)", err.message);
273 dbus_error_free(&err);
276 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
277 SLOG(LOG_ERROR, TAG_VCW, "fail dbus_bus_request_name()");
281 if (NULL != g_w_fd_handler) {
282 SLOG(LOG_WARN, TAG_VCW, "The handler already exists.");
286 char rule[128] = {0, };
287 snprintf(rule, 128, "type='signal',interface='%s'", VC_WIDGET_SERVICE_INTERFACE);
289 /* add a rule for which messages we want to see */
290 dbus_bus_add_match(g_w_conn_listener, rule, &err);
291 dbus_connection_flush(g_w_conn_listener);
293 if (dbus_error_is_set(&err)) {
294 SLOG(LOG_ERROR, TAG_VCW, "Match Error (%s)", err.message);
295 dbus_error_free(&err);
296 return VC_ERROR_OPERATION_FAILED;
300 if (1 != dbus_connection_get_unix_fd(g_w_conn_listener, &fd)) {
301 SLOG(LOG_ERROR, TAG_VCW, "fail to get fd from dbus ");
302 return VC_ERROR_OPERATION_FAILED;
304 SLOG(LOG_DEBUG, TAG_VCW, "Get fd from dbus : %d", fd);
307 g_w_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)widget_listener_event_callback, g_w_conn_listener, NULL, NULL);
309 if (NULL == g_w_fd_handler) {
310 SLOG(LOG_ERROR, TAG_VCW, "fail to get fd handler from ecore ");
311 return VC_ERROR_OPERATION_FAILED;
317 int vc_widget_dbus_close_connection()
320 dbus_error_init(&err);
322 if (NULL != g_w_fd_handler) {
323 ecore_main_fd_handler_del(g_w_fd_handler);
324 g_w_fd_handler = NULL;
329 char service_name[64];
330 memset(service_name, '\0', 64);
331 snprintf(service_name, 64, "%s%d", VC_WIDGET_SERVICE_NAME, pid);
333 dbus_bus_release_name(g_w_conn_listener, service_name, &err);
335 if (dbus_error_is_set(&err)) {
336 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
337 dbus_error_free(&err);
340 dbus_connection_close(g_w_conn_sender);
341 dbus_connection_close(g_w_conn_listener);
343 dbus_connection_unref(g_w_conn_sender);
344 dbus_connection_unref(g_w_conn_listener);
346 g_w_conn_sender = NULL;
347 g_w_conn_listener = NULL;
352 int vc_widget_dbus_reconnect()
354 bool sender_connected = dbus_connection_get_is_connected(g_w_conn_sender);
355 bool listener_connected = dbus_connection_get_is_connected(g_w_conn_listener);
356 SLOG(LOG_DEBUG, TAG_VCW, "[DBUS] Sender(%s) Listener(%s)",
357 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
359 if (false == sender_connected || false == listener_connected) {
360 vc_widget_dbus_close_connection();
362 if (0 != vc_widget_dbus_open_connection()) {
363 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to reconnect");
367 SLOG(LOG_DEBUG, TAG_VCW, "[DBUS] Reconnect");
373 int vc_widget_dbus_request_hello()
377 msg = dbus_message_new_method_call(
378 VC_SERVER_SERVICE_NAME,
379 VC_SERVER_SERVICE_OBJECT_PATH,
380 VC_SERVER_SERVICE_INTERFACE,
384 SLOG(LOG_ERROR, TAG_VCW, ">>>> Request vc hello : Fail to make message");
385 return VC_ERROR_OPERATION_FAILED;
389 dbus_error_init(&err);
391 DBusMessage* result_msg = NULL;
394 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, 500, &err);
396 if (dbus_error_is_set(&err)) {
397 dbus_error_free(&err);
400 dbus_message_unref(msg);
402 if (NULL != result_msg) {
403 dbus_message_unref(result_msg);
406 result = VC_ERROR_TIMED_OUT;
413 int vc_widget_dbus_request_initialize(int pid, int* service_state, int* daemon_pid)
417 msg = dbus_message_new_method_call(
418 VC_SERVER_SERVICE_NAME,
419 VC_SERVER_SERVICE_OBJECT_PATH,
420 VC_SERVER_SERVICE_INTERFACE,
421 VC_WIDGET_METHOD_INITIALIZE);
424 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget initialize : Fail to make message ");
425 return VC_ERROR_OPERATION_FAILED;
427 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget initialize : pid(%d)", pid);
430 dbus_message_append_args(msg,
431 DBUS_TYPE_INT32, &pid,
435 dbus_error_init(&err);
437 DBusMessage* result_msg;
438 int result = VC_ERROR_OPERATION_FAILED;
440 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
441 dbus_message_unref(msg);
443 if (dbus_error_is_set(&err)) {
444 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
445 dbus_error_free(&err);
448 if (NULL != result_msg) {
449 int tmp_service_state = 0;
450 int tmp_daemon_pid = 0;
451 dbus_message_get_args(result_msg, &err,
452 DBUS_TYPE_INT32, &result,
453 DBUS_TYPE_INT32, &tmp_service_state,
454 DBUS_TYPE_INT32, &tmp_daemon_pid,
457 if (dbus_error_is_set(&err)) {
458 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
459 dbus_error_free(&err);
460 result = VC_ERROR_OPERATION_FAILED;
463 dbus_message_unref(result_msg);
466 *service_state = tmp_service_state;
467 *daemon_pid = tmp_daemon_pid;
468 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget initialize : result = %d service = %d daemon_pid = %d", result, *service_state, *daemon_pid);
470 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget initialize : result = %d", result);
473 SLOG(LOG_ERROR, TAG_VCW, "<<<< Result message is NULL ");
474 vc_widget_dbus_reconnect();
475 result = VC_ERROR_TIMED_OUT;
481 int vc_widget_dbus_request_finalize(int pid)
485 msg = dbus_message_new_method_call(
486 VC_SERVER_SERVICE_NAME,
487 VC_SERVER_SERVICE_OBJECT_PATH,
488 VC_SERVER_SERVICE_INTERFACE,
489 VC_WIDGET_METHOD_FINALIZE);
492 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget finalize : Fail to make message ");
493 return VC_ERROR_OPERATION_FAILED;
495 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget finalize : pid(%d)", pid);
498 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
501 dbus_error_init(&err);
503 DBusMessage* result_msg;
504 int result = VC_ERROR_OPERATION_FAILED;
506 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
507 dbus_message_unref(msg);
509 if (dbus_error_is_set(&err)) {
510 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
511 dbus_error_free(&err);
514 if (NULL != result_msg) {
515 dbus_message_get_args(result_msg, &err,
516 DBUS_TYPE_INT32, &result,
519 if (dbus_error_is_set(&err)) {
520 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
521 dbus_error_free(&err);
522 result = VC_ERROR_OPERATION_FAILED;
525 dbus_message_unref(result_msg);
528 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget finalize : result = %d", result);
530 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget finalize : result = %d", result);
533 SLOG(LOG_ERROR, TAG_VCW, "<<<< Result message is NULL ");
534 vc_widget_dbus_reconnect();
535 result = VC_ERROR_TIMED_OUT;
541 int vc_widget_dbus_request_start_recording(int pid, bool command)
545 msg = dbus_message_new_method_call(
546 VC_SERVER_SERVICE_NAME,
547 VC_SERVER_SERVICE_OBJECT_PATH,
548 VC_SERVER_SERVICE_INTERFACE,
549 VC_WIDGET_METHOD_START_RECORDING);
552 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget start recording : Fail to make message");
553 return VC_ERROR_OPERATION_FAILED;
555 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget start recording : pid(%d)", pid);
558 int temp = (int)command;
560 dbus_message_append_args(msg,
561 DBUS_TYPE_INT32, &pid,
562 DBUS_TYPE_INT32, &temp,
566 dbus_error_init(&err);
568 DBusMessage* result_msg;
569 int result = VC_ERROR_OPERATION_FAILED;
571 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
572 dbus_message_unref(msg);
574 if (dbus_error_is_set(&err)) {
575 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
576 dbus_error_free(&err);
579 if (NULL != result_msg) {
580 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
582 if (dbus_error_is_set(&err)) {
583 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
584 dbus_error_free(&err);
585 result = VC_ERROR_OPERATION_FAILED;
587 dbus_message_unref(result_msg);
590 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget start recording : result = %d", result);
592 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget start recording : result = %d", result);
595 SLOG(LOG_ERROR, TAG_VCW, "<<<< Result message is NULL");
596 vc_widget_dbus_reconnect();
597 result = VC_ERROR_TIMED_OUT;
603 int vc_widget_dbus_set_foreground(int pid, bool value)
605 DBusMessage* msg = NULL;
608 tmp_value = (int)value;
610 msg = dbus_message_new_signal(
611 VC_MANAGER_SERVICE_OBJECT_PATH,
612 VC_MANAGER_SERVICE_INTERFACE,
613 VCC_MANAGER_METHOD_SET_FOREGROUND);
616 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget set foreground to manager : Fail to make message");
617 return VC_ERROR_OPERATION_FAILED;
619 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
622 dbus_message_append_args(msg,
623 DBUS_TYPE_INT32, &pid,
624 DBUS_TYPE_INT32, &tmp_value,
627 if (1 != dbus_connection_send(g_w_conn_sender, msg, NULL)) {
628 SLOG(LOG_ERROR, TAG_VCW, "[Dbus ERROR] Fail to Send");
629 return VC_ERROR_OPERATION_FAILED;
632 dbus_message_unref(msg);
635 msg = dbus_message_new_method_call(
636 VC_SERVER_SERVICE_NAME,
637 VC_SERVER_SERVICE_OBJECT_PATH,
638 VC_SERVER_SERVICE_INTERFACE,
639 VC_METHOD_SET_FOREGROUND);
642 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget set foreground to daemon : Fail to make message");
643 return VC_ERROR_OPERATION_FAILED;
645 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
648 dbus_message_append_args(msg,
649 DBUS_TYPE_INT32, &pid,
650 DBUS_TYPE_INT32, &tmp_value,
653 dbus_message_set_no_reply(msg, TRUE);
655 if (1 != dbus_connection_send(g_w_conn_sender, msg, NULL)) {
656 SLOG(LOG_ERROR, TAG_VCW, "[Dbus ERROR] Fail to Send");
657 return VC_ERROR_OPERATION_FAILED;
660 dbus_connection_flush(g_w_conn_sender);
662 dbus_message_unref(msg);
668 int vc_widget_dbus_request_start(int pid, int silence)
672 /* create a signal & check for errors */
673 msg = dbus_message_new_method_call(
674 VC_SERVER_SERVICE_NAME,
675 VC_SERVER_SERVICE_OBJECT_PATH,
676 VC_SERVER_SERVICE_INTERFACE,
677 VC_WIDGET_METHOD_START);
680 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget start : Fail to make message ");
681 return VC_ERROR_OPERATION_FAILED;
683 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget start : pid(%d), silence(%d)", pid, silence);
686 DBusMessageIter args;
687 dbus_message_iter_init_append(msg, &args);
690 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
691 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
694 dbus_error_init(&err);
696 DBusMessage* result_msg;
697 int result = VC_ERROR_OPERATION_FAILED;
699 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
700 dbus_message_unref(msg);
702 if (dbus_error_is_set(&err)) {
703 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
704 dbus_error_free(&err);
707 if (NULL != result_msg) {
708 dbus_message_get_args(result_msg, &err,
709 DBUS_TYPE_INT32, &result,
712 if (dbus_error_is_set(&err)) {
713 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
714 dbus_error_free(&err);
715 result = VC_ERROR_OPERATION_FAILED;
717 dbus_message_unref(result_msg);
720 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget start : result = %d", result);
722 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget start : result = %d", result);
725 SLOG(LOG_DEBUG, TAG_VCW, "<<<< Result Message is NULL");
726 vc_widget_dbus_reconnect();
727 result = VC_ERROR_TIMED_OUT;
733 int vc_widget_dbus_request_stop(int pid)
737 /* create a signal & check for errors */
738 msg = dbus_message_new_method_call(
739 VC_SERVER_SERVICE_NAME,
740 VC_SERVER_SERVICE_OBJECT_PATH,
741 VC_SERVER_SERVICE_INTERFACE,
742 VC_WIDGET_METHOD_STOP);
745 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget stop : Fail to make message ");
746 return VC_ERROR_OPERATION_FAILED;
748 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget stop : pid(%d)", pid);
751 dbus_message_append_args(msg,
752 DBUS_TYPE_INT32, &pid,
756 dbus_error_init(&err);
758 DBusMessage* result_msg;
759 int result = VC_ERROR_OPERATION_FAILED;
761 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
762 dbus_message_unref(msg);
764 if (dbus_error_is_set(&err)) {
765 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
766 dbus_error_free(&err);
769 if (NULL != result_msg) {
770 dbus_message_get_args(result_msg, &err,
771 DBUS_TYPE_INT32, &result,
774 if (dbus_error_is_set(&err)) {
775 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
776 dbus_error_free(&err);
777 result = VC_ERROR_OPERATION_FAILED;
779 dbus_message_unref(result_msg);
782 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget stop : result = %d", result);
784 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget stop : result = %d", result);
787 SLOG(LOG_DEBUG, TAG_VCW, "<<<< Result Message is NULL");
788 vc_widget_dbus_reconnect();
789 result = VC_ERROR_TIMED_OUT;
795 int vc_widget_dbus_request_cancel(int pid)
799 /* create a signal & check for errors */
800 msg = dbus_message_new_method_call(
801 VC_SERVER_SERVICE_NAME,
802 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
803 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
804 VC_WIDGET_METHOD_CANCEL); /* name of the signal */
807 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget cancel : Fail to make message ");
808 return VC_ERROR_OPERATION_FAILED;
810 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget cancel : pid(%d)", pid);
813 dbus_message_append_args(msg,
814 DBUS_TYPE_INT32, &pid,
818 dbus_error_init(&err);
820 DBusMessage* result_msg;
821 int result = VC_ERROR_OPERATION_FAILED;
823 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
824 dbus_message_unref(msg);
826 if (dbus_error_is_set(&err)) {
827 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
828 dbus_error_free(&err);
831 if (NULL != result_msg) {
832 dbus_message_get_args(result_msg, &err,
833 DBUS_TYPE_INT32, &result,
836 if (dbus_error_is_set(&err)) {
837 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
838 dbus_error_free(&err);
839 result = VC_ERROR_OPERATION_FAILED;
841 dbus_message_unref(result_msg);
844 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget cancel : result = %d", result);
846 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget cancel : result = %d", result);
849 SLOG(LOG_DEBUG, TAG_VCW, "<<<< Result Message is NULL");
850 vc_widget_dbus_reconnect();
851 result = VC_ERROR_TIMED_OUT;