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();
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_method_call(msg, if_name, VCD_METHOD_RESULT)) {
114 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Client Result");
118 SLOG(LOG_DEBUG, TAG_VCC, "=====");
119 SLOG(LOG_DEBUG, TAG_VCC, " ");
121 } /* VCD_METHOD_RESULT */
123 else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_ERROR)) {
124 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
129 dbus_message_get_args(msg, &err,
130 DBUS_TYPE_INT32, &pid,
131 DBUS_TYPE_INT32, &reason,
132 DBUS_TYPE_STRING, &err_msg,
135 if (dbus_error_is_set(&err)) {
136 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc Get Error message : Get arguments error (%s)", err.message);
137 dbus_error_free(&err);
140 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
141 __vc_cb_error(pid, reason);
144 SLOG(LOG_DEBUG, TAG_VCC, "=====");
145 SLOG(LOG_DEBUG, TAG_VCC, " ");
146 } /* VCD_METHOD_ERROR */
149 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
150 dbus_message_unref(msg);
154 /* free the message */
155 dbus_message_unref(msg);
158 return ECORE_CALLBACK_PASS_ON;
161 int vc_dbus_open_connection()
163 if (NULL != g_conn_sender && NULL != g_conn_listener) {
164 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
171 /* initialise the error value */
172 dbus_error_init(&err);
174 /* connect to the DBUS system bus, and check for errors */
175 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
177 if (dbus_error_is_set(&err)) {
178 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
179 dbus_error_free(&err);
182 if (NULL == g_conn_sender) {
183 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
184 return VC_ERROR_OPERATION_FAILED;
187 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
189 if (dbus_error_is_set(&err)) {
190 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
191 dbus_error_free(&err);
194 if (NULL == g_conn_listener) {
195 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
196 return VC_ERROR_OPERATION_FAILED;
199 char service_name[64];
200 memset(service_name, '\0', 64);
201 snprintf(service_name, 64, "%s", VC_CLIENT_SERVICE_NAME);
203 SLOG(LOG_DEBUG, TAG_VCC, "service name is %s", service_name);
205 /* register our name on the bus, and check for errors */
206 ret = dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
208 if (dbus_error_is_set(&err)) {
209 SLOG(LOG_ERROR, TAG_VCC, "Name Error (%s)", err.message);
210 dbus_error_free(&err);
213 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
214 SLOG(LOG_ERROR, TAG_VCC, "fail dbus_bus_request_name()");
218 if (NULL != g_fd_handler) {
219 SLOG(LOG_WARN, TAG_VCC, "The handler already exists.");
223 char rule[128] = {0, };
224 snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
226 /* add a rule for which messages we want to see */
227 dbus_bus_add_match(g_conn_listener, rule, &err);
228 dbus_connection_flush(g_conn_listener);
230 if (dbus_error_is_set(&err)) {
231 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
232 dbus_error_free(&err);
233 return VC_ERROR_OPERATION_FAILED;
237 if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
238 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
239 return VC_ERROR_OPERATION_FAILED;
241 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
244 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn_listener, NULL, NULL);
245 if (NULL == g_fd_handler) {
246 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
247 return VC_ERROR_OPERATION_FAILED;
253 int vc_dbus_close_connection()
256 dbus_error_init(&err);
258 if (NULL != g_fd_handler) {
259 ecore_main_fd_handler_del(g_fd_handler);
265 char service_name[64];
266 memset(service_name, '\0', 64);
267 snprintf(service_name, 64, "%s", VC_CLIENT_SERVICE_NAME);
269 dbus_bus_release_name(g_conn_listener, service_name, &err);
271 if (dbus_error_is_set(&err)) {
272 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
273 dbus_error_free(&err);
276 g_conn_sender = NULL;
277 g_conn_listener = NULL;
282 int vc_dbus_reconnect()
284 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
285 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
286 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
287 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
289 if (false == sender_connected || false == listener_connected) {
290 vc_dbus_close_connection();
292 if (0 != vc_dbus_open_connection()) {
293 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
297 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
303 int vc_dbus_request_hello()
307 msg = dbus_message_new_method_call(
308 VC_SERVER_SERVICE_NAME,
309 VC_SERVER_SERVICE_OBJECT_PATH,
310 VC_SERVER_SERVICE_INTERFACE,
314 SLOG(LOG_ERROR, TAG_VCC, ">>>> Request vc hello : Fail to make message");
315 return VC_ERROR_OPERATION_FAILED;
319 dbus_error_init(&err);
321 DBusMessage* result_msg = NULL;
324 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
326 if (dbus_error_is_set(&err)) {
327 dbus_error_free(&err);
330 dbus_message_unref(msg);
332 if (NULL != result_msg) {
333 dbus_message_unref(result_msg);
336 result = VC_ERROR_TIMED_OUT;
343 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state)
347 msg = dbus_message_new_method_call(
348 VC_SERVER_SERVICE_NAME,
349 VC_SERVER_SERVICE_OBJECT_PATH,
350 VC_SERVER_SERVICE_INTERFACE,
351 VC_METHOD_INITIALIZE);
354 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc initialize : Fail to make message ");
355 return VC_ERROR_OPERATION_FAILED;
357 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc initialize : pid(%d)", pid);
360 dbus_message_append_args(msg,
361 DBUS_TYPE_INT32, &pid,
365 dbus_error_init(&err);
367 DBusMessage* result_msg;
368 int result = VC_ERROR_OPERATION_FAILED;
370 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
371 dbus_message_unref(msg);
373 if (dbus_error_is_set(&err)) {
374 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
375 dbus_error_free(&err);
378 if (NULL != result_msg) {
380 int tmp_service_state = 0;
381 dbus_message_get_args(result_msg, &err,
382 DBUS_TYPE_INT32, &result,
383 DBUS_TYPE_INT32, &tmp,
384 DBUS_TYPE_INT32, &tmp_service_state,
387 if (dbus_error_is_set(&err)) {
388 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
389 dbus_error_free(&err);
390 result = VC_ERROR_OPERATION_FAILED;
393 dbus_message_unref(result_msg);
397 *service_state = tmp_service_state;
398 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d service = %d", result, *mgr_pid, *service_state);
400 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
403 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
405 result = VC_ERROR_TIMED_OUT;
411 int vc_dbus_request_finalize(int pid)
415 msg = dbus_message_new_method_call(
416 VC_SERVER_SERVICE_NAME,
417 VC_SERVER_SERVICE_OBJECT_PATH,
418 VC_SERVER_SERVICE_INTERFACE,
422 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc finalize : Fail to make message ");
423 return VC_ERROR_OPERATION_FAILED;
425 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc finalize : pid(%d)", pid);
428 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
431 dbus_error_init(&err);
433 DBusMessage* result_msg;
434 int result = VC_ERROR_OPERATION_FAILED;
436 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
437 dbus_message_unref(msg);
439 if (dbus_error_is_set(&err)) {
440 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
441 dbus_error_free(&err);
444 if (NULL != result_msg) {
445 dbus_message_get_args(result_msg, &err,
446 DBUS_TYPE_INT32, &result,
449 if (dbus_error_is_set(&err)) {
450 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
451 dbus_error_free(&err);
452 result = VC_ERROR_OPERATION_FAILED;
455 dbus_message_unref(result_msg);
458 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc finalize : result = %d", result);
460 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc finalize : result = %d", result);
463 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
465 result = VC_ERROR_TIMED_OUT;
471 int vc_dbus_request_set_exclusive_command(int pid, bool value)
475 msg = dbus_message_new_method_call(
476 VC_SERVER_SERVICE_NAME,
477 VC_SERVER_SERVICE_OBJECT_PATH,
478 VC_SERVER_SERVICE_INTERFACE,
479 VC_METHOD_SET_EXCLUSIVE_CMD);
482 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set exclusive command : Fail to make message");
483 return VC_ERROR_OPERATION_FAILED;
485 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set exclusive command : pid(%d)", pid);
490 dbus_message_append_args(msg,
491 DBUS_TYPE_INT32, &pid,
492 DBUS_TYPE_INT32, &temp,
496 dbus_error_init(&err);
498 DBusMessage* result_msg;
499 int result = VC_ERROR_OPERATION_FAILED;
501 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
502 dbus_message_unref(msg);
504 if (dbus_error_is_set(&err)) {
505 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
506 dbus_error_free(&err);
509 if (NULL != result_msg) {
510 dbus_message_get_args(result_msg, &err,
511 DBUS_TYPE_INT32, &result,
514 if (dbus_error_is_set(&err)) {
515 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
516 dbus_error_free(&err);
517 result = VC_ERROR_OPERATION_FAILED;
519 dbus_message_unref(result_msg);
522 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
524 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
527 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
529 result = VC_ERROR_TIMED_OUT;
535 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
539 msg = dbus_message_new_method_call(
540 VC_SERVER_SERVICE_NAME,
541 VC_SERVER_SERVICE_OBJECT_PATH,
542 VC_SERVER_SERVICE_INTERFACE,
543 VC_METHOD_SET_COMMAND);
546 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set command : Fail to make message");
547 return VC_ERROR_OPERATION_FAILED;
549 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set command : pid(%d)", pid);
552 dbus_message_append_args(msg,
553 DBUS_TYPE_INT32, &pid,
554 DBUS_TYPE_INT32, &cmd_type,
558 dbus_error_init(&err);
560 DBusMessage* result_msg;
561 int result = VC_ERROR_OPERATION_FAILED;
563 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
564 dbus_message_unref(msg);
566 if (dbus_error_is_set(&err)) {
567 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
568 dbus_error_free(&err);
571 if (NULL != result_msg) {
572 dbus_message_get_args(result_msg, &err,
573 DBUS_TYPE_INT32, &result,
576 if (dbus_error_is_set(&err)) {
577 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
578 dbus_error_free(&err);
579 result = VC_ERROR_OPERATION_FAILED;
581 dbus_message_unref(result_msg);
584 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
586 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
589 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
591 result = VC_ERROR_TIMED_OUT;
597 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
601 msg = dbus_message_new_method_call(
602 VC_SERVER_SERVICE_NAME,
603 VC_SERVER_SERVICE_OBJECT_PATH,
604 VC_SERVER_SERVICE_INTERFACE,
605 VC_METHOD_UNSET_COMMAND);
608 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc unset command : Fail to make message");
609 return VC_ERROR_OPERATION_FAILED;
611 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc unset command : pid(%d), type(%d)", pid, cmd_type);
614 dbus_message_append_args(msg,
615 DBUS_TYPE_INT32, &pid,
616 DBUS_TYPE_INT32, &cmd_type,
620 dbus_error_init(&err);
622 DBusMessage* result_msg;
623 int result = VC_ERROR_OPERATION_FAILED;
625 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
626 dbus_message_unref(msg);
628 if (dbus_error_is_set(&err)) {
629 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
630 dbus_error_free(&err);
633 if (NULL != result_msg) {
634 dbus_message_get_args(result_msg, &err,
635 DBUS_TYPE_INT32, &result,
638 if (dbus_error_is_set(&err)) {
639 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
640 dbus_error_free(&err);
641 result = VC_ERROR_OPERATION_FAILED;
643 dbus_message_unref(result_msg);
646 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc unset command : result = %d", result);
648 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc unset command : result = %d", result);
651 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
653 result = VC_ERROR_TIMED_OUT;
660 int vc_dbus_request_start(int pid, int silence)
664 /* create a signal & check for errors */
665 msg = dbus_message_new_method_call(
666 VC_SERVER_SERVICE_NAME,
667 VC_SERVER_SERVICE_OBJECT_PATH,
668 VC_SERVER_SERVICE_INTERFACE,
669 VC_METHOD_REQUEST_START);
672 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc start : Fail to make message ");
673 return VC_ERROR_OPERATION_FAILED;
675 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc start : pid(%d), silence(%d)", pid, silence);
678 DBusMessageIter args;
679 dbus_message_iter_init_append(msg, &args);
682 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
683 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
686 dbus_error_init(&err);
688 DBusMessage* result_msg;
689 int result = VC_ERROR_OPERATION_FAILED;
691 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
692 dbus_message_unref(msg);
694 if (dbus_error_is_set(&err)) {
695 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
696 dbus_error_free(&err);
699 if (NULL != result_msg) {
700 dbus_message_get_args(result_msg, &err,
701 DBUS_TYPE_INT32, &result,
704 if (dbus_error_is_set(&err)) {
705 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
706 dbus_error_free(&err);
707 result = VC_ERROR_OPERATION_FAILED;
709 dbus_message_unref(result_msg);
712 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc start : result = %d", result);
714 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc start : result = %d", result);
717 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
719 result = VC_ERROR_TIMED_OUT;
725 int vc_dbus_request_stop(int pid)
729 /* create a signal & check for errors */
730 msg = dbus_message_new_method_call(
731 VC_SERVER_SERVICE_NAME,
732 VC_SERVER_SERVICE_OBJECT_PATH,
733 VC_SERVER_SERVICE_INTERFACE,
734 VC_METHOD_REQUEST_STOP);
737 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc stop : Fail to make message ");
738 return VC_ERROR_OPERATION_FAILED;
740 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc stop : pid(%d)", pid);
743 dbus_message_append_args(msg,
744 DBUS_TYPE_INT32, &pid,
748 dbus_error_init(&err);
750 DBusMessage* result_msg;
751 int result = VC_ERROR_OPERATION_FAILED;
753 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
754 dbus_message_unref(msg);
756 if (dbus_error_is_set(&err)) {
757 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
758 dbus_error_free(&err);
761 if (NULL != result_msg) {
762 dbus_message_get_args(result_msg, &err,
763 DBUS_TYPE_INT32, &result,
766 if (dbus_error_is_set(&err)) {
767 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
768 dbus_error_free(&err);
769 result = VC_ERROR_OPERATION_FAILED;
771 dbus_message_unref(result_msg);
774 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc stop : result = %d", result);
776 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc stop : result = %d", result);
779 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
781 result = VC_ERROR_TIMED_OUT;
787 int vc_dbus_request_cancel(int pid)
791 /* create a signal & check for errors */
792 msg = dbus_message_new_method_call(
793 VC_SERVER_SERVICE_NAME,
794 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
795 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
796 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
799 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc cancel : Fail to make message ");
800 return VC_ERROR_OPERATION_FAILED;
802 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc cancel : pid(%d)", pid);
805 dbus_message_append_args(msg,
806 DBUS_TYPE_INT32, &pid,
810 dbus_error_init(&err);
812 DBusMessage* result_msg;
813 int result = VC_ERROR_OPERATION_FAILED;
815 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
816 dbus_message_unref(msg);
818 if (dbus_error_is_set(&err)) {
819 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
820 dbus_error_free(&err);
823 if (NULL != result_msg) {
824 dbus_message_get_args(result_msg, &err,
825 DBUS_TYPE_INT32, &result,
828 if (dbus_error_is_set(&err)) {
829 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
830 dbus_error_free(&err);
831 result = VC_ERROR_OPERATION_FAILED;
833 dbus_message_unref(result_msg);
836 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc cancel : result = %d", result);
838 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc cancel : result = %d", result);
841 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
843 result = VC_ERROR_TIMED_OUT;
851 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
855 char service_name[64] = {0,};
856 char object_path[64] = {0,};
857 char target_if_name[128] = {0,};
859 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
860 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
861 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
863 /* create a signal & check for errors */
864 msg = dbus_message_new_method_call(
866 object_path, /* object name of the signal */
867 target_if_name, /* interface name of the signal */
868 VC_METHOD_AUTH_ENABLE); /* name of the signal */
871 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth enable : Fail to make message ");
872 return VC_ERROR_OPERATION_FAILED;
874 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth enable : pid(%d)", pid);
877 dbus_message_append_args(msg,
878 DBUS_TYPE_INT32, &pid,
882 dbus_error_init(&err);
884 DBusMessage* result_msg;
885 int result = VC_ERROR_OPERATION_FAILED;
887 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
888 dbus_message_unref(msg);
890 if (dbus_error_is_set(&err)) {
891 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
892 dbus_error_free(&err);
895 if (NULL != result_msg) {
896 dbus_message_get_args(result_msg, &err,
897 DBUS_TYPE_INT32, &result,
900 if (dbus_error_is_set(&err)) {
901 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
902 dbus_error_free(&err);
903 result = VC_ERROR_OPERATION_FAILED;
905 dbus_message_unref(result_msg);
908 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth enable : result = %d", result);
910 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth enable : result = %d", result);
913 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
915 result = VC_ERROR_TIMED_OUT;
921 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
925 char service_name[64] = {0,};
926 char object_path[64] = {0,};
927 char target_if_name[128] = {0,};
929 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
930 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
931 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
933 /* create a signal & check for errors */
934 msg = dbus_message_new_method_call(
936 object_path, /* object name of the signal */
937 target_if_name, /* interface name of the signal */
938 VC_METHOD_AUTH_DISABLE); /* name of the signal */
941 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth disable : Fail to make message ");
942 return VC_ERROR_OPERATION_FAILED;
944 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth disable : pid(%d)", pid);
947 dbus_message_append_args(msg,
948 DBUS_TYPE_INT32, &pid,
952 dbus_error_init(&err);
954 DBusMessage* result_msg;
955 int result = VC_ERROR_OPERATION_FAILED;
957 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
958 dbus_message_unref(msg);
960 if (dbus_error_is_set(&err)) {
961 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
962 dbus_error_free(&err);
965 if (NULL != result_msg) {
966 dbus_message_get_args(result_msg, &err,
967 DBUS_TYPE_INT32, &result,
970 if (dbus_error_is_set(&err)) {
971 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
972 dbus_error_free(&err);
973 result = VC_ERROR_OPERATION_FAILED;
975 dbus_message_unref(result_msg);
978 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth disable : result = %d", result);
980 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth disable : result = %d", result);
983 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
985 result = VC_ERROR_TIMED_OUT;
991 int vc_dbus_request_auth_start(int pid, int mgr_pid)
995 char service_name[64] = {0,};
996 char object_path[64] = {0,};
997 char target_if_name[128] = {0,};
999 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
1000 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1001 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
1003 /* create a signal & check for errors */
1004 msg = dbus_message_new_method_call(
1008 VC_METHOD_AUTH_START);
1011 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth start : Fail to make message ");
1012 return VC_ERROR_OPERATION_FAILED;
1014 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth start : pid(%d)", pid);
1017 DBusMessageIter args;
1018 dbus_message_iter_init_append(msg, &args);
1021 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1024 dbus_error_init(&err);
1026 DBusMessage* result_msg;
1027 int result = VC_ERROR_OPERATION_FAILED;
1029 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1030 dbus_message_unref(msg);
1032 if (dbus_error_is_set(&err)) {
1033 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1034 dbus_error_free(&err);
1037 if (NULL != result_msg) {
1038 dbus_message_get_args(result_msg, &err,
1039 DBUS_TYPE_INT32, &result,
1042 if (dbus_error_is_set(&err)) {
1043 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1044 dbus_error_free(&err);
1045 result = VC_ERROR_OPERATION_FAILED;
1047 dbus_message_unref(result_msg);
1050 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth start : result = %d", result);
1052 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth start : result = %d", result);
1055 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1056 vc_dbus_reconnect();
1057 result = VC_ERROR_TIMED_OUT;
1063 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1067 char service_name[64] = {0,};
1068 char object_path[64] = {0,};
1069 char target_if_name[128] = {0,};
1071 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
1072 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1073 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
1075 /* create a signal & check for errors */
1076 msg = dbus_message_new_method_call(
1080 VC_METHOD_AUTH_STOP);
1083 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth stop : Fail to make message ");
1084 return VC_ERROR_OPERATION_FAILED;
1086 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth stop : pid(%d)", pid);
1089 dbus_message_append_args(msg,
1090 DBUS_TYPE_INT32, &pid,
1094 dbus_error_init(&err);
1096 DBusMessage* result_msg;
1097 int result = VC_ERROR_OPERATION_FAILED;
1099 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1100 dbus_message_unref(msg);
1102 if (dbus_error_is_set(&err)) {
1103 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1104 dbus_error_free(&err);
1107 if (NULL != result_msg) {
1108 dbus_message_get_args(result_msg, &err,
1109 DBUS_TYPE_INT32, &result,
1112 if (dbus_error_is_set(&err)) {
1113 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1114 dbus_error_free(&err);
1115 result = VC_ERROR_OPERATION_FAILED;
1117 dbus_message_unref(result_msg);
1120 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1122 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1125 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1126 vc_dbus_reconnect();
1127 result = VC_ERROR_TIMED_OUT;
1133 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1137 char service_name[64] = {0,};
1138 char object_path[64] = {0,};
1139 char target_if_name[128] = {0,};
1141 snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
1142 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1143 snprintf(target_if_name, 128, "%s", VC_MANAGER_SERVICE_INTERFACE);
1145 /* create a signal & check for errors */
1146 msg = dbus_message_new_method_call(
1148 object_path, /* object name of the signal */
1149 target_if_name, /* interface name of the signal */
1150 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1153 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth cancel : Fail to make message ");
1154 return VC_ERROR_OPERATION_FAILED;
1156 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth cancel : pid(%d)", pid);
1159 dbus_message_append_args(msg,
1160 DBUS_TYPE_INT32, &pid,
1164 dbus_error_init(&err);
1166 DBusMessage* result_msg;
1167 int result = VC_ERROR_OPERATION_FAILED;
1169 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1170 dbus_message_unref(msg);
1172 if (dbus_error_is_set(&err)) {
1173 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1174 dbus_error_free(&err);
1177 if (NULL != result_msg) {
1178 dbus_message_get_args(result_msg, &err,
1179 DBUS_TYPE_INT32, &result,
1182 if (dbus_error_is_set(&err)) {
1183 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1184 dbus_error_free(&err);
1185 result = VC_ERROR_OPERATION_FAILED;
1187 dbus_message_unref(result_msg);
1190 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1192 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1195 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1196 vc_dbus_reconnect();
1197 result = VC_ERROR_TIMED_OUT;