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.
18 #include "vc_client.h"
23 static int g_waiting_time = 3000;
25 static Ecore_Fd_Handler* g_fd_handler = NULL;
27 static DBusConnection* g_conn_sender = NULL;
28 static DBusConnection* g_conn_listener = NULL;
30 extern int __vc_cb_error(int reason, int daemon_pid, char* msg);
32 extern void __vc_cb_result();
34 extern int __vc_cb_service_state(int state);
36 extern int __vc_cb_manager_pid(int manager_pid);
39 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
41 if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW;
43 dbus_connection_read_write_dispatch(g_conn_listener, 50);
46 DBusMessage* msg = NULL;
47 msg = dbus_connection_pop_message(g_conn_listener);
49 /* loop again if we haven't read a message */
55 dbus_error_init(&err);
57 char if_name[64] = {0, };
58 snprintf(if_name, 64, "%s", VC_CLIENT_SERVICE_INTERFACE);
60 if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_HELLO)) {
61 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Hello");
65 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
67 if (dbus_error_is_set(&err)) {
68 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
69 dbus_error_free(&err);
73 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc get hello : pid(%d) ", pid);
76 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc get hello : invalid pid ");
79 DBusMessage* reply = NULL;
80 reply = dbus_message_new_method_return(msg);
83 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
85 if (!dbus_connection_send(g_conn_listener, reply, NULL))
86 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to send reply");
88 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get hello : result(%d)", response);
90 dbus_connection_flush(g_conn_listener);
91 dbus_message_unref(reply);
93 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to create reply message");
96 SLOG(LOG_DEBUG, TAG_VCC, "=====");
97 SLOG(LOG_DEBUG, TAG_VCC, " ");
98 } /* VCD_METHOD_HELLO */
100 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SET_SERVICE_STATE)) {
103 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
104 if (dbus_error_is_set(&err)) {
105 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
106 dbus_error_free(&err);
109 SLOG(LOG_DEBUG, TAG_VCC, "<<<< state changed : %d", state);
111 __vc_cb_service_state(state);
113 } /* VCD_METHOD_SET_SERVICE_STATE */
115 else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_RESULT)) {
116 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Client Result");
120 SLOG(LOG_DEBUG, TAG_VCC, "=====");
121 SLOG(LOG_DEBUG, TAG_VCC, " ");
123 } /* VCD_METHOD_RESULT */
124 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SEND_MANAGER_PID)) {
127 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &manager_pid, DBUS_TYPE_INVALID);
128 if (dbus_error_is_set(&err)) {
129 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
130 dbus_error_free(&err);
133 SLOG(LOG_DEBUG, TAG_VCC, "<<<< manager pid is changed : %d", manager_pid);
135 __vc_cb_manager_pid(manager_pid);
137 } /* VCD_METHOD_SEND_MANAGER_PID */
139 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR)) {
140 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
145 dbus_message_get_args(msg, &err,
146 DBUS_TYPE_INT32, &reason,
147 DBUS_TYPE_INT32, &daemon_pid,
148 DBUS_TYPE_STRING, &err_msg,
151 if (dbus_error_is_set(&err)) {
152 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc Get Error message : Get arguments error (%s)", err.message);
153 dbus_error_free(&err);
155 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : reason(%d), daemon_pid(%d), msg(%s)", reason, daemon_pid, err_msg);
156 __vc_cb_error(reason, daemon_pid, err_msg);
159 SLOG(LOG_DEBUG, TAG_VCC, "=====");
160 SLOG(LOG_DEBUG, TAG_VCC, " ");
161 } /* VCD_METHOD_ERROR */
163 else if (dbus_message_is_signal(msg, "org.freedesktop.DBus", "NameOwnerChanged")) {
164 SLOG(LOG_DEBUG, TAG_VCC, "===== Owner Changed");
165 __vc_cb_error(VC_ERROR_SERVICE_RESET, -1, "Daemon Reset");
166 SLOG(LOG_DEBUG, TAG_VCC, "=====");
167 SLOG(LOG_DEBUG, TAG_VCC, " ");
168 } /* NameOwnerChanged */
171 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
172 dbus_message_unref(msg);
176 /* free the message */
177 dbus_message_unref(msg);
180 return ECORE_CALLBACK_PASS_ON;
183 int vc_dbus_open_connection()
185 if (NULL != g_conn_sender && NULL != g_conn_listener) {
186 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
193 /* initialise the error value */
194 dbus_error_init(&err);
196 /* connect to the DBUS system bus, and check for errors */
197 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
199 if (dbus_error_is_set(&err)) {
200 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
201 dbus_error_free(&err);
204 if (NULL == g_conn_sender) {
205 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
206 return VC_ERROR_OPERATION_FAILED;
209 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
211 if (dbus_error_is_set(&err)) {
212 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
213 dbus_error_free(&err);
216 if (NULL == g_conn_listener) {
217 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
218 return VC_ERROR_OPERATION_FAILED;
223 char service_name[64];
224 memset(service_name, '\0', 64);
225 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
227 SLOG(LOG_DEBUG, TAG_VCC, "service name is %s", service_name);
229 /* register our name on the bus, and check for errors */
230 ret = dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
232 if (dbus_error_is_set(&err)) {
233 SLOG(LOG_ERROR, TAG_VCC, "Name Error (%s)", err.message);
234 dbus_error_free(&err);
237 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
238 SLOG(LOG_ERROR, TAG_VCC, "fail dbus_bus_request_name()");
242 if (NULL != g_fd_handler) {
243 SLOG(LOG_WARN, TAG_VCC, "The handler already exists.");
247 char rule[128] = {0, };
248 snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
250 /* add a rule for which messages we want to see */
251 dbus_bus_add_match(g_conn_listener, rule, &err);
252 dbus_connection_flush(g_conn_listener);
254 if (dbus_error_is_set(&err)) {
255 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
256 dbus_error_free(&err);
257 return VC_ERROR_OPERATION_FAILED;
261 if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
262 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
263 return VC_ERROR_OPERATION_FAILED;
265 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
268 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn_listener, NULL, NULL);
269 if (NULL == g_fd_handler) {
270 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
271 return VC_ERROR_OPERATION_FAILED;
277 int vc_dbus_close_connection()
280 dbus_error_init(&err);
282 if (NULL != g_fd_handler) {
283 ecore_main_fd_handler_del(g_fd_handler);
289 char service_name[64];
290 memset(service_name, '\0', 64);
291 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
293 dbus_bus_release_name(g_conn_listener, service_name, &err);
295 if (dbus_error_is_set(&err)) {
296 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
297 dbus_error_free(&err);
300 dbus_connection_close(g_conn_sender);
301 dbus_connection_close(g_conn_listener);
303 dbus_connection_unref(g_conn_sender);
304 dbus_connection_unref(g_conn_listener);
306 g_conn_sender = NULL;
307 g_conn_listener = NULL;
312 int vc_dbus_reconnect()
314 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
315 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
316 SLOG(LOG_WARN, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
317 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
319 if (false == sender_connected || false == listener_connected) {
320 vc_dbus_close_connection();
322 if (0 != vc_dbus_open_connection()) {
323 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
327 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
333 static int __dbus_check()
335 if (NULL == g_conn_sender) {
336 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
337 return vc_dbus_reconnect();
342 int vc_dbus_request_hello()
344 if (0 != __dbus_check()) {
345 return VC_ERROR_OPERATION_FAILED;
350 msg = dbus_message_new_method_call(
351 VC_SERVER_SERVICE_NAME,
352 VC_SERVER_SERVICE_OBJECT_PATH,
353 VC_SERVER_SERVICE_INTERFACE,
357 SLOG(LOG_ERROR, TAG_VCC, ">>>> Request vc hello : Fail to make message");
358 return VC_ERROR_OPERATION_FAILED;
362 dbus_error_init(&err);
364 DBusMessage* result_msg = NULL;
367 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
369 if (dbus_error_is_set(&err)) {
370 dbus_error_free(&err);
373 dbus_message_unref(msg);
375 if (NULL != result_msg) {
376 dbus_message_unref(result_msg);
379 result = VC_ERROR_TIMED_OUT;
386 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state, int* daemon_pid)
388 if (0 != __dbus_check()) {
389 return VC_ERROR_OPERATION_FAILED;
394 msg = dbus_message_new_method_call(
395 VC_SERVER_SERVICE_NAME,
396 VC_SERVER_SERVICE_OBJECT_PATH,
397 VC_SERVER_SERVICE_INTERFACE,
398 VC_METHOD_INITIALIZE);
401 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc initialize : Fail to make message ");
402 return VC_ERROR_OPERATION_FAILED;
404 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc initialize : pid(%d)", pid);
407 dbus_message_append_args(msg,
408 DBUS_TYPE_INT32, &pid,
412 dbus_error_init(&err);
414 DBusMessage* result_msg;
415 int result = VC_ERROR_OPERATION_FAILED;
417 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
418 dbus_message_unref(msg);
420 if (dbus_error_is_set(&err)) {
421 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
422 dbus_error_free(&err);
425 if (NULL != result_msg) {
427 int tmp_service_state = 0;
428 int tmp_daemon_pid = 0;
429 dbus_message_get_args(result_msg, &err,
430 DBUS_TYPE_INT32, &result,
431 DBUS_TYPE_INT32, &tmp,
432 DBUS_TYPE_INT32, &tmp_service_state,
433 DBUS_TYPE_INT32, &tmp_daemon_pid,
436 if (dbus_error_is_set(&err)) {
437 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
438 dbus_error_free(&err);
439 result = VC_ERROR_OPERATION_FAILED;
442 dbus_message_unref(result_msg);
446 *service_state = tmp_service_state;
447 *daemon_pid = tmp_daemon_pid;
449 /* add a rule for daemon error */
450 char rule_err[256] = {0, };
451 snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
452 dbus_bus_add_match(g_conn_listener, rule_err, &err);
453 dbus_connection_flush(g_conn_listener);
455 if (dbus_error_is_set(&err)) {
456 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
457 dbus_error_free(&err);
458 return VC_ERROR_OPERATION_FAILED;
461 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d service = %d daemon_pid = %d", result, *mgr_pid, *service_state, *daemon_pid);
463 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
466 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
468 result = VC_ERROR_TIMED_OUT;
474 int vc_dbus_request_finalize(int pid)
477 dbus_error_init(&err);
479 if (0 != __dbus_check()) {
480 return VC_ERROR_OPERATION_FAILED;
483 /* remove a rule for daemon error */
484 char rule_err[256] = {0, };
485 snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
486 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
487 dbus_connection_flush(g_conn_listener);
489 if (dbus_error_is_set(&err)) {
490 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
491 dbus_error_free(&err);
496 msg = dbus_message_new_method_call(
497 VC_SERVER_SERVICE_NAME,
498 VC_SERVER_SERVICE_OBJECT_PATH,
499 VC_SERVER_SERVICE_INTERFACE,
503 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc finalize : Fail to make message ");
504 return VC_ERROR_OPERATION_FAILED;
506 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc finalize : pid(%d)", pid);
509 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
511 DBusMessage* result_msg;
512 int result = VC_ERROR_OPERATION_FAILED;
514 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
515 dbus_message_unref(msg);
517 if (dbus_error_is_set(&err)) {
518 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
519 dbus_error_free(&err);
522 if (NULL != result_msg) {
523 dbus_message_get_args(result_msg, &err,
524 DBUS_TYPE_INT32, &result,
527 if (dbus_error_is_set(&err)) {
528 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
529 dbus_error_free(&err);
530 result = VC_ERROR_OPERATION_FAILED;
533 dbus_message_unref(result_msg);
536 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc finalize : result = %d", result);
538 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc finalize : result = %d", result);
541 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
543 result = VC_ERROR_TIMED_OUT;
549 int vc_dbus_request_set_exclusive_command(int pid, bool value)
551 if (0 != __dbus_check()) {
552 return VC_ERROR_OPERATION_FAILED;
557 msg = dbus_message_new_method_call(
558 VC_SERVER_SERVICE_NAME,
559 VC_SERVER_SERVICE_OBJECT_PATH,
560 VC_SERVER_SERVICE_INTERFACE,
561 VC_METHOD_SET_EXCLUSIVE_CMD);
564 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set exclusive command : Fail to make message");
565 return VC_ERROR_OPERATION_FAILED;
567 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set exclusive command : pid(%d)", pid);
572 dbus_message_append_args(msg,
573 DBUS_TYPE_INT32, &pid,
574 DBUS_TYPE_INT32, &temp,
578 dbus_error_init(&err);
580 DBusMessage* result_msg;
581 int result = VC_ERROR_OPERATION_FAILED;
583 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
584 dbus_message_unref(msg);
586 if (dbus_error_is_set(&err)) {
587 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
588 dbus_error_free(&err);
591 if (NULL != result_msg) {
592 dbus_message_get_args(result_msg, &err,
593 DBUS_TYPE_INT32, &result,
596 if (dbus_error_is_set(&err)) {
597 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
598 dbus_error_free(&err);
599 result = VC_ERROR_OPERATION_FAILED;
601 dbus_message_unref(result_msg);
604 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
606 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
609 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
611 result = VC_ERROR_TIMED_OUT;
617 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
619 if (0 != __dbus_check()) {
620 return VC_ERROR_OPERATION_FAILED;
625 msg = dbus_message_new_method_call(
626 VC_SERVER_SERVICE_NAME,
627 VC_SERVER_SERVICE_OBJECT_PATH,
628 VC_SERVER_SERVICE_INTERFACE,
629 VC_METHOD_SET_COMMAND);
632 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set command : Fail to make message");
633 return VC_ERROR_OPERATION_FAILED;
635 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set command : pid(%d)", pid);
638 dbus_message_append_args(msg,
639 DBUS_TYPE_INT32, &pid,
640 DBUS_TYPE_INT32, &cmd_type,
644 dbus_error_init(&err);
646 DBusMessage* result_msg;
647 int result = VC_ERROR_OPERATION_FAILED;
649 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
650 dbus_message_unref(msg);
652 if (dbus_error_is_set(&err)) {
653 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
654 dbus_error_free(&err);
657 if (NULL != result_msg) {
658 dbus_message_get_args(result_msg, &err,
659 DBUS_TYPE_INT32, &result,
662 if (dbus_error_is_set(&err)) {
663 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
664 dbus_error_free(&err);
665 result = VC_ERROR_OPERATION_FAILED;
667 dbus_message_unref(result_msg);
670 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
672 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
675 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
677 result = VC_ERROR_TIMED_OUT;
683 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
685 if (0 != __dbus_check()) {
686 return VC_ERROR_OPERATION_FAILED;
691 msg = dbus_message_new_method_call(
692 VC_SERVER_SERVICE_NAME,
693 VC_SERVER_SERVICE_OBJECT_PATH,
694 VC_SERVER_SERVICE_INTERFACE,
695 VC_METHOD_UNSET_COMMAND);
698 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc unset command : Fail to make message");
699 return VC_ERROR_OPERATION_FAILED;
701 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc unset command : pid(%d), type(%d)", pid, cmd_type);
704 dbus_message_append_args(msg,
705 DBUS_TYPE_INT32, &pid,
706 DBUS_TYPE_INT32, &cmd_type,
710 dbus_error_init(&err);
712 DBusMessage* result_msg;
713 int result = VC_ERROR_OPERATION_FAILED;
715 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
716 dbus_message_unref(msg);
718 if (dbus_error_is_set(&err)) {
719 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
720 dbus_error_free(&err);
723 if (NULL != result_msg) {
724 dbus_message_get_args(result_msg, &err,
725 DBUS_TYPE_INT32, &result,
728 if (dbus_error_is_set(&err)) {
729 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
730 dbus_error_free(&err);
731 result = VC_ERROR_OPERATION_FAILED;
733 dbus_message_unref(result_msg);
736 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc unset command : result = %d", result);
738 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc unset command : result = %d", result);
741 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
743 result = VC_ERROR_TIMED_OUT;
749 int vc_dbus_set_foreground(int pid, bool value)
751 if (0 != __dbus_check()) {
752 return VC_ERROR_OPERATION_FAILED;
755 DBusMessage* msg = NULL;
758 tmp_value = (int)value;
760 msg = dbus_message_new_signal(
761 VC_MANAGER_SERVICE_OBJECT_PATH,
762 VC_MANAGER_SERVICE_INTERFACE,
763 VCC_MANAGER_METHOD_SET_FOREGROUND);
766 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set foreground to manager : Fail to make message");
767 return VC_ERROR_OPERATION_FAILED;
769 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
772 dbus_message_append_args(msg,
773 DBUS_TYPE_INT32, &pid,
774 DBUS_TYPE_INT32, &tmp_value,
777 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
778 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
779 return VC_ERROR_OPERATION_FAILED;
782 dbus_message_unref(msg);
785 msg = dbus_message_new_method_call(
786 VC_SERVER_SERVICE_NAME,
787 VC_SERVER_SERVICE_OBJECT_PATH,
788 VC_SERVER_SERVICE_INTERFACE,
789 VC_METHOD_SET_FOREGROUND);
792 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set foreground to daemon : Fail to make message");
793 return VC_ERROR_OPERATION_FAILED;
795 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
798 dbus_message_append_args(msg,
799 DBUS_TYPE_INT32, &pid,
800 DBUS_TYPE_INT32, &tmp_value,
803 dbus_message_set_no_reply(msg, TRUE);
805 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
806 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
807 return VC_ERROR_OPERATION_FAILED;
810 dbus_connection_flush(g_conn_sender);
812 dbus_message_unref(msg);
817 int vc_dbus_request_dialog(int pid, const char* disp_text, const char* utt_text, bool continuous)
819 if (NULL == g_conn_sender) {
820 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
821 if (0 != vc_dbus_reconnect()) {
822 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
827 int tmp_continue = 0;
829 tmp_continue = (int)continuous;
831 msg = dbus_message_new_method_call(
832 VC_SERVER_SERVICE_NAME,
833 VC_SERVER_SERVICE_OBJECT_PATH,
834 VC_SERVER_SERVICE_INTERFACE,
838 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc request dialog to manager : Fail to make message");
839 return VC_ERROR_OPERATION_FAILED;
841 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc request dialog to manager : client pid(%d), disp_text(%s), utt_text(%s), continuous(%d)", getpid(), disp_text, utt_text, continuous);
844 dbus_message_append_args(msg,
845 DBUS_TYPE_INT32, &pid,
846 DBUS_TYPE_STRING, &disp_text,
847 DBUS_TYPE_STRING, &utt_text,
848 DBUS_TYPE_INT32, &tmp_continue,
851 dbus_message_set_no_reply(msg, TRUE);
853 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
854 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
855 return VC_ERROR_OPERATION_FAILED;
857 SLOG(LOG_DEBUG, TAG_VCC, "[Dbus DEBUG] Success to Send");
858 dbus_connection_flush(g_conn_sender);
861 dbus_message_unref(msg);
867 dbus_error_init(&err);
869 DBusMessage* result_msg;
870 int result = VC_ERROR_OPERATION_FAILED;
872 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
873 dbus_message_unref(msg);
875 if (dbus_error_is_set(&err)) {
876 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
877 dbus_error_free(&err);
880 if (NULL != result_msg) {
881 dbus_message_get_args(result_msg, &err,
882 DBUS_TYPE_INT32, &result,
885 if (dbus_error_is_set(&err)) {
886 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
887 dbus_error_free(&err);
888 result = VC_ERROR_OPERATION_FAILED;
890 dbus_message_unref(result_msg);
893 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
895 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
898 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
900 result = VC_ERROR_TIMED_OUT;
907 int vc_dbus_request_is_system_command_valid(int pid, bool* is_sys_cmd_valid)
909 if (NULL == g_conn_sender) {
910 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
911 if (0 != vc_dbus_reconnect()) {
912 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
918 msg = dbus_message_new_method_call(
919 VC_SERVER_SERVICE_NAME,
920 VC_SERVER_SERVICE_OBJECT_PATH,
921 VC_SERVER_SERVICE_INTERFACE,
922 VC_METHOD_IS_SYS_COMMAND_VALID);
925 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc is system command valid : Fail to make message");
926 return VC_ERROR_OPERATION_FAILED;
928 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc is system command valid : pid(%d)", pid);
931 dbus_message_append_args(msg,
932 DBUS_TYPE_INT32, &pid,
936 dbus_error_init(&err);
939 DBusMessage* result_msg;
940 int result = VC_ERROR_OPERATION_FAILED;
942 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
943 dbus_message_unref(msg);
945 if (dbus_error_is_set(&err)) {
946 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
947 dbus_error_free(&err);
950 if (NULL != result_msg) {
951 dbus_message_get_args(result_msg, &err,
952 DBUS_TYPE_INT32, &result,
953 DBUS_TYPE_INT32, &tmp_sys_cmd,
956 if (dbus_error_is_set(&err)) {
957 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
958 dbus_error_free(&err);
959 result = VC_ERROR_OPERATION_FAILED;
961 dbus_message_unref(result_msg);
964 *is_sys_cmd_valid = (bool)tmp_sys_cmd;
965 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc is system command valid : result = %d, is_sys_cmd_valid = %d", result, *is_sys_cmd_valid);
967 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc is system command valid : result = %d", result);
970 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
972 result = VC_ERROR_TIMED_OUT;
980 int vc_dbus_request_start(int pid, int silence)
984 /* create a signal & check for errors */
985 msg = dbus_message_new_method_call(
986 VC_SERVER_SERVICE_NAME,
987 VC_SERVER_SERVICE_OBJECT_PATH,
988 VC_SERVER_SERVICE_INTERFACE,
989 VC_METHOD_REQUEST_START);
992 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc start : Fail to make message ");
993 return VC_ERROR_OPERATION_FAILED;
995 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc start : pid(%d), silence(%d)", pid, silence);
998 DBusMessageIter args;
999 dbus_message_iter_init_append(msg, &args);
1002 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1003 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
1006 dbus_error_init(&err);
1008 DBusMessage* result_msg;
1009 int result = VC_ERROR_OPERATION_FAILED;
1011 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1012 dbus_message_unref(msg);
1014 if (dbus_error_is_set(&err)) {
1015 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1016 dbus_error_free(&err);
1019 if (NULL != result_msg) {
1020 dbus_message_get_args(result_msg, &err,
1021 DBUS_TYPE_INT32, &result,
1024 if (dbus_error_is_set(&err)) {
1025 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1026 dbus_error_free(&err);
1027 result = VC_ERROR_OPERATION_FAILED;
1029 dbus_message_unref(result_msg);
1032 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc start : result = %d", result);
1034 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc start : result = %d", result);
1037 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1038 vc_dbus_reconnect();
1039 result = VC_ERROR_TIMED_OUT;
1045 int vc_dbus_request_stop(int pid)
1049 /* create a signal & check for errors */
1050 msg = dbus_message_new_method_call(
1051 VC_SERVER_SERVICE_NAME,
1052 VC_SERVER_SERVICE_OBJECT_PATH,
1053 VC_SERVER_SERVICE_INTERFACE,
1054 VC_METHOD_REQUEST_STOP);
1057 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc stop : Fail to make message ");
1058 return VC_ERROR_OPERATION_FAILED;
1060 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc stop : pid(%d)", pid);
1063 dbus_message_append_args(msg,
1064 DBUS_TYPE_INT32, &pid,
1068 dbus_error_init(&err);
1070 DBusMessage* result_msg;
1071 int result = VC_ERROR_OPERATION_FAILED;
1073 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1074 dbus_message_unref(msg);
1076 if (dbus_error_is_set(&err)) {
1077 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1078 dbus_error_free(&err);
1081 if (NULL != result_msg) {
1082 dbus_message_get_args(result_msg, &err,
1083 DBUS_TYPE_INT32, &result,
1086 if (dbus_error_is_set(&err)) {
1087 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1088 dbus_error_free(&err);
1089 result = VC_ERROR_OPERATION_FAILED;
1091 dbus_message_unref(result_msg);
1094 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc stop : result = %d", result);
1096 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc stop : result = %d", result);
1099 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1100 vc_dbus_reconnect();
1101 result = VC_ERROR_TIMED_OUT;
1107 int vc_dbus_request_cancel(int pid)
1111 /* create a signal & check for errors */
1112 msg = dbus_message_new_method_call(
1113 VC_SERVER_SERVICE_NAME,
1114 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
1115 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
1116 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
1119 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc cancel : Fail to make message ");
1120 return VC_ERROR_OPERATION_FAILED;
1122 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc cancel : pid(%d)", pid);
1125 dbus_message_append_args(msg,
1126 DBUS_TYPE_INT32, &pid,
1130 dbus_error_init(&err);
1132 DBusMessage* result_msg;
1133 int result = VC_ERROR_OPERATION_FAILED;
1135 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1136 dbus_message_unref(msg);
1138 if (dbus_error_is_set(&err)) {
1139 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1140 dbus_error_free(&err);
1143 if (NULL != result_msg) {
1144 dbus_message_get_args(result_msg, &err,
1145 DBUS_TYPE_INT32, &result,
1148 if (dbus_error_is_set(&err)) {
1149 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1150 dbus_error_free(&err);
1151 result = VC_ERROR_OPERATION_FAILED;
1153 dbus_message_unref(result_msg);
1156 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc cancel : result = %d", result);
1158 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc cancel : result = %d", result);
1161 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1162 vc_dbus_reconnect();
1163 result = VC_ERROR_TIMED_OUT;
1171 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
1173 if (0 != __dbus_check()) {
1174 return VC_ERROR_OPERATION_FAILED;
1179 char service_name[64] = {0,};
1180 char object_path[64] = {0,};
1181 char target_if_name[128] = {0,};
1183 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1184 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1185 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1187 /* create a signal & check for errors */
1188 msg = dbus_message_new_method_call(
1190 object_path, /* object name of the signal */
1191 target_if_name, /* interface name of the signal */
1192 VC_METHOD_AUTH_ENABLE); /* name of the signal */
1195 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth enable : Fail to make message ");
1196 return VC_ERROR_OPERATION_FAILED;
1198 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth enable : pid(%d)", pid);
1201 dbus_message_append_args(msg,
1202 DBUS_TYPE_INT32, &pid,
1206 dbus_error_init(&err);
1208 DBusMessage* result_msg;
1209 int result = VC_ERROR_OPERATION_FAILED;
1211 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1212 dbus_message_unref(msg);
1214 if (dbus_error_is_set(&err)) {
1215 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1216 dbus_error_free(&err);
1219 if (NULL != result_msg) {
1220 dbus_message_get_args(result_msg, &err,
1221 DBUS_TYPE_INT32, &result,
1224 if (dbus_error_is_set(&err)) {
1225 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1226 dbus_error_free(&err);
1227 result = VC_ERROR_OPERATION_FAILED;
1229 dbus_message_unref(result_msg);
1232 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth enable : result = %d", result);
1234 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth enable : result = %d", result);
1237 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1238 vc_dbus_reconnect();
1239 result = VC_ERROR_TIMED_OUT;
1245 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
1247 if (0 != __dbus_check()) {
1248 return VC_ERROR_OPERATION_FAILED;
1253 char service_name[64] = {0,};
1254 char object_path[64] = {0,};
1255 char target_if_name[128] = {0,};
1257 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1258 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1259 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1261 /* create a signal & check for errors */
1262 msg = dbus_message_new_method_call(
1264 object_path, /* object name of the signal */
1265 target_if_name, /* interface name of the signal */
1266 VC_METHOD_AUTH_DISABLE); /* name of the signal */
1269 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth disable : Fail to make message ");
1270 return VC_ERROR_OPERATION_FAILED;
1272 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth disable : pid(%d)", pid);
1275 dbus_message_append_args(msg,
1276 DBUS_TYPE_INT32, &pid,
1280 dbus_error_init(&err);
1282 DBusMessage* result_msg;
1283 int result = VC_ERROR_OPERATION_FAILED;
1285 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1286 dbus_message_unref(msg);
1288 if (dbus_error_is_set(&err)) {
1289 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1290 dbus_error_free(&err);
1293 if (NULL != result_msg) {
1294 dbus_message_get_args(result_msg, &err,
1295 DBUS_TYPE_INT32, &result,
1298 if (dbus_error_is_set(&err)) {
1299 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1300 dbus_error_free(&err);
1301 result = VC_ERROR_OPERATION_FAILED;
1303 dbus_message_unref(result_msg);
1306 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth disable : result = %d", result);
1308 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth disable : result = %d", result);
1311 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1312 vc_dbus_reconnect();
1313 result = VC_ERROR_TIMED_OUT;
1319 int vc_dbus_request_auth_start(int pid, int mgr_pid)
1321 if (0 != __dbus_check()) {
1322 return VC_ERROR_OPERATION_FAILED;
1327 char service_name[64] = {0,};
1328 char object_path[64] = {0,};
1329 char target_if_name[128] = {0,};
1331 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1332 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1333 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1335 /* create a signal & check for errors */
1336 msg = dbus_message_new_method_call(
1340 VC_METHOD_AUTH_START);
1343 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth start : Fail to make message ");
1344 return VC_ERROR_OPERATION_FAILED;
1346 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth start : pid(%d)", pid);
1349 DBusMessageIter args;
1350 dbus_message_iter_init_append(msg, &args);
1353 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1356 dbus_error_init(&err);
1358 DBusMessage* result_msg;
1359 int result = VC_ERROR_OPERATION_FAILED;
1361 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1362 dbus_message_unref(msg);
1364 if (dbus_error_is_set(&err)) {
1365 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1366 dbus_error_free(&err);
1369 if (NULL != result_msg) {
1370 dbus_message_get_args(result_msg, &err,
1371 DBUS_TYPE_INT32, &result,
1374 if (dbus_error_is_set(&err)) {
1375 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1376 dbus_error_free(&err);
1377 result = VC_ERROR_OPERATION_FAILED;
1379 dbus_message_unref(result_msg);
1382 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth start : result = %d", result);
1384 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth start : result = %d", result);
1387 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1388 vc_dbus_reconnect();
1389 result = VC_ERROR_TIMED_OUT;
1395 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1397 if (0 != __dbus_check()) {
1398 return VC_ERROR_OPERATION_FAILED;
1403 char service_name[64] = {0,};
1404 char object_path[64] = {0,};
1405 char target_if_name[128] = {0,};
1407 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1408 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1409 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1411 /* create a signal & check for errors */
1412 msg = dbus_message_new_method_call(
1416 VC_METHOD_AUTH_STOP);
1419 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth stop : Fail to make message ");
1420 return VC_ERROR_OPERATION_FAILED;
1422 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth stop : pid(%d)", pid);
1425 dbus_message_append_args(msg,
1426 DBUS_TYPE_INT32, &pid,
1430 dbus_error_init(&err);
1432 DBusMessage* result_msg;
1433 int result = VC_ERROR_OPERATION_FAILED;
1435 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1436 dbus_message_unref(msg);
1438 if (dbus_error_is_set(&err)) {
1439 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1440 dbus_error_free(&err);
1443 if (NULL != result_msg) {
1444 dbus_message_get_args(result_msg, &err,
1445 DBUS_TYPE_INT32, &result,
1448 if (dbus_error_is_set(&err)) {
1449 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1450 dbus_error_free(&err);
1451 result = VC_ERROR_OPERATION_FAILED;
1453 dbus_message_unref(result_msg);
1456 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1458 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1461 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1462 vc_dbus_reconnect();
1463 result = VC_ERROR_TIMED_OUT;
1469 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1471 if (0 != __dbus_check()) {
1472 return VC_ERROR_OPERATION_FAILED;
1477 char service_name[64] = {0,};
1478 char object_path[64] = {0,};
1479 char target_if_name[128] = {0,};
1481 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1482 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1483 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1485 /* create a signal & check for errors */
1486 msg = dbus_message_new_method_call(
1488 object_path, /* object name of the signal */
1489 target_if_name, /* interface name of the signal */
1490 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1493 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth cancel : Fail to make message ");
1494 return VC_ERROR_OPERATION_FAILED;
1496 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth cancel : pid(%d)", pid);
1499 dbus_message_append_args(msg,
1500 DBUS_TYPE_INT32, &pid,
1504 dbus_error_init(&err);
1506 DBusMessage* result_msg;
1507 int result = VC_ERROR_OPERATION_FAILED;
1509 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1510 dbus_message_unref(msg);
1512 if (dbus_error_is_set(&err)) {
1513 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1514 dbus_error_free(&err);
1517 if (NULL != result_msg) {
1518 dbus_message_get_args(result_msg, &err,
1519 DBUS_TYPE_INT32, &result,
1522 if (dbus_error_is_set(&err)) {
1523 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1524 dbus_error_free(&err);
1525 result = VC_ERROR_OPERATION_FAILED;
1527 dbus_message_unref(result_msg);
1530 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1532 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1535 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1536 vc_dbus_reconnect();
1537 result = VC_ERROR_TIMED_OUT;