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.
17 #include "vc_command.h"
22 static int g_waiting_time = 3000;
24 static Ecore_Fd_Handler* g_fd_handler = NULL;
26 static DBusConnection* g_conn_sender = NULL;
27 static DBusConnection* g_conn_listener = NULL;
29 extern int __vc_cb_error(int reason, int daemon_pid, char* msg);
31 extern void __vc_cb_result();
33 extern int __vc_cb_service_state(int state);
35 extern int __vc_cb_manager_pid(int manager_pid);
38 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
40 if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW;
42 dbus_connection_read_write_dispatch(g_conn_listener, 50);
45 DBusMessage* msg = NULL;
46 msg = dbus_connection_pop_message(g_conn_listener);
48 /* loop again if we haven't read a message */
54 dbus_error_init(&err);
56 char if_name[64] = {0, };
57 snprintf(if_name, 64, "%s", VC_CLIENT_SERVICE_INTERFACE);
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);
75 SLOG(LOG_ERROR, TAG_VCC, "@@ vc get hello : invalid pid ");
78 DBusMessage* reply = NULL;
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(g_conn_listener, 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(g_conn_listener);
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 } /* 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, "@@@");
120 } /* VCD_METHOD_RESULT */
121 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SEND_MANAGER_PID)) {
124 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &manager_pid, DBUS_TYPE_INVALID);
125 if (dbus_error_is_set(&err)) {
126 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
127 dbus_error_free(&err);
130 SLOG(LOG_DEBUG, TAG_VCC, "@@ manager pid is changed : %d", manager_pid);
132 __vc_cb_manager_pid(manager_pid);
134 } /* VCD_METHOD_SEND_MANAGER_PID */
136 else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR)) {
137 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Error");
142 dbus_message_get_args(msg, &err,
143 DBUS_TYPE_INT32, &reason,
144 DBUS_TYPE_INT32, &daemon_pid,
145 DBUS_TYPE_STRING, &err_msg,
148 if (dbus_error_is_set(&err)) {
149 SLOG(LOG_ERROR, TAG_VCC, "@@ vc Get Error message : Get arguments error (%s)", err.message);
150 dbus_error_free(&err);
152 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc Get Error message : reason(%d), daemon_pid(%d), msg(%s)", reason, daemon_pid, err_msg);
153 __vc_cb_error(reason, daemon_pid, err_msg);
156 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
157 } /* VCD_METHOD_ERROR */
159 else if (dbus_message_is_signal(msg, "org.freedesktop.DBus", "NameOwnerChanged")) {
160 SLOG(LOG_DEBUG, TAG_VCC, "@@@ Owner Changed");
162 dbus_error_init(&err);
163 /* remove a rule for daemon error */
164 char rule_err[256] = {0, };
165 snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
166 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
167 dbus_connection_flush(g_conn_listener);
169 if (dbus_error_is_set(&err)) {
170 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
171 dbus_error_free(&err);
174 __vc_cb_error(VC_ERROR_SERVICE_RESET, -1, "Daemon Reset");
175 SLOG(LOG_DEBUG, TAG_VCC, "@@@");
176 } /* NameOwnerChanged */
179 SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
180 dbus_message_unref(msg);
184 /* free the message */
185 dbus_message_unref(msg);
188 return ECORE_CALLBACK_PASS_ON;
192 static void __vc_dbus_connection_free()
194 if (NULL != g_conn_listener) {
195 dbus_connection_close(g_conn_listener);
196 dbus_connection_unref(g_conn_listener);
197 g_conn_listener = NULL;
199 if (NULL != g_conn_sender) {
200 dbus_connection_close(g_conn_sender);
201 dbus_connection_unref(g_conn_sender);
202 g_conn_sender = NULL;
206 int vc_dbus_open_connection()
208 if (NULL != g_conn_sender && NULL != g_conn_listener) {
209 SLOG(LOG_WARN, TAG_VCC, "already existed connection "); //LCOV_EXCL_LINE
216 /* initialise the error value */
217 dbus_error_init(&err);
219 /* connect to the DBUS system bus, and check for errors */
220 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
222 if (dbus_error_is_set(&err)) {
223 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message); //LCOV_EXCL_LINE
224 dbus_error_free(&err);
227 if (NULL == g_conn_sender) {
228 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection "); //LCOV_EXCL_LINE
229 return VC_ERROR_OPERATION_FAILED;
232 dbus_connection_set_exit_on_disconnect(g_conn_sender, false);
234 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
236 if (dbus_error_is_set(&err)) {
237 SLOG(LOG_ERROR, TAG_VCC, "Dbus Connection Error (%s)", err.message); //LCOV_EXCL_LINE
238 dbus_error_free(&err);
241 if (NULL == g_conn_listener) {
242 SLOG(LOG_ERROR, TAG_VCC, "Fail to get dbus connection "); //LCOV_EXCL_LINE
243 __vc_dbus_connection_free();
244 return VC_ERROR_OPERATION_FAILED;
247 dbus_connection_set_exit_on_disconnect(g_conn_listener, false);
251 char service_name[64];
252 memset(service_name, '\0', 64);
253 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
255 SLOG(LOG_DEBUG, TAG_VCC, "service name is %s", service_name);
257 /* register our name on the bus, and check for errors */
258 ret = dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
260 if (dbus_error_is_set(&err)) {
261 SLOG(LOG_ERROR, TAG_VCC, "Name Error (%s)", err.message); //LCOV_EXCL_LINE
262 dbus_error_free(&err);
265 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
266 SLOG(LOG_ERROR, TAG_VCC, "fail dbus_bus_request_name()"); //LCOV_EXCL_LINE
267 __vc_dbus_connection_free();
271 if (NULL != g_fd_handler) {
272 SLOG(LOG_WARN, TAG_VCC, "The handler already exists."); //LCOV_EXCL_LINE
273 __vc_dbus_connection_free();
277 char rule[256] = {0, };
278 snprintf(rule, 256, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
280 /* add a rule for which messages we want to see */
281 dbus_bus_add_match(g_conn_listener, rule, &err);
283 if (dbus_error_is_set(&err)) {
284 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message); //LCOV_EXCL_LINE
285 dbus_error_free(&err);
286 __vc_dbus_connection_free();
287 return VC_ERROR_OPERATION_FAILED;
291 if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
292 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus "); //LCOV_EXCL_LINE
293 __vc_dbus_connection_free();
294 return VC_ERROR_OPERATION_FAILED;
296 SLOG(LOG_DEBUG, TAG_VCC, "Get fd from dbus : %d", fd);
299 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn_listener, NULL, NULL);
300 if (NULL == g_fd_handler) {
301 SLOG(LOG_ERROR, TAG_VCC, "fail to get fd handler from ecore "); //LCOV_EXCL_LINE
302 __vc_dbus_connection_free();
303 return VC_ERROR_OPERATION_FAILED;
309 int vc_dbus_close_connection()
312 dbus_error_init(&err);
314 if (NULL != g_fd_handler) {
315 ecore_main_fd_handler_del(g_fd_handler);
319 if (NULL != g_conn_listener) {
322 char service_name[64];
323 memset(service_name, '\0', 64);
324 snprintf(service_name, 64, "%s%d", VC_CLIENT_SERVICE_NAME, pid);
326 dbus_bus_release_name(g_conn_listener, service_name, &err);
328 if (dbus_error_is_set(&err)) {
329 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
330 dbus_error_free(&err);
334 __vc_dbus_connection_free();
339 int vc_dbus_reconnect()
341 if (!g_conn_sender || !g_conn_listener) {
342 vc_dbus_close_connection();
344 if (0 != vc_dbus_open_connection()) {
345 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect"); //LCOV_EXCL_LINE
349 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect"); //LCOV_EXCL_LINE
353 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
354 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
355 SLOG(LOG_WARN, TAG_VCC, "[DBUS] Sender(%s) Listener(%s)",
356 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected"); //LCOV_EXCL_LINE
358 if (false == sender_connected || false == listener_connected) {
359 vc_dbus_close_connection();
361 if (0 != vc_dbus_open_connection()) {
362 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect"); //LCOV_EXCL_LINE
366 SLOG(LOG_DEBUG, TAG_VCC, "[DBUS] Reconnect"); //LCOV_EXCL_LINE
372 static int __dbus_check()
374 if (NULL == g_conn_sender) {
375 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection"); //LCOV_EXCL_LINE
376 return vc_dbus_reconnect();
381 int vc_dbus_request_hello()
383 if (0 != __dbus_check()) {
384 return VC_ERROR_OPERATION_FAILED;
389 msg = dbus_message_new_method_call(
390 VC_SERVER_SERVICE_NAME,
391 VC_SERVER_SERVICE_OBJECT_PATH,
392 VC_SERVER_SERVICE_INTERFACE,
396 SLOG(LOG_ERROR, TAG_VCC, "@@ Request vc hello : Fail to make message"); //LCOV_EXCL_LINE
397 return VC_ERROR_OPERATION_FAILED;
401 dbus_error_init(&err);
403 DBusMessage* result_msg = NULL;
406 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, -1, &err);
408 if (dbus_error_is_set(&err)) {
409 SLOG(LOG_DEBUG, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
410 dbus_error_free(&err);
413 dbus_message_unref(msg);
415 if (NULL != result_msg) {
416 dbus_message_unref(result_msg);
419 result = VC_ERROR_TIMED_OUT;
426 int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state, int* daemon_pid)
428 if (0 != __dbus_check()) {
429 return VC_ERROR_OPERATION_FAILED;
434 msg = dbus_message_new_method_call(
435 VC_SERVER_SERVICE_NAME,
436 VC_SERVER_SERVICE_OBJECT_PATH,
437 VC_SERVER_SERVICE_INTERFACE,
438 VC_METHOD_INITIALIZE);
441 SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : Fail to make message "); //LCOV_EXCL_LINE
442 return VC_ERROR_OPERATION_FAILED;
444 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : pid(%d)", pid);
447 dbus_message_append_args(msg,
448 DBUS_TYPE_INT32, &pid,
452 dbus_error_init(&err);
454 DBusMessage* result_msg;
455 int result = VC_ERROR_OPERATION_FAILED;
457 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
458 dbus_message_unref(msg);
460 if (dbus_error_is_set(&err)) {
461 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
462 dbus_error_free(&err);
465 if (NULL != result_msg) {
467 int tmp_service_state = 0;
468 int tmp_daemon_pid = 0;
469 dbus_message_get_args(result_msg, &err,
470 DBUS_TYPE_INT32, &result,
471 DBUS_TYPE_INT32, &tmp,
472 DBUS_TYPE_INT32, &tmp_service_state,
473 DBUS_TYPE_INT32, &tmp_daemon_pid,
476 if (dbus_error_is_set(&err)) {
477 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message); //LCOV_EXCL_LINE
478 dbus_error_free(&err);
479 result = VC_ERROR_OPERATION_FAILED;
482 dbus_message_unref(result_msg);
486 *service_state = tmp_service_state;
487 *daemon_pid = tmp_daemon_pid;
489 /* add a rule for daemon error */
490 char rule[256] = {0, };
491 snprintf(rule, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
492 dbus_bus_add_match(g_conn_listener, rule, &err);
494 if (dbus_error_is_set(&err)) {
495 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message); //LCOV_EXCL_LINE
496 dbus_error_free(&err);
499 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : result = %d mgr = %d service = %d daemon_pid = %d", result, *mgr_pid, *service_state, *daemon_pid); //LCOV_EXCL_LINE
501 SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : result = %d", result); //LCOV_EXCL_LINE
504 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL "); //LCOV_EXCL_LINE
506 result = VC_ERROR_TIMED_OUT;
512 int vc_dbus_request_finalize(int pid)
515 dbus_error_init(&err);
517 if (0 != __dbus_check()) {
518 return VC_ERROR_OPERATION_FAILED;
521 /* remove a rule for daemon error */
522 char rule_err[256] = {0, };
523 snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
524 dbus_bus_remove_match(g_conn_listener, rule_err, &err);
525 dbus_connection_flush(g_conn_listener);
527 if (dbus_error_is_set(&err)) {
528 SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message); //LCOV_EXCL_LINE
529 dbus_error_free(&err);
534 msg = dbus_message_new_method_call(
535 VC_SERVER_SERVICE_NAME,
536 VC_SERVER_SERVICE_OBJECT_PATH,
537 VC_SERVER_SERVICE_INTERFACE,
541 SLOG(LOG_ERROR, TAG_VCC, "@@ vc finalize : Fail to make message "); //LCOV_EXCL_LINE
542 return VC_ERROR_OPERATION_FAILED;
544 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc finalize : pid(%d)", pid);
547 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
549 DBusMessage* result_msg;
550 int result = VC_ERROR_OPERATION_FAILED;
552 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
553 dbus_message_unref(msg);
555 if (dbus_error_is_set(&err)) {
556 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
557 dbus_error_free(&err);
560 if (NULL != result_msg) {
561 dbus_message_get_args(result_msg, &err,
562 DBUS_TYPE_INT32, &result,
565 if (dbus_error_is_set(&err)) {
566 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message); //LCOV_EXCL_LINE
567 dbus_error_free(&err);
568 result = VC_ERROR_OPERATION_FAILED;
571 dbus_message_unref(result_msg);
574 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc finalize : result = %d", result);
576 SLOG(LOG_ERROR, TAG_VCC, "@@ vc finalize : result = %d", result);
579 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL "); //LCOV_EXCL_LINE
581 result = VC_ERROR_TIMED_OUT;
588 int vc_dbus_request_set_exclusive_command(int pid, bool value)
590 if (0 != __dbus_check()) {
591 return VC_ERROR_OPERATION_FAILED;
596 msg = dbus_message_new_method_call(
597 VC_SERVER_SERVICE_NAME,
598 VC_SERVER_SERVICE_OBJECT_PATH,
599 VC_SERVER_SERVICE_INTERFACE,
600 VC_METHOD_SET_EXCLUSIVE_CMD);
603 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set exclusive command : Fail to make message"); //LCOV_EXCL_LINE
604 return VC_ERROR_OPERATION_FAILED;
606 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : pid(%d)", pid);
611 dbus_message_append_args(msg,
612 DBUS_TYPE_INT32, &pid,
613 DBUS_TYPE_INT32, &temp,
617 dbus_error_init(&err);
619 DBusMessage* result_msg;
620 int result = VC_ERROR_OPERATION_FAILED;
622 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
623 dbus_message_unref(msg);
625 if (dbus_error_is_set(&err)) {
626 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
627 dbus_error_free(&err);
630 if (NULL != result_msg) {
631 dbus_message_get_args(result_msg, &err,
632 DBUS_TYPE_INT32, &result,
635 if (dbus_error_is_set(&err)) {
636 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message); //LCOV_EXCL_LINE
637 dbus_error_free(&err);
638 result = VC_ERROR_OPERATION_FAILED;
640 dbus_message_unref(result_msg);
643 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : result = %d", result);
645 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set exclusive command : result = %d", result);
648 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL"); //LCOV_EXCL_LINE
650 result = VC_ERROR_TIMED_OUT;
657 int vc_dbus_request_set_command(int pid, vc_cmd_type_e cmd_type)
659 if (0 != __dbus_check()) {
660 return VC_ERROR_OPERATION_FAILED;
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_SET_COMMAND);
672 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : Fail to make message"); //LCOV_EXCL_LINE
673 return VC_ERROR_OPERATION_FAILED;
675 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : pid(%d)", pid);
678 dbus_message_append_args(msg,
679 DBUS_TYPE_INT32, &pid,
680 DBUS_TYPE_INT32, &cmd_type,
684 dbus_error_init(&err);
686 DBusMessage* result_msg;
687 int result = VC_ERROR_OPERATION_FAILED;
689 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
690 dbus_message_unref(msg);
692 if (dbus_error_is_set(&err)) {
693 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
694 dbus_error_free(&err);
697 if (NULL != result_msg) {
698 dbus_message_get_args(result_msg, &err,
699 DBUS_TYPE_INT32, &result,
702 if (dbus_error_is_set(&err)) {
703 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message); //LCOV_EXCL_LINE
704 dbus_error_free(&err);
705 result = VC_ERROR_OPERATION_FAILED;
707 dbus_message_unref(result_msg);
710 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : result = %d", result);
712 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : result = %d", result);
715 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL"); //LCOV_EXCL_LINE
717 result = VC_ERROR_TIMED_OUT;
723 int vc_dbus_request_unset_command(int pid, vc_cmd_type_e cmd_type)
725 if (0 != __dbus_check()) {
726 return VC_ERROR_OPERATION_FAILED;
731 msg = dbus_message_new_method_call(
732 VC_SERVER_SERVICE_NAME,
733 VC_SERVER_SERVICE_OBJECT_PATH,
734 VC_SERVER_SERVICE_INTERFACE,
735 VC_METHOD_UNSET_COMMAND);
738 SLOG(LOG_ERROR, TAG_VCC, "@@ vc unset command : Fail to make message"); //LCOV_EXCL_LINE
739 return VC_ERROR_OPERATION_FAILED;
741 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc unset command : pid(%d), type(%d)", pid, cmd_type);
744 dbus_message_append_args(msg,
745 DBUS_TYPE_INT32, &pid,
746 DBUS_TYPE_INT32, &cmd_type,
750 dbus_error_init(&err);
752 DBusMessage* result_msg;
753 int result = VC_ERROR_OPERATION_FAILED;
755 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
756 dbus_message_unref(msg);
758 if (dbus_error_is_set(&err)) {
759 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
760 dbus_error_free(&err);
763 if (NULL != result_msg) {
764 dbus_message_get_args(result_msg, &err,
765 DBUS_TYPE_INT32, &result,
768 if (dbus_error_is_set(&err)) {
769 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message); //LCOV_EXCL_LINE
770 dbus_error_free(&err);
771 result = VC_ERROR_OPERATION_FAILED;
773 dbus_message_unref(result_msg);
776 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc unset command : result = %d", result);
778 SLOG(LOG_ERROR, TAG_VCC, "@@ vc unset command : result = %d", result);
781 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL"); //LCOV_EXCL_LINE
783 result = VC_ERROR_TIMED_OUT;
789 int vc_dbus_set_foreground(int pid, bool value)
791 if (0 != __dbus_check()) {
792 return VC_ERROR_OPERATION_FAILED;
795 DBusMessage* msg = NULL;
798 tmp_value = (int)value;
800 msg = dbus_message_new_signal(
801 VC_MANAGER_SERVICE_OBJECT_PATH,
802 VC_MANAGER_SERVICE_INTERFACE,
803 VCC_MANAGER_METHOD_SET_FOREGROUND);
806 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set foreground to manager : Fail to make message"); //LCOV_EXCL_LINE
807 return VC_ERROR_OPERATION_FAILED;
809 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set foreground to manager : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
812 dbus_message_append_args(msg,
813 DBUS_TYPE_INT32, &pid,
814 DBUS_TYPE_INT32, &tmp_value,
817 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
818 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send"); //LCOV_EXCL_LINE
819 return VC_ERROR_OPERATION_FAILED;
822 dbus_message_unref(msg);
825 msg = dbus_message_new_method_call(
826 VC_SERVER_SERVICE_NAME,
827 VC_SERVER_SERVICE_OBJECT_PATH,
828 VC_SERVER_SERVICE_INTERFACE,
829 VC_METHOD_SET_FOREGROUND);
832 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set foreground to daemon : Fail to make message"); //LCOV_EXCL_LINE
833 return VC_ERROR_OPERATION_FAILED;
835 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set foreground to daemon : client pid(%d), value(%s)", pid, tmp_value ? "true" : "false");
838 dbus_message_append_args(msg,
839 DBUS_TYPE_INT32, &pid,
840 DBUS_TYPE_INT32, &tmp_value,
843 dbus_message_set_no_reply(msg, TRUE);
845 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
846 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send"); //LCOV_EXCL_LINE
847 return VC_ERROR_OPERATION_FAILED;
850 dbus_connection_flush(g_conn_sender);
852 dbus_message_unref(msg);
858 int vc_dbus_set_server_dialog(int pid, const char* app_id, const char* credential)
860 if (NULL == g_conn_sender) {
861 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection");
862 if (0 != vc_dbus_reconnect()) {
863 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect");
868 msg = dbus_message_new_method_call(
869 VC_SERVER_SERVICE_NAME,
870 VC_SERVER_SERVICE_OBJECT_PATH,
871 VC_SERVER_SERVICE_INTERFACE,
872 VC_METHOD_SET_SERVER_DIALOG);
875 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set server dialog : Fail to make message");
876 return VC_ERROR_OPERATION_FAILED;
878 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set server dialog : pid(%d), app_id(%s)", pid, app_id);
881 dbus_message_append_args(msg,
882 DBUS_TYPE_INT32, &pid,
883 DBUS_TYPE_STRING, &app_id,
884 DBUS_TYPE_STRING, &credential,
888 dbus_error_init(&err);
890 DBusMessage* result_msg;
891 int result = VC_ERROR_OPERATION_FAILED;
893 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
894 dbus_message_unref(msg);
896 if (dbus_error_is_set(&err)) {
897 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
898 dbus_error_free(&err);
901 if (NULL != result_msg) {
902 dbus_message_get_args(result_msg, &err,
903 DBUS_TYPE_INT32, &result,
906 if (dbus_error_is_set(&err)) {
907 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
908 dbus_error_free(&err);
909 result = VC_ERROR_OPERATION_FAILED;
911 dbus_message_unref(result_msg);
914 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set server dialog : result = %d", result);
916 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set server dialog : result = %d", result);
919 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
921 result = VC_ERROR_TIMED_OUT;
928 int vc_dbus_request_dialog(int pid, const char* disp_text, const char* utt_text, bool continuous)
930 if (NULL == g_conn_sender) {
931 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection"); //LCOV_EXCL_LINE
932 if (0 != vc_dbus_reconnect()) {
933 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect"); //LCOV_EXCL_LINE
938 int tmp_continue = 0;
940 tmp_continue = (int)continuous;
942 msg = dbus_message_new_method_call(
943 VC_SERVER_SERVICE_NAME,
944 VC_SERVER_SERVICE_OBJECT_PATH,
945 VC_SERVER_SERVICE_INTERFACE,
949 SLOG(LOG_ERROR, TAG_VCC, "@@ vc request dialog to manager : Fail to make message"); //LCOV_EXCL_LINE
950 return VC_ERROR_OPERATION_FAILED;
952 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc request dialog to manager : client pid(%d), disp_text(%s), utt_text(%s), continuous(%d)", getpid(), disp_text, utt_text, continuous);
955 dbus_message_append_args(msg,
956 DBUS_TYPE_INT32, &pid,
957 DBUS_TYPE_STRING, &disp_text,
958 DBUS_TYPE_STRING, &utt_text,
959 DBUS_TYPE_INT32, &tmp_continue,
962 dbus_message_set_no_reply(msg, TRUE);
964 if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
965 SLOG(LOG_ERROR, TAG_VCC, "[Dbus ERROR] Fail to Send"); //LCOV_EXCL_LINE
966 return VC_ERROR_OPERATION_FAILED;
968 SLOG(LOG_DEBUG, TAG_VCC, "[Dbus DEBUG] Success to Send");
969 dbus_connection_flush(g_conn_sender);
972 dbus_message_unref(msg);
979 dbus_error_init(&err);
981 DBusMessage* result_msg;
982 int result = VC_ERROR_OPERATION_FAILED;
984 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
985 dbus_message_unref(msg);
987 if (dbus_error_is_set(&err)) {
988 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
989 dbus_error_free(&err);
992 if (NULL != result_msg) {
993 dbus_message_get_args(result_msg, &err,
994 DBUS_TYPE_INT32, &result,
997 if (dbus_error_is_set(&err)) {
998 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
999 dbus_error_free(&err);
1000 result = VC_ERROR_OPERATION_FAILED;
1002 dbus_message_unref(result_msg);
1005 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc set command : result = %d", result);
1007 SLOG(LOG_ERROR, TAG_VCC, "@@ vc set command : result = %d", result);
1010 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL");
1011 vc_dbus_reconnect();
1012 result = VC_ERROR_TIMED_OUT;
1020 int vc_dbus_request_is_system_command_valid(int pid, bool* is_sys_cmd_valid)
1022 if (NULL == g_conn_sender) {
1023 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] NULL connection"); //LCOV_EXCL_LINE
1024 if (0 != vc_dbus_reconnect()) {
1025 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to reconnect"); //LCOV_EXCL_LINE
1031 msg = dbus_message_new_method_call(
1032 VC_SERVER_SERVICE_NAME,
1033 VC_SERVER_SERVICE_OBJECT_PATH,
1034 VC_SERVER_SERVICE_INTERFACE,
1035 VC_METHOD_IS_SYS_COMMAND_VALID);
1038 SLOG(LOG_ERROR, TAG_VCC, "@@ vc is system command valid : Fail to make message"); //LCOV_EXCL_LINE
1039 return VC_ERROR_OPERATION_FAILED;
1041 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc is system command valid : pid(%d)", pid);
1044 dbus_message_append_args(msg,
1045 DBUS_TYPE_INT32, &pid,
1049 dbus_error_init(&err);
1050 int tmp_sys_cmd = 0;
1052 DBusMessage* result_msg;
1053 int result = VC_ERROR_OPERATION_FAILED;
1055 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1056 dbus_message_unref(msg);
1058 if (dbus_error_is_set(&err)) {
1059 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message); //LCOV_EXCL_LINE
1060 dbus_error_free(&err);
1063 if (NULL != result_msg) {
1064 dbus_message_get_args(result_msg, &err,
1065 DBUS_TYPE_INT32, &result,
1066 DBUS_TYPE_INT32, &tmp_sys_cmd,
1069 if (dbus_error_is_set(&err)) {
1070 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message); //LCOV_EXCL_LINE
1071 dbus_error_free(&err);
1072 result = VC_ERROR_OPERATION_FAILED;
1074 dbus_message_unref(result_msg);
1077 *is_sys_cmd_valid = (bool)tmp_sys_cmd;
1078 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc is system command valid : result = %d, is_sys_cmd_valid = %d", result, *is_sys_cmd_valid);
1080 SLOG(LOG_ERROR, TAG_VCC, "@@ vc is system command valid : result = %d", result);
1083 SLOG(LOG_ERROR, TAG_VCC, "@@ Result message is NULL"); //LCOV_EXCL_LINE
1084 vc_dbus_reconnect();
1085 result = VC_ERROR_TIMED_OUT;
1093 int vc_dbus_request_start(int pid, int silence)
1097 /* create a signal & check for errors */
1098 msg = dbus_message_new_method_call(
1099 VC_SERVER_SERVICE_NAME,
1100 VC_SERVER_SERVICE_OBJECT_PATH,
1101 VC_SERVER_SERVICE_INTERFACE,
1102 VC_METHOD_REQUEST_START);
1105 SLOG(LOG_ERROR, TAG_VCC, "@@ vc start : Fail to make message ");
1106 return VC_ERROR_OPERATION_FAILED;
1108 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc start : pid(%d), silence(%d)", pid, silence);
1111 DBusMessageIter args;
1112 dbus_message_iter_init_append(msg, &args);
1115 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1116 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
1119 dbus_error_init(&err);
1121 DBusMessage* result_msg;
1122 int result = VC_ERROR_OPERATION_FAILED;
1124 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1125 dbus_message_unref(msg);
1127 if (dbus_error_is_set(&err)) {
1128 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1129 dbus_error_free(&err);
1132 if (NULL != result_msg) {
1133 dbus_message_get_args(result_msg, &err,
1134 DBUS_TYPE_INT32, &result,
1137 if (dbus_error_is_set(&err)) {
1138 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1139 dbus_error_free(&err);
1140 result = VC_ERROR_OPERATION_FAILED;
1142 dbus_message_unref(result_msg);
1145 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc start : result = %d", result);
1147 SLOG(LOG_ERROR, TAG_VCC, "@@ vc start : result = %d", result);
1150 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1151 vc_dbus_reconnect();
1152 result = VC_ERROR_TIMED_OUT;
1158 int vc_dbus_request_stop(int pid)
1162 /* create a signal & check for errors */
1163 msg = dbus_message_new_method_call(
1164 VC_SERVER_SERVICE_NAME,
1165 VC_SERVER_SERVICE_OBJECT_PATH,
1166 VC_SERVER_SERVICE_INTERFACE,
1167 VC_METHOD_REQUEST_STOP);
1170 SLOG(LOG_ERROR, TAG_VCC, "@@ vc stop : Fail to make message ");
1171 return VC_ERROR_OPERATION_FAILED;
1173 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc stop : pid(%d)", pid);
1176 dbus_message_append_args(msg,
1177 DBUS_TYPE_INT32, &pid,
1181 dbus_error_init(&err);
1183 DBusMessage* result_msg;
1184 int result = VC_ERROR_OPERATION_FAILED;
1186 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1187 dbus_message_unref(msg);
1189 if (dbus_error_is_set(&err)) {
1190 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1191 dbus_error_free(&err);
1194 if (NULL != result_msg) {
1195 dbus_message_get_args(result_msg, &err,
1196 DBUS_TYPE_INT32, &result,
1199 if (dbus_error_is_set(&err)) {
1200 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1201 dbus_error_free(&err);
1202 result = VC_ERROR_OPERATION_FAILED;
1204 dbus_message_unref(result_msg);
1207 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc stop : result = %d", result);
1209 SLOG(LOG_ERROR, TAG_VCC, "@@ vc stop : result = %d", result);
1212 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1213 vc_dbus_reconnect();
1214 result = VC_ERROR_TIMED_OUT;
1220 int vc_dbus_request_cancel(int pid)
1224 /* create a signal & check for errors */
1225 msg = dbus_message_new_method_call(
1226 VC_SERVER_SERVICE_NAME,
1227 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
1228 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
1229 VC_METHOD_REQUEST_CANCEL); /* name of the signal */
1232 SLOG(LOG_ERROR, TAG_VCC, "@@ vc cancel : Fail to make message ");
1233 return VC_ERROR_OPERATION_FAILED;
1235 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc cancel : pid(%d)", pid);
1238 dbus_message_append_args(msg,
1239 DBUS_TYPE_INT32, &pid,
1243 dbus_error_init(&err);
1245 DBusMessage* result_msg;
1246 int result = VC_ERROR_OPERATION_FAILED;
1248 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1249 dbus_message_unref(msg);
1251 if (dbus_error_is_set(&err)) {
1252 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1253 dbus_error_free(&err);
1256 if (NULL != result_msg) {
1257 dbus_message_get_args(result_msg, &err,
1258 DBUS_TYPE_INT32, &result,
1261 if (dbus_error_is_set(&err)) {
1262 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1263 dbus_error_free(&err);
1264 result = VC_ERROR_OPERATION_FAILED;
1266 dbus_message_unref(result_msg);
1269 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc cancel : result = %d", result);
1271 SLOG(LOG_ERROR, TAG_VCC, "@@ vc cancel : result = %d", result);
1274 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1275 vc_dbus_reconnect();
1276 result = VC_ERROR_TIMED_OUT;
1286 int vc_dbus_request_auth_enable(int pid, int mgr_pid)
1288 if (0 != __dbus_check()) {
1289 return VC_ERROR_OPERATION_FAILED;
1294 char service_name[64] = {0,};
1295 char object_path[64] = {0,};
1296 char target_if_name[128] = {0,};
1298 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1299 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1300 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1302 /* create a signal & check for errors */
1303 msg = dbus_message_new_method_call(
1305 object_path, /* object name of the signal */
1306 target_if_name, /* interface name of the signal */
1307 VC_METHOD_AUTH_ENABLE); /* name of the signal */
1310 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth enable : Fail to make message ");
1311 return VC_ERROR_OPERATION_FAILED;
1313 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth enable : pid(%d)", pid);
1316 dbus_message_append_args(msg,
1317 DBUS_TYPE_INT32, &pid,
1321 dbus_error_init(&err);
1323 DBusMessage* result_msg;
1324 int result = VC_ERROR_OPERATION_FAILED;
1326 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1327 dbus_message_unref(msg);
1329 if (dbus_error_is_set(&err)) {
1330 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1331 dbus_error_free(&err);
1334 if (NULL != result_msg) {
1335 dbus_message_get_args(result_msg, &err,
1336 DBUS_TYPE_INT32, &result,
1339 if (dbus_error_is_set(&err)) {
1340 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1341 dbus_error_free(&err);
1342 result = VC_ERROR_OPERATION_FAILED;
1344 dbus_message_unref(result_msg);
1347 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth enable : result = %d", result);
1349 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth enable : result = %d", result);
1352 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1353 vc_dbus_reconnect();
1354 result = VC_ERROR_TIMED_OUT;
1360 int vc_dbus_request_auth_disable(int pid, int mgr_pid)
1362 if (0 != __dbus_check()) {
1363 return VC_ERROR_OPERATION_FAILED;
1368 char service_name[64] = {0,};
1369 char object_path[64] = {0,};
1370 char target_if_name[128] = {0,};
1372 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1373 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1374 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1376 /* create a signal & check for errors */
1377 msg = dbus_message_new_method_call(
1379 object_path, /* object name of the signal */
1380 target_if_name, /* interface name of the signal */
1381 VC_METHOD_AUTH_DISABLE); /* name of the signal */
1384 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth disable : Fail to make message ");
1385 return VC_ERROR_OPERATION_FAILED;
1387 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth disable : pid(%d)", pid);
1390 dbus_message_append_args(msg,
1391 DBUS_TYPE_INT32, &pid,
1395 dbus_error_init(&err);
1397 DBusMessage* result_msg;
1398 int result = VC_ERROR_OPERATION_FAILED;
1400 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1401 dbus_message_unref(msg);
1403 if (dbus_error_is_set(&err)) {
1404 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1405 dbus_error_free(&err);
1408 if (NULL != result_msg) {
1409 dbus_message_get_args(result_msg, &err,
1410 DBUS_TYPE_INT32, &result,
1413 if (dbus_error_is_set(&err)) {
1414 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1415 dbus_error_free(&err);
1416 result = VC_ERROR_OPERATION_FAILED;
1418 dbus_message_unref(result_msg);
1421 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth disable : result = %d", result);
1423 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth disable : result = %d", result);
1426 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1427 vc_dbus_reconnect();
1428 result = VC_ERROR_TIMED_OUT;
1434 int vc_dbus_request_auth_start(int pid, int mgr_pid)
1436 if (0 != __dbus_check()) {
1437 return VC_ERROR_OPERATION_FAILED;
1442 char service_name[64] = {0,};
1443 char object_path[64] = {0,};
1444 char target_if_name[128] = {0,};
1446 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1447 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1448 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1450 /* create a signal & check for errors */
1451 msg = dbus_message_new_method_call(
1455 VC_METHOD_AUTH_START);
1458 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth start : Fail to make message ");
1459 return VC_ERROR_OPERATION_FAILED;
1461 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth start : pid(%d)", pid);
1464 DBusMessageIter args;
1465 dbus_message_iter_init_append(msg, &args);
1468 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
1471 dbus_error_init(&err);
1473 DBusMessage* result_msg;
1474 int result = VC_ERROR_OPERATION_FAILED;
1476 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1477 dbus_message_unref(msg);
1479 if (dbus_error_is_set(&err)) {
1480 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1481 dbus_error_free(&err);
1484 if (NULL != result_msg) {
1485 dbus_message_get_args(result_msg, &err,
1486 DBUS_TYPE_INT32, &result,
1489 if (dbus_error_is_set(&err)) {
1490 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1491 dbus_error_free(&err);
1492 result = VC_ERROR_OPERATION_FAILED;
1494 dbus_message_unref(result_msg);
1497 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth start : result = %d", result);
1499 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth start : result = %d", result);
1502 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1503 vc_dbus_reconnect();
1504 result = VC_ERROR_TIMED_OUT;
1510 int vc_dbus_request_auth_stop(int pid, int mgr_pid)
1512 if (0 != __dbus_check()) {
1513 return VC_ERROR_OPERATION_FAILED;
1518 char service_name[64] = {0,};
1519 char object_path[64] = {0,};
1520 char target_if_name[128] = {0,};
1522 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1523 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1524 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1526 /* create a signal & check for errors */
1527 msg = dbus_message_new_method_call(
1531 VC_METHOD_AUTH_STOP);
1534 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth stop : Fail to make message ");
1535 return VC_ERROR_OPERATION_FAILED;
1537 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth stop : pid(%d)", pid);
1540 dbus_message_append_args(msg,
1541 DBUS_TYPE_INT32, &pid,
1545 dbus_error_init(&err);
1547 DBusMessage* result_msg;
1548 int result = VC_ERROR_OPERATION_FAILED;
1550 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1551 dbus_message_unref(msg);
1553 if (dbus_error_is_set(&err)) {
1554 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1555 dbus_error_free(&err);
1558 if (NULL != result_msg) {
1559 dbus_message_get_args(result_msg, &err,
1560 DBUS_TYPE_INT32, &result,
1563 if (dbus_error_is_set(&err)) {
1564 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1565 dbus_error_free(&err);
1566 result = VC_ERROR_OPERATION_FAILED;
1568 dbus_message_unref(result_msg);
1571 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth stop : result = %d", result);
1573 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth stop : result = %d", result);
1576 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1577 vc_dbus_reconnect();
1578 result = VC_ERROR_TIMED_OUT;
1584 int vc_dbus_request_auth_cancel(int pid, int mgr_pid)
1586 if (0 != __dbus_check()) {
1587 return VC_ERROR_OPERATION_FAILED;
1592 char service_name[64] = {0,};
1593 char object_path[64] = {0,};
1594 char target_if_name[128] = {0,};
1596 snprintf(service_name, 64, "%s%d", VC_MANAGER_SERVICE_NAME, mgr_pid);
1597 snprintf(object_path, 64, "%s", VC_MANAGER_SERVICE_OBJECT_PATH);
1598 snprintf(target_if_name, 128, "%s%d", VC_MANAGER_SERVICE_INTERFACE, mgr_pid);
1600 /* create a signal & check for errors */
1601 msg = dbus_message_new_method_call(
1603 object_path, /* object name of the signal */
1604 target_if_name, /* interface name of the signal */
1605 VC_METHOD_AUTH_CANCEL); /* name of the signal */
1608 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth cancel : Fail to make message ");
1609 return VC_ERROR_OPERATION_FAILED;
1611 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth cancel : pid(%d)", pid);
1614 dbus_message_append_args(msg,
1615 DBUS_TYPE_INT32, &pid,
1619 dbus_error_init(&err);
1621 DBusMessage* result_msg;
1622 int result = VC_ERROR_OPERATION_FAILED;
1624 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, g_waiting_time, &err);
1625 dbus_message_unref(msg);
1627 if (dbus_error_is_set(&err)) {
1628 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
1629 dbus_error_free(&err);
1632 if (NULL != result_msg) {
1633 dbus_message_get_args(result_msg, &err,
1634 DBUS_TYPE_INT32, &result,
1637 if (dbus_error_is_set(&err)) {
1638 SLOG(LOG_ERROR, TAG_VCC, "@@ Get arguments error (%s)", err.message);
1639 dbus_error_free(&err);
1640 result = VC_ERROR_OPERATION_FAILED;
1642 dbus_message_unref(result_msg);
1645 SLOG(LOG_DEBUG, TAG_VCC, "@@ vc auth cancel : result = %d", result);
1647 SLOG(LOG_ERROR, TAG_VCC, "@@ vc auth cancel : result = %d", result);
1650 SLOG(LOG_DEBUG, TAG_VCC, "@@ Result Message is NULL");
1651 vc_dbus_reconnect();
1652 result = VC_ERROR_TIMED_OUT;