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 static int __dbus_check()
312 if (NULL == g_conn_sender) {
313 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
314 return vc_dbus_reconnect();
319 int vc_dbus_request_hello()
321 if (0 != __dbus_check()) {
322 return VC_ERROR_OPERATION_FAILED;
327 msg = dbus_message_new_method_call(
328 VC_SERVER_SERVICE_NAME,
329 VC_SERVER_SERVICE_OBJECT_PATH,
330 VC_SERVER_SERVICE_INTERFACE,
334 SLOG(LOG_ERROR, TAG_VCC, ">>>> Request vc hello : Fail to make message");
335 return VC_ERROR_OPERATION_FAILED;
339 dbus_error_init(&err);
341 DBusMessage* result_msg = NULL;
344 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, 500, &err);
346 if (dbus_error_is_set(&err)) {
347 dbus_error_free(&err);
350 dbus_message_unref(msg);
352 if (NULL != result_msg) {
353 dbus_message_unref(result_msg);
356 result = VC_ERROR_TIMED_OUT;
363 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state)
365 if (0 != __dbus_check()) {
366 return VC_ERROR_OPERATION_FAILED;
371 msg = dbus_message_new_method_call(
372 VC_SERVER_SERVICE_NAME,
373 VC_SERVER_SERVICE_OBJECT_PATH,
374 VC_SERVER_SERVICE_INTERFACE,
375 VC_METHOD_INITIALIZE);
378 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc initialize : Fail to make message ");
379 return VC_ERROR_OPERATION_FAILED;
381 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc initialize : pid(%d)", pid);
384 dbus_message_append_args(msg,
385 DBUS_TYPE_INT32, &pid,
389 dbus_error_init(&err);
391 DBusMessage* result_msg;
392 int result = VC_ERROR_OPERATION_FAILED;
394 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
395 dbus_message_unref(msg);
397 if (dbus_error_is_set(&err)) {
398 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
399 dbus_error_free(&err);
402 if (NULL != result_msg) {
404 int tmp_service_state = 0;
405 dbus_message_get_args(result_msg, &err,
406 DBUS_TYPE_INT32, &result,
407 DBUS_TYPE_INT32, &tmp,
408 DBUS_TYPE_INT32, &tmp_service_state,
411 if (dbus_error_is_set(&err)) {
412 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
413 dbus_error_free(&err);
414 result = VC_ERROR_OPERATION_FAILED;
417 dbus_message_unref(result_msg);
421 *service_state = tmp_service_state;
422 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d service = %d", result, *mgr_pid, *service_state);
424 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
427 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
429 result = VC_ERROR_TIMED_OUT;
435 int vc_dbus_request_finalize(int pid)
437 if (0 != __dbus_check()) {
438 return VC_ERROR_OPERATION_FAILED;
443 msg = dbus_message_new_method_call(
444 VC_SERVER_SERVICE_NAME,
445 VC_SERVER_SERVICE_OBJECT_PATH,
446 VC_SERVER_SERVICE_INTERFACE,
450 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc finalize : Fail to make message ");
451 return VC_ERROR_OPERATION_FAILED;
453 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc finalize : pid(%d)", pid);
456 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
459 dbus_error_init(&err);
461 DBusMessage* result_msg;
462 int result = VC_ERROR_OPERATION_FAILED;
464 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
465 dbus_message_unref(msg);
467 if (dbus_error_is_set(&err)) {
468 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
469 dbus_error_free(&err);
472 if (NULL != result_msg) {
473 dbus_message_get_args(result_msg, &err,
474 DBUS_TYPE_INT32, &result,
477 if (dbus_error_is_set(&err)) {
478 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
479 dbus_error_free(&err);
480 result = VC_ERROR_OPERATION_FAILED;
483 dbus_message_unref(result_msg);
486 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc finalize : result = %d", result);
488 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc finalize : result = %d", result);
491 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL ");
493 result = VC_ERROR_TIMED_OUT;
499 int vc_dbus_request_set_exclusive_command(int pid, bool value)
501 if (0 != __dbus_check()) {
502 return VC_ERROR_OPERATION_FAILED;
507 msg = dbus_message_new_method_call(
508 VC_SERVER_SERVICE_NAME,
509 VC_SERVER_SERVICE_OBJECT_PATH,
510 VC_SERVER_SERVICE_INTERFACE,
511 VC_METHOD_SET_EXCLUSIVE_CMD);
514 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set exclusive command : Fail to make message");
515 return VC_ERROR_OPERATION_FAILED;
517 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set exclusive command : pid(%d)", pid);
522 dbus_message_append_args(msg,
523 DBUS_TYPE_INT32, &pid,
524 DBUS_TYPE_INT32, &temp,
528 dbus_error_init(&err);
530 DBusMessage* result_msg;
531 int result = VC_ERROR_OPERATION_FAILED;
533 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
534 dbus_message_unref(msg);
536 if (dbus_error_is_set(&err)) {
537 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
538 dbus_error_free(&err);
541 if (NULL != result_msg) {
542 dbus_message_get_args(result_msg, &err,
543 DBUS_TYPE_INT32, &result,
546 if (dbus_error_is_set(&err)) {
547 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
548 dbus_error_free(&err);
549 result = VC_ERROR_OPERATION_FAILED;
551 dbus_message_unref(result_msg);
554 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
556 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set exclusive command : result = %d", result);
559 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
561 result = VC_ERROR_TIMED_OUT;
567 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
569 if (0 != __dbus_check()) {
570 return VC_ERROR_OPERATION_FAILED;
575 msg = dbus_message_new_method_call(
576 VC_SERVER_SERVICE_NAME,
577 VC_SERVER_SERVICE_OBJECT_PATH,
578 VC_SERVER_SERVICE_INTERFACE,
579 VC_METHOD_SET_COMMAND);
582 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set command : Fail to make message");
583 return VC_ERROR_OPERATION_FAILED;
585 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set command : pid(%d)", pid);
588 dbus_message_append_args(msg,
589 DBUS_TYPE_INT32, &pid,
590 DBUS_TYPE_INT32, &cmd_type,
594 dbus_error_init(&err);
596 DBusMessage* result_msg;
597 int result = VC_ERROR_OPERATION_FAILED;
599 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
600 dbus_message_unref(msg);
602 if (dbus_error_is_set(&err)) {
603 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
604 dbus_error_free(&err);
607 if (NULL != result_msg) {
608 dbus_message_get_args(result_msg, &err,
609 DBUS_TYPE_INT32, &result,
612 if (dbus_error_is_set(&err)) {
613 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
614 dbus_error_free(&err);
615 result = VC_ERROR_OPERATION_FAILED;
617 dbus_message_unref(result_msg);
620 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc set command : result = %d", result);
622 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc set command : result = %d", result);
625 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
627 result = VC_ERROR_TIMED_OUT;
633 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
635 if (0 != __dbus_check()) {
636 return VC_ERROR_OPERATION_FAILED;
641 msg = dbus_message_new_method_call(
642 VC_SERVER_SERVICE_NAME,
643 VC_SERVER_SERVICE_OBJECT_PATH,
644 VC_SERVER_SERVICE_INTERFACE,
645 VC_METHOD_UNSET_COMMAND);
648 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc unset command : Fail to make message");
649 return VC_ERROR_OPERATION_FAILED;
651 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc unset command : pid(%d), type(%d)", pid, cmd_type);
654 dbus_message_append_args(msg,
655 DBUS_TYPE_INT32, &pid,
656 DBUS_TYPE_INT32, &cmd_type,
660 dbus_error_init(&err);
662 DBusMessage* result_msg;
663 int result = VC_ERROR_OPERATION_FAILED;
665 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
666 dbus_message_unref(msg);
668 if (dbus_error_is_set(&err)) {
669 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
670 dbus_error_free(&err);
673 if (NULL != result_msg) {
674 dbus_message_get_args(result_msg, &err,
675 DBUS_TYPE_INT32, &result,
678 if (dbus_error_is_set(&err)) {
679 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
680 dbus_error_free(&err);
681 result = VC_ERROR_OPERATION_FAILED;
683 dbus_message_unref(result_msg);
686 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc unset command : result = %d", result);
688 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc unset command : result = %d", result);
691 SLOG(LOG_ERROR, TAG_VCC, "<<<< Result message is NULL");
693 result = VC_ERROR_TIMED_OUT;
699 int vc_dbus_set_foreground(int pid, bool value)
701 if (0 != __dbus_check()) {
702 return VC_ERROR_OPERATION_FAILED;
705 DBusMessage* msg = NULL;
708 tmp_value = (int)value;
710 msg = dbus_message_new_signal(
711 VC_MANAGER_SERVICE_OBJECT_PATH,
712 VC_MANAGER_SERVICE_INTERFACE,
713 VCC_MANAGER_METHOD_SET_FOREGROUND);
716 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set foreground to manager : Fail to make message");
717 return VC_ERROR_OPERATION_FAILED;
719 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
722 dbus_message_append_args(msg,
723 DBUS_TYPE_INT32, &pid,
724 DBUS_TYPE_INT32, &tmp_value,
727 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
728 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
729 return VC_ERROR_OPERATION_FAILED;
732 dbus_message_unref(msg);
735 msg = dbus_message_new_method_call(
736 VC_SERVER_SERVICE_NAME,
737 VC_SERVER_SERVICE_OBJECT_PATH,
738 VC_SERVER_SERVICE_INTERFACE,
739 VC_METHOD_SET_FOREGROUND);
742 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc set foreground to daemon : Fail to make message");
743 return VC_ERROR_OPERATION_FAILED;
745 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
748 dbus_message_append_args(msg,
749 DBUS_TYPE_INT32, &pid,
750 DBUS_TYPE_INT32, &tmp_value,
753 dbus_message_set_no_reply(msg, TRUE);
755 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
756 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send");
757 return VC_ERROR_OPERATION_FAILED;
760 dbus_connection_flush(g_conn_sender);
762 dbus_message_unref(msg);
768 int vc_dbus_request_start(int pid, int silence)
772 /* create a signal & check for errors */
773 msg = dbus_message_new_method_call(
774 VC_SERVER_SERVICE_NAME,
775 VC_SERVER_SERVICE_OBJECT_PATH,
776 VC_SERVER_SERVICE_INTERFACE,
777 VC_METHOD_REQUEST_START);
780 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc start : Fail to make message ");
781 return VC_ERROR_OPERATION_FAILED;
783 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc start : pid(%d), silence(%d)", pid, silence);
786 DBusMessageIter args;
787 dbus_message_iter_init_append(msg, &args);
790 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
791 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
794 dbus_error_init(&err);
796 DBusMessage* result_msg;
797 int result = VC_ERROR_OPERATION_FAILED;
799 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
800 dbus_message_unref(msg);
802 if (dbus_error_is_set(&err)) {
803 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
804 dbus_error_free(&err);
807 if (NULL != result_msg) {
808 dbus_message_get_args(result_msg, &err,
809 DBUS_TYPE_INT32, &result,
812 if (dbus_error_is_set(&err)) {
813 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
814 dbus_error_free(&err);
815 result = VC_ERROR_OPERATION_FAILED;
817 dbus_message_unref(result_msg);
820 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc start : result = %d", result);
822 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc start : result = %d", result);
825 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
827 result = VC_ERROR_TIMED_OUT;
833 int vc_dbus_request_stop(int pid)
837 /* create a signal & check for errors */
838 msg = dbus_message_new_method_call(
839 VC_SERVER_SERVICE_NAME,
840 VC_SERVER_SERVICE_OBJECT_PATH,
841 VC_SERVER_SERVICE_INTERFACE,
842 VC_METHOD_REQUEST_STOP);
845 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc stop : Fail to make message ");
846 return VC_ERROR_OPERATION_FAILED;
848 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc stop : pid(%d)", pid);
851 dbus_message_append_args(msg,
852 DBUS_TYPE_INT32, &pid,
856 dbus_error_init(&err);
858 DBusMessage* result_msg;
859 int result = VC_ERROR_OPERATION_FAILED;
861 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
862 dbus_message_unref(msg);
864 if (dbus_error_is_set(&err)) {
865 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
866 dbus_error_free(&err);
869 if (NULL != result_msg) {
870 dbus_message_get_args(result_msg, &err,
871 DBUS_TYPE_INT32, &result,
874 if (dbus_error_is_set(&err)) {
875 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
876 dbus_error_free(&err);
877 result = VC_ERROR_OPERATION_FAILED;
879 dbus_message_unref(result_msg);
882 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc stop : result = %d", result);
884 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc stop : result = %d", result);
887 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
889 result = VC_ERROR_TIMED_OUT;
895 int vc_dbus_request_cancel(int pid)
899 /* create a signal & check for errors */
900 msg = dbus_message_new_method_call(
901 VC_SERVER_SERVICE_NAME,
902 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
903 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
904 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
907 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc cancel : Fail to make message ");
908 return VC_ERROR_OPERATION_FAILED;
910 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc cancel : pid(%d)", pid);
913 dbus_message_append_args(msg,
914 DBUS_TYPE_INT32, &pid,
918 dbus_error_init(&err);
920 DBusMessage* result_msg;
921 int result = VC_ERROR_OPERATION_FAILED;
923 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
924 dbus_message_unref(msg);
926 if (dbus_error_is_set(&err)) {
927 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
928 dbus_error_free(&err);
931 if (NULL != result_msg) {
932 dbus_message_get_args(result_msg, &err,
933 DBUS_TYPE_INT32, &result,
936 if (dbus_error_is_set(&err)) {
937 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
938 dbus_error_free(&err);
939 result = VC_ERROR_OPERATION_FAILED;
941 dbus_message_unref(result_msg);
944 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc cancel : result = %d", result);
946 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc cancel : result = %d", result);
949 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
951 result = VC_ERROR_TIMED_OUT;
959 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
961 if (0 != __dbus_check()) {
962 return VC_ERROR_OPERATION_FAILED;
967 char service_name[64] = {0,};
968 char object_path[64] = {0,};
969 char target_if_name[128] = {0,};
971 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
972 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
973 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
975 /* create a signal & check for errors */
976 msg = dbus_message_new_method_call(
978 object_path, /* object name of the signal */
979 target_if_name, /* interface name of the signal */
980 VC_METHOD_AUTH_ENABLE); /* name of the signal */
983 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth enable : Fail to make message ");
984 return VC_ERROR_OPERATION_FAILED;
986 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth enable : pid(%d)", pid);
989 dbus_message_append_args(msg,
990 DBUS_TYPE_INT32, &pid,
994 dbus_error_init(&err);
996 DBusMessage* result_msg;
997 int result = VC_ERROR_OPERATION_FAILED;
999 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1000 dbus_message_unref(msg);
1002 if (dbus_error_is_set(&err)) {
1003 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1004 dbus_error_free(&err);
1007 if (NULL != result_msg) {
1008 dbus_message_get_args(result_msg, &err,
1009 DBUS_TYPE_INT32, &result,
1012 if (dbus_error_is_set(&err)) {
1013 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1014 dbus_error_free(&err);
1015 result = VC_ERROR_OPERATION_FAILED;
1017 dbus_message_unref(result_msg);
1020 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth enable : result = %d", result);
1022 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth enable : result = %d", result);
1025 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1026 vc_dbus_reconnect();
1027 result = VC_ERROR_TIMED_OUT;
1033 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
1035 if (0 != __dbus_check()) {
1036 return VC_ERROR_OPERATION_FAILED;
1041 char service_name[64] = {0,};
1042 char object_path[64] = {0,};
1043 char target_if_name[128] = {0,};
1045 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1046 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1047 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1049 /* create a signal & check for errors */
1050 msg = dbus_message_new_method_call(
1052 object_path, /* object name of the signal */
1053 target_if_name, /* interface name of the signal */
1054 VC_METHOD_AUTH_DISABLE); /* name of the signal */
1057 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth disable : Fail to make message ");
1058 return VC_ERROR_OPERATION_FAILED;
1060 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth disable : pid(%d)", pid);
1063 dbus_message_append_args(msg,
1064 DBUS_TYPE_INT32, &pid,
1068 dbus_error_init(&err);
1070 DBusMessage* result_msg;
1071 int result = VC_ERROR_OPERATION_FAILED;
1073 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1074 dbus_message_unref(msg);
1076 if (dbus_error_is_set(&err)) {
1077 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1078 dbus_error_free(&err);
1081 if (NULL != result_msg) {
1082 dbus_message_get_args(result_msg, &err,
1083 DBUS_TYPE_INT32, &result,
1086 if (dbus_error_is_set(&err)) {
1087 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1088 dbus_error_free(&err);
1089 result = VC_ERROR_OPERATION_FAILED;
1091 dbus_message_unref(result_msg);
1094 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth disable : result = %d", result);
1096 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth disable : result = %d", result);
1099 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1100 vc_dbus_reconnect();
1101 result = VC_ERROR_TIMED_OUT;
1107 int vc_dbus_request_auth_start(int pid, int mgr_pid)
1109 if (0 != __dbus_check()) {
1110 return VC_ERROR_OPERATION_FAILED;
1115 char service_name[64] = {0,};
1116 char object_path[64] = {0,};
1117 char target_if_name[128] = {0,};
1119 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1120 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1121 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1123 /* create a signal & check for errors */
1124 msg = dbus_message_new_method_call(
1128 VC_METHOD_AUTH_START);
1131 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth start : Fail to make message ");
1132 return VC_ERROR_OPERATION_FAILED;
1134 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth start : pid(%d)", pid);
1137 DBusMessageIter args;
1138 dbus_message_iter_init_append(msg, &args);
1141 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1144 dbus_error_init(&err);
1146 DBusMessage* result_msg;
1147 int result = VC_ERROR_OPERATION_FAILED;
1149 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1150 dbus_message_unref(msg);
1152 if (dbus_error_is_set(&err)) {
1153 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1154 dbus_error_free(&err);
1157 if (NULL != result_msg) {
1158 dbus_message_get_args(result_msg, &err,
1159 DBUS_TYPE_INT32, &result,
1162 if (dbus_error_is_set(&err)) {
1163 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1164 dbus_error_free(&err);
1165 result = VC_ERROR_OPERATION_FAILED;
1167 dbus_message_unref(result_msg);
1170 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth start : result = %d", result);
1172 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth start : result = %d", result);
1175 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1176 vc_dbus_reconnect();
1177 result = VC_ERROR_TIMED_OUT;
1183 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1185 if (0 != __dbus_check()) {
1186 return VC_ERROR_OPERATION_FAILED;
1191 char service_name[64] = {0,};
1192 char object_path[64] = {0,};
1193 char target_if_name[128] = {0,};
1195 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1196 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1197 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1199 /* create a signal & check for errors */
1200 msg = dbus_message_new_method_call(
1204 VC_METHOD_AUTH_STOP);
1207 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth stop : Fail to make message ");
1208 return VC_ERROR_OPERATION_FAILED;
1210 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth stop : pid(%d)", pid);
1213 dbus_message_append_args(msg,
1214 DBUS_TYPE_INT32, &pid,
1218 dbus_error_init(&err);
1220 DBusMessage* result_msg;
1221 int result = VC_ERROR_OPERATION_FAILED;
1223 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1224 dbus_message_unref(msg);
1226 if (dbus_error_is_set(&err)) {
1227 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1228 dbus_error_free(&err);
1231 if (NULL != result_msg) {
1232 dbus_message_get_args(result_msg, &err,
1233 DBUS_TYPE_INT32, &result,
1236 if (dbus_error_is_set(&err)) {
1237 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1238 dbus_error_free(&err);
1239 result = VC_ERROR_OPERATION_FAILED;
1241 dbus_message_unref(result_msg);
1244 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1246 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth stop : result = %d", result);
1249 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1250 vc_dbus_reconnect();
1251 result = VC_ERROR_TIMED_OUT;
1257 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1259 if (0 != __dbus_check()) {
1260 return VC_ERROR_OPERATION_FAILED;
1265 char service_name[64] = {0,};
1266 char object_path[64] = {0,};
1267 char target_if_name[128] = {0,};
1269 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1270 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1271 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1273 /* create a signal & check for errors */
1274 msg = dbus_message_new_method_call(
1276 object_path, /* object name of the signal */
1277 target_if_name, /* interface name of the signal */
1278 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1281 SLOG(LOG_ERROR, TAG_VCC, ">>>> vc auth cancel : Fail to make message ");
1282 return VC_ERROR_OPERATION_FAILED;
1284 SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc auth cancel : pid(%d)", pid);
1287 dbus_message_append_args(msg,
1288 DBUS_TYPE_INT32, &pid,
1292 dbus_error_init(&err);
1294 DBusMessage* result_msg;
1295 int result = VC_ERROR_OPERATION_FAILED;
1297 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1298 dbus_message_unref(msg);
1300 if (dbus_error_is_set(&err)) {
1301 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1302 dbus_error_free(&err);
1305 if (NULL != result_msg) {
1306 dbus_message_get_args(result_msg, &err,
1307 DBUS_TYPE_INT32, &result,
1310 if (dbus_error_is_set(&err)) {
1311 SLOG(LOG_ERROR, TAG_VCC, "<<<< Get arguments error (%s)", err.message);
1312 dbus_error_free(&err);
1313 result = VC_ERROR_OPERATION_FAILED;
1315 dbus_message_unref(result_msg);
1318 SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1320 SLOG(LOG_ERROR, TAG_VCC, "<<<< vc auth cancel : result = %d", result);
1323 SLOG(LOG_DEBUG, TAG_VCC, "<<<< Result Message is NULL");
1324 vc_dbus_reconnect();
1325 result = VC_ERROR_TIMED_OUT;