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 = NULL;
30 extern int __vc_cb_error(int pid, int reason);
32 extern void __vc_cb_result();
35 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
37 DBusConnection* conn = (DBusConnection*)data;
38 DBusMessage* msg = NULL;
39 DBusMessage *reply = NULL;
42 return ECORE_CALLBACK_RENEW;
44 dbus_connection_read_write_dispatch(conn, 50);
46 msg = dbus_connection_pop_message(conn);
48 /* loop again if we haven't read a message */
50 return ECORE_CALLBACK_RENEW;
54 dbus_error_init(&err);
57 snprintf(if_name, 64, "%s%d", VC_CLIENT_SERVICE_INTERFACE, getpid());
59 if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_HELLO)) {
60 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Hello");
64 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
66 if (dbus_error_is_set(&err)) {
67 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
68 dbus_error_free(&err);
72 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc get hello : pid(%d) ", pid);
76 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc get hello : invalid pid ");
79 reply = dbus_message_new_method_return(msg);
82 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
84 if (!dbus_connection_send(conn, reply, NULL))
85 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to send reply");
87 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get hello : result(%d)", response);
89 dbus_connection_flush(conn);
90 dbus_message_unref(reply);
92 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to create reply message");
95 SLOG(LOG_DEBUG, TAG_VCC, "=====");
96 SLOG(LOG_DEBUG, TAG_VCC, " ");
97 } /* VCD_METHOD_HELLO */
99 else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_RESULT)) {
100 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Client Result");
105 reply = dbus_message_new_method_return(msg);
108 if (!dbus_connection_send(conn, reply, NULL))
109 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get result : fail to send reply");
111 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get result");
113 dbus_connection_flush(conn);
114 dbus_message_unref(reply);
116 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get result : fail to create reply message");
120 SLOG(LOG_DEBUG, TAG_VCC, "=====");
121 SLOG(LOG_DEBUG, TAG_VCC, " ");
123 }/* VCD_METHOD_RESULT */
125 else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_ERROR)) {
126 SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
131 dbus_message_get_args(msg, &err,
132 DBUS_TYPE_INT32, &pid,
133 DBUS_TYPE_INT32, &reason,
134 DBUS_TYPE_STRING, &err_msg,
137 if (dbus_error_is_set(&err)) {
138 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc Get Error message : Get arguments error (%s)", err.message);
139 dbus_error_free(&err);
141 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
142 __vc_cb_error(pid, reason);
146 reply = dbus_message_new_method_return(msg);
149 if (!dbus_connection_send(conn, reply, NULL))
150 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc Error message : fail to send reply");
152 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc Error message");
154 dbus_connection_flush(conn);
155 dbus_message_unref(reply);
157 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc Error message : fail to create reply message");
161 SLOG(LOG_DEBUG, TAG_VCC, "=====");
162 SLOG(LOG_DEBUG, TAG_VCC, " ");
163 }/* VCD_METHOD_ERROR */
165 /* free the message */
166 dbus_message_unref(msg);
168 return ECORE_CALLBACK_PASS_ON;
171 int vc_dbus_open_connection()
173 if (NULL != g_conn) {
174 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
181 /* initialise the error value */
182 dbus_error_init(&err);
184 /* connect to the DBUS system bus, and check for errors */
185 g_conn = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
187 if (dbus_error_is_set(&err)) {
188 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
189 dbus_error_free(&err);
192 if (NULL == g_conn) {
193 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
194 return VC_ERROR_OPERATION_FAILED;
199 char service_name[64];
200 memset(service_name, '\0', 64);
201 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
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, 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.");
224 snprintf(rule, 128, "type='signal',interface='%s%d'", VC_CLIENT_SERVICE_INTERFACE, pid);
226 /* add a rule for which messages we want to see */
227 dbus_bus_add_match(g_conn, rule, &err);
228 dbus_connection_flush(g_conn);
230 if (dbus_error_is_set(&err))
232 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
233 dbus_error_free(&err);
234 return VC_ERROR_OPERATION_FAILED;
238 if (1 != dbus_connection_get_unix_fd(g_conn, &fd)) {
239 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
240 return VC_ERROR_OPERATION_FAILED;
242 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
245 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn, NULL, NULL);
247 if (NULL == g_fd_handler) {
248 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
249 return VC_ERROR_OPERATION_FAILED;
255 int vc_dbus_close_connection()
258 dbus_error_init(&err);
262 char service_name[64];
263 memset(service_name, '\0', 64);
264 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
266 dbus_bus_release_name (g_conn, service_name, &err);
268 if (dbus_error_is_set(&err)) {
269 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
270 dbus_error_free(&err);
273 dbus_connection_close(g_conn);
281 int vc_dbus_reconnect()
283 bool connected = dbus_connection_get_is_connected(g_conn);
284 SECURE_SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] %s", connected ? "Connected" : "Not connected");
286 if (false == connected) {
287 vc_dbus_close_connection();
289 if (0 != vc_dbus_open_connection()) {
290 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
294 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
299 int vc_dbus_request_hello()
303 msg = dbus_message_new_method_call(
304 VC_SERVER_SERVICE_NAME,
305 VC_SERVER_SERVICE_OBJECT_PATH,
306 VC_SERVER_SERVICE_INTERFACE,
310 SLOG(LOG_ERROR, TAG_VCC, ">>>> Request vc hello : Fail to make message");
311 return VC_ERROR_OPERATION_FAILED;
315 dbus_error_init(&err);
317 DBusMessage* result_msg = NULL;
320 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 500, &err);
322 if (dbus_error_is_set(&err)) {
323 dbus_error_free(&err);
326 dbus_message_unref(msg);
328 if (NULL != result_msg) {
329 dbus_message_unref(result_msg);
332 result = VC_ERROR_TIMED_OUT;
339 int vc_dbus_request_initialize(int pid, int* mgr_pid)
343 msg = dbus_message_new_method_call(
344 VC_SERVER_SERVICE_NAME,
345 VC_SERVER_SERVICE_OBJECT_PATH,
346 VC_SERVER_SERVICE_INTERFACE,
347 VC_METHOD_INITIALIZE);
350 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc initialize : Fail to make message ");
351 return VC_ERROR_OPERATION_FAILED;
353 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc initialize : pid(%d)", pid);
356 dbus_message_append_args( msg,
357 DBUS_TYPE_INT32, &pid,
361 dbus_error_init(&err);
363 DBusMessage* result_msg;
364 int result = VC_ERROR_OPERATION_FAILED;
366 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
367 dbus_message_unref(msg);
369 if (dbus_error_is_set(&err)) {
370 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
371 dbus_error_free(&err);
374 if (NULL != result_msg) {
376 dbus_message_get_args(result_msg, &err,
377 DBUS_TYPE_INT32, &result,
378 DBUS_TYPE_INT32, &tmp,
381 if (dbus_error_is_set(&err)) {
382 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
383 dbus_error_free(&err);
384 result = VC_ERROR_OPERATION_FAILED;
387 dbus_message_unref(result_msg);
391 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d", result, *mgr_pid);
393 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
396 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
398 result = VC_ERROR_TIMED_OUT;
404 int vc_dbus_request_finalize(int pid)
408 msg = dbus_message_new_method_call(
409 VC_SERVER_SERVICE_NAME,
410 VC_SERVER_SERVICE_OBJECT_PATH,
411 VC_SERVER_SERVICE_INTERFACE,
415 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc finalize : Fail to make message ");
416 return VC_ERROR_OPERATION_FAILED;
418 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc finalize : pid(%d)", pid);
421 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
424 dbus_error_init(&err);
426 DBusMessage* result_msg;
427 int result = VC_ERROR_OPERATION_FAILED;
429 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
430 dbus_message_unref(msg);
432 if (dbus_error_is_set(&err)) {
433 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
434 dbus_error_free(&err);
437 if (NULL != result_msg) {
438 dbus_message_get_args(result_msg, &err,
439 DBUS_TYPE_INT32, &result,
442 if (dbus_error_is_set(&err)) {
443 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
444 dbus_error_free(&err);
445 result = VC_ERROR_OPERATION_FAILED;
448 dbus_message_unref(result_msg);
451 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc finalize : result = %d", result);
453 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc finalize : result = %d", result);
456 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
458 result = VC_ERROR_TIMED_OUT;
464 int vc_dbus_request_set_exclusive_command(int pid, bool value)
468 msg = dbus_message_new_method_call(
469 VC_SERVER_SERVICE_NAME,
470 VC_SERVER_SERVICE_OBJECT_PATH,
471 VC_SERVER_SERVICE_INTERFACE,
472 VC_METHOD_SET_EXCLUSIVE_CMD);
475 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set exclusive command : Fail to make message");
476 return VC_ERROR_OPERATION_FAILED;
478 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set exclusive command : pid(%d)", pid);
483 dbus_message_append_args( msg,
484 DBUS_TYPE_INT32, &pid,
485 DBUS_TYPE_INT32, &temp,
489 dbus_error_init(&err);
491 DBusMessage* result_msg;
492 int result = VC_ERROR_OPERATION_FAILED;
494 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
495 dbus_message_unref(msg);
497 if (dbus_error_is_set(&err)) {
498 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
499 dbus_error_free(&err);
502 if (NULL != result_msg) {
503 dbus_message_get_args(result_msg, &err,
504 DBUS_TYPE_INT32, &result,
507 if (dbus_error_is_set(&err)) {
508 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
509 dbus_error_free(&err);
510 result = VC_ERROR_OPERATION_FAILED;
512 dbus_message_unref(result_msg);
515 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
517 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
520 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
522 result = VC_ERROR_TIMED_OUT;
528 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
532 msg = dbus_message_new_method_call(
533 VC_SERVER_SERVICE_NAME,
534 VC_SERVER_SERVICE_OBJECT_PATH,
535 VC_SERVER_SERVICE_INTERFACE,
536 VC_METHOD_SET_COMMAND);
539 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set command : Fail to make message");
540 return VC_ERROR_OPERATION_FAILED;
542 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set command : pid(%d)", pid);
545 dbus_message_append_args( msg,
546 DBUS_TYPE_INT32, &pid,
547 DBUS_TYPE_INT32, &cmd_type,
551 dbus_error_init(&err);
553 DBusMessage* result_msg;
554 int result = VC_ERROR_OPERATION_FAILED;
556 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
557 dbus_message_unref(msg);
559 if (dbus_error_is_set(&err)) {
560 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
561 dbus_error_free(&err);
564 if (NULL != result_msg) {
565 dbus_message_get_args(result_msg, &err,
566 DBUS_TYPE_INT32, &result,
569 if (dbus_error_is_set(&err)) {
570 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
571 dbus_error_free(&err);
572 result = VC_ERROR_OPERATION_FAILED;
574 dbus_message_unref(result_msg);
577 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
579 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
582 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
584 result = VC_ERROR_TIMED_OUT;
590 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
594 msg = dbus_message_new_method_call(
595 VC_SERVER_SERVICE_NAME,
596 VC_SERVER_SERVICE_OBJECT_PATH,
597 VC_SERVER_SERVICE_INTERFACE,
598 VC_METHOD_UNSET_COMMAND);
601 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc unset command : Fail to make message");
602 return VC_ERROR_OPERATION_FAILED;
604 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc unset command : pid(%d), type(%d)", pid, cmd_type);
607 dbus_message_append_args( msg,
608 DBUS_TYPE_INT32, &pid,
609 DBUS_TYPE_INT32, &cmd_type,
613 dbus_error_init(&err);
615 DBusMessage* result_msg;
616 int result = VC_ERROR_OPERATION_FAILED;
618 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
619 dbus_message_unref(msg);
621 if (dbus_error_is_set(&err)) {
622 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
623 dbus_error_free(&err);
626 if (NULL != result_msg) {
627 dbus_message_get_args(result_msg, &err,
628 DBUS_TYPE_INT32, &result,
631 if (dbus_error_is_set(&err)) {
632 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
633 dbus_error_free(&err);
634 result = VC_ERROR_OPERATION_FAILED;
636 dbus_message_unref(result_msg);
639 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc unset command : result = %d", result);
641 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc unset command : result = %d", result);
644 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
646 result = VC_ERROR_TIMED_OUT;
653 int vc_dbus_request_start(int pid, int silence)
657 /* create a signal & check for errors */
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_REQUEST_START);
665 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc start : Fail to make message ");
666 return VC_ERROR_OPERATION_FAILED;
668 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc start : pid(%d), silence(%d)", pid, silence);
671 DBusMessageIter args;
672 dbus_message_iter_init_append(msg, &args);
675 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
676 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
679 dbus_error_init(&err);
681 DBusMessage* result_msg;
682 int result = VC_ERROR_OPERATION_FAILED;
684 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
685 dbus_message_unref(msg);
687 if (dbus_error_is_set(&err)) {
688 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
689 dbus_error_free(&err);
692 if (NULL != result_msg) {
693 dbus_message_get_args(result_msg, &err,
694 DBUS_TYPE_INT32, &result,
697 if (dbus_error_is_set(&err)) {
698 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
699 dbus_error_free(&err);
700 result = VC_ERROR_OPERATION_FAILED;
702 dbus_message_unref(result_msg);
705 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc start : result = %d", result);
707 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc start : result = %d", result);
710 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
712 result = VC_ERROR_TIMED_OUT;
718 int vc_dbus_request_stop(int pid)
722 /* create a signal & check for errors */
723 msg = dbus_message_new_method_call(
724 VC_SERVER_SERVICE_NAME,
725 VC_SERVER_SERVICE_OBJECT_PATH,
726 VC_SERVER_SERVICE_INTERFACE,
727 VC_METHOD_REQUEST_STOP);
730 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc stop : Fail to make message ");
731 return VC_ERROR_OPERATION_FAILED;
733 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc stop : pid(%d)", pid);
736 dbus_message_append_args(msg,
737 DBUS_TYPE_INT32, &pid,
741 dbus_error_init(&err);
743 DBusMessage* result_msg;
744 int result = VC_ERROR_OPERATION_FAILED;
746 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
747 dbus_message_unref(msg);
749 if (dbus_error_is_set(&err)) {
750 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
751 dbus_error_free(&err);
754 if (NULL != result_msg) {
755 dbus_message_get_args(result_msg, &err,
756 DBUS_TYPE_INT32, &result,
759 if (dbus_error_is_set(&err)) {
760 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
761 dbus_error_free(&err);
762 result = VC_ERROR_OPERATION_FAILED;
764 dbus_message_unref(result_msg);
767 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc stop : result = %d", result);
769 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc stop : result = %d", result);
772 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
774 result = VC_ERROR_TIMED_OUT;
780 int vc_dbus_request_cancel(int pid)
784 /* create a signal & check for errors */
785 msg = dbus_message_new_method_call(
786 VC_SERVER_SERVICE_NAME,
787 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
788 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
789 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
792 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc cancel : Fail to make message ");
793 return VC_ERROR_OPERATION_FAILED;
795 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc cancel : pid(%d)", pid);
798 dbus_message_append_args(msg,
799 DBUS_TYPE_INT32, &pid,
803 dbus_error_init(&err);
805 DBusMessage* result_msg;
806 int result = VC_ERROR_OPERATION_FAILED;
808 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
809 dbus_message_unref(msg);
811 if (dbus_error_is_set(&err)) {
812 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
813 dbus_error_free(&err);
816 if (NULL != result_msg) {
817 dbus_message_get_args(result_msg, &err,
818 DBUS_TYPE_INT32, &result,
821 if (dbus_error_is_set(&err)) {
822 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
823 dbus_error_free(&err);
824 result = VC_ERROR_OPERATION_FAILED;
826 dbus_message_unref(result_msg);
829 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc cancel : result = %d", result);
831 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc cancel : result = %d", result);
834 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
836 result = VC_ERROR_TIMED_OUT;
844 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
848 char service_name[64] = {0,};
849 char object_path[64] = {0,};
850 char target_if_name[128] = {0,};
852 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
853 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
854 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
856 /* create a signal & check for errors */
857 msg = dbus_message_new_method_call(
859 object_path, /* object name of the signal */
860 target_if_name, /* interface name of the signal */
861 VC_METHOD_AUTH_ENABLE); /* name of the signal */
864 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth enable : Fail to make message ");
865 return VC_ERROR_OPERATION_FAILED;
867 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth enable : pid(%d)", pid);
870 dbus_message_append_args(msg,
871 DBUS_TYPE_INT32, &pid,
875 dbus_error_init(&err);
877 DBusMessage* result_msg;
878 int result = VC_ERROR_OPERATION_FAILED;
880 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
881 dbus_message_unref(msg);
883 if (dbus_error_is_set(&err)) {
884 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
885 dbus_error_free(&err);
888 if (NULL != result_msg) {
889 dbus_message_get_args(result_msg, &err,
890 DBUS_TYPE_INT32, &result,
893 if (dbus_error_is_set(&err)) {
894 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
895 dbus_error_free(&err);
896 result = VC_ERROR_OPERATION_FAILED;
898 dbus_message_unref(result_msg);
901 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth enable : result = %d", result);
903 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth enable : result = %d", result);
906 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
908 result = VC_ERROR_TIMED_OUT;
914 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
918 char service_name[64] = {0,};
919 char object_path[64] = {0,};
920 char target_if_name[128] = {0,};
922 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
923 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
924 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
926 /* create a signal & check for errors */
927 msg = dbus_message_new_method_call(
929 object_path, /* object name of the signal */
930 target_if_name, /* interface name of the signal */
931 VC_METHOD_AUTH_DISABLE); /* name of the signal */
934 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth disable : Fail to make message ");
935 return VC_ERROR_OPERATION_FAILED;
937 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth disable : pid(%d)", pid);
940 dbus_message_append_args(msg,
941 DBUS_TYPE_INT32, &pid,
945 dbus_error_init(&err);
947 DBusMessage* result_msg;
948 int result = VC_ERROR_OPERATION_FAILED;
950 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
951 dbus_message_unref(msg);
953 if (dbus_error_is_set(&err)) {
954 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
955 dbus_error_free(&err);
958 if (NULL != result_msg) {
959 dbus_message_get_args(result_msg, &err,
960 DBUS_TYPE_INT32, &result,
963 if (dbus_error_is_set(&err)) {
964 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
965 dbus_error_free(&err);
966 result = VC_ERROR_OPERATION_FAILED;
968 dbus_message_unref(result_msg);
971 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth disable : result = %d", result);
973 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth disable : result = %d", result);
976 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
978 result = VC_ERROR_TIMED_OUT;
984 int vc_dbus_request_auth_start(int pid, int mgr_pid)
988 char service_name[64] = {0,};
989 char object_path[64] = {0,};
990 char target_if_name[128] = {0,};
992 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
993 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
994 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
996 /* create a signal & check for errors */
997 msg = dbus_message_new_method_call(
1001 VC_METHOD_AUTH_START);
1004 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth start : Fail to make message ");
1005 return VC_ERROR_OPERATION_FAILED;
1007 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth start : pid(%d)", pid);
1010 DBusMessageIter args;
1011 dbus_message_iter_init_append(msg, &args);
1014 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1017 dbus_error_init(&err);
1019 DBusMessage* result_msg;
1020 int result = VC_ERROR_OPERATION_FAILED;
1022 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
1023 dbus_message_unref(msg);
1025 if (dbus_error_is_set(&err)) {
1026 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1027 dbus_error_free(&err);
1030 if (NULL != result_msg) {
1031 dbus_message_get_args(result_msg, &err,
1032 DBUS_TYPE_INT32, &result,
1035 if (dbus_error_is_set(&err)) {
1036 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1037 dbus_error_free(&err);
1038 result = VC_ERROR_OPERATION_FAILED;
1040 dbus_message_unref(result_msg);
1043 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth start : result = %d", result);
1045 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth start : result = %d", result);
1048 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1049 vc_dbus_reconnect();
1050 result = VC_ERROR_TIMED_OUT;
1056 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1060 char service_name[64] = {0,};
1061 char object_path[64] = {0,};
1062 char target_if_name[128] = {0,};
1064 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1065 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1066 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1068 /* create a signal & check for errors */
1069 msg = dbus_message_new_method_call(
1073 VC_METHOD_AUTH_STOP);
1076 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth stop : Fail to make message ");
1077 return VC_ERROR_OPERATION_FAILED;
1079 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth stop : pid(%d)", pid);
1082 dbus_message_append_args(msg,
1083 DBUS_TYPE_INT32, &pid,
1087 dbus_error_init(&err);
1089 DBusMessage* result_msg;
1090 int result = VC_ERROR_OPERATION_FAILED;
1092 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
1093 dbus_message_unref(msg);
1095 if (dbus_error_is_set(&err)) {
1096 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1097 dbus_error_free(&err);
1100 if (NULL != result_msg) {
1101 dbus_message_get_args(result_msg, &err,
1102 DBUS_TYPE_INT32, &result,
1105 if (dbus_error_is_set(&err)) {
1106 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1107 dbus_error_free(&err);
1108 result = VC_ERROR_OPERATION_FAILED;
1110 dbus_message_unref(result_msg);
1113 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1115 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1118 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1119 vc_dbus_reconnect();
1120 result = VC_ERROR_TIMED_OUT;
1126 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1130 char service_name[64] = {0,};
1131 char object_path[64] = {0,};
1132 char target_if_name[128] = {0,};
1134 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1135 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1136 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1138 /* create a signal & check for errors */
1139 msg = dbus_message_new_method_call(
1141 object_path, /* object name of the signal */
1142 target_if_name, /* interface name of the signal */
1143 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1146 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth cancel : Fail to make message ");
1147 return VC_ERROR_OPERATION_FAILED;
1149 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth cancel : pid(%d)", pid);
1152 dbus_message_append_args(msg,
1153 DBUS_TYPE_INT32, &pid,
1157 dbus_error_init(&err);
1159 DBusMessage* result_msg;
1160 int result = VC_ERROR_OPERATION_FAILED;
1162 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
1163 dbus_message_unref(msg);
1165 if (dbus_error_is_set(&err)) {
1166 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1167 dbus_error_free(&err);
1170 if (NULL != result_msg) {
1171 dbus_message_get_args(result_msg, &err,
1172 DBUS_TYPE_INT32, &result,
1175 if (dbus_error_is_set(&err)) {
1176 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1177 dbus_error_free(&err);
1178 result = VC_ERROR_OPERATION_FAILED;
1180 dbus_message_unref(result_msg);
1183 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1185 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1188 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1189 vc_dbus_reconnect();
1190 result = VC_ERROR_TIMED_OUT;