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 } /* VCD_METHOD_HELLO */
99 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SET_SERVICE_STATE)) {
102 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
103 if (dbus_error_is_set(&err)) {
104 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
105 dbus_error_free(&err);
108 SLOG(LOG_DEBUG, TAG_VCC, "@@ state changed : %d", state);
110 __vc_cb_service_state(state);
112 } /* VCD_METHOD_SET_SERVICE_STATE */
114 else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_RESULT)) {
115 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Client Result");
119 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
121 } /* VCD_METHOD_RESULT */
122 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SEND_MANAGER_PID)) {
125 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &manager_pid, DBUS_TYPE_INVALID);
126 if (dbus_error_is_set(&err)) {
127 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
128 dbus_error_free(&err);
131 SLOG(LOG_DEBUG, TAG_VCC, "@@ manager pid is changed : %d", manager_pid);
133 __vc_cb_manager_pid(manager_pid);
135 } /* VCD_METHOD_SEND_MANAGER_PID */
137 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR)) {
138 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Error");
143 dbus_message_get_args(msg, &err,
144 DBUS_TYPE_INT32, &reason,
145 DBUS_TYPE_INT32, &daemon_pid,
146 DBUS_TYPE_STRING, &err_msg,
149 if (dbus_error_is_set(&err)) {
150 SLOG(LOG_ERROR, TAG_VCC, "@@ vc Get Error message : Get arguments error (%s)", err.message);
151 dbus_error_free(&err);
153 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc Get Error message : reason(%d), daemon_pid(%d), msg(%s)", reason, daemon_pid, err_msg);
154 __vc_cb_error(reason, daemon_pid, err_msg);
157 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
158 } /* VCD_METHOD_ERROR */
160 else if (dbus_message_is_signal(msg, "org.freedesktop.DBus", "NameOwnerChanged")) {
161 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Owner Changed");
163 dbus_error_init(&err);
164 /* remove a rule for daemon error */
165 char rule_err[256] = {0, };
166 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);
167 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
168 dbus_connection_flush(g_conn_listener);
170 if (dbus_error_is_set(&err)) {
171 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
172 dbus_error_free(&err);
174 __vc_cb_error(VC_ERROR_SERVICE_RESET, -1, "Daemon Reset");
175 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
176 } /* NameOwnerChanged */
179 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
180 dbus_message_unref(msg);
184 /* free the message */
185 dbus_message_unref(msg);
188 return ECORE_CALLBACK_PASS_ON;
191 static void __vc_dbus_connection_free()
193 if (NULL != g_conn_listener) {
194 dbus_connection_close(g_conn_listener);
195 dbus_connection_unref(g_conn_listener);
196 g_conn_listener = NULL;
198 if (NULL != g_conn_sender) {
199 dbus_connection_close(g_conn_sender);
200 dbus_connection_unref(g_conn_sender);
201 g_conn_sender = NULL;
205 int vc_dbus_open_connection()
207 if (NULL != g_conn_sender && NULL != g_conn_listener) {
208 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
215 /* initialise the error value */
216 dbus_error_init(&err);
218 /* connect to the DBUS system bus, and check for errors */
219 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
221 if (dbus_error_is_set(&err)) {
222 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
223 dbus_error_free(&err);
226 if (NULL == g_conn_sender) {
227 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
228 return VC_ERROR_OPERATION_FAILED;
231 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
233 if (dbus_error_is_set(&err)) {
234 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
235 dbus_error_free(&err);
238 if (NULL == g_conn_listener) {
239 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
240 __vc_dbus_connection_free();
241 return VC_ERROR_OPERATION_FAILED;
246 char service_name[64];
247 memset(service_name, '\0', 64);
248 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
250 SLOG(LOG_DEBUG, TAG_VCC, "service name is %s", service_name);
252 /* register our name on the bus, and check for errors */
253 ret = dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
255 if (dbus_error_is_set(&err)) {
256 SLOG(LOG_ERROR, TAG_VCC, "Name Error (%s)", err.message);
257 dbus_error_free(&err);
260 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
261 SLOG(LOG_ERROR, TAG_VCC, "fail dbus_bus_request_name()");
262 __vc_dbus_connection_free();
266 if (NULL != g_fd_handler) {
267 SLOG(LOG_WARN, TAG_VCC, "The handler already exists.");
268 __vc_dbus_connection_free();
272 char rule[128] = {0, };
273 snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
275 /* add a rule for which messages we want to see */
276 dbus_bus_add_match(g_conn_listener, rule, &err);
277 dbus_connection_flush(g_conn_listener);
279 if (dbus_error_is_set(&err)) {
280 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
281 dbus_error_free(&err);
282 __vc_dbus_connection_free();
283 return VC_ERROR_OPERATION_FAILED;
287 if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
288 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
289 __vc_dbus_connection_free();
290 return VC_ERROR_OPERATION_FAILED;
292 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
295 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn_listener, NULL, NULL);
296 if (NULL == g_fd_handler) {
297 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
298 __vc_dbus_connection_free();
299 return VC_ERROR_OPERATION_FAILED;
305 int vc_dbus_close_connection()
308 dbus_error_init(&err);
310 if (NULL != g_fd_handler) {
311 ecore_main_fd_handler_del(g_fd_handler);
317 char service_name[64];
318 memset(service_name, '\0', 64);
319 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
321 dbus_bus_release_name(g_conn_listener, service_name, &err);
323 if (dbus_error_is_set(&err)) {
324 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
325 dbus_error_free(&err);
328 __vc_dbus_connection_free();
333 int vc_dbus_reconnect()
335 if (!g_conn_sender || !g_conn_listener) {
336 vc_dbus_close_connection();
338 if (0 != vc_dbus_open_connection()) {
339 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
343 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
347 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
348 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
349 SLOG(LOG_WARN, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
350 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
352 if (false == sender_connected || false == listener_connected) {
353 vc_dbus_close_connection();
355 if (0 != vc_dbus_open_connection()) {
356 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
360 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
366 static int __dbus_check()
368 if (NULL == g_conn_sender) {
369 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
370 return vc_dbus_reconnect();
375 int vc_dbus_request_hello()
377 if (0 != __dbus_check()) {
378 return VC_ERROR_OPERATION_FAILED;
383 msg = dbus_message_new_method_call(
384 VC_SERVER_SERVICE_NAME,
385 VC_SERVER_SERVICE_OBJECT_PATH,
386 VC_SERVER_SERVICE_INTERFACE,
390 SLOG(LOG_ERROR, TAG_VCC, "@@ Request vc hello : Fail to make message");
391 return VC_ERROR_OPERATION_FAILED;
395 dbus_error_init(&err);
397 DBusMessage* result_msg = NULL;
400 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
402 if (dbus_error_is_set(&err)) {
403 dbus_error_free(&err);
406 dbus_message_unref(msg);
408 if (NULL != result_msg) {
409 dbus_message_unref(result_msg);
412 result = VC_ERROR_TIMED_OUT;
419 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state, int* daemon_pid)
421 if (0 != __dbus_check()) {
422 return VC_ERROR_OPERATION_FAILED;
427 msg = dbus_message_new_method_call(
428 VC_SERVER_SERVICE_NAME,
429 VC_SERVER_SERVICE_OBJECT_PATH,
430 VC_SERVER_SERVICE_INTERFACE,
431 VC_METHOD_INITIALIZE);
434 SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : Fail to make message ");
435 return VC_ERROR_OPERATION_FAILED;
437 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : pid(%d)", pid);
440 dbus_message_append_args(msg,
441 DBUS_TYPE_INT32, &pid,
445 dbus_error_init(&err);
447 DBusMessage* result_msg;
448 int result = VC_ERROR_OPERATION_FAILED;
450 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
451 dbus_message_unref(msg);
453 if (dbus_error_is_set(&err)) {
454 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
455 dbus_error_free(&err);
458 if (NULL != result_msg) {
460 int tmp_service_state = 0;
461 int tmp_daemon_pid = 0;
462 dbus_message_get_args(result_msg, &err,
463 DBUS_TYPE_INT32, &result,
464 DBUS_TYPE_INT32, &tmp,
465 DBUS_TYPE_INT32, &tmp_service_state,
466 DBUS_TYPE_INT32, &tmp_daemon_pid,
469 if (dbus_error_is_set(&err)) {
470 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
471 dbus_error_free(&err);
472 result = VC_ERROR_OPERATION_FAILED;
475 dbus_message_unref(result_msg);
479 *service_state = tmp_service_state;
480 *daemon_pid = tmp_daemon_pid;
482 /* add a rule for daemon error */
483 char rule_err[256] = {0, };
484 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);
485 dbus_bus_add_match(g_conn_listener, rule_err, &err);
486 dbus_connection_flush(g_conn_listener);
488 if (dbus_error_is_set(&err)) {
489 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
490 dbus_error_free(&err);
491 return VC_ERROR_OPERATION_FAILED;
494 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : result = %d mgr = %d service = %d daemon_pid = %d", result, *mgr_pid, *service_state, *daemon_pid);
496 SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : result = %d", result);
499 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL ");
501 result = VC_ERROR_TIMED_OUT;
507 int vc_dbus_request_finalize(int pid)
510 dbus_error_init(&err);
512 if (0 != __dbus_check()) {
513 return VC_ERROR_OPERATION_FAILED;
516 /* remove a rule for daemon error */
517 char rule_err[256] = {0, };
518 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);
519 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
520 dbus_connection_flush(g_conn_listener);
522 if (dbus_error_is_set(&err)) {
523 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
524 dbus_error_free(&err);
529 msg = dbus_message_new_method_call(
530 VC_SERVER_SERVICE_NAME,
531 VC_SERVER_SERVICE_OBJECT_PATH,
532 VC_SERVER_SERVICE_INTERFACE,
536 SLOG(LOG_ERROR, TAG_VCC, "@@ vc finalize : Fail to make message ");
537 return VC_ERROR_OPERATION_FAILED;
539 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc finalize : pid(%d)", pid);
542 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
544 DBusMessage* result_msg;
545 int result = VC_ERROR_OPERATION_FAILED;
547 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
548 dbus_message_unref(msg);
550 if (dbus_error_is_set(&err)) {
551 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
552 dbus_error_free(&err);
555 if (NULL != result_msg) {
556 dbus_message_get_args(result_msg, &err,
557 DBUS_TYPE_INT32, &result,
560 if (dbus_error_is_set(&err)) {
561 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
562 dbus_error_free(&err);
563 result = VC_ERROR_OPERATION_FAILED;
566 dbus_message_unref(result_msg);
569 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc finalize : result = %d", result);
571 SLOG(LOG_ERROR, TAG_VCC, "@@ vc finalize : result = %d", result);
574 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL ");
576 result = VC_ERROR_TIMED_OUT;
582 int vc_dbus_request_set_exclusive_command(int pid, bool value)
584 if (0 != __dbus_check()) {
585 return VC_ERROR_OPERATION_FAILED;
590 msg = dbus_message_new_method_call(
591 VC_SERVER_SERVICE_NAME,
592 VC_SERVER_SERVICE_OBJECT_PATH,
593 VC_SERVER_SERVICE_INTERFACE,
594 VC_METHOD_SET_EXCLUSIVE_CMD);
597 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set exclusive command : Fail to make message");
598 return VC_ERROR_OPERATION_FAILED;
600 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : pid(%d)", pid);
605 dbus_message_append_args(msg,
606 DBUS_TYPE_INT32, &pid,
607 DBUS_TYPE_INT32, &temp,
611 dbus_error_init(&err);
613 DBusMessage* result_msg;
614 int result = VC_ERROR_OPERATION_FAILED;
616 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
617 dbus_message_unref(msg);
619 if (dbus_error_is_set(&err)) {
620 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
621 dbus_error_free(&err);
624 if (NULL != result_msg) {
625 dbus_message_get_args(result_msg, &err,
626 DBUS_TYPE_INT32, &result,
629 if (dbus_error_is_set(&err)) {
630 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
631 dbus_error_free(&err);
632 result = VC_ERROR_OPERATION_FAILED;
634 dbus_message_unref(result_msg);
637 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : result = %d", result);
639 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : result = %d", result);
642 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
644 result = VC_ERROR_TIMED_OUT;
650 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
652 if (0 != __dbus_check()) {
653 return VC_ERROR_OPERATION_FAILED;
658 msg = dbus_message_new_method_call(
659 VC_SERVER_SERVICE_NAME,
660 VC_SERVER_SERVICE_OBJECT_PATH,
661 VC_SERVER_SERVICE_INTERFACE,
662 VC_METHOD_SET_COMMAND);
665 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : Fail to make message");
666 return VC_ERROR_OPERATION_FAILED;
668 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : pid(%d)", pid);
671 dbus_message_append_args(msg,
672 DBUS_TYPE_INT32, &pid,
673 DBUS_TYPE_INT32, &cmd_type,
677 dbus_error_init(&err);
679 DBusMessage* result_msg;
680 int result = VC_ERROR_OPERATION_FAILED;
682 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
683 dbus_message_unref(msg);
685 if (dbus_error_is_set(&err)) {
686 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
687 dbus_error_free(&err);
690 if (NULL != result_msg) {
691 dbus_message_get_args(result_msg, &err,
692 DBUS_TYPE_INT32, &result,
695 if (dbus_error_is_set(&err)) {
696 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
697 dbus_error_free(&err);
698 result = VC_ERROR_OPERATION_FAILED;
700 dbus_message_unref(result_msg);
703 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : result = %d", result);
705 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : result = %d", result);
708 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
710 result = VC_ERROR_TIMED_OUT;
716 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
718 if (0 != __dbus_check()) {
719 return VC_ERROR_OPERATION_FAILED;
724 msg = dbus_message_new_method_call(
725 VC_SERVER_SERVICE_NAME,
726 VC_SERVER_SERVICE_OBJECT_PATH,
727 VC_SERVER_SERVICE_INTERFACE,
728 VC_METHOD_UNSET_COMMAND);
731 SLOG(LOG_ERROR, TAG_VCC, "@@ vc unset command : Fail to make message");
732 return VC_ERROR_OPERATION_FAILED;
734 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc unset command : pid(%d), type(%d)", pid, cmd_type);
737 dbus_message_append_args(msg,
738 DBUS_TYPE_INT32, &pid,
739 DBUS_TYPE_INT32, &cmd_type,
743 dbus_error_init(&err);
745 DBusMessage* result_msg;
746 int result = VC_ERROR_OPERATION_FAILED;
748 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
749 dbus_message_unref(msg);
751 if (dbus_error_is_set(&err)) {
752 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
753 dbus_error_free(&err);
756 if (NULL != result_msg) {
757 dbus_message_get_args(result_msg, &err,
758 DBUS_TYPE_INT32, &result,
761 if (dbus_error_is_set(&err)) {
762 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
763 dbus_error_free(&err);
764 result = VC_ERROR_OPERATION_FAILED;
766 dbus_message_unref(result_msg);
769 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc unset command : result = %d", result);
771 SLOG(LOG_ERROR, TAG_VCC, "@@ vc unset command : result = %d", result);
774 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
776 result = VC_ERROR_TIMED_OUT;
782 int vc_dbus_set_foreground(int pid, bool value)
784 if (0 != __dbus_check()) {
785 return VC_ERROR_OPERATION_FAILED;
788 DBusMessage* msg = NULL;
791 tmp_value = (int)value;
793 msg = dbus_message_new_signal(
794 VC_MANAGER_SERVICE_OBJECT_PATH,
795 VC_MANAGER_SERVICE_INTERFACE,
796 VCC_MANAGER_METHOD_SET_FOREGROUND);
799 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set foreground to manager : Fail to make message");
800 return VC_ERROR_OPERATION_FAILED;
802 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
805 dbus_message_append_args(msg,
806 DBUS_TYPE_INT32, &pid,
807 DBUS_TYPE_INT32, &tmp_value,
810 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
811 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
812 return VC_ERROR_OPERATION_FAILED;
815 dbus_message_unref(msg);
818 msg = dbus_message_new_method_call(
819 VC_SERVER_SERVICE_NAME,
820 VC_SERVER_SERVICE_OBJECT_PATH,
821 VC_SERVER_SERVICE_INTERFACE,
822 VC_METHOD_SET_FOREGROUND);
825 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set foreground to daemon : Fail to make message");
826 return VC_ERROR_OPERATION_FAILED;
828 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
831 dbus_message_append_args(msg,
832 DBUS_TYPE_INT32, &pid,
833 DBUS_TYPE_INT32, &tmp_value,
836 dbus_message_set_no_reply(msg, TRUE);
838 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
839 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
840 return VC_ERROR_OPERATION_FAILED;
843 dbus_connection_flush(g_conn_sender);
845 dbus_message_unref(msg);
850 int vc_dbus_request_dialog(int pid, const char* disp_text, const char* utt_text, bool continuous)
852 if (NULL == g_conn_sender) {
853 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
854 if (0 != vc_dbus_reconnect()) {
855 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
860 int tmp_continue = 0;
862 tmp_continue = (int)continuous;
864 msg = dbus_message_new_method_call(
865 VC_SERVER_SERVICE_NAME,
866 VC_SERVER_SERVICE_OBJECT_PATH,
867 VC_SERVER_SERVICE_INTERFACE,
871 SLOG(LOG_ERROR, TAG_VCC, "@@ vc request dialog to manager : Fail to make message");
872 return VC_ERROR_OPERATION_FAILED;
874 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);
877 dbus_message_append_args(msg,
878 DBUS_TYPE_INT32, &pid,
879 DBUS_TYPE_STRING, &disp_text,
880 DBUS_TYPE_STRING, &utt_text,
881 DBUS_TYPE_INT32, &tmp_continue,
884 dbus_message_set_no_reply(msg, TRUE);
886 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
887 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
888 return VC_ERROR_OPERATION_FAILED;
890 SLOG(LOG_DEBUG, TAG_VCC, "[Dbus DEBUG] Success to Send");
891 dbus_connection_flush(g_conn_sender);
894 dbus_message_unref(msg);
900 dbus_error_init(&err);
902 DBusMessage* result_msg;
903 int result = VC_ERROR_OPERATION_FAILED;
905 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
906 dbus_message_unref(msg);
908 if (dbus_error_is_set(&err)) {
909 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
910 dbus_error_free(&err);
913 if (NULL != result_msg) {
914 dbus_message_get_args(result_msg, &err,
915 DBUS_TYPE_INT32, &result,
918 if (dbus_error_is_set(&err)) {
919 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
920 dbus_error_free(&err);
921 result = VC_ERROR_OPERATION_FAILED;
923 dbus_message_unref(result_msg);
926 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : result = %d", result);
928 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : result = %d", result);
931 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
933 result = VC_ERROR_TIMED_OUT;
940 int vc_dbus_request_is_system_command_valid(int pid, bool* is_sys_cmd_valid)
942 if (NULL == g_conn_sender) {
943 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
944 if (0 != vc_dbus_reconnect()) {
945 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
951 msg = dbus_message_new_method_call(
952 VC_SERVER_SERVICE_NAME,
953 VC_SERVER_SERVICE_OBJECT_PATH,
954 VC_SERVER_SERVICE_INTERFACE,
955 VC_METHOD_IS_SYS_COMMAND_VALID);
958 SLOG(LOG_ERROR, TAG_VCC, "@@ vc is system command valid : Fail to make message");
959 return VC_ERROR_OPERATION_FAILED;
961 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc is system command valid : pid(%d)", pid);
964 dbus_message_append_args(msg,
965 DBUS_TYPE_INT32, &pid,
969 dbus_error_init(&err);
972 DBusMessage* result_msg;
973 int result = VC_ERROR_OPERATION_FAILED;
975 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
976 dbus_message_unref(msg);
978 if (dbus_error_is_set(&err)) {
979 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
980 dbus_error_free(&err);
983 if (NULL != result_msg) {
984 dbus_message_get_args(result_msg, &err,
985 DBUS_TYPE_INT32, &result,
986 DBUS_TYPE_INT32, &tmp_sys_cmd,
989 if (dbus_error_is_set(&err)) {
990 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
991 dbus_error_free(&err);
992 result = VC_ERROR_OPERATION_FAILED;
994 dbus_message_unref(result_msg);
997 *is_sys_cmd_valid = (bool)tmp_sys_cmd;
998 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc is system command valid : result = %d, is_sys_cmd_valid = %d", result, *is_sys_cmd_valid);
1000 SLOG(LOG_ERROR, TAG_VCC, "@@ vc is system command valid : result = %d", result);
1003 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
1004 vc_dbus_reconnect();
1005 result = VC_ERROR_TIMED_OUT;
1013 int vc_dbus_request_start(int pid, int silence)
1017 /* create a signal & check for errors */
1018 msg = dbus_message_new_method_call(
1019 VC_SERVER_SERVICE_NAME,
1020 VC_SERVER_SERVICE_OBJECT_PATH,
1021 VC_SERVER_SERVICE_INTERFACE,
1022 VC_METHOD_REQUEST_START);
1025 SLOG(LOG_ERROR, TAG_VCC, "@@ vc start : Fail to make message ");
1026 return VC_ERROR_OPERATION_FAILED;
1028 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc start : pid(%d), silence(%d)", pid, silence);
1031 DBusMessageIter args;
1032 dbus_message_iter_init_append(msg, &args);
1035 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1036 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
1039 dbus_error_init(&err);
1041 DBusMessage* result_msg;
1042 int result = VC_ERROR_OPERATION_FAILED;
1044 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1045 dbus_message_unref(msg);
1047 if (dbus_error_is_set(&err)) {
1048 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1049 dbus_error_free(&err);
1052 if (NULL != result_msg) {
1053 dbus_message_get_args(result_msg, &err,
1054 DBUS_TYPE_INT32, &result,
1057 if (dbus_error_is_set(&err)) {
1058 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1059 dbus_error_free(&err);
1060 result = VC_ERROR_OPERATION_FAILED;
1062 dbus_message_unref(result_msg);
1065 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc start : result = %d", result);
1067 SLOG(LOG_ERROR, TAG_VCC, "@@ vc start : result = %d", result);
1070 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1071 vc_dbus_reconnect();
1072 result = VC_ERROR_TIMED_OUT;
1078 int vc_dbus_request_stop(int pid)
1082 /* create a signal & check for errors */
1083 msg = dbus_message_new_method_call(
1084 VC_SERVER_SERVICE_NAME,
1085 VC_SERVER_SERVICE_OBJECT_PATH,
1086 VC_SERVER_SERVICE_INTERFACE,
1087 VC_METHOD_REQUEST_STOP);
1090 SLOG(LOG_ERROR, TAG_VCC, "@@ vc stop : Fail to make message ");
1091 return VC_ERROR_OPERATION_FAILED;
1093 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc stop : pid(%d)", pid);
1096 dbus_message_append_args(msg,
1097 DBUS_TYPE_INT32, &pid,
1101 dbus_error_init(&err);
1103 DBusMessage* result_msg;
1104 int result = VC_ERROR_OPERATION_FAILED;
1106 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1107 dbus_message_unref(msg);
1109 if (dbus_error_is_set(&err)) {
1110 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1111 dbus_error_free(&err);
1114 if (NULL != result_msg) {
1115 dbus_message_get_args(result_msg, &err,
1116 DBUS_TYPE_INT32, &result,
1119 if (dbus_error_is_set(&err)) {
1120 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1121 dbus_error_free(&err);
1122 result = VC_ERROR_OPERATION_FAILED;
1124 dbus_message_unref(result_msg);
1127 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc stop : result = %d", result);
1129 SLOG(LOG_ERROR, TAG_VCC, "@@ vc stop : result = %d", result);
1132 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1133 vc_dbus_reconnect();
1134 result = VC_ERROR_TIMED_OUT;
1140 int vc_dbus_request_cancel(int pid)
1144 /* create a signal & check for errors */
1145 msg = dbus_message_new_method_call(
1146 VC_SERVER_SERVICE_NAME,
1147 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
1148 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
1149 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
1152 SLOG(LOG_ERROR, TAG_VCC, "@@ vc cancel : Fail to make message ");
1153 return VC_ERROR_OPERATION_FAILED;
1155 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc cancel : pid(%d)", pid);
1158 dbus_message_append_args(msg,
1159 DBUS_TYPE_INT32, &pid,
1163 dbus_error_init(&err);
1165 DBusMessage* result_msg;
1166 int result = VC_ERROR_OPERATION_FAILED;
1168 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1169 dbus_message_unref(msg);
1171 if (dbus_error_is_set(&err)) {
1172 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1173 dbus_error_free(&err);
1176 if (NULL != result_msg) {
1177 dbus_message_get_args(result_msg, &err,
1178 DBUS_TYPE_INT32, &result,
1181 if (dbus_error_is_set(&err)) {
1182 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1183 dbus_error_free(&err);
1184 result = VC_ERROR_OPERATION_FAILED;
1186 dbus_message_unref(result_msg);
1189 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc cancel : result = %d", result);
1191 SLOG(LOG_ERROR, TAG_VCC, "@@ vc cancel : result = %d", result);
1194 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1195 vc_dbus_reconnect();
1196 result = VC_ERROR_TIMED_OUT;
1204 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
1206 if (0 != __dbus_check()) {
1207 return VC_ERROR_OPERATION_FAILED;
1212 char service_name[64] = {0,};
1213 char object_path[64] = {0,};
1214 char target_if_name[128] = {0,};
1216 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1217 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1218 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1220 /* create a signal & check for errors */
1221 msg = dbus_message_new_method_call(
1223 object_path, /* object name of the signal */
1224 target_if_name, /* interface name of the signal */
1225 VC_METHOD_AUTH_ENABLE); /* name of the signal */
1228 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth enable : Fail to make message ");
1229 return VC_ERROR_OPERATION_FAILED;
1231 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth enable : pid(%d)", pid);
1234 dbus_message_append_args(msg,
1235 DBUS_TYPE_INT32, &pid,
1239 dbus_error_init(&err);
1241 DBusMessage* result_msg;
1242 int result = VC_ERROR_OPERATION_FAILED;
1244 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1245 dbus_message_unref(msg);
1247 if (dbus_error_is_set(&err)) {
1248 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1249 dbus_error_free(&err);
1252 if (NULL != result_msg) {
1253 dbus_message_get_args(result_msg, &err,
1254 DBUS_TYPE_INT32, &result,
1257 if (dbus_error_is_set(&err)) {
1258 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1259 dbus_error_free(&err);
1260 result = VC_ERROR_OPERATION_FAILED;
1262 dbus_message_unref(result_msg);
1265 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth enable : result = %d", result);
1267 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth enable : result = %d", result);
1270 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1271 vc_dbus_reconnect();
1272 result = VC_ERROR_TIMED_OUT;
1278 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
1280 if (0 != __dbus_check()) {
1281 return VC_ERROR_OPERATION_FAILED;
1286 char service_name[64] = {0,};
1287 char object_path[64] = {0,};
1288 char target_if_name[128] = {0,};
1290 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1291 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1292 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1294 /* create a signal & check for errors */
1295 msg = dbus_message_new_method_call(
1297 object_path, /* object name of the signal */
1298 target_if_name, /* interface name of the signal */
1299 VC_METHOD_AUTH_DISABLE); /* name of the signal */
1302 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth disable : Fail to make message ");
1303 return VC_ERROR_OPERATION_FAILED;
1305 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth disable : pid(%d)", pid);
1308 dbus_message_append_args(msg,
1309 DBUS_TYPE_INT32, &pid,
1313 dbus_error_init(&err);
1315 DBusMessage* result_msg;
1316 int result = VC_ERROR_OPERATION_FAILED;
1318 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1319 dbus_message_unref(msg);
1321 if (dbus_error_is_set(&err)) {
1322 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1323 dbus_error_free(&err);
1326 if (NULL != result_msg) {
1327 dbus_message_get_args(result_msg, &err,
1328 DBUS_TYPE_INT32, &result,
1331 if (dbus_error_is_set(&err)) {
1332 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1333 dbus_error_free(&err);
1334 result = VC_ERROR_OPERATION_FAILED;
1336 dbus_message_unref(result_msg);
1339 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth disable : result = %d", result);
1341 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth disable : result = %d", result);
1344 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1345 vc_dbus_reconnect();
1346 result = VC_ERROR_TIMED_OUT;
1352 int vc_dbus_request_auth_start(int pid, int mgr_pid)
1354 if (0 != __dbus_check()) {
1355 return VC_ERROR_OPERATION_FAILED;
1360 char service_name[64] = {0,};
1361 char object_path[64] = {0,};
1362 char target_if_name[128] = {0,};
1364 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1365 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1366 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1368 /* create a signal & check for errors */
1369 msg = dbus_message_new_method_call(
1373 VC_METHOD_AUTH_START);
1376 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth start : Fail to make message ");
1377 return VC_ERROR_OPERATION_FAILED;
1379 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth start : pid(%d)", pid);
1382 DBusMessageIter args;
1383 dbus_message_iter_init_append(msg, &args);
1386 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1389 dbus_error_init(&err);
1391 DBusMessage* result_msg;
1392 int result = VC_ERROR_OPERATION_FAILED;
1394 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1395 dbus_message_unref(msg);
1397 if (dbus_error_is_set(&err)) {
1398 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1399 dbus_error_free(&err);
1402 if (NULL != result_msg) {
1403 dbus_message_get_args(result_msg, &err,
1404 DBUS_TYPE_INT32, &result,
1407 if (dbus_error_is_set(&err)) {
1408 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1409 dbus_error_free(&err);
1410 result = VC_ERROR_OPERATION_FAILED;
1412 dbus_message_unref(result_msg);
1415 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth start : result = %d", result);
1417 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth start : result = %d", result);
1420 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1421 vc_dbus_reconnect();
1422 result = VC_ERROR_TIMED_OUT;
1428 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1430 if (0 != __dbus_check()) {
1431 return VC_ERROR_OPERATION_FAILED;
1436 char service_name[64] = {0,};
1437 char object_path[64] = {0,};
1438 char target_if_name[128] = {0,};
1440 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1441 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1442 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1444 /* create a signal & check for errors */
1445 msg = dbus_message_new_method_call(
1449 VC_METHOD_AUTH_STOP);
1452 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth stop : Fail to make message ");
1453 return VC_ERROR_OPERATION_FAILED;
1455 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth stop : pid(%d)", pid);
1458 dbus_message_append_args(msg,
1459 DBUS_TYPE_INT32, &pid,
1463 dbus_error_init(&err);
1465 DBusMessage* result_msg;
1466 int result = VC_ERROR_OPERATION_FAILED;
1468 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1469 dbus_message_unref(msg);
1471 if (dbus_error_is_set(&err)) {
1472 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1473 dbus_error_free(&err);
1476 if (NULL != result_msg) {
1477 dbus_message_get_args(result_msg, &err,
1478 DBUS_TYPE_INT32, &result,
1481 if (dbus_error_is_set(&err)) {
1482 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1483 dbus_error_free(&err);
1484 result = VC_ERROR_OPERATION_FAILED;
1486 dbus_message_unref(result_msg);
1489 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth stop : result = %d", result);
1491 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth stop : result = %d", result);
1494 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1495 vc_dbus_reconnect();
1496 result = VC_ERROR_TIMED_OUT;
1502 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1504 if (0 != __dbus_check()) {
1505 return VC_ERROR_OPERATION_FAILED;
1510 char service_name[64] = {0,};
1511 char object_path[64] = {0,};
1512 char target_if_name[128] = {0,};
1514 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1515 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1516 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1518 /* create a signal & check for errors */
1519 msg = dbus_message_new_method_call(
1521 object_path, /* object name of the signal */
1522 target_if_name, /* interface name of the signal */
1523 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1526 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth cancel : Fail to make message ");
1527 return VC_ERROR_OPERATION_FAILED;
1529 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth cancel : pid(%d)", pid);
1532 dbus_message_append_args(msg,
1533 DBUS_TYPE_INT32, &pid,
1537 dbus_error_init(&err);
1539 DBusMessage* result_msg;
1540 int result = VC_ERROR_OPERATION_FAILED;
1542 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1543 dbus_message_unref(msg);
1545 if (dbus_error_is_set(&err)) {
1546 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1547 dbus_error_free(&err);
1550 if (NULL != result_msg) {
1551 dbus_message_get_args(result_msg, &err,
1552 DBUS_TYPE_INT32, &result,
1555 if (dbus_error_is_set(&err)) {
1556 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1557 dbus_error_free(&err);
1558 result = VC_ERROR_OPERATION_FAILED;
1560 dbus_message_unref(result_msg);
1563 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth cancel : result = %d", result);
1565 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth cancel : result = %d", result);
1568 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1569 vc_dbus_reconnect();
1570 result = VC_ERROR_TIMED_OUT;