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.
17 #include "vc_command.h"
22 static int g_waiting_time = 3000;
24 static Ecore_Fd_Handler* g_fd_handler = NULL;
26 static DBusConnection* g_conn_sender = NULL;
27 static DBusConnection* g_conn_listener = NULL;
29 extern int __vc_cb_error(int reason, int daemon_pid, char* msg);
31 extern void __vc_cb_result();
33 extern int __vc_cb_service_state(int state);
35 extern int __vc_cb_manager_pid(int manager_pid);
38 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
40 if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW;
42 dbus_connection_read_write_dispatch(g_conn_listener, 50);
45 DBusMessage* msg = NULL;
46 msg = dbus_connection_pop_message(g_conn_listener);
48 /* loop again if we haven't read a message */
54 dbus_error_init(&err);
56 char if_name[64] = {0, };
57 snprintf(if_name, 64, "%s", VC_CLIENT_SERVICE_INTERFACE);
59 if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_HELLO)) {
60 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Hello");
64 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
66 if (dbus_error_is_set(&err)) {
67 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
68 dbus_error_free(&err);
72 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc get hello : pid(%d) ", pid);
75 SLOG(LOG_ERROR, TAG_VCC, "@@ vc get hello : invalid pid ");
78 DBusMessage* reply = NULL;
79 reply = dbus_message_new_method_return(msg);
82 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
84 if (!dbus_connection_send(g_conn_listener, reply, NULL))
85 SLOG(LOG_ERROR, TAG_VCC, "@@ vc get hello : fail to send reply");
87 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc get hello : result(%d)", response);
89 dbus_connection_flush(g_conn_listener);
90 dbus_message_unref(reply);
92 SLOG(LOG_ERROR, TAG_VCC, "@@ vc get hello : fail to create reply message");
95 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
96 } /* VCD_METHOD_HELLO */
98 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SET_SERVICE_STATE)) {
101 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
102 if (dbus_error_is_set(&err)) {
103 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
104 dbus_error_free(&err);
107 SLOG(LOG_DEBUG, TAG_VCC, "@@ state changed : %d", state);
109 __vc_cb_service_state(state);
111 } /* VCD_METHOD_SET_SERVICE_STATE */
113 else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_RESULT)) {
114 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Client Result");
118 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
120 } /* VCD_METHOD_RESULT */
121 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SEND_MANAGER_PID)) {
124 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &manager_pid, DBUS_TYPE_INVALID);
125 if (dbus_error_is_set(&err)) {
126 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
127 dbus_error_free(&err);
130 SLOG(LOG_DEBUG, TAG_VCC, "@@ manager pid is changed : %d", manager_pid);
132 __vc_cb_manager_pid(manager_pid);
134 } /* VCD_METHOD_SEND_MANAGER_PID */
136 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR)) {
137 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Error");
142 dbus_message_get_args(msg, &err,
143 DBUS_TYPE_INT32, &reason,
144 DBUS_TYPE_INT32, &daemon_pid,
145 DBUS_TYPE_STRING, &err_msg,
148 if (dbus_error_is_set(&err)) {
149 SLOG(LOG_ERROR, TAG_VCC, "@@ vc Get Error message : Get arguments error (%s)", err.message);
150 dbus_error_free(&err);
152 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc Get Error message : reason(%d), daemon_pid(%d), msg(%s)", reason, daemon_pid, err_msg);
153 __vc_cb_error(reason, daemon_pid, err_msg);
156 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
157 } /* VCD_METHOD_ERROR */
159 else if (dbus_message_is_signal(msg, "org.freedesktop.DBus", "NameOwnerChanged")) {
160 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Owner Changed");
162 dbus_error_init(&err);
163 /* remove a rule for daemon error */
164 char rule_err[256] = {0, };
165 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);
166 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
167 dbus_connection_flush(g_conn_listener);
169 if (dbus_error_is_set(&err)) {
170 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
171 dbus_error_free(&err);
173 __vc_cb_error(VC_ERROR_SERVICE_RESET, -1, "Daemon Reset");
174 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
175 } /* NameOwnerChanged */
178 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
179 dbus_message_unref(msg);
183 /* free the message */
184 dbus_message_unref(msg);
187 return ECORE_CALLBACK_PASS_ON;
190 static void __vc_dbus_connection_free()
192 if (NULL != g_conn_listener) {
193 dbus_connection_close(g_conn_listener);
194 dbus_connection_unref(g_conn_listener);
195 g_conn_listener = NULL;
197 if (NULL != g_conn_sender) {
198 dbus_connection_close(g_conn_sender);
199 dbus_connection_unref(g_conn_sender);
200 g_conn_sender = NULL;
204 int vc_dbus_open_connection()
206 if (NULL != g_conn_sender && NULL != g_conn_listener) {
207 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
214 /* initialise the error value */
215 dbus_error_init(&err);
217 /* connect to the DBUS system bus, and check for errors */
218 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
220 if (dbus_error_is_set(&err)) {
221 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
222 dbus_error_free(&err);
225 if (NULL == g_conn_sender) {
226 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
227 return VC_ERROR_OPERATION_FAILED;
230 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
232 if (dbus_error_is_set(&err)) {
233 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
234 dbus_error_free(&err);
237 if (NULL == g_conn_listener) {
238 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
239 __vc_dbus_connection_free();
240 return VC_ERROR_OPERATION_FAILED;
245 char service_name[64];
246 memset(service_name, '\0', 64);
247 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
249 SLOG(LOG_DEBUG, TAG_VCC, "service name is %s", service_name);
251 /* register our name on the bus, and check for errors */
252 ret = dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
254 if (dbus_error_is_set(&err)) {
255 SLOG(LOG_ERROR, TAG_VCC, "Name Error (%s)", err.message);
256 dbus_error_free(&err);
259 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
260 SLOG(LOG_ERROR, TAG_VCC, "fail dbus_bus_request_name()");
261 __vc_dbus_connection_free();
265 if (NULL != g_fd_handler) {
266 SLOG(LOG_WARN, TAG_VCC, "The handler already exists.");
267 __vc_dbus_connection_free();
271 char rule[128] = {0, };
272 snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
274 /* add a rule for which messages we want to see */
275 dbus_bus_add_match(g_conn_listener, rule, &err);
276 dbus_connection_flush(g_conn_listener);
278 if (dbus_error_is_set(&err)) {
279 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
280 dbus_error_free(&err);
281 __vc_dbus_connection_free();
282 return VC_ERROR_OPERATION_FAILED;
286 if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
287 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
288 __vc_dbus_connection_free();
289 return VC_ERROR_OPERATION_FAILED;
291 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
294 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn_listener, NULL, NULL);
295 if (NULL == g_fd_handler) {
296 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
297 __vc_dbus_connection_free();
298 return VC_ERROR_OPERATION_FAILED;
304 int vc_dbus_close_connection()
307 dbus_error_init(&err);
309 if (NULL != g_fd_handler) {
310 ecore_main_fd_handler_del(g_fd_handler);
316 char service_name[64];
317 memset(service_name, '\0', 64);
318 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
320 dbus_bus_release_name(g_conn_listener, service_name, &err);
322 if (dbus_error_is_set(&err)) {
323 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
324 dbus_error_free(&err);
327 __vc_dbus_connection_free();
332 int vc_dbus_reconnect()
334 if (!g_conn_sender || !g_conn_listener) {
335 vc_dbus_close_connection();
337 if (0 != vc_dbus_open_connection()) {
338 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
342 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
346 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
347 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
348 SLOG(LOG_WARN, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
349 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
351 if (false == sender_connected || false == listener_connected) {
352 vc_dbus_close_connection();
354 if (0 != vc_dbus_open_connection()) {
355 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
359 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
365 static int __dbus_check()
367 if (NULL == g_conn_sender) {
368 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
369 return vc_dbus_reconnect();
374 int vc_dbus_request_hello()
376 if (0 != __dbus_check()) {
377 return VC_ERROR_OPERATION_FAILED;
382 msg = dbus_message_new_method_call(
383 VC_SERVER_SERVICE_NAME,
384 VC_SERVER_SERVICE_OBJECT_PATH,
385 VC_SERVER_SERVICE_INTERFACE,
389 SLOG(LOG_ERROR, TAG_VCC, "@@ Request vc hello : Fail to make message");
390 return VC_ERROR_OPERATION_FAILED;
394 dbus_error_init(&err);
396 DBusMessage* result_msg = NULL;
399 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
401 if (dbus_error_is_set(&err)) {
402 dbus_error_free(&err);
405 dbus_message_unref(msg);
407 if (NULL != result_msg) {
408 dbus_message_unref(result_msg);
411 result = VC_ERROR_TIMED_OUT;
418 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state, int* daemon_pid)
420 if (0 != __dbus_check()) {
421 return VC_ERROR_OPERATION_FAILED;
426 msg = dbus_message_new_method_call(
427 VC_SERVER_SERVICE_NAME,
428 VC_SERVER_SERVICE_OBJECT_PATH,
429 VC_SERVER_SERVICE_INTERFACE,
430 VC_METHOD_INITIALIZE);
433 SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : Fail to make message ");
434 return VC_ERROR_OPERATION_FAILED;
436 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : pid(%d)", pid);
439 dbus_message_append_args(msg,
440 DBUS_TYPE_INT32, &pid,
444 dbus_error_init(&err);
446 DBusMessage* result_msg;
447 int result = VC_ERROR_OPERATION_FAILED;
449 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
450 dbus_message_unref(msg);
452 if (dbus_error_is_set(&err)) {
453 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
454 dbus_error_free(&err);
457 if (NULL != result_msg) {
459 int tmp_service_state = 0;
460 int tmp_daemon_pid = 0;
461 dbus_message_get_args(result_msg, &err,
462 DBUS_TYPE_INT32, &result,
463 DBUS_TYPE_INT32, &tmp,
464 DBUS_TYPE_INT32, &tmp_service_state,
465 DBUS_TYPE_INT32, &tmp_daemon_pid,
468 if (dbus_error_is_set(&err)) {
469 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
470 dbus_error_free(&err);
471 result = VC_ERROR_OPERATION_FAILED;
474 dbus_message_unref(result_msg);
478 *service_state = tmp_service_state;
479 *daemon_pid = tmp_daemon_pid;
481 /* add a rule for daemon error */
482 char rule_err[256] = {0, };
483 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);
484 dbus_bus_add_match(g_conn_listener, rule_err, &err);
485 dbus_connection_flush(g_conn_listener);
487 if (dbus_error_is_set(&err)) {
488 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
489 dbus_error_free(&err);
490 return VC_ERROR_OPERATION_FAILED;
493 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : result = %d mgr = %d service = %d daemon_pid = %d", result, *mgr_pid, *service_state, *daemon_pid);
495 SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : result = %d", result);
498 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL ");
500 result = VC_ERROR_TIMED_OUT;
506 int vc_dbus_request_finalize(int pid)
509 dbus_error_init(&err);
511 if (0 != __dbus_check()) {
512 return VC_ERROR_OPERATION_FAILED;
515 /* remove a rule for daemon error */
516 char rule_err[256] = {0, };
517 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);
518 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
519 dbus_connection_flush(g_conn_listener);
521 if (dbus_error_is_set(&err)) {
522 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
523 dbus_error_free(&err);
528 msg = dbus_message_new_method_call(
529 VC_SERVER_SERVICE_NAME,
530 VC_SERVER_SERVICE_OBJECT_PATH,
531 VC_SERVER_SERVICE_INTERFACE,
535 SLOG(LOG_ERROR, TAG_VCC, "@@ vc finalize : Fail to make message ");
536 return VC_ERROR_OPERATION_FAILED;
538 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc finalize : pid(%d)", pid);
541 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
543 DBusMessage* result_msg;
544 int result = VC_ERROR_OPERATION_FAILED;
546 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
547 dbus_message_unref(msg);
549 if (dbus_error_is_set(&err)) {
550 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
551 dbus_error_free(&err);
554 if (NULL != result_msg) {
555 dbus_message_get_args(result_msg, &err,
556 DBUS_TYPE_INT32, &result,
559 if (dbus_error_is_set(&err)) {
560 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
561 dbus_error_free(&err);
562 result = VC_ERROR_OPERATION_FAILED;
565 dbus_message_unref(result_msg);
568 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc finalize : result = %d", result);
570 SLOG(LOG_ERROR, TAG_VCC, "@@ vc finalize : result = %d", result);
573 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL ");
575 result = VC_ERROR_TIMED_OUT;
581 int vc_dbus_request_set_exclusive_command(int pid, bool value)
583 if (0 != __dbus_check()) {
584 return VC_ERROR_OPERATION_FAILED;
589 msg = dbus_message_new_method_call(
590 VC_SERVER_SERVICE_NAME,
591 VC_SERVER_SERVICE_OBJECT_PATH,
592 VC_SERVER_SERVICE_INTERFACE,
593 VC_METHOD_SET_EXCLUSIVE_CMD);
596 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set exclusive command : Fail to make message");
597 return VC_ERROR_OPERATION_FAILED;
599 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : pid(%d)", pid);
604 dbus_message_append_args(msg,
605 DBUS_TYPE_INT32, &pid,
606 DBUS_TYPE_INT32, &temp,
610 dbus_error_init(&err);
612 DBusMessage* result_msg;
613 int result = VC_ERROR_OPERATION_FAILED;
615 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
616 dbus_message_unref(msg);
618 if (dbus_error_is_set(&err)) {
619 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
620 dbus_error_free(&err);
623 if (NULL != result_msg) {
624 dbus_message_get_args(result_msg, &err,
625 DBUS_TYPE_INT32, &result,
628 if (dbus_error_is_set(&err)) {
629 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
630 dbus_error_free(&err);
631 result = VC_ERROR_OPERATION_FAILED;
633 dbus_message_unref(result_msg);
636 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : result = %d", result);
638 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : result = %d", result);
641 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
643 result = VC_ERROR_TIMED_OUT;
649 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
651 if (0 != __dbus_check()) {
652 return VC_ERROR_OPERATION_FAILED;
657 msg = dbus_message_new_method_call(
658 VC_SERVER_SERVICE_NAME,
659 VC_SERVER_SERVICE_OBJECT_PATH,
660 VC_SERVER_SERVICE_INTERFACE,
661 VC_METHOD_SET_COMMAND);
664 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : Fail to make message");
665 return VC_ERROR_OPERATION_FAILED;
667 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : pid(%d)", pid);
670 dbus_message_append_args(msg,
671 DBUS_TYPE_INT32, &pid,
672 DBUS_TYPE_INT32, &cmd_type,
676 dbus_error_init(&err);
678 DBusMessage* result_msg;
679 int result = VC_ERROR_OPERATION_FAILED;
681 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
682 dbus_message_unref(msg);
684 if (dbus_error_is_set(&err)) {
685 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
686 dbus_error_free(&err);
689 if (NULL != result_msg) {
690 dbus_message_get_args(result_msg, &err,
691 DBUS_TYPE_INT32, &result,
694 if (dbus_error_is_set(&err)) {
695 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
696 dbus_error_free(&err);
697 result = VC_ERROR_OPERATION_FAILED;
699 dbus_message_unref(result_msg);
702 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : result = %d", result);
704 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : result = %d", result);
707 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
709 result = VC_ERROR_TIMED_OUT;
715 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
717 if (0 != __dbus_check()) {
718 return VC_ERROR_OPERATION_FAILED;
723 msg = dbus_message_new_method_call(
724 VC_SERVER_SERVICE_NAME,
725 VC_SERVER_SERVICE_OBJECT_PATH,
726 VC_SERVER_SERVICE_INTERFACE,
727 VC_METHOD_UNSET_COMMAND);
730 SLOG(LOG_ERROR, TAG_VCC, "@@ vc unset command : Fail to make message");
731 return VC_ERROR_OPERATION_FAILED;
733 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc unset command : pid(%d), type(%d)", pid, cmd_type);
736 dbus_message_append_args(msg,
737 DBUS_TYPE_INT32, &pid,
738 DBUS_TYPE_INT32, &cmd_type,
742 dbus_error_init(&err);
744 DBusMessage* result_msg;
745 int result = VC_ERROR_OPERATION_FAILED;
747 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
748 dbus_message_unref(msg);
750 if (dbus_error_is_set(&err)) {
751 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
752 dbus_error_free(&err);
755 if (NULL != result_msg) {
756 dbus_message_get_args(result_msg, &err,
757 DBUS_TYPE_INT32, &result,
760 if (dbus_error_is_set(&err)) {
761 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
762 dbus_error_free(&err);
763 result = VC_ERROR_OPERATION_FAILED;
765 dbus_message_unref(result_msg);
768 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc unset command : result = %d", result);
770 SLOG(LOG_ERROR, TAG_VCC, "@@ vc unset command : result = %d", result);
773 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
775 result = VC_ERROR_TIMED_OUT;
781 int vc_dbus_set_foreground(int pid, bool value)
783 if (0 != __dbus_check()) {
784 return VC_ERROR_OPERATION_FAILED;
787 DBusMessage* msg = NULL;
790 tmp_value = (int)value;
792 msg = dbus_message_new_signal(
793 VC_MANAGER_SERVICE_OBJECT_PATH,
794 VC_MANAGER_SERVICE_INTERFACE,
795 VCC_MANAGER_METHOD_SET_FOREGROUND);
798 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set foreground to manager : Fail to make message");
799 return VC_ERROR_OPERATION_FAILED;
801 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
804 dbus_message_append_args(msg,
805 DBUS_TYPE_INT32, &pid,
806 DBUS_TYPE_INT32, &tmp_value,
809 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
810 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
811 return VC_ERROR_OPERATION_FAILED;
814 dbus_message_unref(msg);
817 msg = dbus_message_new_method_call(
818 VC_SERVER_SERVICE_NAME,
819 VC_SERVER_SERVICE_OBJECT_PATH,
820 VC_SERVER_SERVICE_INTERFACE,
821 VC_METHOD_SET_FOREGROUND);
824 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set foreground to daemon : Fail to make message");
825 return VC_ERROR_OPERATION_FAILED;
827 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
830 dbus_message_append_args(msg,
831 DBUS_TYPE_INT32, &pid,
832 DBUS_TYPE_INT32, &tmp_value,
835 dbus_message_set_no_reply(msg, TRUE);
837 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
838 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
839 return VC_ERROR_OPERATION_FAILED;
842 dbus_connection_flush(g_conn_sender);
844 dbus_message_unref(msg);
849 int vc_dbus_request_dialog(int pid, const char* disp_text, const char* utt_text, bool continuous)
851 if (NULL == g_conn_sender) {
852 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
853 if (0 != vc_dbus_reconnect()) {
854 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
859 int tmp_continue = 0;
861 tmp_continue = (int)continuous;
863 msg = dbus_message_new_method_call(
864 VC_SERVER_SERVICE_NAME,
865 VC_SERVER_SERVICE_OBJECT_PATH,
866 VC_SERVER_SERVICE_INTERFACE,
870 SLOG(LOG_ERROR, TAG_VCC, "@@ vc request dialog to manager : Fail to make message");
871 return VC_ERROR_OPERATION_FAILED;
873 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);
876 dbus_message_append_args(msg,
877 DBUS_TYPE_INT32, &pid,
878 DBUS_TYPE_STRING, &disp_text,
879 DBUS_TYPE_STRING, &utt_text,
880 DBUS_TYPE_INT32, &tmp_continue,
883 dbus_message_set_no_reply(msg, TRUE);
885 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
886 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
887 return VC_ERROR_OPERATION_FAILED;
889 SLOG(LOG_DEBUG, TAG_VCC, "[Dbus DEBUG] Success to Send");
890 dbus_connection_flush(g_conn_sender);
893 dbus_message_unref(msg);
899 dbus_error_init(&err);
901 DBusMessage* result_msg;
902 int result = VC_ERROR_OPERATION_FAILED;
904 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
905 dbus_message_unref(msg);
907 if (dbus_error_is_set(&err)) {
908 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
909 dbus_error_free(&err);
912 if (NULL != result_msg) {
913 dbus_message_get_args(result_msg, &err,
914 DBUS_TYPE_INT32, &result,
917 if (dbus_error_is_set(&err)) {
918 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
919 dbus_error_free(&err);
920 result = VC_ERROR_OPERATION_FAILED;
922 dbus_message_unref(result_msg);
925 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : result = %d", result);
927 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : result = %d", result);
930 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
932 result = VC_ERROR_TIMED_OUT;
939 int vc_dbus_request_is_system_command_valid(int pid, bool* is_sys_cmd_valid)
941 if (NULL == g_conn_sender) {
942 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
943 if (0 != vc_dbus_reconnect()) {
944 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
950 msg = dbus_message_new_method_call(
951 VC_SERVER_SERVICE_NAME,
952 VC_SERVER_SERVICE_OBJECT_PATH,
953 VC_SERVER_SERVICE_INTERFACE,
954 VC_METHOD_IS_SYS_COMMAND_VALID);
957 SLOG(LOG_ERROR, TAG_VCC, "@@ vc is system command valid : Fail to make message");
958 return VC_ERROR_OPERATION_FAILED;
960 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc is system command valid : pid(%d)", pid);
963 dbus_message_append_args(msg,
964 DBUS_TYPE_INT32, &pid,
968 dbus_error_init(&err);
971 DBusMessage* result_msg;
972 int result = VC_ERROR_OPERATION_FAILED;
974 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
975 dbus_message_unref(msg);
977 if (dbus_error_is_set(&err)) {
978 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
979 dbus_error_free(&err);
982 if (NULL != result_msg) {
983 dbus_message_get_args(result_msg, &err,
984 DBUS_TYPE_INT32, &result,
985 DBUS_TYPE_INT32, &tmp_sys_cmd,
988 if (dbus_error_is_set(&err)) {
989 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
990 dbus_error_free(&err);
991 result = VC_ERROR_OPERATION_FAILED;
993 dbus_message_unref(result_msg);
996 *is_sys_cmd_valid = (bool)tmp_sys_cmd;
997 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc is system command valid : result = %d, is_sys_cmd_valid = %d", result, *is_sys_cmd_valid);
999 SLOG(LOG_ERROR, TAG_VCC, "@@ vc is system command valid : result = %d", result);
1002 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
1003 vc_dbus_reconnect();
1004 result = VC_ERROR_TIMED_OUT;
1012 int vc_dbus_request_start(int pid, int silence)
1016 /* create a signal & check for errors */
1017 msg = dbus_message_new_method_call(
1018 VC_SERVER_SERVICE_NAME,
1019 VC_SERVER_SERVICE_OBJECT_PATH,
1020 VC_SERVER_SERVICE_INTERFACE,
1021 VC_METHOD_REQUEST_START);
1024 SLOG(LOG_ERROR, TAG_VCC, "@@ vc start : Fail to make message ");
1025 return VC_ERROR_OPERATION_FAILED;
1027 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc start : pid(%d), silence(%d)", pid, silence);
1030 DBusMessageIter args;
1031 dbus_message_iter_init_append(msg, &args);
1034 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1035 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
1038 dbus_error_init(&err);
1040 DBusMessage* result_msg;
1041 int result = VC_ERROR_OPERATION_FAILED;
1043 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1044 dbus_message_unref(msg);
1046 if (dbus_error_is_set(&err)) {
1047 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1048 dbus_error_free(&err);
1051 if (NULL != result_msg) {
1052 dbus_message_get_args(result_msg, &err,
1053 DBUS_TYPE_INT32, &result,
1056 if (dbus_error_is_set(&err)) {
1057 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1058 dbus_error_free(&err);
1059 result = VC_ERROR_OPERATION_FAILED;
1061 dbus_message_unref(result_msg);
1064 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc start : result = %d", result);
1066 SLOG(LOG_ERROR, TAG_VCC, "@@ vc start : result = %d", result);
1069 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1070 vc_dbus_reconnect();
1071 result = VC_ERROR_TIMED_OUT;
1077 int vc_dbus_request_stop(int pid)
1081 /* create a signal & check for errors */
1082 msg = dbus_message_new_method_call(
1083 VC_SERVER_SERVICE_NAME,
1084 VC_SERVER_SERVICE_OBJECT_PATH,
1085 VC_SERVER_SERVICE_INTERFACE,
1086 VC_METHOD_REQUEST_STOP);
1089 SLOG(LOG_ERROR, TAG_VCC, "@@ vc stop : Fail to make message ");
1090 return VC_ERROR_OPERATION_FAILED;
1092 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc stop : pid(%d)", pid);
1095 dbus_message_append_args(msg,
1096 DBUS_TYPE_INT32, &pid,
1100 dbus_error_init(&err);
1102 DBusMessage* result_msg;
1103 int result = VC_ERROR_OPERATION_FAILED;
1105 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1106 dbus_message_unref(msg);
1108 if (dbus_error_is_set(&err)) {
1109 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1110 dbus_error_free(&err);
1113 if (NULL != result_msg) {
1114 dbus_message_get_args(result_msg, &err,
1115 DBUS_TYPE_INT32, &result,
1118 if (dbus_error_is_set(&err)) {
1119 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1120 dbus_error_free(&err);
1121 result = VC_ERROR_OPERATION_FAILED;
1123 dbus_message_unref(result_msg);
1126 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc stop : result = %d", result);
1128 SLOG(LOG_ERROR, TAG_VCC, "@@ vc stop : result = %d", result);
1131 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1132 vc_dbus_reconnect();
1133 result = VC_ERROR_TIMED_OUT;
1139 int vc_dbus_request_cancel(int pid)
1143 /* create a signal & check for errors */
1144 msg = dbus_message_new_method_call(
1145 VC_SERVER_SERVICE_NAME,
1146 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
1147 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
1148 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
1151 SLOG(LOG_ERROR, TAG_VCC, "@@ vc cancel : Fail to make message ");
1152 return VC_ERROR_OPERATION_FAILED;
1154 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc cancel : pid(%d)", pid);
1157 dbus_message_append_args(msg,
1158 DBUS_TYPE_INT32, &pid,
1162 dbus_error_init(&err);
1164 DBusMessage* result_msg;
1165 int result = VC_ERROR_OPERATION_FAILED;
1167 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1168 dbus_message_unref(msg);
1170 if (dbus_error_is_set(&err)) {
1171 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1172 dbus_error_free(&err);
1175 if (NULL != result_msg) {
1176 dbus_message_get_args(result_msg, &err,
1177 DBUS_TYPE_INT32, &result,
1180 if (dbus_error_is_set(&err)) {
1181 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1182 dbus_error_free(&err);
1183 result = VC_ERROR_OPERATION_FAILED;
1185 dbus_message_unref(result_msg);
1188 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc cancel : result = %d", result);
1190 SLOG(LOG_ERROR, TAG_VCC, "@@ vc cancel : result = %d", result);
1193 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1194 vc_dbus_reconnect();
1195 result = VC_ERROR_TIMED_OUT;
1203 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
1205 if (0 != __dbus_check()) {
1206 return VC_ERROR_OPERATION_FAILED;
1211 char service_name[64] = {0,};
1212 char object_path[64] = {0,};
1213 char target_if_name[128] = {0,};
1215 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1216 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1217 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1219 /* create a signal & check for errors */
1220 msg = dbus_message_new_method_call(
1222 object_path, /* object name of the signal */
1223 target_if_name, /* interface name of the signal */
1224 VC_METHOD_AUTH_ENABLE); /* name of the signal */
1227 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth enable : Fail to make message ");
1228 return VC_ERROR_OPERATION_FAILED;
1230 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth enable : pid(%d)", pid);
1233 dbus_message_append_args(msg,
1234 DBUS_TYPE_INT32, &pid,
1238 dbus_error_init(&err);
1240 DBusMessage* result_msg;
1241 int result = VC_ERROR_OPERATION_FAILED;
1243 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1244 dbus_message_unref(msg);
1246 if (dbus_error_is_set(&err)) {
1247 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1248 dbus_error_free(&err);
1251 if (NULL != result_msg) {
1252 dbus_message_get_args(result_msg, &err,
1253 DBUS_TYPE_INT32, &result,
1256 if (dbus_error_is_set(&err)) {
1257 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1258 dbus_error_free(&err);
1259 result = VC_ERROR_OPERATION_FAILED;
1261 dbus_message_unref(result_msg);
1264 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth enable : result = %d", result);
1266 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth enable : result = %d", result);
1269 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1270 vc_dbus_reconnect();
1271 result = VC_ERROR_TIMED_OUT;
1277 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
1279 if (0 != __dbus_check()) {
1280 return VC_ERROR_OPERATION_FAILED;
1285 char service_name[64] = {0,};
1286 char object_path[64] = {0,};
1287 char target_if_name[128] = {0,};
1289 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1290 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1291 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1293 /* create a signal & check for errors */
1294 msg = dbus_message_new_method_call(
1296 object_path, /* object name of the signal */
1297 target_if_name, /* interface name of the signal */
1298 VC_METHOD_AUTH_DISABLE); /* name of the signal */
1301 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth disable : Fail to make message ");
1302 return VC_ERROR_OPERATION_FAILED;
1304 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth disable : pid(%d)", pid);
1307 dbus_message_append_args(msg,
1308 DBUS_TYPE_INT32, &pid,
1312 dbus_error_init(&err);
1314 DBusMessage* result_msg;
1315 int result = VC_ERROR_OPERATION_FAILED;
1317 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1318 dbus_message_unref(msg);
1320 if (dbus_error_is_set(&err)) {
1321 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1322 dbus_error_free(&err);
1325 if (NULL != result_msg) {
1326 dbus_message_get_args(result_msg, &err,
1327 DBUS_TYPE_INT32, &result,
1330 if (dbus_error_is_set(&err)) {
1331 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1332 dbus_error_free(&err);
1333 result = VC_ERROR_OPERATION_FAILED;
1335 dbus_message_unref(result_msg);
1338 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth disable : result = %d", result);
1340 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth disable : result = %d", result);
1343 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1344 vc_dbus_reconnect();
1345 result = VC_ERROR_TIMED_OUT;
1351 int vc_dbus_request_auth_start(int pid, int mgr_pid)
1353 if (0 != __dbus_check()) {
1354 return VC_ERROR_OPERATION_FAILED;
1359 char service_name[64] = {0,};
1360 char object_path[64] = {0,};
1361 char target_if_name[128] = {0,};
1363 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1364 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1365 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1367 /* create a signal & check for errors */
1368 msg = dbus_message_new_method_call(
1372 VC_METHOD_AUTH_START);
1375 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth start : Fail to make message ");
1376 return VC_ERROR_OPERATION_FAILED;
1378 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth start : pid(%d)", pid);
1381 DBusMessageIter args;
1382 dbus_message_iter_init_append(msg, &args);
1385 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1388 dbus_error_init(&err);
1390 DBusMessage* result_msg;
1391 int result = VC_ERROR_OPERATION_FAILED;
1393 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1394 dbus_message_unref(msg);
1396 if (dbus_error_is_set(&err)) {
1397 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1398 dbus_error_free(&err);
1401 if (NULL != result_msg) {
1402 dbus_message_get_args(result_msg, &err,
1403 DBUS_TYPE_INT32, &result,
1406 if (dbus_error_is_set(&err)) {
1407 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1408 dbus_error_free(&err);
1409 result = VC_ERROR_OPERATION_FAILED;
1411 dbus_message_unref(result_msg);
1414 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth start : result = %d", result);
1416 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth start : result = %d", result);
1419 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1420 vc_dbus_reconnect();
1421 result = VC_ERROR_TIMED_OUT;
1427 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1429 if (0 != __dbus_check()) {
1430 return VC_ERROR_OPERATION_FAILED;
1435 char service_name[64] = {0,};
1436 char object_path[64] = {0,};
1437 char target_if_name[128] = {0,};
1439 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1440 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1441 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1443 /* create a signal & check for errors */
1444 msg = dbus_message_new_method_call(
1448 VC_METHOD_AUTH_STOP);
1451 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth stop : Fail to make message ");
1452 return VC_ERROR_OPERATION_FAILED;
1454 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth stop : pid(%d)", pid);
1457 dbus_message_append_args(msg,
1458 DBUS_TYPE_INT32, &pid,
1462 dbus_error_init(&err);
1464 DBusMessage* result_msg;
1465 int result = VC_ERROR_OPERATION_FAILED;
1467 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1468 dbus_message_unref(msg);
1470 if (dbus_error_is_set(&err)) {
1471 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1472 dbus_error_free(&err);
1475 if (NULL != result_msg) {
1476 dbus_message_get_args(result_msg, &err,
1477 DBUS_TYPE_INT32, &result,
1480 if (dbus_error_is_set(&err)) {
1481 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1482 dbus_error_free(&err);
1483 result = VC_ERROR_OPERATION_FAILED;
1485 dbus_message_unref(result_msg);
1488 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth stop : result = %d", result);
1490 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth stop : result = %d", result);
1493 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1494 vc_dbus_reconnect();
1495 result = VC_ERROR_TIMED_OUT;
1501 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1503 if (0 != __dbus_check()) {
1504 return VC_ERROR_OPERATION_FAILED;
1509 char service_name[64] = {0,};
1510 char object_path[64] = {0,};
1511 char target_if_name[128] = {0,};
1513 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1514 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1515 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1517 /* create a signal & check for errors */
1518 msg = dbus_message_new_method_call(
1520 object_path, /* object name of the signal */
1521 target_if_name, /* interface name of the signal */
1522 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1525 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth cancel : Fail to make message ");
1526 return VC_ERROR_OPERATION_FAILED;
1528 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth cancel : pid(%d)", pid);
1531 dbus_message_append_args(msg,
1532 DBUS_TYPE_INT32, &pid,
1536 dbus_error_init(&err);
1538 DBusMessage* result_msg;
1539 int result = VC_ERROR_OPERATION_FAILED;
1541 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1542 dbus_message_unref(msg);
1544 if (dbus_error_is_set(&err)) {
1545 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1546 dbus_error_free(&err);
1549 if (NULL != result_msg) {
1550 dbus_message_get_args(result_msg, &err,
1551 DBUS_TYPE_INT32, &result,
1554 if (dbus_error_is_set(&err)) {
1555 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1556 dbus_error_free(&err);
1557 result = VC_ERROR_OPERATION_FAILED;
1559 dbus_message_unref(result_msg);
1562 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth cancel : result = %d", result);
1564 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth cancel : result = %d", result);
1567 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1568 vc_dbus_reconnect();
1569 result = VC_ERROR_TIMED_OUT;