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 pid, int reason);
32 extern void __vc_cb_result(int pid);
34 extern int __vc_cb_service_state(int state);
37 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
39 if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW;
41 dbus_connection_read_write_dispatch(g_conn_listener, 50);
44 DBusMessage* msg = NULL;
45 msg = dbus_connection_pop_message(g_conn_listener);
47 /* loop again if we haven't read a message */
53 dbus_error_init(&err);
55 char if_name[64] = {0, };
56 snprintf(if_name, 64, "%s", VC_CLIENT_SERVICE_INTERFACE);
58 if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_HELLO)) {
59 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Hello");
63 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
65 if (dbus_error_is_set(&err)) {
66 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
67 dbus_error_free(&err);
71 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc get hello : pid(%d) ", pid);
74 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc get hello : invalid pid ");
77 DBusMessage* reply = NULL;
78 reply = dbus_message_new_method_return(msg);
81 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
83 if (!dbus_connection_send(g_conn_listener, reply, NULL))
84 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to send reply");
86 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get hello : result(%d)", response);
88 dbus_connection_flush(g_conn_listener);
89 dbus_message_unref(reply);
91 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to create reply message");
94 SLOG(LOG_DEBUG, TAG_VCC, "=====");
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_signal(msg, if_name, VCD_METHOD_RESULT)) {
114 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Client Result");
117 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
121 SLOG(LOG_DEBUG, TAG_VCC, "=====");
122 SLOG(LOG_DEBUG, TAG_VCC, " ");
124 } /* VCD_METHOD_RESULT */
126 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR)) {
127 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
132 dbus_message_get_args(msg, &err,
133 DBUS_TYPE_INT32, &pid,
134 DBUS_TYPE_INT32, &reason,
135 DBUS_TYPE_STRING, &err_msg,
138 if (dbus_error_is_set(&err)) {
139 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc Get Error message : Get arguments error (%s)", err.message);
140 dbus_error_free(&err);
143 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
144 __vc_cb_error(pid, reason);
147 SLOG(LOG_DEBUG, TAG_VCC, "=====");
148 SLOG(LOG_DEBUG, TAG_VCC, " ");
149 } /* VCD_METHOD_ERROR */
152 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
153 dbus_message_unref(msg);
157 /* free the message */
158 dbus_message_unref(msg);
161 return ECORE_CALLBACK_PASS_ON;
164 int vc_dbus_open_connection()
166 if (NULL != g_conn_sender && NULL != g_conn_listener) {
167 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
173 /* initialise the error value */
174 dbus_error_init(&err);
176 /* connect to the DBUS system bus, and check for errors */
177 g_conn_sender = dbus_bus_get(DBUS_BUS_SESSION, &err);
179 if (dbus_error_is_set(&err)) {
180 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
181 dbus_error_free(&err);
184 if (NULL == g_conn_sender) {
185 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
186 return VC_ERROR_OPERATION_FAILED;
189 g_conn_listener = dbus_bus_get(DBUS_BUS_SESSION, &err);
191 if (dbus_error_is_set(&err)) {
192 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
193 dbus_error_free(&err);
196 if (NULL == g_conn_listener) {
197 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
198 return VC_ERROR_OPERATION_FAILED;
201 if (NULL != g_fd_handler) {
202 SLOG(LOG_WARN, TAG_VCC, "The handler already exists.");
206 char rule[128] = {0, };
207 snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
209 /* add a rule for which messages we want to see */
210 dbus_bus_add_match(g_conn_listener, rule, &err);
211 dbus_connection_flush(g_conn_listener);
213 if (dbus_error_is_set(&err)) {
214 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
215 dbus_error_free(&err);
216 return VC_ERROR_OPERATION_FAILED;
220 if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
221 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
222 return VC_ERROR_OPERATION_FAILED;
224 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
227 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn_listener, NULL, NULL);
228 if (NULL == g_fd_handler) {
229 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
230 return VC_ERROR_OPERATION_FAILED;
236 int vc_dbus_close_connection()
239 dbus_error_init(&err);
241 if (NULL != g_fd_handler) {
242 ecore_main_fd_handler_del(g_fd_handler);
247 g_conn_sender = NULL;
248 g_conn_listener = NULL;
253 int vc_dbus_reconnect()
255 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
256 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
257 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
258 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
260 if (false == sender_connected || false == listener_connected) {
261 vc_dbus_close_connection();
263 if (0 != vc_dbus_open_connection()) {
264 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
268 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
274 int vc_dbus_request_hello()
278 msg = dbus_message_new_method_call(
279 VC_SERVER_SERVICE_NAME,
280 VC_SERVER_SERVICE_OBJECT_PATH,
281 VC_SERVER_SERVICE_INTERFACE,
285 SLOG(LOG_ERROR, TAG_VCC, ">>>> Request vc hello : Fail to make message");
286 return VC_ERROR_OPERATION_FAILED;
290 dbus_error_init(&err);
292 DBusMessage* result_msg = NULL;
295 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
297 if (dbus_error_is_set(&err)) {
298 dbus_error_free(&err);
301 dbus_message_unref(msg);
303 if (NULL != result_msg) {
304 dbus_message_unref(result_msg);
307 result = VC_ERROR_TIMED_OUT;
314 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state)
318 msg = dbus_message_new_method_call(
319 VC_SERVER_SERVICE_NAME,
320 VC_SERVER_SERVICE_OBJECT_PATH,
321 VC_SERVER_SERVICE_INTERFACE,
322 VC_METHOD_INITIALIZE);
325 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc initialize : Fail to make message ");
326 return VC_ERROR_OPERATION_FAILED;
328 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc initialize : pid(%d)", pid);
331 dbus_message_append_args(msg,
332 DBUS_TYPE_INT32, &pid,
336 dbus_error_init(&err);
338 DBusMessage* result_msg;
339 int result = VC_ERROR_OPERATION_FAILED;
341 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
342 dbus_message_unref(msg);
344 if (dbus_error_is_set(&err)) {
345 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
346 dbus_error_free(&err);
349 if (NULL != result_msg) {
351 int tmp_service_state = 0;
352 dbus_message_get_args(result_msg, &err,
353 DBUS_TYPE_INT32, &result,
354 DBUS_TYPE_INT32, &tmp,
355 DBUS_TYPE_INT32, &tmp_service_state,
358 if (dbus_error_is_set(&err)) {
359 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
360 dbus_error_free(&err);
361 result = VC_ERROR_OPERATION_FAILED;
364 dbus_message_unref(result_msg);
368 *service_state = tmp_service_state;
369 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d service = %d", result, *mgr_pid, *service_state);
371 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
374 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
376 result = VC_ERROR_TIMED_OUT;
382 int vc_dbus_request_finalize(int pid)
386 msg = dbus_message_new_method_call(
387 VC_SERVER_SERVICE_NAME,
388 VC_SERVER_SERVICE_OBJECT_PATH,
389 VC_SERVER_SERVICE_INTERFACE,
393 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc finalize : Fail to make message ");
394 return VC_ERROR_OPERATION_FAILED;
396 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc finalize : pid(%d)", pid);
399 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
402 dbus_error_init(&err);
404 DBusMessage* result_msg;
405 int result = VC_ERROR_OPERATION_FAILED;
407 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
408 dbus_message_unref(msg);
410 if (dbus_error_is_set(&err)) {
411 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
412 dbus_error_free(&err);
415 if (NULL != result_msg) {
416 dbus_message_get_args(result_msg, &err,
417 DBUS_TYPE_INT32, &result,
420 if (dbus_error_is_set(&err)) {
421 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
422 dbus_error_free(&err);
423 result = VC_ERROR_OPERATION_FAILED;
426 dbus_message_unref(result_msg);
429 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc finalize : result = %d", result);
431 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc finalize : result = %d", result);
434 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
436 result = VC_ERROR_TIMED_OUT;
442 int vc_dbus_request_set_exclusive_command(int pid, bool value)
446 msg = dbus_message_new_method_call(
447 VC_SERVER_SERVICE_NAME,
448 VC_SERVER_SERVICE_OBJECT_PATH,
449 VC_SERVER_SERVICE_INTERFACE,
450 VC_METHOD_SET_EXCLUSIVE_CMD);
453 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set exclusive command : Fail to make message");
454 return VC_ERROR_OPERATION_FAILED;
456 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set exclusive command : pid(%d)", pid);
461 dbus_message_append_args(msg,
462 DBUS_TYPE_INT32, &pid,
463 DBUS_TYPE_INT32, &temp,
467 dbus_error_init(&err);
469 DBusMessage* result_msg;
470 int result = VC_ERROR_OPERATION_FAILED;
472 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
473 dbus_message_unref(msg);
475 if (dbus_error_is_set(&err)) {
476 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
477 dbus_error_free(&err);
480 if (NULL != result_msg) {
481 dbus_message_get_args(result_msg, &err,
482 DBUS_TYPE_INT32, &result,
485 if (dbus_error_is_set(&err)) {
486 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
487 dbus_error_free(&err);
488 result = VC_ERROR_OPERATION_FAILED;
490 dbus_message_unref(result_msg);
493 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
495 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
498 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
500 result = VC_ERROR_TIMED_OUT;
506 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
510 msg = dbus_message_new_method_call(
511 VC_SERVER_SERVICE_NAME,
512 VC_SERVER_SERVICE_OBJECT_PATH,
513 VC_SERVER_SERVICE_INTERFACE,
514 VC_METHOD_SET_COMMAND);
517 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set command : Fail to make message");
518 return VC_ERROR_OPERATION_FAILED;
520 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set command : pid(%d)", pid);
523 dbus_message_append_args(msg,
524 DBUS_TYPE_INT32, &pid,
525 DBUS_TYPE_INT32, &cmd_type,
529 dbus_error_init(&err);
531 DBusMessage* result_msg;
532 int result = VC_ERROR_OPERATION_FAILED;
534 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
535 dbus_message_unref(msg);
537 if (dbus_error_is_set(&err)) {
538 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
539 dbus_error_free(&err);
542 if (NULL != result_msg) {
543 dbus_message_get_args(result_msg, &err,
544 DBUS_TYPE_INT32, &result,
547 if (dbus_error_is_set(&err)) {
548 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
549 dbus_error_free(&err);
550 result = VC_ERROR_OPERATION_FAILED;
552 dbus_message_unref(result_msg);
555 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
557 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
560 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
562 result = VC_ERROR_TIMED_OUT;
568 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
572 msg = dbus_message_new_method_call(
573 VC_SERVER_SERVICE_NAME,
574 VC_SERVER_SERVICE_OBJECT_PATH,
575 VC_SERVER_SERVICE_INTERFACE,
576 VC_METHOD_UNSET_COMMAND);
579 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc unset command : Fail to make message");
580 return VC_ERROR_OPERATION_FAILED;
582 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc unset command : pid(%d), type(%d)", pid, cmd_type);
585 dbus_message_append_args(msg,
586 DBUS_TYPE_INT32, &pid,
587 DBUS_TYPE_INT32, &cmd_type,
591 dbus_error_init(&err);
593 DBusMessage* result_msg;
594 int result = VC_ERROR_OPERATION_FAILED;
596 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
597 dbus_message_unref(msg);
599 if (dbus_error_is_set(&err)) {
600 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
601 dbus_error_free(&err);
604 if (NULL != result_msg) {
605 dbus_message_get_args(result_msg, &err,
606 DBUS_TYPE_INT32, &result,
609 if (dbus_error_is_set(&err)) {
610 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
611 dbus_error_free(&err);
612 result = VC_ERROR_OPERATION_FAILED;
614 dbus_message_unref(result_msg);
617 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc unset command : result = %d", result);
619 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc unset command : result = %d", result);
622 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
624 result = VC_ERROR_TIMED_OUT;
631 int vc_dbus_request_start(int pid, int silence)
635 /* create a signal & check for errors */
636 msg = dbus_message_new_method_call(
637 VC_SERVER_SERVICE_NAME,
638 VC_SERVER_SERVICE_OBJECT_PATH,
639 VC_SERVER_SERVICE_INTERFACE,
640 VC_METHOD_REQUEST_START);
643 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc start : Fail to make message ");
644 return VC_ERROR_OPERATION_FAILED;
646 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc start : pid(%d), silence(%d)", pid, silence);
649 DBusMessageIter args;
650 dbus_message_iter_init_append(msg, &args);
653 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
654 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
657 dbus_error_init(&err);
659 DBusMessage* result_msg;
660 int result = VC_ERROR_OPERATION_FAILED;
662 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
663 dbus_message_unref(msg);
665 if (dbus_error_is_set(&err)) {
666 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
667 dbus_error_free(&err);
670 if (NULL != result_msg) {
671 dbus_message_get_args(result_msg, &err,
672 DBUS_TYPE_INT32, &result,
675 if (dbus_error_is_set(&err)) {
676 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
677 dbus_error_free(&err);
678 result = VC_ERROR_OPERATION_FAILED;
680 dbus_message_unref(result_msg);
683 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc start : result = %d", result);
685 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc start : result = %d", result);
688 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
690 result = VC_ERROR_TIMED_OUT;
696 int vc_dbus_request_stop(int pid)
700 /* create a signal & check for errors */
701 msg = dbus_message_new_method_call(
702 VC_SERVER_SERVICE_NAME,
703 VC_SERVER_SERVICE_OBJECT_PATH,
704 VC_SERVER_SERVICE_INTERFACE,
705 VC_METHOD_REQUEST_STOP);
708 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc stop : Fail to make message ");
709 return VC_ERROR_OPERATION_FAILED;
711 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc stop : pid(%d)", pid);
714 dbus_message_append_args(msg,
715 DBUS_TYPE_INT32, &pid,
719 dbus_error_init(&err);
721 DBusMessage* result_msg;
722 int result = VC_ERROR_OPERATION_FAILED;
724 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
725 dbus_message_unref(msg);
727 if (dbus_error_is_set(&err)) {
728 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
729 dbus_error_free(&err);
732 if (NULL != result_msg) {
733 dbus_message_get_args(result_msg, &err,
734 DBUS_TYPE_INT32, &result,
737 if (dbus_error_is_set(&err)) {
738 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
739 dbus_error_free(&err);
740 result = VC_ERROR_OPERATION_FAILED;
742 dbus_message_unref(result_msg);
745 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc stop : result = %d", result);
747 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc stop : result = %d", result);
750 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
752 result = VC_ERROR_TIMED_OUT;
758 int vc_dbus_request_cancel(int pid)
762 /* create a signal & check for errors */
763 msg = dbus_message_new_method_call(
764 VC_SERVER_SERVICE_NAME,
765 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
766 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
767 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
770 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc cancel : Fail to make message ");
771 return VC_ERROR_OPERATION_FAILED;
773 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc cancel : pid(%d)", pid);
776 dbus_message_append_args(msg,
777 DBUS_TYPE_INT32, &pid,
781 dbus_error_init(&err);
783 DBusMessage* result_msg;
784 int result = VC_ERROR_OPERATION_FAILED;
786 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
787 dbus_message_unref(msg);
789 if (dbus_error_is_set(&err)) {
790 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
791 dbus_error_free(&err);
794 if (NULL != result_msg) {
795 dbus_message_get_args(result_msg, &err,
796 DBUS_TYPE_INT32, &result,
799 if (dbus_error_is_set(&err)) {
800 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
801 dbus_error_free(&err);
802 result = VC_ERROR_OPERATION_FAILED;
804 dbus_message_unref(result_msg);
807 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc cancel : result = %d", result);
809 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc cancel : result = %d", result);
812 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
814 result = VC_ERROR_TIMED_OUT;
822 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
826 char service_name[64] = {0,};
827 char object_path[64] = {0,};
828 char target_if_name[128] = {0,};
830 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
831 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
832 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
834 /* create a signal & check for errors */
835 msg = dbus_message_new_method_call(
837 object_path, /* object name of the signal */
838 target_if_name, /* interface name of the signal */
839 VC_METHOD_AUTH_ENABLE); /* name of the signal */
842 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth enable : Fail to make message ");
843 return VC_ERROR_OPERATION_FAILED;
845 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth enable : pid(%d)", pid);
848 dbus_message_append_args(msg,
849 DBUS_TYPE_INT32, &pid,
853 dbus_error_init(&err);
855 DBusMessage* result_msg;
856 int result = VC_ERROR_OPERATION_FAILED;
858 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
859 dbus_message_unref(msg);
861 if (dbus_error_is_set(&err)) {
862 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
863 dbus_error_free(&err);
866 if (NULL != result_msg) {
867 dbus_message_get_args(result_msg, &err,
868 DBUS_TYPE_INT32, &result,
871 if (dbus_error_is_set(&err)) {
872 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
873 dbus_error_free(&err);
874 result = VC_ERROR_OPERATION_FAILED;
876 dbus_message_unref(result_msg);
879 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth enable : result = %d", result);
881 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth enable : result = %d", result);
884 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
886 result = VC_ERROR_TIMED_OUT;
892 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
896 char service_name[64] = {0,};
897 char object_path[64] = {0,};
898 char target_if_name[128] = {0,};
900 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
901 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
902 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
904 /* create a signal & check for errors */
905 msg = dbus_message_new_method_call(
907 object_path, /* object name of the signal */
908 target_if_name, /* interface name of the signal */
909 VC_METHOD_AUTH_DISABLE); /* name of the signal */
912 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth disable : Fail to make message ");
913 return VC_ERROR_OPERATION_FAILED;
915 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth disable : pid(%d)", pid);
918 dbus_message_append_args(msg,
919 DBUS_TYPE_INT32, &pid,
923 dbus_error_init(&err);
925 DBusMessage* result_msg;
926 int result = VC_ERROR_OPERATION_FAILED;
928 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
929 dbus_message_unref(msg);
931 if (dbus_error_is_set(&err)) {
932 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
933 dbus_error_free(&err);
936 if (NULL != result_msg) {
937 dbus_message_get_args(result_msg, &err,
938 DBUS_TYPE_INT32, &result,
941 if (dbus_error_is_set(&err)) {
942 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
943 dbus_error_free(&err);
944 result = VC_ERROR_OPERATION_FAILED;
946 dbus_message_unref(result_msg);
949 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth disable : result = %d", result);
951 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth disable : result = %d", result);
954 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
956 result = VC_ERROR_TIMED_OUT;
962 int vc_dbus_request_auth_start(int pid, int mgr_pid)
966 char service_name[64] = {0,};
967 char object_path[64] = {0,};
968 char target_if_name[128] = {0,};
970 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
971 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
972 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
974 /* create a signal & check for errors */
975 msg = dbus_message_new_method_call(
979 VC_METHOD_AUTH_START);
982 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth start : Fail to make message ");
983 return VC_ERROR_OPERATION_FAILED;
985 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth start : pid(%d)", pid);
988 DBusMessageIter args;
989 dbus_message_iter_init_append(msg, &args);
992 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
995 dbus_error_init(&err);
997 DBusMessage* result_msg;
998 int result = VC_ERROR_OPERATION_FAILED;
1000 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1001 dbus_message_unref(msg);
1003 if (dbus_error_is_set(&err)) {
1004 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1005 dbus_error_free(&err);
1008 if (NULL != result_msg) {
1009 dbus_message_get_args(result_msg, &err,
1010 DBUS_TYPE_INT32, &result,
1013 if (dbus_error_is_set(&err)) {
1014 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1015 dbus_error_free(&err);
1016 result = VC_ERROR_OPERATION_FAILED;
1018 dbus_message_unref(result_msg);
1021 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth start : result = %d", result);
1023 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth start : result = %d", result);
1026 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1027 vc_dbus_reconnect();
1028 result = VC_ERROR_TIMED_OUT;
1034 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1038 char service_name[64] = {0,};
1039 char object_path[64] = {0,};
1040 char target_if_name[128] = {0,};
1042 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
1043 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1044 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
1046 /* create a signal & check for errors */
1047 msg = dbus_message_new_method_call(
1051 VC_METHOD_AUTH_STOP);
1054 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth stop : Fail to make message ");
1055 return VC_ERROR_OPERATION_FAILED;
1057 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth stop : pid(%d)", pid);
1060 dbus_message_append_args(msg,
1061 DBUS_TYPE_INT32, &pid,
1065 dbus_error_init(&err);
1067 DBusMessage* result_msg;
1068 int result = VC_ERROR_OPERATION_FAILED;
1070 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1071 dbus_message_unref(msg);
1073 if (dbus_error_is_set(&err)) {
1074 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1075 dbus_error_free(&err);
1078 if (NULL != result_msg) {
1079 dbus_message_get_args(result_msg, &err,
1080 DBUS_TYPE_INT32, &result,
1083 if (dbus_error_is_set(&err)) {
1084 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1085 dbus_error_free(&err);
1086 result = VC_ERROR_OPERATION_FAILED;
1088 dbus_message_unref(result_msg);
1091 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1093 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1096 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1097 vc_dbus_reconnect();
1098 result = VC_ERROR_TIMED_OUT;
1104 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1108 char service_name[64] = {0,};
1109 char object_path[64] = {0,};
1110 char target_if_name[128] = {0,};
1112 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
1113 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1114 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
1116 /* create a signal & check for errors */
1117 msg = dbus_message_new_method_call(
1119 object_path, /* object name of the signal */
1120 target_if_name, /* interface name of the signal */
1121 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1124 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth cancel : Fail to make message ");
1125 return VC_ERROR_OPERATION_FAILED;
1127 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth cancel : pid(%d)", pid);
1130 dbus_message_append_args(msg,
1131 DBUS_TYPE_INT32, &pid,
1135 dbus_error_init(&err);
1137 DBusMessage* result_msg;
1138 int result = VC_ERROR_OPERATION_FAILED;
1140 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1141 dbus_message_unref(msg);
1143 if (dbus_error_is_set(&err)) {
1144 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1145 dbus_error_free(&err);
1148 if (NULL != result_msg) {
1149 dbus_message_get_args(result_msg, &err,
1150 DBUS_TYPE_INT32, &result,
1153 if (dbus_error_is_set(&err)) {
1154 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1155 dbus_error_free(&err);
1156 result = VC_ERROR_OPERATION_FAILED;
1158 dbus_message_unref(result_msg);
1161 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1163 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1166 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1167 vc_dbus_reconnect();
1168 result = VC_ERROR_TIMED_OUT;