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);
139 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
140 __vc_cb_error(pid, reason);
143 SLOG(LOG_DEBUG, TAG_VCC, "=====");
144 SLOG(LOG_DEBUG, TAG_VCC, " ");
145 } /* VCD_METHOD_ERROR */
148 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
149 dbus_message_unref(msg);
153 /* free the message */
154 dbus_message_unref(msg);
157 return ECORE_CALLBACK_PASS_ON;
160 int vc_dbus_open_connection()
162 if (NULL != g_conn_sender && NULL != g_conn_listener) {
163 SLOG(LOG_WARN, TAG_VCC, "already existed connection ");
170 /* initialise the error value */
171 dbus_error_init(&err);
173 /* connect to the DBUS system bus, and check for errors */
174 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
176 if (dbus_error_is_set(&err)) {
177 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
178 dbus_error_free(&err);
181 if (NULL == g_conn_sender) {
182 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
183 return VC_ERROR_OPERATION_FAILED;
186 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
188 if (dbus_error_is_set(&err)) {
189 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message);
190 dbus_error_free(&err);
193 if (NULL == g_conn_listener) {
194 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection ");
195 return VC_ERROR_OPERATION_FAILED;
200 char service_name[64];
201 memset(service_name, '\0', 64);
202 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
204 SLOG(LOG_DEBUG, TAG_VCC, "service name is %s", service_name);
206 /* register our name on the bus, and check for errors */
207 ret = dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
209 if (dbus_error_is_set(&err)) {
210 SLOG(LOG_ERROR, TAG_VCC, "Name Error (%s)", err.message);
211 dbus_error_free(&err);
214 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
215 SLOG(LOG_ERROR, TAG_VCC, "fail dbus_bus_request_name()");
219 if (NULL != g_fd_handler) {
220 SLOG(LOG_WARN, TAG_VCC, "The handler already exists.");
224 char rule[128] = {0, };
225 snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
227 /* add a rule for which messages we want to see */
228 dbus_bus_add_match(g_conn_listener, rule, &err);
229 dbus_connection_flush(g_conn_listener);
231 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_listener, &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_listener, NULL, NULL);
246 if (NULL == g_fd_handler) {
247 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore ");
248 return VC_ERROR_OPERATION_FAILED;
254 int vc_dbus_close_connection()
257 dbus_error_init(&err);
259 if (NULL != g_fd_handler) {
260 ecore_main_fd_handler_del(g_fd_handler);
266 char service_name[64];
267 memset(service_name, '\0', 64);
268 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
270 dbus_bus_release_name(g_conn_listener, service_name, &err);
272 if (dbus_error_is_set(&err)) {
273 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
274 dbus_error_free(&err);
277 dbus_connection_close(g_conn_sender);
278 dbus_connection_close(g_conn_listener);
280 dbus_connection_unref(g_conn_sender);
281 dbus_connection_unref(g_conn_listener);
283 g_conn_sender = NULL;
284 g_conn_listener = NULL;
289 int vc_dbus_reconnect()
291 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
292 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
293 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
294 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
296 if (false == sender_connected || false == listener_connected) {
297 vc_dbus_close_connection();
299 if (0 != vc_dbus_open_connection()) {
300 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
304 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect");
310 int vc_dbus_request_hello()
314 msg = dbus_message_new_method_call(
315 VC_SERVER_SERVICE_NAME,
316 VC_SERVER_SERVICE_OBJECT_PATH,
317 VC_SERVER_SERVICE_INTERFACE,
321 SLOG(LOG_ERROR, TAG_VCC, ">>>> Request vc hello : Fail to make message");
322 return VC_ERROR_OPERATION_FAILED;
326 dbus_error_init(&err);
328 DBusMessage* result_msg = NULL;
331 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
333 if (dbus_error_is_set(&err)) {
334 dbus_error_free(&err);
337 dbus_message_unref(msg);
339 if (NULL != result_msg) {
340 dbus_message_unref(result_msg);
343 result = VC_ERROR_TIMED_OUT;
350 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state)
354 msg = dbus_message_new_method_call(
355 VC_SERVER_SERVICE_NAME,
356 VC_SERVER_SERVICE_OBJECT_PATH,
357 VC_SERVER_SERVICE_INTERFACE,
358 VC_METHOD_INITIALIZE);
361 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc initialize : Fail to make message ");
362 return VC_ERROR_OPERATION_FAILED;
364 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc initialize : pid(%d)", pid);
367 dbus_message_append_args(msg,
368 DBUS_TYPE_INT32, &pid,
372 dbus_error_init(&err);
374 DBusMessage* result_msg;
375 int result = VC_ERROR_OPERATION_FAILED;
377 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
378 dbus_message_unref(msg);
380 if (dbus_error_is_set(&err)) {
381 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
382 dbus_error_free(&err);
385 if (NULL != result_msg) {
387 int tmp_service_state = 0;
388 dbus_message_get_args(result_msg, &err,
389 DBUS_TYPE_INT32, &result,
390 DBUS_TYPE_INT32, &tmp,
391 DBUS_TYPE_INT32, &tmp_service_state,
394 if (dbus_error_is_set(&err)) {
395 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
396 dbus_error_free(&err);
397 result = VC_ERROR_OPERATION_FAILED;
400 dbus_message_unref(result_msg);
404 *service_state = tmp_service_state;
405 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d service = %d", result, *mgr_pid, *service_state);
407 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
410 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
412 result = VC_ERROR_TIMED_OUT;
418 int vc_dbus_request_finalize(int pid)
422 msg = dbus_message_new_method_call(
423 VC_SERVER_SERVICE_NAME,
424 VC_SERVER_SERVICE_OBJECT_PATH,
425 VC_SERVER_SERVICE_INTERFACE,
429 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc finalize : Fail to make message ");
430 return VC_ERROR_OPERATION_FAILED;
432 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc finalize : pid(%d)", pid);
435 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
438 dbus_error_init(&err);
440 DBusMessage* result_msg;
441 int result = VC_ERROR_OPERATION_FAILED;
443 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
444 dbus_message_unref(msg);
446 if (dbus_error_is_set(&err)) {
447 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
448 dbus_error_free(&err);
451 if (NULL != result_msg) {
452 dbus_message_get_args(result_msg, &err,
453 DBUS_TYPE_INT32, &result,
456 if (dbus_error_is_set(&err)) {
457 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
458 dbus_error_free(&err);
459 result = VC_ERROR_OPERATION_FAILED;
462 dbus_message_unref(result_msg);
465 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc finalize : result = %d", result);
467 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc finalize : result = %d", result);
470 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
472 result = VC_ERROR_TIMED_OUT;
478 int vc_dbus_request_set_exclusive_command(int pid, bool value)
482 msg = dbus_message_new_method_call(
483 VC_SERVER_SERVICE_NAME,
484 VC_SERVER_SERVICE_OBJECT_PATH,
485 VC_SERVER_SERVICE_INTERFACE,
486 VC_METHOD_SET_EXCLUSIVE_CMD);
489 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set exclusive command : Fail to make message");
490 return VC_ERROR_OPERATION_FAILED;
492 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set exclusive command : pid(%d)", pid);
497 dbus_message_append_args(msg,
498 DBUS_TYPE_INT32, &pid,
499 DBUS_TYPE_INT32, &temp,
503 dbus_error_init(&err);
505 DBusMessage* result_msg;
506 int result = VC_ERROR_OPERATION_FAILED;
508 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
509 dbus_message_unref(msg);
511 if (dbus_error_is_set(&err)) {
512 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
513 dbus_error_free(&err);
516 if (NULL != result_msg) {
517 dbus_message_get_args(result_msg, &err,
518 DBUS_TYPE_INT32, &result,
521 if (dbus_error_is_set(&err)) {
522 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
523 dbus_error_free(&err);
524 result = VC_ERROR_OPERATION_FAILED;
526 dbus_message_unref(result_msg);
529 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
531 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
534 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
536 result = VC_ERROR_TIMED_OUT;
542 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
546 msg = dbus_message_new_method_call(
547 VC_SERVER_SERVICE_NAME,
548 VC_SERVER_SERVICE_OBJECT_PATH,
549 VC_SERVER_SERVICE_INTERFACE,
550 VC_METHOD_SET_COMMAND);
553 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set command : Fail to make message");
554 return VC_ERROR_OPERATION_FAILED;
556 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set command : pid(%d)", pid);
559 dbus_message_append_args(msg,
560 DBUS_TYPE_INT32, &pid,
561 DBUS_TYPE_INT32, &cmd_type,
565 dbus_error_init(&err);
567 DBusMessage* result_msg;
568 int result = VC_ERROR_OPERATION_FAILED;
570 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
571 dbus_message_unref(msg);
573 if (dbus_error_is_set(&err)) {
574 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
575 dbus_error_free(&err);
578 if (NULL != result_msg) {
579 dbus_message_get_args(result_msg, &err,
580 DBUS_TYPE_INT32, &result,
583 if (dbus_error_is_set(&err)) {
584 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
585 dbus_error_free(&err);
586 result = VC_ERROR_OPERATION_FAILED;
588 dbus_message_unref(result_msg);
591 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
593 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
596 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
598 result = VC_ERROR_TIMED_OUT;
604 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
608 msg = dbus_message_new_method_call(
609 VC_SERVER_SERVICE_NAME,
610 VC_SERVER_SERVICE_OBJECT_PATH,
611 VC_SERVER_SERVICE_INTERFACE,
612 VC_METHOD_UNSET_COMMAND);
615 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc unset command : Fail to make message");
616 return VC_ERROR_OPERATION_FAILED;
618 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc unset command : pid(%d), type(%d)", pid, cmd_type);
621 dbus_message_append_args(msg,
622 DBUS_TYPE_INT32, &pid,
623 DBUS_TYPE_INT32, &cmd_type,
627 dbus_error_init(&err);
629 DBusMessage* result_msg;
630 int result = VC_ERROR_OPERATION_FAILED;
632 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
633 dbus_message_unref(msg);
635 if (dbus_error_is_set(&err)) {
636 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
637 dbus_error_free(&err);
640 if (NULL != result_msg) {
641 dbus_message_get_args(result_msg, &err,
642 DBUS_TYPE_INT32, &result,
645 if (dbus_error_is_set(&err)) {
646 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
647 dbus_error_free(&err);
648 result = VC_ERROR_OPERATION_FAILED;
650 dbus_message_unref(result_msg);
653 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc unset command : result = %d", result);
655 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc unset command : result = %d", result);
658 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
660 result = VC_ERROR_TIMED_OUT;
666 int vc_dbus_set_foreground(int pid, bool value)
668 DBusMessage* msg = NULL;
671 tmp_value = (int)value;
673 msg = dbus_message_new_signal(
674 VC_MANAGER_SERVICE_OBJECT_PATH,
675 VC_MANAGER_SERVICE_INTERFACE,
676 VCC_MANAGER_METHOD_SET_FOREGROUND);
679 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set foreground to manager : Fail to make message");
680 return VC_ERROR_OPERATION_FAILED;
682 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
685 dbus_message_append_args(msg,
686 DBUS_TYPE_INT32, &pid,
687 DBUS_TYPE_INT32, &tmp_value,
690 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
691 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
692 return VC_ERROR_OPERATION_FAILED;
695 dbus_message_unref(msg);
698 msg = dbus_message_new_method_call(
699 VC_SERVER_SERVICE_NAME,
700 VC_SERVER_SERVICE_OBJECT_PATH,
701 VC_SERVER_SERVICE_INTERFACE,
702 VC_METHOD_SET_FOREGROUND);
705 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set foreground to daemon : Fail to make message");
706 return VC_ERROR_OPERATION_FAILED;
708 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
711 dbus_message_append_args(msg,
712 DBUS_TYPE_INT32, &pid,
713 DBUS_TYPE_INT32, &tmp_value,
716 dbus_message_set_no_reply(msg, TRUE);
718 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
719 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
720 return VC_ERROR_OPERATION_FAILED;
723 dbus_connection_flush(g_conn_sender);
725 dbus_message_unref(msg);
731 int vc_dbus_request_start(int pid, int silence)
735 /* create a signal & check for errors */
736 msg = dbus_message_new_method_call(
737 VC_SERVER_SERVICE_NAME,
738 VC_SERVER_SERVICE_OBJECT_PATH,
739 VC_SERVER_SERVICE_INTERFACE,
740 VC_METHOD_REQUEST_START);
743 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc start : Fail to make message ");
744 return VC_ERROR_OPERATION_FAILED;
746 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc start : pid(%d), silence(%d)", pid, silence);
749 DBusMessageIter args;
750 dbus_message_iter_init_append(msg, &args);
753 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
754 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
757 dbus_error_init(&err);
759 DBusMessage* result_msg;
760 int result = VC_ERROR_OPERATION_FAILED;
762 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
763 dbus_message_unref(msg);
765 if (dbus_error_is_set(&err)) {
766 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
767 dbus_error_free(&err);
770 if (NULL != result_msg) {
771 dbus_message_get_args(result_msg, &err,
772 DBUS_TYPE_INT32, &result,
775 if (dbus_error_is_set(&err)) {
776 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
777 dbus_error_free(&err);
778 result = VC_ERROR_OPERATION_FAILED;
780 dbus_message_unref(result_msg);
783 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc start : result = %d", result);
785 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc start : result = %d", result);
788 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
790 result = VC_ERROR_TIMED_OUT;
796 int vc_dbus_request_stop(int pid)
800 /* create a signal & check for errors */
801 msg = dbus_message_new_method_call(
802 VC_SERVER_SERVICE_NAME,
803 VC_SERVER_SERVICE_OBJECT_PATH,
804 VC_SERVER_SERVICE_INTERFACE,
805 VC_METHOD_REQUEST_STOP);
808 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc stop : Fail to make message ");
809 return VC_ERROR_OPERATION_FAILED;
811 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc stop : pid(%d)", pid);
814 dbus_message_append_args(msg,
815 DBUS_TYPE_INT32, &pid,
819 dbus_error_init(&err);
821 DBusMessage* result_msg;
822 int result = VC_ERROR_OPERATION_FAILED;
824 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
825 dbus_message_unref(msg);
827 if (dbus_error_is_set(&err)) {
828 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
829 dbus_error_free(&err);
832 if (NULL != result_msg) {
833 dbus_message_get_args(result_msg, &err,
834 DBUS_TYPE_INT32, &result,
837 if (dbus_error_is_set(&err)) {
838 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
839 dbus_error_free(&err);
840 result = VC_ERROR_OPERATION_FAILED;
842 dbus_message_unref(result_msg);
845 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc stop : result = %d", result);
847 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc stop : result = %d", result);
850 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
852 result = VC_ERROR_TIMED_OUT;
858 int vc_dbus_request_cancel(int pid)
862 /* create a signal & check for errors */
863 msg = dbus_message_new_method_call(
864 VC_SERVER_SERVICE_NAME,
865 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
866 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
867 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
870 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc cancel : Fail to make message ");
871 return VC_ERROR_OPERATION_FAILED;
873 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc cancel : pid(%d)", pid);
876 dbus_message_append_args(msg,
877 DBUS_TYPE_INT32, &pid,
881 dbus_error_init(&err);
883 DBusMessage* result_msg;
884 int result = VC_ERROR_OPERATION_FAILED;
886 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
887 dbus_message_unref(msg);
889 if (dbus_error_is_set(&err)) {
890 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
891 dbus_error_free(&err);
894 if (NULL != result_msg) {
895 dbus_message_get_args(result_msg, &err,
896 DBUS_TYPE_INT32, &result,
899 if (dbus_error_is_set(&err)) {
900 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
901 dbus_error_free(&err);
902 result = VC_ERROR_OPERATION_FAILED;
904 dbus_message_unref(result_msg);
907 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc cancel : result = %d", result);
909 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc cancel : result = %d", result);
912 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
914 result = VC_ERROR_TIMED_OUT;
922 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
926 char service_name[64] = {0,};
927 char object_path[64] = {0,};
928 char target_if_name[128] = {0,};
930 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
931 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
932 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
934 /* create a signal & check for errors */
935 msg = dbus_message_new_method_call(
937 object_path, /* object name of the signal */
938 target_if_name, /* interface name of the signal */
939 VC_METHOD_AUTH_ENABLE); /* name of the signal */
942 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth enable : Fail to make message ");
943 return VC_ERROR_OPERATION_FAILED;
945 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth enable : pid(%d)", pid);
948 dbus_message_append_args(msg,
949 DBUS_TYPE_INT32, &pid,
953 dbus_error_init(&err);
955 DBusMessage* result_msg;
956 int result = VC_ERROR_OPERATION_FAILED;
958 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
959 dbus_message_unref(msg);
961 if (dbus_error_is_set(&err)) {
962 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
963 dbus_error_free(&err);
966 if (NULL != result_msg) {
967 dbus_message_get_args(result_msg, &err,
968 DBUS_TYPE_INT32, &result,
971 if (dbus_error_is_set(&err)) {
972 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
973 dbus_error_free(&err);
974 result = VC_ERROR_OPERATION_FAILED;
976 dbus_message_unref(result_msg);
979 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth enable : result = %d", result);
981 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth enable : result = %d", result);
984 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
986 result = VC_ERROR_TIMED_OUT;
992 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
996 char service_name[64] = {0,};
997 char object_path[64] = {0,};
998 char target_if_name[128] = {0,};
1000 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1001 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1002 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1004 /* create a signal & check for errors */
1005 msg = dbus_message_new_method_call(
1007 object_path, /* object name of the signal */
1008 target_if_name, /* interface name of the signal */
1009 VC_METHOD_AUTH_DISABLE); /* name of the signal */
1012 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth disable : Fail to make message ");
1013 return VC_ERROR_OPERATION_FAILED;
1015 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth disable : pid(%d)", pid);
1018 dbus_message_append_args(msg,
1019 DBUS_TYPE_INT32, &pid,
1023 dbus_error_init(&err);
1025 DBusMessage* result_msg;
1026 int result = VC_ERROR_OPERATION_FAILED;
1028 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1029 dbus_message_unref(msg);
1031 if (dbus_error_is_set(&err)) {
1032 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1033 dbus_error_free(&err);
1036 if (NULL != result_msg) {
1037 dbus_message_get_args(result_msg, &err,
1038 DBUS_TYPE_INT32, &result,
1041 if (dbus_error_is_set(&err)) {
1042 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1043 dbus_error_free(&err);
1044 result = VC_ERROR_OPERATION_FAILED;
1046 dbus_message_unref(result_msg);
1049 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth disable : result = %d", result);
1051 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth disable : result = %d", result);
1054 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1055 vc_dbus_reconnect();
1056 result = VC_ERROR_TIMED_OUT;
1062 int vc_dbus_request_auth_start(int pid, int mgr_pid)
1066 char service_name[64] = {0,};
1067 char object_path[64] = {0,};
1068 char target_if_name[128] = {0,};
1070 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1071 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1072 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1074 /* create a signal & check for errors */
1075 msg = dbus_message_new_method_call(
1079 VC_METHOD_AUTH_START);
1082 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth start : Fail to make message ");
1083 return VC_ERROR_OPERATION_FAILED;
1085 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth start : pid(%d)", pid);
1088 DBusMessageIter args;
1089 dbus_message_iter_init_append(msg, &args);
1092 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1095 dbus_error_init(&err);
1097 DBusMessage* result_msg;
1098 int result = VC_ERROR_OPERATION_FAILED;
1100 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1101 dbus_message_unref(msg);
1103 if (dbus_error_is_set(&err)) {
1104 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1105 dbus_error_free(&err);
1108 if (NULL != result_msg) {
1109 dbus_message_get_args(result_msg, &err,
1110 DBUS_TYPE_INT32, &result,
1113 if (dbus_error_is_set(&err)) {
1114 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1115 dbus_error_free(&err);
1116 result = VC_ERROR_OPERATION_FAILED;
1118 dbus_message_unref(result_msg);
1121 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth start : result = %d", result);
1123 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth start : result = %d", result);
1126 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1127 vc_dbus_reconnect();
1128 result = VC_ERROR_TIMED_OUT;
1134 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1138 char service_name[64] = {0,};
1139 char object_path[64] = {0,};
1140 char target_if_name[128] = {0,};
1142 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1143 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1144 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1146 /* create a signal & check for errors */
1147 msg = dbus_message_new_method_call(
1151 VC_METHOD_AUTH_STOP);
1154 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth stop : Fail to make message ");
1155 return VC_ERROR_OPERATION_FAILED;
1157 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth stop : pid(%d)", pid);
1160 dbus_message_append_args(msg,
1161 DBUS_TYPE_INT32, &pid,
1165 dbus_error_init(&err);
1167 DBusMessage* result_msg;
1168 int result = VC_ERROR_OPERATION_FAILED;
1170 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1171 dbus_message_unref(msg);
1173 if (dbus_error_is_set(&err)) {
1174 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1175 dbus_error_free(&err);
1178 if (NULL != result_msg) {
1179 dbus_message_get_args(result_msg, &err,
1180 DBUS_TYPE_INT32, &result,
1183 if (dbus_error_is_set(&err)) {
1184 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1185 dbus_error_free(&err);
1186 result = VC_ERROR_OPERATION_FAILED;
1188 dbus_message_unref(result_msg);
1191 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1193 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1196 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1197 vc_dbus_reconnect();
1198 result = VC_ERROR_TIMED_OUT;
1204 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1208 char service_name[64] = {0,};
1209 char object_path[64] = {0,};
1210 char target_if_name[128] = {0,};
1212 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1213 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1214 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1216 /* create a signal & check for errors */
1217 msg = dbus_message_new_method_call(
1219 object_path, /* object name of the signal */
1220 target_if_name, /* interface name of the signal */
1221 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1224 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth cancel : Fail to make message ");
1225 return VC_ERROR_OPERATION_FAILED;
1227 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth cancel : pid(%d)", pid);
1230 dbus_message_append_args(msg,
1231 DBUS_TYPE_INT32, &pid,
1235 dbus_error_init(&err);
1237 DBusMessage* result_msg;
1238 int result = VC_ERROR_OPERATION_FAILED;
1240 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1241 dbus_message_unref(msg);
1243 if (dbus_error_is_set(&err)) {
1244 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1245 dbus_error_free(&err);
1248 if (NULL != result_msg) {
1249 dbus_message_get_args(result_msg, &err,
1250 DBUS_TYPE_INT32, &result,
1253 if (dbus_error_is_set(&err)) {
1254 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1255 dbus_error_free(&err);
1256 result = VC_ERROR_OPERATION_FAILED;
1258 dbus_message_unref(result_msg);
1261 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1263 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1266 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1267 vc_dbus_reconnect();
1268 result = VC_ERROR_TIMED_OUT;