Update IPC for service state and volume, Support recognition mode 24/46324/2
authorLee Dongyeol <dy3.lee@samsung.com>
Wed, 19 Aug 2015 07:58:41 +0000 (16:58 +0900)
committerLee Dongyeol <dy3.lee@samsung.com>
Thu, 20 Aug 2015 02:06:21 +0000 (11:06 +0900)
Change-Id: I6356c1ff843faf46298b23dcd1589514f6c9270c

32 files changed:
CMakeLists.txt
changelog
client/vc.c
client/vc_dbus.c
client/vc_dbus.h
client/vc_mgr.c
client/vc_mgr_client.c
client/vc_mgr_client.h
client/vc_mgr_dbus.c
client/vc_mgr_dbus.h
client/vc_widget.c
client/vc_widget_client.c
client/vc_widget_dbus.c
client/vc_widget_dbus.h
common/vc_config_mgr.c
common/vc_config_mgr.h
common/vc_config_parser.c
common/vc_config_parser.h
common/vc_defs.h
include/voice_control_manager.h
packaging/voice-control.spec
server/vcd_client_data.c
server/vcd_client_data.h
server/vcd_config.c
server/vcd_dbus.c
server/vcd_dbus.h
server/vcd_dbus_server.c
server/vcd_engine_agent.c
server/vcd_recorder.c
server/vcd_server.c
server/vcd_server.h
vc-server.conf

index ccb3a92..4397548 100644 (file)
@@ -26,7 +26,7 @@ PROJECT(vc)
 
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(EXEC_PREFIX "${PREFIX}")
-SET(VERSION 0.2.8)
+SET(VERSION 0.2.9)
 
 # pkg config tool
 INCLUDE(FindPkgConfig)
index 7c80c65..9f2aae1 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,8 +1,15 @@
+voice-control (0.2.9) -- Mon, 6 Jul 2015
+
+  * Update daemon start by dbus activation (Dongyeol Lee <dy3.lee@samsung.com>)
+  * Add audio header and Fix volume data (Kwangyoun Kim <ky85.kim@samsung.com>)
+  * Update file IPC for service state to dbus IPC (Dongyeol Lee <dy3.lee@samsung.com>)
+
 voice-control (0.2.8) -- Thu, 18 Jun 2015
 
   * Update IPC and remove volume file (Dongyeol Lee <dy3.lee@samsung.com>)
-  * Add daemon activation by dbus (Kwangyoun Kim <ky85.kim@samsung.com>)
-  * Change config directory for multi-client (Kwnagyoun Kim <ky85.kim@samsung.com>)
+  * Add to check app state using APP FW api (Dongyeol Lee <dy3.lee@samsung.com>)
+  * Add recognition mode (Dongyeol Lee <dy3.lee@samsung.com>)
+  * Clean up code by coding rule (Dongyeol Lee <dy3.lee@samsung.com>)
 
 vc (0.2.7) -- Wed, 21 Jan 2015
 
index a5b7ed3..825bb9e 100644 (file)
@@ -14,6 +14,7 @@
 * limitations under the License.
 */
 
+#include <aul.h>
 
 #include "vc_client.h"
 #include "vc_command.h"
@@ -94,28 +95,28 @@ static void __vc_lang_changed_cb(const char* before_lang, const char* current_la
        return;
 }
 
-static void __vc_service_state_changed_cb(int before_state, int current_state)
+static Eina_Bool __notify_auth_changed_cb(void *data)
 {
-       SLOG(LOG_DEBUG, TAG_VCC, "Service State changed : Before(%d) Current(%d)", 
-               before_state, current_state);
+       vc_auth_state_changed_cb callback = NULL;
+       void* user_data;
 
-       /* Save service state */
-       vc_client_set_service_state(g_vc, (vc_service_state_e)current_state);
+       vc_client_get_auth_state_changed_cb(g_vc, &callback, &user_data);
 
-       vc_service_state_changed_cb service_callback = NULL;
-       void* service_user_data;
-       vc_client_get_service_state_changed_cb(g_vc, &service_callback, &service_user_data);
+       vc_auth_state_e before = -1;
+       vc_auth_state_e current = -1;
+
+       vc_client_get_before_auth_state(g_vc, &before, &current);
 
-       if (NULL != service_callback) {
+       if (NULL != callback) {
                vc_client_use_callback(g_vc);
-               service_callback((vc_service_state_e)before_state, (vc_service_state_e)current_state, service_user_data);
+               callback(before, current, user_data);
                vc_client_not_use_callback(g_vc);
-               SLOG(LOG_DEBUG, TAG_VCC, "Service state changed callback is called");
+               SLOG(LOG_DEBUG, TAG_VCC, "Auth state changed callback is called");
        } else {
-               SLOG(LOG_WARN, TAG_VCC, "[WARNING] State changed callback is NULL");
+               SLOG(LOG_WARN, TAG_VCC, "[WARNING] Auth state changed callback is null");
        }
 
-       return;
+       return EINA_FALSE;
 }
 
 
@@ -160,25 +161,6 @@ int vc_initialize(void)
                return __vc_convert_config_error_code(ret);
        }
 
-       ret = vc_config_mgr_set_service_state_cb(g_vc->handle, __vc_service_state_changed_cb);
-       if (0 != ret) {
-               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to set service change callback : %d", ret);
-               vc_config_mgr_unset_lang_cb(g_vc->handle);
-               vc_config_mgr_finalize(g_vc->handle);
-               vc_client_destroy(g_vc);
-               return __vc_convert_config_error_code(ret);
-       }
-
-       int service_state = -1;
-       if (0 != vc_config_mgr_get_service_state(&service_state)) {
-               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to get service state");
-               vc_config_mgr_finalize(g_vc->handle);
-               vc_client_destroy(g_vc);
-               return __vc_convert_config_error_code(ret);
-       }
-
-       vc_client_set_service_state(g_vc, service_state);
-
        SLOG(LOG_DEBUG, TAG_VCC, "[Success] pid(%d)", g_vc->handle);
 
        SLOG(LOG_DEBUG, TAG_VCC, "=====");
@@ -243,7 +225,6 @@ int vc_deinitialize(void)
                        ecore_timer_del(g_connect_timer);
                }
 
-               vc_config_mgr_unset_service_state_cb(g_vc->handle);
                vc_config_mgr_unset_lang_cb(g_vc->handle);
                vc_config_mgr_finalize(g_vc->handle);
 
@@ -269,32 +250,6 @@ int vc_deinitialize(void)
        return VC_ERROR_NONE;
 }
 
-static Eina_Bool __notify_auth_changed_cb(void *data)
-{
-       vc_auth_state_changed_cb callback = NULL;
-       void* user_data;
-
-       vc_client_get_auth_state_changed_cb(g_vc, &callback, &user_data);
-
-       vc_auth_state_e before = -1;
-       vc_auth_state_e current = -1;
-       
-       vc_client_get_before_auth_state(g_vc, &before, &current);
-
-       if (NULL != callback) {
-               vc_client_use_callback(g_vc);
-               callback(before, current, user_data);
-               vc_client_not_use_callback(g_vc);
-               SLOG(LOG_DEBUG, TAG_VCC, "Auth state changed callback is called");
-       } else {
-               SLOG(LOG_WARN, TAG_VCC, "[WARNING] Auth state changed callback is null");
-       }
-
-       return EINA_FALSE;
-
-
-}
-
 #if 0
 static Eina_Bool __vc_x_event_window_focus_in(void *data, int type, void *event)
 {
@@ -379,7 +334,8 @@ static Eina_Bool __vc_connect_daemon(void *data)
        /* request initialization */
        int ret = -1;
        int mgr_pid = -1;
-       ret = vc_dbus_request_initialize(g_vc->handle, &mgr_pid);
+       int service_state = 0;
+       ret = vc_dbus_request_initialize(g_vc->handle, &mgr_pid, &service_state);
        if (VC_ERROR_ENGINE_NOT_FOUND == ret) {
                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to initialize : %s", __vc_get_error_code(ret));
 
@@ -403,8 +359,10 @@ static Eina_Bool __vc_connect_daemon(void *data)
                /* Success to connect */
        }
 
-       g_connect_timer = NULL;
+       /* Set service state */
+       vc_client_set_service_state(g_vc, (vc_service_state_e)service_state);
 
+       g_connect_timer = NULL;
 #if 0
        g_focus_in_hander = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, __vc_x_event_window_focus_in, NULL);
        g_focus_out_hander = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, __vc_x_event_window_focus_out, NULL);
@@ -1301,6 +1259,38 @@ int vc_unset_result_cb(void)
        return 0;
 }
 
+int __vc_cb_service_state(int state)
+{
+       vc_service_state_e current_state = (vc_service_state_e)state;
+       vc_service_state_e before_state;
+       vc_client_get_service_state(g_vc, &before_state);
+
+       if (current_state == before_state) {
+               return 0;
+       }
+
+       SLOG(LOG_DEBUG, TAG_VCC, "Service State changed : Before(%d) Current(%d)",
+               before_state, current_state);
+
+       /* Save service state */
+       vc_client_set_service_state(g_vc, current_state);
+
+       vc_service_state_changed_cb callback = NULL;
+       void* service_user_data;
+       vc_client_get_service_state_changed_cb(g_vc, &callback, &service_user_data);
+
+       if (NULL != callback) {
+               vc_client_use_callback(g_vc);
+               callback((vc_service_state_e)before_state, (vc_service_state_e)current_state, service_user_data);
+               vc_client_not_use_callback(g_vc);
+               SLOG(LOG_DEBUG, TAG_VCC, "Service state changed callback is called");
+       } else {
+               SLOG(LOG_WARN, TAG_VCC, "[WARNING] Service state changed callback is null");
+       }
+
+       return 0;
+}
+
 int vc_set_service_state_changed_cb(vc_service_state_changed_cb callback, void* user_data)
 {
        if (NULL == callback)
index e51f4b8..a9ccf9c 100644 (file)
@@ -31,6 +31,8 @@ extern int __vc_cb_error(int pid, int reason);
 
 extern void __vc_cb_result();
 
+extern int __vc_cb_service_state(int state);
+
 
 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
 {
@@ -38,129 +40,120 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle
 
        dbus_connection_read_write_dispatch(g_conn_listener, 50);
 
-       DBusMessage* msg = NULL;
-       msg = dbus_connection_pop_message(g_conn_listener);
+       while (1) {
+               DBusMessage* msg = NULL;
+               msg = dbus_connection_pop_message(g_conn_listener);
 
-       /* loop again if we haven't read a message */
-       if (NULL == msg) { 
-               return ECORE_CALLBACK_RENEW;
-       }
+               /* loop again if we haven't read a message */
+               if (NULL == msg) {
+                       break;
+               }
 
-       DBusError err;
-       dbus_error_init(&err);
+               DBusError err;
+               dbus_error_init(&err);
 
-       char if_name[64];
-       snprintf(if_name, 64, "%s", VC_CLIENT_SERVICE_INTERFACE);
+               char if_name[64] = {0, };
+               snprintf(if_name, 64, "%s", VC_CLIENT_SERVICE_INTERFACE);
 
-       if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_HELLO)) {
-               SLOG(LOG_DEBUG, TAG_VCC, "===== Get Hello");
-               int pid = 0;
-               int response = -1;
+               if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_HELLO)) {
+                       SLOG(LOG_DEBUG, TAG_VCC, "===== Get Hello");
+                       int pid = 0;
+                       int response = -1;
 
-               dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
-                       dbus_error_free(&err);
-               }
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Dbus Error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               if (pid > 0) {
-                       SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc get hello : pid(%d) ", pid);
-                       response = 1;
+                       if (pid > 0) {
+                               SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc get hello : pid(%d) ", pid);
+                               response = 1;
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCC, "<<<< vc get hello : invalid pid ");
+                       }
 
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCC, "<<<< vc get hello : invalid pid ");
-               }
+                       DBusMessage* reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
 
-               DBusMessage* reply = NULL;
-               reply = dbus_message_new_method_return(msg);
-               
-               if (NULL != reply) {
-                       dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
 
-                       if (!dbus_connection_send(g_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to send reply");
-                       else 
-                               SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get hello : result(%d)", response);
+                               if (!dbus_connection_send(g_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get hello : result(%d)", response);
 
-                       dbus_connection_flush(g_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to create reply message");
-               }
-               
-               SLOG(LOG_DEBUG, TAG_VCC, "=====");
-               SLOG(LOG_DEBUG, TAG_VCC, " ");
-       } /* VCD_METHOD_HELLO */
+                               dbus_connection_flush(g_conn_listener);
+                               dbus_message_unref(reply);
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get hello : fail to create reply message");
+                       }
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_RESULT)) {
-               SLOG(LOG_DEBUG, TAG_VCC, "===== Get Client Result");
+                       SLOG(LOG_DEBUG, TAG_VCC, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCC, " ");
+               } /* VCD_METHOD_HELLO */
 
-               __vc_cb_result();
+               else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SET_SERVICE_STATE)) {
+                       int state = 0;
 
-               /*
-               reply = dbus_message_new_method_return(msg);
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               if (NULL != reply) {
-                       if (!dbus_connection_send(g_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get result : fail to send reply");
-                       else 
-                               SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc get result");
+                       SLOG(LOG_DEBUG, TAG_VCC, "<<<< state changed : %d", state);
 
-                       dbus_connection_flush(g_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCC, ">>>> vc get result : fail to create reply message");
-               }
-               */
+                       __vc_cb_service_state(state);
 
-               SLOG(LOG_DEBUG, TAG_VCC, "=====");
-               SLOG(LOG_DEBUG, TAG_VCC, " ");
+               } /* VCD_METHOD_SET_SERVICE_STATE */
 
-       }/* VCD_METHOD_RESULT */
+               else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_RESULT)) {
+                       SLOG(LOG_DEBUG, TAG_VCC, "===== Get Client Result");
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_ERROR)) {
-               SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
-               int pid;
-               int reason;
-               char* err_msg;
+                       __vc_cb_result();
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INT32, &reason,
-                       DBUS_TYPE_STRING, &err_msg,
-                       DBUS_TYPE_INVALID);
+                       SLOG(LOG_DEBUG, TAG_VCC, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCC, " ");
 
-               if (dbus_error_is_set(&err)) { 
-                       SLOG(LOG_ERROR, TAG_VCC, "<<<< vc Get Error message : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err); 
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
-                       __vc_cb_error(pid, reason);
-               }
+               } /* VCD_METHOD_RESULT */
 
-               /*
-               reply = dbus_message_new_method_return(msg);
+               else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_ERROR)) {
+                       SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
+                       int pid;
+                       int reason;
+                       char* err_msg;
 
-               if (NULL != reply) {
-                       if (!dbus_connection_send(g_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCC, ">>>> vc Error message : fail to send reply");
-                       else 
-                               SLOG(LOG_DEBUG, TAG_VCC, ">>>> vc Error message");
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
+                               DBUS_TYPE_INT32, &reason,
+                               DBUS_TYPE_STRING, &err_msg,
+                               DBUS_TYPE_INVALID);
 
-                       dbus_connection_flush(g_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCC, ">>>> vc Error message : fail to create reply message");
-               }
-               */
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCC, "<<<< vc Get Error message : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
+                               __vc_cb_error(pid, reason);
+                       }
 
-               SLOG(LOG_DEBUG, TAG_VCC, "=====");
-               SLOG(LOG_DEBUG, TAG_VCC, " ");
-       }/* VCD_METHOD_ERROR */
+                       SLOG(LOG_DEBUG, TAG_VCC, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCC, " ");
+               } /* VCD_METHOD_ERROR */
+               
+               else {
+                       SLOG(LOG_DEBUG, TAG_VCC, "Message is NOT valid");
+                       dbus_message_unref(msg);
+                       break;
+               }
 
-       /* free the message */
-       dbus_message_unref(msg);
+               /* free the message */
+               dbus_message_unref(msg);
+       } /* while(1) */
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -203,8 +196,6 @@ int vc_dbus_open_connection()
                return VC_ERROR_OPERATION_FAILED;
        }
 
-       int pid = getpid();
-
        char service_name[64];
        memset(service_name, '\0', 64);
        snprintf(service_name, 64, "%s", VC_CLIENT_SERVICE_NAME);
@@ -349,7 +340,7 @@ int vc_dbus_request_hello()
 }
 
 
-int vc_dbus_request_initialize(int pid, int* mgr_pid)
+int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state)
 {
        DBusMessage* msg;
 
@@ -386,9 +377,11 @@ int vc_dbus_request_initialize(int pid, int* mgr_pid)
 
        if (NULL != result_msg) {
                int tmp = -1;
-               dbus_message_get_args(result_msg, &err, 
+               int tmp_service_state = 0;
+               dbus_message_get_args(result_msg, &err,
                        DBUS_TYPE_INT32, &result,
                        DBUS_TYPE_INT32, &tmp,
+                       DBUS_TYPE_INT32, &tmp_service_state,
                        DBUS_TYPE_INVALID);
 
                if (dbus_error_is_set(&err)) {
@@ -401,7 +394,8 @@ int vc_dbus_request_initialize(int pid, int* mgr_pid)
 
                if (0 == result) {
                        *mgr_pid = tmp;
-                       SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d", result, *mgr_pid);
+                       *service_state = tmp_service_state;
+                       SLOG(LOG_DEBUG, TAG_VCC, "<<<< vc initialize : result = %d mgr = %d service = %d", result, *mgr_pid, *service_state);
                } else {
                        SLOG(LOG_ERROR, TAG_VCC, "<<<< vc initialize : result = %d", result);
                }
index 907afab..4d9e0cc 100644 (file)
@@ -30,7 +30,7 @@ int vc_dbus_close_connection();
 
 int vc_dbus_request_hello();
 
-int vc_dbus_request_initialize(int pid, int* mgr_pid);
+int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state);
 
 int vc_dbus_request_finalize(int pid);
 
index f09bc5f..70a6d2f 100644 (file)
@@ -37,6 +37,8 @@ static vc_h g_vc_m = NULL;
 
 static GSList* g_demandable_client_list = NULL;
 
+static float g_volume_db = 0;
+
 static Eina_Bool __vc_mgr_notify_state_changed(void *data);
 static Eina_Bool __vc_mgr_notify_error(void *data);
 static Eina_Bool __vc_mgr_notify_result(void *data);
@@ -80,30 +82,6 @@ static void __vc_mgr_lang_changed_cb(const char* before_lang, const char* curren
        return;
 }
 
-static void __vc_mgr_service_state_changed_cb(int before_state, int current_state)
-{
-       SECURE_SLOG(LOG_DEBUG, TAG_VCM, "Service State changed : Before(%d) Current(%d)", 
-               before_state, current_state);
-
-       /* Save service state */
-       vc_mgr_client_set_service_state(g_vc_m, (vc_service_state_e)current_state);
-
-       vc_service_state_changed_cb callback = NULL;
-       void* service_user_data;
-       vc_mgr_client_get_service_state_changed_cb(g_vc_m, &callback, &service_user_data);
-
-       if (NULL != callback) {
-               vc_mgr_client_use_callback(g_vc_m);
-               callback((vc_service_state_e)before_state, (vc_service_state_e)current_state, service_user_data);
-               vc_mgr_client_not_use_callback(g_vc_m);
-               SLOG(LOG_DEBUG, TAG_VCM, "Service state changed callback is called");
-       } else {
-               SLOG(LOG_WARN, TAG_VCM, "[WARNING] Service state changed callback is null");
-       }
-
-       return;
-}
-
 static void __vc_mgr_foreground_changed_cb(int previous, int current)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "Foreground changed : Before(%d) Current(%d)", previous, current);
@@ -164,28 +142,9 @@ int vc_mgr_initialize()
                vc_mgr_client_destroy(g_vc_m);
                return VC_ERROR_OPERATION_FAILED;
        }
-       
-       ret = vc_config_mgr_set_service_state_cb(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE, __vc_mgr_service_state_changed_cb);
-       if (0 != ret) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to set service change callback : %d", ret);
-               vc_config_mgr_unset_lang_cb(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE);
-               vc_config_mgr_finalize(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE);
-               vc_mgr_client_destroy(g_vc_m);
-               return VC_ERROR_OPERATION_FAILED;
-       }
 
        ret = vc_config_mgr_set_foreground_cb(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE, __vc_mgr_foreground_changed_cb);
 
-       int service_state = -1;
-       if (0 != vc_config_mgr_get_service_state(&service_state)) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to get service state");
-               vc_config_mgr_finalize(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE);
-               vc_mgr_client_destroy(g_vc_m);
-               return VC_ERROR_OPERATION_FAILED;
-       }
-
-       vc_mgr_client_set_service_state(g_vc_m, service_state);
-
        SLOG(LOG_DEBUG, TAG_VCM, "[Success] pid(%d)", g_vc_m->handle);
 
        SLOG(LOG_DEBUG, TAG_VCM, "=====");
@@ -232,7 +191,6 @@ int vc_mgr_deinitialize()
                        ecore_timer_del(g_m_connect_timer);
                }
 
-               vc_config_mgr_unset_service_state_cb(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE);
                vc_config_mgr_unset_lang_cb(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE);
                vc_config_mgr_finalize(g_vc_m->handle + VC_MANAGER_CONFIG_HANDLE);
 
@@ -270,7 +228,8 @@ static Eina_Bool __vc_mgr_connect_daemon(void *data)
 
        /* request initialization */
        int ret = -1;
-       ret = vc_mgr_dbus_request_initialize(g_vc_m->handle);
+       int service_state = 0;
+       ret = vc_mgr_dbus_request_initialize(g_vc_m->handle, &service_state);
 
        if (VC_ERROR_ENGINE_NOT_FOUND == ret) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to initialize : %s", __vc_mgr_get_error_code(ret));
@@ -289,7 +248,10 @@ static Eina_Bool __vc_mgr_connect_daemon(void *data)
                /* Success to connect */
        }
 
-       SECURE_SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Connected daemon");
+       /* Set service state */
+       vc_mgr_client_set_service_state(g_vc_m, (vc_service_state_e)service_state);
+
+       SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Connected daemon");
 
        vc_mgr_client_set_client_state(g_vc_m, VC_STATE_READY);
 
@@ -1092,6 +1054,54 @@ int vc_mgr_get_current_commands(vc_cmd_list_h* vc_cmd_list)
        return 0;
 }
 
+int vc_mgr_set_recognition_mode(vc_recognition_mode_e mode)
+{
+       SLOG(LOG_DEBUG, TAG_VCM, "===== [Manager] Set recognition mode = %d", mode);
+
+       vc_state_e state;
+       if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
+               SLOG(LOG_DEBUG, TAG_VCM, "=====");
+               SLOG(LOG_DEBUG, TAG_VCM, " ");
+               return VC_ERROR_INVALID_STATE;
+       }
+
+       /* check state */
+       if (state != VC_STATE_READY) {
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid State: Current state is not 'READY'");
+               SLOG(LOG_DEBUG, TAG_VCM, "=====");
+               SLOG(LOG_DEBUG, TAG_VCM, " ");
+               return VC_ERROR_INVALID_STATE;
+       }
+
+       /* Check service state */
+       vc_service_state_e service_state = -1;
+       vc_mgr_client_get_service_state(g_vc_m, &service_state);
+       if (service_state != VC_SERVICE_STATE_READY) {
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid State: service state is not 'READY'");
+               SLOG(LOG_DEBUG, TAG_VCM, "=====");
+               SLOG(LOG_DEBUG, TAG_VCM, " ");
+               return VC_ERROR_INVALID_STATE;
+       }
+
+       vc_mgr_client_set_recognition_mode(g_vc_m, mode);
+       return 0;
+}
+
+int vc_mgr_get_recognition_mode(vc_recognition_mode_e* mode)
+{
+       int ret = -1;
+
+       ret = vc_mgr_client_get_recognition_mode(g_vc_m, mode);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to get recognition mode");
+               return ret;
+       }
+
+       SLOG(LOG_DEBUG, TAG_VCM, "===== [Manager] Get recognition mode = %d", *mode);
+       return 0;
+}
+
 int vc_mgr_start(bool stop_by_silence, bool exclusive_command_option)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "===== [Manager] Request start");
@@ -1131,12 +1141,18 @@ int vc_mgr_start(bool stop_by_silence, bool exclusive_command_option)
 
        int ret;
        int count = 0;
+       vc_recognition_mode_e recognition_mode;
+
+       if (0 == stop_by_silence)
+               recognition_mode = VC_RECOGNITION_MODE_MANUAL;
+       else
+               vc_mgr_get_recognition_mode(&recognition_mode);
 
        /* Request */
        ret = -1;
        count = 0;
        while (0 != ret) {
-               ret = vc_mgr_dbus_request_start(g_vc_m->handle, stop_by_silence, exclusive_command_option, start_by_client);
+               ret = vc_mgr_dbus_request_start(g_vc_m->handle, (int)recognition_mode, exclusive_command_option, start_by_client);
                if (0 != ret) {
                        if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to start request start : %s", __vc_mgr_get_error_code(ret));
@@ -1153,7 +1169,6 @@ int vc_mgr_start(bool stop_by_silence, bool exclusive_command_option)
                        }
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] start recognition");
-                       vc_mgr_client_set_service_state(g_vc_m, VC_SERVICE_STATE_RECORDING);
                }
        }
 
@@ -1213,7 +1228,6 @@ int vc_mgr_stop()
                        }
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Stop recognition");
-                       vc_mgr_client_set_service_state(g_vc_m, VC_SERVICE_STATE_PROCESSING);
                }
        }
 
@@ -1272,7 +1286,6 @@ int vc_mgr_cancel()
                        }
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Cancel recognition");
-                       vc_mgr_client_set_service_state(g_vc_m, VC_SERVICE_STATE_READY);
                }
        }
 
@@ -1284,6 +1297,14 @@ int vc_mgr_cancel()
        return ret;
 }
 
+int __vc_mgr_cb_set_volume(float volume)
+{
+       g_volume_db = volume;
+       SLOG(LOG_DEBUG, TAG_VCM, "Set volume (%f)", g_volume_db);
+
+       return 0;
+}
+
 int vc_mgr_get_recording_volume(float* volume)
 {
        if (NULL == volume) {
@@ -1303,17 +1324,7 @@ int vc_mgr_get_recording_volume(float* volume)
                return VC_ERROR_INVALID_STATE;
        }
 
-       FILE* fp = fopen(VC_RUNTIME_INFO_AUDIO_VOLUME, "rb");
-       if (!fp) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to open Volume File");
-               return VC_ERROR_OPERATION_FAILED;
-       }
-
-       int readlen = fread((void*)volume, sizeof(*volume), 1, fp);
-       fclose(fp);
-
-       if (0 == readlen)
-               *volume = 0.0f;
+       *volume = g_volume_db;
 
        return 0;
 }
@@ -1322,13 +1333,20 @@ int vc_mgr_set_selected_results(vc_cmd_list_h vc_cmd_list)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "===== [Manager] Select result");
 
+       /* Do not check state for 'restart continusly' mode */
+
        vc_service_state_e service_state = -1;
        vc_mgr_client_get_service_state(g_vc_m, &service_state);
        if (service_state != VC_SERVICE_STATE_PROCESSING) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid State: service state is not 'PROCESSING'");
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-               return VC_ERROR_INVALID_STATE;
+               vc_recognition_mode_e recognition_mode;
+               vc_mgr_get_recognition_mode(&recognition_mode);
+
+               if (VC_RECOGNITION_MODE_RESTART_CONTINUOUSLY != recognition_mode) {
+                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid State: service state is not 'PROCESSING' and mode is not 'Restart continously'");
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+                       return VC_ERROR_INVALID_STATE;
+               }
        }
 
        if (NULL != vc_cmd_list) {
@@ -1385,7 +1403,7 @@ static Eina_Bool __vc_mgr_set_select_result(void *data)
        return EINA_FALSE;
 }
 
-static Eina_Bool __vc_mgr_notify_all_result(void *data)
+static void __vc_mgr_notify_all_result(vc_result_type_e result_type)
 {
        char* temp_text = NULL;
        int event;
@@ -1398,17 +1416,18 @@ static Eina_Bool __vc_mgr_notify_all_result(void *data)
        vc_mgr_client_get_all_result_cb(g_vc_m, &all_callback, &all_user_data);
        if (NULL == all_callback) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] All result callback is NULL");
-               return EINA_FALSE;
+               return;
        }
 
        if (0 != vc_cmd_list_create(&vc_cmd_list)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to create command list");
-               return EINA_FALSE;
+               return;
        }
 
        vc_info_parser_get_result(&temp_text, &event, &temp_message, -1, vc_cmd_list, vc_mgr_client_get_exclusive_command(g_vc_m));
 
-       SLOG(LOG_DEBUG, TAG_VCM, "Result info : result text(%s) event(%d) result_message(%s)", temp_text, event, temp_message);
+       SLOG(LOG_DEBUG, TAG_VCM, "Result info : result type(%d) result text(%s) event(%d) result_message(%s)", 
+               result_type, temp_text, event, temp_message);
 
        vc_cmd_print_list(vc_cmd_list);
 
@@ -1426,7 +1445,7 @@ static Eina_Bool __vc_mgr_notify_all_result(void *data)
                vc_mgr_client_get_result_cb(g_vc_m, &callback, &user_data);
                if (NULL == callback) {
                        SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Client result callback is NULL");
-                       return EINA_FALSE;
+                       return;
                }
 
                vc_mgr_client_use_callback(g_vc_m);
@@ -1442,7 +1461,7 @@ static Eina_Bool __vc_mgr_notify_all_result(void *data)
 
                vc_mgr_client_set_exclusive_command(g_vc_m, false);
 
-               return EINA_FALSE;
+               return;
        }
 
        int count = 0;
@@ -1450,7 +1469,8 @@ static Eina_Bool __vc_mgr_notify_all_result(void *data)
        if (0 < count) {
                if (true == cb_ret) {
                        SLOG(LOG_DEBUG, TAG_VCM, "Callback result is true");
-                       ecore_idler_add(__vc_mgr_set_select_result, NULL);
+                       if (VC_RESULT_TYPE_NOTIFICATION != result_type)
+                               ecore_idler_add(__vc_mgr_set_select_result, NULL);
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "Callback result is false");
                        /* need to select conflicted result */
@@ -1458,7 +1478,9 @@ static Eina_Bool __vc_mgr_notify_all_result(void *data)
                        vc_mgr_client_set_all_result(g_vc_m, event, temp_text);
                }
        } else {
-               ecore_idler_add(__vc_mgr_set_select_result, NULL);
+               if (VC_RESULT_TYPE_NOTIFICATION != result_type)
+                       ecore_idler_add(__vc_mgr_set_select_result, NULL);
+
                vc_mgr_client_set_exclusive_command(g_vc_m, false);
                vc_mgr_client_unset_all_result(g_vc_m);
        }
@@ -1469,7 +1491,7 @@ static Eina_Bool __vc_mgr_notify_all_result(void *data)
        /* Release list */
        vc_cmd_list_destroy(vc_cmd_list, true);
 
-       return EINA_FALSE;
+       return;
 }
 
 static Eina_Bool __vc_mgr_notify_result(void *data)
@@ -1511,10 +1533,10 @@ static Eina_Bool __vc_mgr_notify_result(void *data)
        return EINA_FALSE;
 }
 
-void __vc_mgr_cb_all_result()
+void __vc_mgr_cb_all_result(vc_result_type_e type)
 {
        if (false == vc_mgr_client_get_exclusive_command(g_vc_m)) {
-               __vc_mgr_notify_all_result(NULL);
+               __vc_mgr_notify_all_result(type);
        } else {
                __vc_mgr_notify_result(0);
        }
@@ -1739,6 +1761,40 @@ int vc_mgr_unset_state_changed_cb()
        return 0;
 }
 
+int __vc_mgr_cb_service_state(int state)
+{
+       vc_service_state_e current_state = (vc_service_state_e)state;
+       vc_service_state_e before_state;
+       vc_mgr_client_get_service_state(g_vc_m, &before_state);
+
+       if (current_state == before_state) {
+               SLOG(LOG_WARN, TAG_VCM, "Service State NOT changed : Before(%d) Current(%d)",
+                       before_state, current_state);
+               return 0;
+       }
+
+       SLOG(LOG_DEBUG, TAG_VCM, "Service State changed : Before(%d) Current(%d)",
+               before_state, current_state);
+
+       /* Save service state */
+       vc_mgr_client_set_service_state(g_vc_m, current_state);
+
+       vc_service_state_changed_cb callback = NULL;
+       void* service_user_data = NULL;
+       vc_mgr_client_get_service_state_changed_cb(g_vc_m, &callback, &service_user_data);
+
+       if (NULL != callback) {
+               vc_mgr_client_use_callback(g_vc_m);
+               callback(before_state, current_state, service_user_data);
+               vc_mgr_client_not_use_callback(g_vc_m);
+               SLOG(LOG_DEBUG, TAG_VCM, "Service state changed callback is called");
+       } else {
+               SLOG(LOG_WARN, TAG_VCM, "[WARNING] Service state changed callback is null");
+       }
+
+       return 0;
+}
+
 int vc_mgr_set_service_state_changed_cb(vc_service_state_changed_cb callback, void* user_data)
 {
        if (callback == NULL)
index 7f06778..64ed2d5 100644 (file)
@@ -65,6 +65,9 @@ typedef struct {
        /* audio type */
        char*                   audio_id;
 
+       /* recognition mode */
+       vc_recognition_mode_e   recognition_mode;
+
        /* mutex */
        int                     cb_ref_count;
 
@@ -158,7 +161,7 @@ int vc_mgr_client_create(vc_h* vc)
        client->result_event = -1;
        client->result_text = NULL;
 
-       client->service_state = -1;
+       client->service_state = 0;
 
        client->before_state = VC_STATE_INITIALIZED;
        client->current_state = VC_STATE_INITIALIZED;
@@ -167,6 +170,7 @@ int vc_mgr_client_create(vc_h* vc)
        client->current_language = NULL;
 
        client->audio_id = NULL;
+       client->recognition_mode = VC_RECOGNITION_MODE_STOP_BY_SILENCE;
 
        client->cb_ref_count = 0;
 
@@ -728,6 +732,35 @@ int vc_mgr_client_get_audio_type(vc_h vc, char** audio_id)
        return 0;
 }
 
+int vc_mgr_client_set_recognition_mode(vc_h vc, vc_recognition_mode_e mode)
+{
+       vc_mgr_client_s* client = __mgr_client_get(vc);
+
+       /* check handle */
+       if (NULL == client)
+               return VC_ERROR_INVALID_PARAMETER;
+
+       client->recognition_mode = mode;
+
+       return 0;
+}
+
+int vc_mgr_client_get_recognition_mode(vc_h vc, vc_recognition_mode_e* mode)
+{
+       if (NULL == mode)       {
+               return -1;
+       }
+
+       vc_mgr_client_s* client = __mgr_client_get(vc);
+
+       /* check handle */
+       if (NULL == client)
+               return VC_ERROR_INVALID_PARAMETER;
+
+       *mode = client->recognition_mode;
+       return 0;
+}
+
 /* utils */
 int vc_mgr_client_get_count()
 {
index b19d31b..962d667 100644 (file)
@@ -106,6 +106,10 @@ int vc_mgr_client_set_audio_type(vc_h vc, const char* audio_id);
 
 int vc_mgr_client_get_audio_type(vc_h vc, char** audio_id);
 
+int vc_mgr_client_set_recognition_mode(vc_h vc, vc_recognition_mode_e mode);
+
+int vc_mgr_client_get_recognition_mode(vc_h vc, vc_recognition_mode_e* mode);
+
 
 /* utils */
 int vc_mgr_client_get_count();
index 3986af5..b5b6b6f 100644 (file)
@@ -29,7 +29,7 @@ static DBusConnection* g_m_conn_sender = NULL;
 static DBusConnection* g_m_conn_listener = NULL;
 
 
-extern void __vc_mgr_cb_all_result();
+extern void __vc_mgr_cb_all_result(vc_result_type_e type);
 
 extern void __vc_mgr_cb_system_result();
 
@@ -37,6 +37,10 @@ extern void __vc_mgr_cb_speech_detected();
 
 extern int __vc_mgr_cb_error(int pid, int reason);
 
+extern int __vc_mgr_cb_set_volume(float volume);
+
+extern int __vc_mgr_cb_service_state(int state);
+
 /* Authority */
 extern int __vc_mgr_request_auth_enable(int pid);
 
@@ -54,306 +58,365 @@ static Eina_Bool vc_mgr_listener_event_callback(void* data, Ecore_Fd_Handler *fd
 
        dbus_connection_read_write_dispatch(g_m_conn_listener, 50);
 
-       DBusMessage* msg = NULL;
-       msg = dbus_connection_pop_message(g_m_conn_listener);
+       while (1) {
+               DBusMessage* msg = NULL;
+               msg = dbus_connection_pop_message(g_m_conn_listener);
 
-       /* loop again if we haven't read a message */
-       if (NULL == msg) { 
-               return ECORE_CALLBACK_RENEW;
-       }
+               /* loop again if we haven't read a message */
+               if (NULL == msg) {
+                       break;
+               }
 
-       DBusError err;
-       dbus_error_init(&err);
+               SLOG(LOG_DEBUG, TAG_VCM, "[DEBUG] Message is arrived");
 
-       char if_name[64];
-       snprintf(if_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
+               DBusError err;
+               dbus_error_init(&err);
 
-       if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_HELLO)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get Hello");
-               int pid = 0;
-               int response = -1;
+               char if_name[64];
+               snprintf(if_name, 64, "%s", VC_MANAGER_SERVICE_INTERFACE);
 
-               dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Dbus Error (%s)", err.message);
-                       dbus_error_free(&err);
-               }
+               if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_HELLO)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get Hello");
+                       int pid = 0;
+                       int response = -1;
 
-               if (pid > 0) {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr get hello : pid(%d) ", pid);
-                       response = 1;
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr get hello : invalid pid ");
-               }
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Dbus Error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               DBusMessage *reply = NULL;
-               reply = dbus_message_new_method_return(msg);
-               
-               if (NULL != reply) {
-                       dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+                       if (pid > 0) {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr get hello : pid(%d) ", pid);
+                               response = 1;
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr get hello : invalid pid ");
+                       }
 
-                       if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc get hello : fail to send reply");
-                       else 
-                               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc get hello : result(%d)", response);
+                       DBusMessage *reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
 
-                       dbus_connection_flush(g_m_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr get hello : fail to create reply message");
-               }
-               
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       } /* VCD_METHOD_HELLO */
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_SPEECH_DETECTED)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get Speech detected");
+                               if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc get hello : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc get hello : result(%d)", response);
 
-               __vc_mgr_cb_speech_detected();
+                               dbus_connection_flush(g_m_conn_listener);
+                               dbus_message_unref(reply);
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr get hello : fail to create reply message");
+                       }
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VCD_METHOD_HELLO */
 
-       }/* VCD_MANAGER_METHOD_SPEECH_DETECTED */
+               else if (dbus_message_is_signal(msg, if_name, VCD_MANAGER_METHOD_SET_VOLUME)) {
+                       /* SLOG(LOG_DEBUG, TAG_VCM, "===== Set volume"); */
+                       float volume = 0;
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_ALL_RESULT)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get All Result");
-               
-               __vc_mgr_cb_all_result();
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &volume, DBUS_TYPE_INVALID);
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-       }/* VCD_MANAGER_METHOD_ALL_RESULT */
+                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr set volume : volume(%f)", volume);
+                       __vc_mgr_cb_set_volume(volume);
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_RESULT)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get System Result");
+                       /* SLOG(LOG_DEBUG, TAG_VCM, "====="); */
+                       /* SLOG(LOG_DEBUG, TAG_VCM, " "); */
+               } /* VCD_MANAGER_METHOD_SET_VOLUME */
 
-               __vc_mgr_cb_system_result();
+               else if (dbus_message_is_signal(msg, if_name, VCD_MANAGER_METHOD_SET_SERVICE_STATE)) {
+                       int state = 0;
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-       }/* VCD_MANAGER_METHOD_RESULT */
+                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< state changed : %d", state);
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_ERROR)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get Error");
-               int pid;
-               int reason;
-               char* err_msg;
+                       __vc_mgr_cb_service_state(state);
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INT32, &reason,
-                       DBUS_TYPE_STRING, &err_msg,
-                       DBUS_TYPE_INVALID);
+               } /* VCD_MANAGER_METHOD_SET_SERVICE_STATE */
 
-               if (dbus_error_is_set(&err)) { 
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr Get Error message : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err); 
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
-                       __vc_mgr_cb_error(pid, reason);
-               }
+               else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_SPEECH_DETECTED)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get Speech detected");
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       }/* VCD_MANAGER_METHOD_ERROR */
+                       __vc_mgr_cb_speech_detected();
 
-       /* Authority */
-       else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_ENABLE)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth enable");
-               int pid;
-               int ret = 0;
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INVALID);
+               } /* VCD_MANAGER_METHOD_SPEECH_DETECTED */
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth enable : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth enable : pid(%d)", pid);
-                       ret = __vc_mgr_request_auth_enable(pid);
-               }
+               else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_ALL_RESULT)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get All Result");
+                       int result_type = 0;
 
-               DBusMessage *reply = NULL;
-               reply = dbus_message_new_method_return(msg);
-               
-               if (NULL != reply) {
-                       dbus_message_append_args(reply,
-                                                                        DBUS_TYPE_INT32, &ret,
-                                                                        DBUS_TYPE_INVALID);
-                       if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth enable : fail to send reply");
-                       else
-                               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth enable : ret(%d)", ret);
-                       dbus_connection_flush(g_m_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth enable : fail to create reply message");
-               }
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &result_type, DBUS_TYPE_INVALID);
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       }/* VC_METHOD_AUTH_ENABLE */
+                       __vc_mgr_cb_all_result((vc_result_type_e)result_type);
 
-       else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_DISABLE)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth disable");
-               int pid;
-               int ret = 0;
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INVALID);
+               } /* VCD_MANAGER_METHOD_ALL_RESULT */
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth disable : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth disable : pid(%d)", pid);
-                       ret = __vc_mgr_request_auth_disable(pid);
-               }
+               else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_RESULT)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get System Result");
 
-               DBusMessage *reply = NULL;
-               reply = dbus_message_new_method_return(msg);
+                       __vc_mgr_cb_system_result();
 
-               if (NULL != reply) {
-                       dbus_message_append_args(reply,
-                               DBUS_TYPE_INT32, &ret,
-                               DBUS_TYPE_INVALID);
-                       if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth disable : fail to send reply");
-                       else
-                               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth disable : ret(%d)", ret);
-                       dbus_connection_flush(g_m_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth disable : fail to create reply message");
-               }
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       }/* VC_METHOD_AUTH_DISABLE */
+               } /* VCD_MANAGER_METHOD_RESULT */
 
-       else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_START)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth start");
-               int pid;
-               int ret = 0;
+               else if (dbus_message_is_method_call(msg, if_name, VCD_MANAGER_METHOD_ERROR)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get Error");
+                       int pid;
+                       int reason;
+                       char* err_msg;
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INVALID);
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
+                               DBUS_TYPE_INT32, &reason,
+                               DBUS_TYPE_STRING, &err_msg,
+                               DBUS_TYPE_INVALID);
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth start : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth start : pid(%d)", pid);
-                       ret = __vc_mgr_request_auth_start(pid);
-               }
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr Get Error message : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr Get Error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
+                               __vc_mgr_cb_error(pid, reason);
+                       }
 
-               DBusMessage *reply = NULL;
-               reply = dbus_message_new_method_return(msg);
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VCD_MANAGER_METHOD_ERROR */
 
-               if (NULL != reply) {
-                       dbus_message_append_args(reply,
-                               DBUS_TYPE_INT32, &ret,
+               /* Authority */
+               else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_ENABLE)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth enable");
+                       int pid;
+                       int ret = 0;
+
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
                                DBUS_TYPE_INVALID);
-                       if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth start : fail to send reply");
-                       else
-                               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth start : ret(%d)", ret);
-                       dbus_connection_flush(g_m_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth start : fail to create reply message");
-               }
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       }/* VC_METHOD_AUTH_START */
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth enable : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth enable : pid(%d)", pid);
+                               ret = __vc_mgr_request_auth_enable(pid);
+                       }
 
-       else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_STOP)) {
-               SLOG(LOG_DEBUG,TAG_VCM, "===== Get request auth stop");
-               int pid;
-               int ret = 0;
+                       DBusMessage *reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply,
+                                       DBUS_TYPE_INT32, &ret,
+                                       DBUS_TYPE_INVALID);
+                               if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth enable : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth enable : ret(%d)", ret);
+                               dbus_connection_flush(g_m_conn_listener);
+                               dbus_message_unref(reply);
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth enable : fail to create reply message");
+                       }
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INVALID);
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VC_METHOD_AUTH_ENABLE */
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth stop : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth stop : pid(%d)", pid);
-                       ret = __vc_mgr_request_auth_stop(pid);
-               }
+               else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_DISABLE)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth disable");
+                       int pid;
+                       int ret = 0;
+
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
+                               DBUS_TYPE_INVALID);
+
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth disable : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth disable : pid(%d)", pid);
+                               ret = __vc_mgr_request_auth_disable(pid);
+                       }
 
-               DBusMessage *reply = NULL;
-               reply = dbus_message_new_method_return(msg);
+                       DBusMessage *reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply,
+                                       DBUS_TYPE_INT32, &ret,
+                                       DBUS_TYPE_INVALID);
+                               if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth disable : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth disable : ret(%d)", ret);
+                               dbus_connection_flush(g_m_conn_listener);
+                               dbus_message_unref(reply);
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth disable : fail to create reply message");
+                       }
+
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VC_METHOD_AUTH_DISABLE */
+
+               else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_START)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth start");
+                       int pid;
+                       int ret = 0;
 
-               if (NULL != reply) {
-                       dbus_message_append_args(reply,
-                               DBUS_TYPE_INT32, &ret,
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
                                DBUS_TYPE_INVALID);
-                       if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth stop : fail to send reply");
-                       else
-                               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth stop : ret(%d)", ret);
-                       dbus_connection_flush(g_m_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth stop : fail to create reply message");
-               }
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       }/* VC_METHOD_AUTH_STOP */
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth start : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth start : pid(%d)", pid);
+                               ret = __vc_mgr_request_auth_start(pid);
+                       }
+
+                       DBusMessage *reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply,
+                                       DBUS_TYPE_INT32, &ret,
+                                       DBUS_TYPE_INVALID);
+                               if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth start : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth start : ret(%d)", ret);
+                               dbus_connection_flush(g_m_conn_listener);
+                               dbus_message_unref(reply);
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth start : fail to create reply message");
+                       }
 
-       else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_CANCEL)) {
-               SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth cancel");
-               int pid;
-               int ret = 0;
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VC_METHOD_AUTH_START */
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INVALID);
+               else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_STOP)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth stop");
+                       int pid;
+                       int ret = 0;
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth cancel : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth cancel : pid(%d)", pid);
-                       ret = __vc_mgr_request_auth_cancel(pid);
-               }
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
+                               DBUS_TYPE_INVALID);
+
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth stop : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth stop : pid(%d)", pid);
+                               ret = __vc_mgr_request_auth_stop(pid);
+                       }
+
+                       DBusMessage *reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply,
+                                       DBUS_TYPE_INT32, &ret,
+                                       DBUS_TYPE_INVALID);
+                               if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth stop : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr request auth stop : ret(%d)", ret);
+                               dbus_connection_flush(g_m_conn_listener);
+                               dbus_message_unref(reply);
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth stop : fail to create reply message");
+                       }
 
-               DBusMessage *reply = NULL;
-               reply = dbus_message_new_method_return(msg);
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VC_METHOD_AUTH_STOP */
 
-               if (NULL != reply) {
-                       dbus_message_append_args(reply,
-                               DBUS_TYPE_INT32, &ret,
+               else if (dbus_message_is_method_call(msg, if_name, VC_METHOD_AUTH_CANCEL)) {
+                       SLOG(LOG_DEBUG, TAG_VCM, "===== Get request auth cancel");
+                       int pid;
+                       int ret = 0;
+
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &pid,
                                DBUS_TYPE_INVALID);
-                       if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc request auth cancel : fail to send reply");
-                       else
-                               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc request auth cancel : ret(%d)", ret);
-                       dbus_connection_flush(g_m_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth cancel : fail to create reply message");
-               }
 
-               SLOG(LOG_DEBUG, TAG_VCM, "=====");
-               SLOG(LOG_DEBUG, TAG_VCM, " ");
-       }/* VC_METHOD_AUTH_CANCEL */
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr request auth cancel : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+                       else {
+                               SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr request auth cancel : pid(%d)", pid);
+                               ret = __vc_mgr_request_auth_cancel(pid);
+                       }
+
+                       DBusMessage *reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply,
+                                       DBUS_TYPE_INT32, &ret,
+                                       DBUS_TYPE_INVALID);
+                               if (!dbus_connection_send(g_m_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCM, ">>>> vc request auth cancel : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc request auth cancel : ret(%d)", ret);
+                               dbus_connection_flush(g_m_conn_listener);
+                               dbus_message_unref(reply);
+                       }
+                       else {
+                               SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr request auth cancel : fail to create reply message");
+                       }
 
-       /* free the message */
-       dbus_message_unref(msg);
+                       SLOG(LOG_DEBUG, TAG_VCM, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCM, " ");
+               } /* VC_METHOD_AUTH_CANCEL */
+
+               else {
+                       SLOG(LOG_DEBUG, TAG_VCM, "Message is NOT valid");
+                       dbus_message_unref(msg);
+                       break;
+               }
+
+               /* free the message */
+               dbus_message_unref(msg);
+       } /* while(1) */
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -397,16 +460,10 @@ int vc_mgr_dbus_open_connection()
                return VC_ERROR_OPERATION_FAILED;
        }
 
-       int pid = getpid();
-
-       char service_name[64];
-       memset(service_name, '\0', 64);
-       snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
-
-       SLOG(LOG_DEBUG, TAG_VCM, "service name is %s", service_name);
+       SLOG(LOG_DEBUG, TAG_VCM, "service name is %s", VC_MANAGER_SERVICE_NAME);
 
        /* register our name on the bus, and check for errors */
-       ret = dbus_bus_request_name(g_m_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
+       ret = dbus_bus_request_name(g_m_conn_listener, VC_MANAGER_SERVICE_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
 
        if (dbus_error_is_set(&err)) {
                SLOG(LOG_ERROR, TAG_VCM, "Name Error (%s)", err.message);
@@ -464,13 +521,7 @@ int vc_mgr_dbus_close_connection()
                g_m_fd_handler = NULL;
        }
 
-       int pid = getpid();
-
-       char service_name[64];
-       memset(service_name, '\0', 64);
-       snprintf(service_name, 64, "%s", VC_MANAGER_SERVICE_NAME);
-
-       dbus_bus_release_name(g_m_conn_listener, service_name, &err);
+       dbus_bus_release_name(g_m_conn_listener, VC_MANAGER_SERVICE_NAME, &err);
 
        if (dbus_error_is_set(&err)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Dbus Error (%s)", err.message);
@@ -545,7 +596,7 @@ int vc_mgr_dbus_request_hello()
 }
 
 
-int vc_mgr_dbus_request_initialize(int pid)
+int vc_mgr_dbus_request_initialize(int pid, int* service_state)
 {
        DBusMessage* msg;
 
@@ -581,8 +632,9 @@ int vc_mgr_dbus_request_initialize(int pid)
        }
 
        if (NULL != result_msg) {
-               dbus_message_get_args(result_msg, &err, 
-                       DBUS_TYPE_INT32, &result, 
+               dbus_message_get_args(result_msg, &err,
+                       DBUS_TYPE_INT32, &result,
+                       DBUS_TYPE_INT32, service_state,
                        DBUS_TYPE_INVALID);
 
                if (dbus_error_is_set(&err)) {
@@ -594,7 +646,7 @@ int vc_mgr_dbus_request_initialize(int pid)
                dbus_message_unref(result_msg);
 
                if (0 == result) {
-                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr initialize : result = %d", result);
+                       SLOG(LOG_DEBUG, TAG_VCM, "<<<< vc mgr initialize : result = %d, service state = %d", result, *service_state);
                } else {
                        SLOG(LOG_ERROR, TAG_VCM, "<<<< vc mgr initialize : result = %d", result);
                }
@@ -1042,7 +1094,7 @@ int vc_mgr_dbus_request_set_client_info(int pid)
        return result;
 }
 
-int vc_mgr_dbus_request_start(int pid, int silence, bool exclusive_command_option, bool start_by_client)
+int vc_mgr_dbus_request_start(int pid, int recognition_mode, bool exclusive_command_option, bool start_by_client)
 {
        DBusMessage* msg;
 
@@ -1057,19 +1109,19 @@ int vc_mgr_dbus_request_start(int pid, int silence, bool exclusive_command_optio
                SLOG(LOG_ERROR, TAG_VCM, ">>>> vc mgr start : Fail to make message ");
                return VC_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr start : pid(%d), silence(%d) exclusive(%d) start by client(%d)", 
-                       pid, silence, exclusive_command_option, start_by_client);
+               SLOG(LOG_DEBUG, TAG_VCM, ">>>> vc mgr start : pid(%d), recognition_mode(%d) exclusive(%d) start by client(%d)",
+                        pid, recognition_mode, exclusive_command_option, start_by_client);
        }
 
        int exclusive = exclusive_command_option;
        int by = start_by_client;
 
-       dbus_message_append_args(msg, 
-               DBUS_TYPE_INT32, &pid,
-               DBUS_TYPE_INT32, &(silence),
-               DBUS_TYPE_INT32, &(exclusive),
-               DBUS_TYPE_INT32, &(by),
-               DBUS_TYPE_INVALID);
+       dbus_message_append_args(msg,
+                                                        DBUS_TYPE_INT32, &pid,
+                                                        DBUS_TYPE_INT32, &(recognition_mode),
+                                                        DBUS_TYPE_INT32, &(exclusive),
+                                                        DBUS_TYPE_INT32, &(by),
+                                                        DBUS_TYPE_INVALID);
 
        DBusError err;
        dbus_error_init(&err);
index ad74725..e583560 100644 (file)
@@ -30,7 +30,7 @@ int vc_mgr_dbus_close_connection();
 
 int vc_mgr_dbus_request_hello();
 
-int vc_mgr_dbus_request_initialize(int pid);
+int vc_mgr_dbus_request_initialize(int pid, int* service_state);
 
 int vc_mgr_dbus_request_finalize(int pid);
 
@@ -46,7 +46,7 @@ int vc_mgr_dbus_request_get_audio_type(int pid, char** audio_type);
 
 int vc_mgr_dbus_request_set_client_info(int pid);
 
-int vc_mgr_dbus_request_start(int pid, int silence, bool exclusive_command_option, bool start_by_client);
+int vc_mgr_dbus_request_start(int pid, int recognition_mode, bool exclusive_command_option, bool start_by_client);
 
 int vc_mgr_dbus_request_stop(int pid);
 
index 70253c7..7c11ab1 100644 (file)
@@ -94,30 +94,6 @@ static void __vc_widget_lang_changed_cb(const char* before_lang, const char* cur
        return;
 }
 
-static void __vc_widget_service_state_changed_cb(int before_state, int current_state)
-{
-       SECURE_SLOG(LOG_DEBUG, TAG_VCW, "Service State changed : Before(%d) Current(%d)", 
-               before_state, current_state);
-
-       /* Save service state */
-       vc_widget_client_set_service_state(g_vc_w, (vc_service_state_e)current_state);
-
-       vc_service_state_changed_cb service_callback = NULL;
-       void* service_user_data;
-       vc_widget_client_get_service_state_changed_cb(g_vc_w, &service_callback, &service_user_data);
-
-       if (NULL != service_callback) {
-               vc_widget_client_use_callback(g_vc_w);
-               service_callback((vc_service_state_e)before_state, (vc_service_state_e)current_state, service_user_data);
-               vc_widget_client_not_use_callback(g_vc_w);
-               SLOG(LOG_DEBUG, TAG_VCW, "Service state changed callback is called");
-       } else {
-               SLOG(LOG_WARN, TAG_VCW, "[WARNING] State changed callback is null");
-       }
-
-       return;
-}
-
 int vc_widget_initialize()
 {
        SLOG(LOG_DEBUG, TAG_VCW, "===== [Widget] Initialize");
@@ -159,25 +135,6 @@ int vc_widget_initialize()
                return __vc_widget_convert_config_error_code(ret);
        }
 
-       ret = vc_config_mgr_set_service_state_cb(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE, __vc_widget_service_state_changed_cb);
-       if (0 != ret) {
-               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to set service state callback : %d", ret);
-               vc_config_mgr_unset_lang_cb(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE);
-               vc_config_mgr_finalize(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE);
-               vc_widget_client_destroy(g_vc_w);
-               return __vc_widget_convert_config_error_code(ret);
-       }
-
-       int service_state = -1;
-       if (0 != vc_config_mgr_get_service_state(&service_state)) {
-               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to get service state");
-               vc_config_mgr_finalize(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE);
-               vc_widget_client_destroy(g_vc_w);
-               return __vc_widget_convert_config_error_code(ret);
-       }
-
-       vc_widget_client_set_service_state(g_vc_w, service_state);
-
        SLOG(LOG_DEBUG, TAG_VCW, "[Success] pid(%d)", g_vc_w->handle);
 
        SLOG(LOG_DEBUG, TAG_VCW, "=====");
@@ -223,7 +180,6 @@ int vc_widget_deinitialize()
                        ecore_timer_del(g_w_connect_timer);
                }
 
-               vc_config_mgr_unset_service_state_cb(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE);
                vc_config_mgr_unset_lang_cb(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE);
                vc_config_mgr_finalize(g_vc_w->handle + VC_WIDGET_CONFIG_HANDLE);
 
@@ -260,7 +216,8 @@ static Eina_Bool __vc_widget_connect_daemon(void *data)
 
        /* request initialization */
        int ret = -1;
-       ret = vc_widget_dbus_request_initialize(g_vc_w->handle);
+       int service_state = 0;
+       ret = vc_widget_dbus_request_initialize(g_vc_w->handle, &service_state);
 
        if (VC_ERROR_ENGINE_NOT_FOUND == ret) {
                SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to initialize : %s", __vc_widget_get_error_code(ret));
@@ -283,6 +240,8 @@ static Eina_Bool __vc_widget_connect_daemon(void *data)
                return EINA_FALSE;
        }
 
+       vc_widget_client_set_service_state(g_vc_w, (vc_service_state_e)service_state);
+
        vc_widget_client_set_state(g_vc_w, VC_STATE_READY);
        ecore_timer_add(0, __vc_widget_notify_state_changed, g_vc_w);
 
@@ -738,7 +697,6 @@ int vc_widget_stop()
 }
 #endif
 
-#if 0
 int vc_widget_cancel()
 {
        SLOG(LOG_DEBUG, TAG_VCW, "===== [Widget] Cancel Recognition");
@@ -769,19 +727,9 @@ int vc_widget_cancel()
                return VC_ERROR_INVALID_STATE;
        }
 
-       int ret = vc_widget_client_set_command_group(g_vc_w, NULL);
-       if (0 != ret) {
-               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to set command to client : %d", ret);
-               return ret;
-       }
-
-       ret = vc_cmd_parser_delete_file(getpid(), VC_COMMAND_TYPE_WIDGET);
-       if (0 != ret) {
-               ret = vc_config_convert_error_code((vc_config_error_e)ret);
-               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to delete command group : %s", __vc_widget_get_error_code(ret));
-       }
-
        int count = 0;
+       int ret = -1;
+
        do {
                ret = vc_widget_dbus_request_cancel(g_vc_w->handle);
                if (0 != ret) {
@@ -804,7 +752,6 @@ int vc_widget_cancel()
 
        return 0;
 }
-#endif
 
 static Eina_Bool __vc_widget_notify_error(void *data)
 {
@@ -1137,6 +1084,39 @@ int vc_widget_unsset_send_current_command_list_cb()
        return 0;
 }
 
+int __vc_widget_cb_service_state(int state)
+{
+       vc_service_state_e current_state = (vc_service_state_e)state;
+       vc_service_state_e before_state;
+       vc_widget_client_get_service_state(g_vc_w, &before_state);
+
+       if (current_state == before_state) {
+               return 0;
+       }
+
+       SLOG(LOG_DEBUG, TAG_VCW, "Service State changed : Before(%d) Current(%d)",
+               before_state, current_state);
+
+       /* Save service state */
+       vc_widget_client_set_service_state(g_vc_w, current_state);
+
+       vc_service_state_changed_cb callback = NULL;
+       void* service_user_data = NULL;
+       vc_widget_client_get_service_state_changed_cb(g_vc_w, &callback, &service_user_data);
+
+       if (NULL != callback) {
+               vc_widget_client_use_callback(g_vc_w);
+               callback((vc_service_state_e)before_state, (vc_service_state_e)current_state, service_user_data);
+               vc_widget_client_not_use_callback(g_vc_w);
+               SLOG(LOG_DEBUG, TAG_VCW, "Service state changed callback is called");
+       }
+       else {
+               SLOG(LOG_WARN, TAG_VCW, "[WARNING] Service state changed callback is null");
+       }
+
+       return 0;
+}
+
 int vc_widget_set_service_state_changed_cb(vc_service_state_changed_cb callback, void* user_data)
 {
        vc_state_e state;
index 1edee3f..2bea424 100644 (file)
@@ -165,6 +165,9 @@ int vc_widget_client_destroy(vc_h vc)
                                free(data);
                                free(vc);
 
+                               data = NULL;
+                               vc = NULL;
+
                                return 0;
                        }
                }
index 3059cad..0ef4fe2 100644 (file)
@@ -33,6 +33,8 @@ extern void __vc_widget_cb_show_tooltip(int pid, bool show);
 
 extern void __vc_widget_cb_result();
 
+extern int __vc_widget_cb_service_state(int state);
+
 
 static Eina_Bool widget_listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
 {
@@ -40,123 +42,180 @@ static Eina_Bool widget_listener_event_callback(void* data, Ecore_Fd_Handler *fd
 
        dbus_connection_read_write_dispatch(g_w_conn_listener, 50);
 
-       DBusMessage* msg = NULL;
-       msg = dbus_connection_pop_message(g_w_conn_listener);
-
-       /* loop again if we haven't read a message */
-       if (NULL == msg) { 
-               return ECORE_CALLBACK_RENEW;
-       }
-
-       DBusError err;
-       dbus_error_init(&err);
-
-       char if_name[64];
-       snprintf(if_name, 64, "%s", VC_WIDGET_SERVICE_INTERFACE);
-
-       if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_HELLO)) {
-               SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget hello");
-               int pid = 0;
-               int response = -1;
+       while (1) {
+               DBusMessage* msg = NULL;
+               msg = dbus_connection_pop_message(g_w_conn_listener);
 
-               dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
-               
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
-                       dbus_error_free(&err);
+               /* loop again if we haven't read a message */
+               if (NULL == msg) {
+                       break;
                }
 
-               if (pid > 0) {
-                       SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get hello : pid(%d) ", pid);
-                       response = 1;
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get hello : invalid pid ");
-               }
+               SLOG(LOG_DEBUG, TAG_VCW, "[DEBUG] Message is arrived");
 
-               DBusMessage* reply = NULL;
-               reply = dbus_message_new_method_return(msg);
-               
-               if (NULL != reply) {
-                       dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+               DBusError err;
+               dbus_error_init(&err);
 
-                       if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
-                               SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to send reply");
-                       else 
-                               SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get hello : result(%d)", response);
+               char if_name[64] = {0, };
+               snprintf(if_name, 64, "%s", VC_WIDGET_SERVICE_INTERFACE);
 
-                       dbus_connection_flush(g_w_conn_listener);
-                       dbus_message_unref(reply);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to create reply message");
-               }
-               
-               SLOG(LOG_DEBUG, TAG_VCW, "=====");
-               SLOG(LOG_DEBUG, TAG_VCW, " ");
-       } /* VCD_WIDGET_METHOD_HELLO */
-
-       else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_SHOW_TOOLTIP)) {
-               SLOG(LOG_DEBUG, TAG_VCW, "===== Show / Hide tooltip");
-               int pid = 0;
-               int show = 0;
-
-               dbus_message_get_args(msg, &err, 
-                       DBUS_TYPE_INT32, &pid, 
-                       DBUS_TYPE_INT32, &show,
-                       DBUS_TYPE_INVALID);
+               if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_HELLO)) {
+                       SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget hello");
+                       int pid = 0;
+                       int response = -1;
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
-                       dbus_error_free(&err);
-               }
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
 
-               if (pid > 0) {
-                       SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget show tooltip : pid(%d), show(%d)", pid, show);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-                       __vc_widget_cb_show_tooltip(pid, (bool)show);
-               } else {
-                       SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget show tooltip : invalid pid");
-               }
-
-               SLOG(LOG_DEBUG, TAG_VCW, "=====");
-               SLOG(LOG_DEBUG, TAG_VCW, " ");
-       } /* VCD_WIDGET_METHOD_SHOW_TOOLTIP */
+                       if (pid > 0) {
+                               SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get hello : pid(%d) ", pid);
+                               response = 1;
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get hello : invalid pid ");
+                       }
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_RESULT)) {
-               SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget result");
+                       DBusMessage* reply = NULL;
+                       reply = dbus_message_new_method_return(msg);
 
-               __vc_widget_cb_result();
+                       if (NULL != reply) {
+                               dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
 
-               SLOG(LOG_DEBUG, TAG_VCW, "=====");
-               SLOG(LOG_DEBUG, TAG_VCW, " ");
+                               if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get hello : result(%d)", response);
 
-       } /* VCD_WIDGET_METHOD_RESULT */
+                               dbus_connection_flush(g_w_conn_listener);
+                               dbus_message_unref(reply);
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to create reply message");
+                       }
 
-       else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_ERROR)) {
-               SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget error");
-               int pid;
-               int reason;
-               char* err_msg;
+                       SLOG(LOG_DEBUG, TAG_VCW, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCW, " ");
+               } /* VCD_WIDGET_METHOD_HELLO */
 
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &pid,
-                       DBUS_TYPE_INT32, &reason,
-                       DBUS_TYPE_STRING, &err_msg,
-                       DBUS_TYPE_INVALID);
+               else if (dbus_message_is_signal(msg, if_name, VCD_WIDGET_METHOD_SET_SERVICE_STATE)) {
+                       int state = 0;
+
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               if (dbus_error_is_set(&err)) { 
-                       SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get error message : Get arguments error (%s)", err.message);
-                       dbus_error_free(&err); 
-               } else {
-                       SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
-                       __vc_widget_cb_error(pid, reason);
+                       SLOG(LOG_DEBUG, TAG_VCW, "<<<< service state changed : %d", state);
+
+                       __vc_widget_cb_service_state(state);
+
+               } /* VCD_WIDGET_METHOD_SET_SERVICE_STATE */
+
+               else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_SHOW_TOOLTIP)) {
+                       SLOG(LOG_DEBUG, TAG_VCW, "===== Show / Hide tooltip");
+                       int pid = 0;
+                       int show = 0;
+
+                       dbus_message_get_args(msg, &err,
+                                                                 DBUS_TYPE_INT32, &pid,
+                                                                 DBUS_TYPE_INT32, &show,
+                                                                 DBUS_TYPE_INVALID);
+
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
+
+                       if (pid > 0) {
+                               SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget show tooltip : pid(%d), show(%d)", pid, show);
+
+                               __vc_widget_cb_show_tooltip(pid, (bool)show);
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget show tooltip : invalid pid");
+                       }
+
+                       SLOG(LOG_DEBUG, TAG_VCW, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCW, " ");
+               } /* VCD_WIDGET_METHOD_SHOW_TOOLTIP */
+
+               else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_RESULT)) {
+                       SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget result");
+
+                       __vc_widget_cb_result();
+
+                       /*
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get result : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get result");
+
+                               dbus_connection_flush(g_w_conn_listener);
+                               dbus_message_unref(reply);
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get result : fail to create reply message");
+
+                       */
+
+                       SLOG(LOG_DEBUG, TAG_VCW, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCW, " ");
+
+               } /* VCD_WIDGET_METHOD_RESULT */
+
+               else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_ERROR)) {
+                       SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget error");
+                       int pid;
+                       int reason;
+                       char* err_msg;
+
+                       dbus_message_get_args(msg, &err,
+                                                                 DBUS_TYPE_INT32, &pid,
+                                                                 DBUS_TYPE_INT32, &reason,
+                                                                 DBUS_TYPE_STRING, &err_msg,
+                                                                 DBUS_TYPE_INVALID);
+
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get error message : Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       } else {
+                               SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
+                               __vc_widget_cb_error(pid, reason);
+                       }
+
+                       /*
+                       reply = dbus_message_new_method_return(msg);
+
+                       if (NULL != reply) {
+                               if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
+                                       SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget error message : fail to send reply");
+                               else
+                                       SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget error message");
+
+                               dbus_connection_flush(g_w_conn_listener);
+                               dbus_message_unref(reply);
+                       } else {
+                               SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget error message : fail to create reply message");
+                       }
+                       */
+
+                       SLOG(LOG_DEBUG, TAG_VCW, "=====");
+                       SLOG(LOG_DEBUG, TAG_VCW, " ");
+               } /* VCD_WIDGET_METHOD_ERROR */
+
+               else {
+                       SLOG(LOG_ERROR, TAG_VCW, "Message is NOT valid");
+                       dbus_message_unref(msg);
+                       break;
                }
 
-               SLOG(LOG_DEBUG, TAG_VCW, "=====");
-               SLOG(LOG_DEBUG, TAG_VCW, " ");
-       } /* VCD_WIDGET_METHOD_ERROR */
-
-       /* free the message */
-       dbus_message_unref(msg);
+               /* free the message */
+               dbus_message_unref(msg);
+       } /* while(1) */
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -199,16 +258,10 @@ int vc_widget_dbus_open_connection()
                return VC_ERROR_OPERATION_FAILED;
        }
 
-       int pid = getpid();
-
-       char service_name[64];
-       memset(service_name, '\0', 64);
-       snprintf(service_name, 64, "%s", VC_WIDGET_SERVICE_NAME);
-
-       SLOG(LOG_DEBUG, TAG_VCW, "service name is %s", service_name);
+       SLOG(LOG_DEBUG, TAG_VCW, "service name is %s", VC_WIDGET_SERVICE_NAME);
 
        /* register our name on the bus, and check for errors */
-       ret = dbus_bus_request_name(g_w_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
+       ret = dbus_bus_request_name(g_w_conn_listener, VC_WIDGET_SERVICE_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
 
        if (dbus_error_is_set(&err)) {
                SLOG(LOG_ERROR, TAG_VCW, "Name Error (%s)", err.message);
@@ -266,13 +319,7 @@ int vc_widget_dbus_close_connection()
                g_w_fd_handler = NULL;
        }
 
-       int pid = getpid();
-
-       char service_name[64];
-       memset(service_name, '\0', 64);
-       snprintf(service_name, 64, "%s", VC_WIDGET_SERVICE_NAME);
-
-       dbus_bus_release_name(g_w_conn_listener, service_name, &err);
+       dbus_bus_release_name(g_w_conn_listener, VC_WIDGET_SERVICE_NAME, &err);
 
        if (dbus_error_is_set(&err)) {
                SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
@@ -346,7 +393,7 @@ int vc_widget_dbus_request_hello()
 }
 
 
-int vc_widget_dbus_request_initialize(int pid)
+int vc_widget_dbus_request_initialize(int pid, int* service_state)
 {
        DBusMessage* msg;
 
@@ -382,8 +429,10 @@ int vc_widget_dbus_request_initialize(int pid)
        }
 
        if (NULL != result_msg) {
+               int tmp_service_state = 0;
                dbus_message_get_args(result_msg, &err,
                        DBUS_TYPE_INT32, &result,
+                       DBUS_TYPE_INT32, &tmp_service_state,
                        DBUS_TYPE_INVALID);
 
                if (dbus_error_is_set(&err)) {
@@ -395,7 +444,8 @@ int vc_widget_dbus_request_initialize(int pid)
                dbus_message_unref(result_msg);
 
                if (0 == result) {
-                       SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget initialize : result = %d", result);
+                       *service_state = tmp_service_state;
+                       SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget initialize : result = %d service = %d", result, *service_state);
                } else {
                        SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget initialize : result = %d", result);
                }
index e69209e..ddf22ac 100644 (file)
@@ -30,7 +30,7 @@ int vc_widget_dbus_close_connection();
 
 int vc_widget_dbus_request_hello();
 
-int vc_widget_dbus_request_initialize(int pid);
+int vc_widget_dbus_request_initialize(int pid, int* service_state);
 
 int vc_widget_dbus_request_finalize(int pid);
 
index 8eacee5..2e38474 100644 (file)
@@ -39,7 +39,6 @@ typedef struct {
        int     uid;
        vc_config_lang_changed_cb       lang_cb;
        vc_config_foreground_changed_cb foreground_cb;
-       vc_config_state_changed_cb      state_cb;
        vc_config_enabled_cb            enabled_cb;
 } vc_config_client_s;
 
@@ -55,8 +54,6 @@ static GSList* g_config_client_list = NULL;
 
 static vc_config_s* g_config_info;
 
-static int g_service_state;
-
 static int g_foreground_pid;
 
 static int g_lang_ref_count;
@@ -64,11 +61,6 @@ static Ecore_Fd_Handler* g_fd_handler_lang = NULL;
 static int g_fd_lang;
 static int g_wd_lang;
 
-static int g_state_ref_count;
-static Ecore_Fd_Handler* g_fd_handler_state = NULL;
-static int g_fd_state;
-static int g_wd_state;
-
 static int g_fore_ref_count;
 static Ecore_Fd_Handler* g_fd_handler_fore = NULL;
 static int g_fd_fore;
@@ -639,14 +631,6 @@ int vc_config_mgr_initialize(int uid)
        SLOG(LOG_DEBUG, vc_config_tag(), " language : %s", g_config_info->language);
        SLOG(LOG_DEBUG, vc_config_tag(), "===================");
 
-       /* Get service state */
-       if (0 != vc_parser_get_service_state(&g_service_state)) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to get state");
-               return VC_CONFIG_ERROR_OPERATION_FAILED;
-       }
-
-       SLOG(LOG_DEBUG, vc_config_tag(), "Current service state : %d", g_service_state);
-
        if (0 != vc_parser_get_foreground(&g_foreground_pid)) {
                SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to get foreground pid");
                return VC_CONFIG_ERROR_OPERATION_FAILED;
@@ -655,7 +639,6 @@ int vc_config_mgr_initialize(int uid)
        SLOG(LOG_DEBUG, vc_config_tag(), "Current foreground pid : %d", g_foreground_pid);
 
        g_lang_ref_count = 0;
-       g_state_ref_count = 0;
        g_fore_ref_count = 0;
 
        /* Register to detect display language change */
@@ -844,162 +827,6 @@ int vc_config_mgr_unset_lang_cb(int uid)
        return 0;
 }
 
-Eina_Bool vc_config_mgr_inotify_state_cb(void* data, Ecore_Fd_Handler *fd_handler)
-{
-       SLOG(LOG_DEBUG, vc_config_tag(), "===== State changed callback event");
-
-       int length;
-       struct inotify_event event;
-       memset(&event, '\0', sizeof(struct inotify_event));
-
-       length = read(g_fd_state, &event, sizeof(struct inotify_event));
-       if (0 > length) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Empty Inotify event");
-               SLOG(LOG_DEBUG, vc_config_tag(), "=====");
-               SLOG(LOG_DEBUG, vc_config_tag(), " ");
-               return ECORE_CALLBACK_PASS_ON;
-       }
-
-       if (IN_CLOSE_WRITE == event.mask) {
-               int state = -1;
-               if (0 != vc_parser_get_service_state(&state)) {
-                       SLOG(LOG_ERROR, vc_config_tag(), "Fail to get state");
-                       return ECORE_CALLBACK_PASS_ON;
-               }
-
-               SLOG(LOG_DEBUG, vc_config_tag(), "Previous state(%d) Current state(%d)", g_service_state, state);
-
-               /* If state is not changed */
-               if (g_service_state != state) {
-                       int previous_state = g_service_state;
-                       g_service_state = state;
-
-                       GSList *iter = NULL;
-                       vc_config_client_s* temp_client = NULL;
-
-                       /* Call all callbacks of client*/
-                       iter = g_slist_nth(g_config_client_list, 0);
-
-                       while (NULL != iter) {
-                               temp_client = iter->data;
-
-                               if (NULL != temp_client) {
-                                       if (NULL != temp_client->state_cb) {
-                                               temp_client->state_cb(previous_state, g_service_state);
-                                       }
-                               }
-
-                               iter = g_slist_next(iter);
-                       }
-               }
-       } else {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Undefined event");
-       }
-
-       SLOG(LOG_DEBUG, vc_config_tag(), "=====");
-       SLOG(LOG_DEBUG, vc_config_tag(), " ");
-
-       return ECORE_CALLBACK_PASS_ON;
-}
-
-int __vc_config_mgr_register_state_event()
-{
-       if (0 == g_state_ref_count) {
-               /* get file notification handler */
-               int fd;
-               int wd;
-
-               fd = inotify_init();
-               if (fd < 0) {
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail get inotify fd");
-                       return -1;
-               }
-               g_fd_state = fd;
-
-               wd = inotify_add_watch(fd, VC_RUNTIME_INFO_SERVICE_STATE, IN_CLOSE_WRITE);
-               g_wd_state = wd;
-
-               g_fd_handler_state = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)vc_config_mgr_inotify_state_cb, NULL, NULL, NULL);               
-               if (NULL == g_fd_handler_state) {
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to get handler for state");
-                       return -1;
-               }
-       }
-       g_state_ref_count++;
-
-       return 0;
-}
-
-int __vc_config_mgr_unregister_state_event()
-{
-       if (0 == g_state_ref_count) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] State ref count is 0");
-               return VC_CONFIG_ERROR_INVALID_STATE;
-       }
-
-       g_state_ref_count--;
-       if (0 == g_state_ref_count) {
-               /* delete inotify variable */
-               ecore_main_fd_handler_del(g_fd_handler_state);
-               inotify_rm_watch(g_fd_state, g_wd_state);
-               close(g_fd_state);
-       }
-       return 0;
-}
-
-int vc_config_mgr_set_service_state_cb(int uid, vc_config_state_changed_cb state_cb)
-{
-       if (NULL == state_cb) {
-               SLOG(LOG_ERROR, vc_config_tag(), "State changed cb is NULL : uid(%d) ", uid);
-               return VC_CONFIG_ERROR_INVALID_PARAMETER;
-       }
-
-       GSList *iter = NULL;
-       vc_config_client_s* temp_client = NULL;
-
-       /* Call all callbacks of client*/
-       iter = g_slist_nth(g_config_client_list, 0);
-
-       while (NULL != iter) {
-               temp_client = iter->data;
-
-               if (NULL != temp_client) {
-                       if (uid == temp_client->uid) {
-                               temp_client->state_cb = state_cb;
-                               __vc_config_mgr_register_state_event();
-                               return VC_CONFIG_ERROR_NONE;
-                       }
-               }
-               iter = g_slist_next(iter);
-       }
-
-       return VC_CONFIG_ERROR_INVALID_PARAMETER;
-}
-
-int vc_config_mgr_unset_service_state_cb(int uid)
-{
-       GSList *iter = NULL;
-       vc_config_client_s* temp_client = NULL;
-
-       /* Call all callbacks of client*/
-       iter = g_slist_nth(g_config_client_list, 0);
-
-       while (NULL != iter) {
-               temp_client = iter->data;
-
-               if (NULL != temp_client) {
-                       if (uid == temp_client->uid) {
-                               temp_client->state_cb = NULL;
-                               __vc_config_mgr_unregister_state_event();
-                               return 0;
-                       }
-               }
-               iter = g_slist_next(iter);
-       }
-
-       return VC_CONFIG_ERROR_INVALID_PARAMETER;
-}
-
 Eina_Bool vc_config_mgr_inotify_foreground_cb(void* data, Ecore_Fd_Handler *fd_handler)
 {
        SLOG(LOG_DEBUG, vc_config_tag(), "===== Foreground changed callback event");
@@ -1524,26 +1351,6 @@ bool vc_config_check_default_language_is_valid(const char* language)
        return false;
 }
 
-int vc_config_mgr_set_service_state(int state)
-{
-       if (0 >= g_slist_length(g_config_client_list)) {
-               SLOG(LOG_ERROR, vc_config_tag(), "Not initialized");
-               return -1;
-       }
-
-       return vc_parser_set_service_state(state);
-}
-
-int vc_config_mgr_get_service_state(int* state)
-{
-       if (0 >= g_slist_length(g_config_client_list)) {
-               SLOG(LOG_ERROR, vc_config_tag(), "Not initialized");
-               return -1;
-       }
-
-       return vc_parser_get_service_state(state);
-}
-
 int vc_config_mgr_set_foreground(int pid, bool value)
 {
        if (0 >= g_slist_length(g_config_client_list)) {
index 32fb8b1..a1e7e82 100644 (file)
@@ -41,8 +41,6 @@ typedef void (*vc_config_lang_changed_cb)(const char* before_lang, const char* c
 
 typedef void (*vc_config_foreground_changed_cb)(int previous, int current);
 
-typedef void (*vc_config_state_changed_cb)(int previous, int current);
-
 typedef void (*vc_config_enabled_cb)(bool enable);
 
 
@@ -56,10 +54,6 @@ int vc_config_mgr_set_lang_cb(int uid, vc_config_lang_changed_cb lang_cb);
 
 int vc_config_mgr_unset_lang_cb(int uid);
 
-int vc_config_mgr_set_service_state_cb(int uid, vc_config_state_changed_cb state_cb);
-
-int vc_config_mgr_unset_service_state_cb(int uid);
-
 int vc_config_mgr_set_foreground_cb(int uid, vc_config_foreground_changed_cb foreground_cb);
 
 int vc_config_mgr_unset_foreground_cb(int uid);
@@ -91,11 +85,6 @@ bool vc_config_check_default_language_is_valid(const char* language);
 int vc_config_convert_error_code(vc_config_error_e code);
 
 
-int vc_config_mgr_set_service_state(int state);
-
-int vc_config_mgr_get_service_state(int* state);
-
-
 int vc_config_mgr_set_foreground(int pid, bool value);
 
 int vc_config_mgr_get_foreground(int* pid);
index 3a463fa..3e984d4 100644 (file)
@@ -40,7 +40,6 @@
 #define VC_TAG_CONFIG_ENABLED          "enabled"
 
 #define VC_TAG_INFO_BASE_TAG           "vc_info_option"
-#define VC_TAG_INFO_SERVICE_STATE      "service_state"
 #define VC_TAG_INFO_FOREGROUND         "foreground_pid"
 
 
@@ -276,19 +275,6 @@ int vc_parser_load_config(vc_config_s** config_info)
        xmlChar *key;
        bool is_default_open = false;
 
-       if (0 != access(VC_RUNTIME_INFO_ROOT, F_OK)) {
-               SLOG(LOG_DEBUG, vc_config_tag(), "No info root directory");
-               if (0 != access(VC_CONFIG_ROOT, F_OK)) {
-                       SLOG(LOG_DEBUG, vc_config_tag(), "No root directory");
-                       if (0 != mkdir(VC_CONFIG_ROOT, 0755)) {
-                               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to make directory");
-                       }
-               }
-               if (0 != mkdir(VC_RUNTIME_INFO_ROOT, 0755)) {
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to make directory");
-               }
-       }
-
        if (0 != access(VC_CONFIG, F_OK)) {
                doc = xmlParseFile(VC_CONFIG_DEFAULT);
                if (doc == NULL) {
@@ -724,192 +710,6 @@ int vc_parser_find_config_changed(int* auto_lang, char** language, int* enabled)
        return 0;
 }
 
-int vc_parser_init_service_state()
-{
-       if (0 != access(VC_RUNTIME_INFO_SERVICE_STATE, R_OK | W_OK)) {
-               /* make file */
-               xmlDocPtr doc;
-               xmlNodePtr root_node;
-               xmlNodePtr info_node;
-
-               doc = xmlNewDoc((const xmlChar*)"1.0");
-               doc->encoding = (const xmlChar*)"utf-8";
-               doc->charset = 1;
-
-               root_node = xmlNewNode(NULL, (const xmlChar*)VC_TAG_INFO_BASE_TAG);
-               xmlDocSetRootElement(doc,root_node);
-
-               /* Make new command node */
-               info_node = xmlNewNode(NULL, (const xmlChar*)VC_TAG_INFO_SERVICE_STATE);
-               xmlNodeSetContent(info_node, (const xmlChar *)"0");
-               xmlAddChild(root_node, info_node);
-
-               int ret = xmlSaveFormatFile(VC_RUNTIME_INFO_SERVICE_STATE, doc, 1);
-               SLOG(LOG_DEBUG, vc_config_tag(), "Save service state info file : %d", ret);
-
-               if (0 != __vc_config_parser_set_file_mode(VC_RUNTIME_INFO_SERVICE_STATE))
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to set file mode - %s", VC_RUNTIME_INFO_SERVICE_STATE);
-       }
-
-       return 0;
-}
-
-int vc_parser_set_service_state(int state)
-{
-       /* Set service state */
-       xmlDocPtr doc = NULL;
-       xmlNodePtr cur = NULL;
-
-       int retry_count = 0;
-
-       while (NULL == doc) {
-               doc = xmlParseFile(VC_RUNTIME_INFO_SERVICE_STATE);
-               if (NULL != doc) {
-                       break;
-               }
-               retry_count++;
-               usleep(10000);
-
-               if (VC_RETRY_COUNT == retry_count) {
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to parse file error : %s", VC_RUNTIME_INFO_SERVICE_STATE);
-                       return -1;
-               }
-       }
-
-       cur = xmlDocGetRootElement(doc);
-       if (cur == NULL) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Empty document");
-               return -1;
-       }
-
-       if (xmlStrcmp(cur->name, (const xmlChar *) VC_TAG_INFO_BASE_TAG)) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] The wrong type, root node is NOT %s", VC_TAG_INFO_BASE_TAG);
-               return -1;
-       }
-
-       cur = cur->xmlChildrenNode;
-       if (cur == NULL) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Empty document");
-               return -1;
-       }
-
-       while (cur != NULL) {
-               if (0 == xmlStrcmp(cur->name, (const xmlChar *)VC_TAG_INFO_SERVICE_STATE)) {                    
-                       char temp[16];
-                       memset(temp, 0, 16);
-                       snprintf(temp, 16, "%d", state);
-
-                       xmlNodeSetContent(cur, (const xmlChar *)temp);
-                       break;
-               } 
-
-               cur = cur->next;
-       }
-
-       int ret = xmlSaveFile(VC_RUNTIME_INFO_SERVICE_STATE, doc);
-       if (0 >= ret) {
-               SLOG(LOG_DEBUG, vc_config_tag(), "[ERROR] Fail to save service state info file : %d", ret);
-               return -1;
-       }
-       SLOG(LOG_DEBUG, vc_config_tag(), "[Success] Save service state info file : state(%d)", state);
-
-       return 0;
-}
-
-int vc_parser_get_service_state(int* state)
-{
-       if (NULL == state) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Input parameter is NULL");
-               return -1;
-       }
-
-       if (0 != access(VC_RUNTIME_INFO_SERVICE_STATE, F_OK)) {
-               /* make file */
-               xmlDocPtr doc;
-               xmlNodePtr root_node;
-               xmlNodePtr info_node;
-
-               doc = xmlNewDoc((const xmlChar*)"1.0");
-               doc->encoding = (const xmlChar*)"utf-8";
-               doc->charset = 1;
-
-               root_node = xmlNewNode(NULL, (const xmlChar*)VC_TAG_INFO_BASE_TAG);
-               xmlDocSetRootElement(doc, root_node);
-
-               /* Make new command node */
-               info_node = xmlNewNode(NULL, (const xmlChar*)VC_TAG_INFO_SERVICE_STATE);
-               xmlNodeSetContent(info_node, (const xmlChar *)"0");
-               xmlAddChild(root_node, info_node);
-
-               int ret = xmlSaveFormatFile(VC_RUNTIME_INFO_SERVICE_STATE, doc, 1);
-               SLOG(LOG_DEBUG, vc_config_tag(), "Save runtime info file : %d", ret);
-
-               if (0 != __vc_config_parser_set_file_mode(VC_RUNTIME_INFO_SERVICE_STATE))
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to set file mode - %s", VC_RUNTIME_INFO_SERVICE_STATE);
-
-               *state = 0;
-               return 0;
-       }
-
-       /* Check file */
-       xmlDocPtr doc = NULL;
-       xmlNodePtr cur = NULL;
-       xmlChar *key;
-       int retry_count = 0;
-
-       while (NULL == doc) {
-               doc = xmlParseFile(VC_RUNTIME_INFO_SERVICE_STATE);
-               if (NULL != doc) {
-                       break;
-               }
-               retry_count++;
-               usleep(10000);
-
-               if (VC_RETRY_COUNT == retry_count) {
-                       SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to parse file error : %s", VC_RUNTIME_INFO_SERVICE_STATE);
-                       return -1;
-               }
-       }
-
-       cur = xmlDocGetRootElement(doc);
-       if (cur == NULL) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Empty document");
-               xmlFreeDoc(doc);
-               return -1;
-       }
-
-       if (xmlStrcmp(cur->name, (const xmlChar *)VC_TAG_INFO_BASE_TAG)) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] The wrong type, root node is NOT '%s'", VC_TAG_INFO_BASE_TAG);
-               xmlFreeDoc(doc);
-               return -1;
-       }
-
-       cur = cur->xmlChildrenNode;
-       if (cur == NULL) {
-               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Empty document");
-               xmlFreeDoc(doc);
-               return -1;
-       }
-
-       while (cur != NULL) {
-               if (0 == xmlStrcmp(cur->name, (const xmlChar *)VC_TAG_INFO_SERVICE_STATE)) {
-                       key = xmlNodeGetContent(cur);
-                       if (NULL != key) {
-                               SLOG(LOG_DEBUG, vc_config_tag(), "Service state : %s", (char *)key);
-                               *state = atoi((char*)key);
-                               xmlFree(key);
-                       } else {
-                               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] enable is NULL");
-                       }
-               }
-               cur = cur->next;
-       }
-
-       xmlFreeDoc(doc);
-
-       return 0;
-}
-
 int vc_parser_set_foreground(int pid, bool value)
 {
        int cur_pid = 0;
index 2212d02..e862865 100644 (file)
@@ -61,14 +61,6 @@ int vc_parser_set_enabled(bool value);
 int vc_parser_find_config_changed(int* auto_lang, char** language, int* enabled);
 
 
-/* Set / Get service state */
-int vc_parser_init_service_state();
-
-int vc_parser_set_service_state(int state);
-
-int vc_parser_get_service_state(int* state);
-
-
 /* Set / Get foreground info */
 int vc_parser_set_foreground(int pid, bool value);
 
index 64ea62a..f794278 100644 (file)
@@ -29,17 +29,17 @@ extern "C" {
 * Definition for Dbus
 *******************************************************************************************/
 
-#define VC_CLIENT_SERVICE_NAME         "org.tizen.vc.client"
-#define VC_CLIENT_SERVICE_OBJECT_PATH  "/org/tizen/vc/client"
-#define VC_CLIENT_SERVICE_INTERFACE    "org.tizen.vc.client"
+#define VC_CLIENT_SERVICE_NAME         "org.tizen.voice.vcclient"
+#define VC_CLIENT_SERVICE_OBJECT_PATH  "/org/tize/voice/vcclient"
+#define VC_CLIENT_SERVICE_INTERFACE    "org.tizen.voice.vcclient"
 
-#define VC_WIDGET_SERVICE_NAME        "org.tizen.vc.widget"
-#define VC_WIDGET_SERVICE_OBJECT_PATH "/org/tizen/vc/widget"
-#define VC_WIDGET_SERVICE_INTERFACE   "org.tizen.vc.widget"
+#define VC_WIDGET_SERVICE_NAME        "org.tizen.voice.vcwidget"
+#define VC_WIDGET_SERVICE_OBJECT_PATH "/org/tize/voice/vcwidget"
+#define VC_WIDGET_SERVICE_INTERFACE   "org.tizen.voice.vcwidget"
 
-#define VC_MANAGER_SERVICE_NAME        "org.tizen.vc.manager"
-#define VC_MANAGER_SERVICE_OBJECT_PATH "/org/tizen/vc/manager"
-#define VC_MANAGER_SERVICE_INTERFACE   "org.tizen.vc.manager"
+#define VC_MANAGER_SERVICE_NAME        "org.tizen.voice.vcmanager"
+#define VC_MANAGER_SERVICE_OBJECT_PATH "/org/tize/voice/vcmanager"
+#define VC_MANAGER_SERVICE_INTERFACE   "org.tizen.voice.vcmanager"
 
 #define VC_SERVER_SERVICE_NAME         "org.tizen.voice.vcserver"
 #define VC_SERVER_SERVICE_OBJECT_PATH  "/org/tizen/voice/vcserver"
@@ -66,6 +66,7 @@ extern "C" {
 #define VCD_METHOD_RESULT              "vcd_method_result"
 #define VCD_METHOD_ERROR               "vcd_method_error"
 #define VCD_METHOD_HELLO               "vcd_method_hello"
+#define VCD_METHOD_SET_SERVICE_STATE   "vcd_method_set_service_state"
 
 /* Authority */
 #if 0
@@ -101,6 +102,7 @@ extern "C" {
 #define VCD_WIDGET_METHOD_ERROR                        "vcd_widget_method_error"
 #define VCD_WIDGET_METHOD_HELLO                        "vcd_widget_method_hello"
 #define VCD_WIDGET_METHOD_SHOW_TOOLTIP         "vcd_widget_method_show_tooltip"
+#define VCD_WIDGET_METHOD_SET_SERVICE_STATE    "vcd_widget_method_set_service_state"
 
 
 /******************************************************************************************
@@ -126,6 +128,8 @@ extern "C" {
 #define VCD_MANAGER_METHOD_SPEECH_DETECTED     "vcd_manager_method_speech_detected"
 #define VCD_MANAGER_METHOD_ALL_RESULT          "vcd_manager_method_all_result"
 #define VCD_MANAGER_METHOD_RESULT              "vcd_manager_method_result"
+#define VCD_MANAGER_METHOD_SET_VOLUME          "vcd_manager_method_set_volume"
+#define VCD_MANAGER_METHOD_SET_SERVICE_STATE   "vcd_manager_method_set_service_state"
 
 #define VCD_MANAGER_METHOD_ERROR               "vcd_manager_method_error"
 
@@ -167,6 +171,15 @@ extern "C" {
 
 #define VC_RUNTIME_INFO_CLIENT         tzplatform_mkpath(TZ_USER_HOME, ".voice/vc/vc-client-info.xml")
 
+/******************************************************************************************
+* Defines for common enum
+*******************************************************************************************/
+
+typedef enum {
+       VC_RESULT_TYPE_NORMAL,
+       VC_RESULT_TYPE_NOTIFICATION
+} vc_result_type_e;
+
 
 #ifdef __cplusplus
 }
index c4d191f..f6721f7 100644 (file)
@@ -61,6 +61,16 @@ extern "C"
 #define VC_RESULT_MESSAGE_ERROR_TOO_LOUD       "vc.result.message.error.too.loud"
 
 /**
+* @brief Enumerations of recognition mode.
+*/
+typedef enum {
+       VC_RECOGNITION_MODE_STOP_BY_SILENCE,            /**< Default mode */
+       VC_RECOGNITION_MODE_RESTART_AFTER_REJECT,       /**< Restart recognition after rejected result */
+       VC_RECOGNITION_MODE_RESTART_CONTINUOUSLY,       /**< Continuously restart recognition - not support yet*/
+       VC_RECOGNITION_MODE_MANUAL                      /**< Start and stop manually without silence */
+} vc_recognition_mode_e;
+
+/**
 * @brief Called when client gets the all recognition results from vc-daemon.
 *
 * @remark temp_command is valid in callback function.
@@ -361,6 +371,38 @@ int vc_mgr_set_audio_type(const char* audio_id);
 int vc_mgr_get_audio_type(char** audio_id);
 
 /**
+* @brief Sets recognition mode.
+*
+* @param[in] mode recognition mode (e.g. #VC_RECOGNITION_MODE_SILENCE_DETECTION_ONE_TURN is default value)
+*
+* @return 0 on success, otherwise a negative error value
+* @retval #VC_ERROR_NONE Successful
+* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
+* @retval #VC_ERROR_INVALID_STATE Invalid state
+*
+* @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
+*
+* @see vc_mgr_set_recognition_mode()
+*/
+int vc_mgr_set_recognition_mode(vc_recognition_mode_e mode);
+
+/**
+* @brief Gets recognition mode.
+*
+* @param[out] mode recognition mode
+*
+* @return 0 on success, otherwise a negative error value
+* @retval #VC_ERROR_NONE Successful
+* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
+* @retval #VC_ERROR_INVALID_STATE Invalid state
+*
+* @pre The state should be #VC_STATE_READY.
+*
+* @see vc_mgr_get_recognition_mode()
+*/
+int vc_mgr_get_recognition_mode(vc_recognition_mode_e* mode);
+
+/**
 * @brief Starts recognition.
 *
 * @param[in] stop_by_silence Silence detection option
index 70d7160..e92e105 100644 (file)
@@ -1,6 +1,6 @@
 Name:       voice-control
 Summary:    Voice control client library and daemon
-Version:    0.2.8
+Version:    0.2.9
 Release:    1
 Group:      Graphics & UI Framework/Voice Framework
 License:    Apache-2.0
index fc36c02..5d5ff34 100644 (file)
@@ -35,6 +35,7 @@ static GSList* g_demandable_client = NULL;
 
 /* Runtime info */
 static bool g_silence_detection;
+static vcd_recognition_mode_e g_recognition_mode;
 
 
 /* Function definitions */
@@ -788,6 +789,17 @@ bool vcd_client_get_slience_detection()
        return g_silence_detection;
 }
 
+int vcd_client_set_recognition_mode(vcd_recognition_mode_e mode)
+{
+       g_recognition_mode = mode;
+       return 0;
+}
+
+vcd_recognition_mode_e vcd_client_get_recognition_mode()
+{
+       return g_recognition_mode;
+}
+
 int __show_client_list()
 {
        GSList *iter = NULL;
index fc4f4d4..10a381d 100644 (file)
@@ -62,6 +62,13 @@ typedef struct {
        bool    widget_cmd;
 } widget_info_s;
 
+typedef enum {
+       VCD_RECOGNITION_MODE_STOP_BY_SILENCE,           /**< Default mode */
+       VCD_RECOGNITION_MODE_RESTART_AFTER_REJECT,      /**< Restart recognition after rejected result */
+       VCD_RECOGNITION_MODE_RESTART_CONTINUOUSLY,      /**< Continuously restart recognition - not support yet*/
+       VCD_RECOGNITION_MODE_MANUAL                     /**< Start and stop manually without silence */
+} vcd_recognition_mode_e;
+
 
 /*
 * Command API
@@ -82,6 +89,10 @@ int vcd_client_set_slience_detection(bool value);
 
 bool vcd_client_get_slience_detection();
 
+int vcd_client_set_recognition_mode(vcd_recognition_mode_e mode);
+
+vcd_recognition_mode_e vcd_client_get_recognition_mode();
+
 /*
 * Manager API
 */
index 2e0586f..ee0047a 100644 (file)
@@ -103,11 +103,6 @@ int vcd_config_set_service_state(vcd_state_e state)
 {
        g_state = state;
 
-       if (0 != vc_config_mgr_set_service_state((int)state)) {
-               SLOG(LOG_ERROR, TAG_VCD, "[Config ERROR] Fail to set service state");
-               return VCD_ERROR_OPERATION_FAILED;
-       }
-
        SLOG(LOG_DEBUG, TAG_VCD, "[Config] Config is changed : %d", g_state);
 
        return 0;
index 26380ad..6d21801 100644 (file)
@@ -158,10 +158,41 @@ int vcdc_send_show_tooltip(int pid, bool show)
                dbus_connection_flush(g_conn_sender);
        }
 
+       dbus_message_unref(msg);
+
        return 0;
 }
 
+int vcdc_send_set_volume(int manger_pid, float volume)
+{
+       DBusMessage* msg = NULL;
+
+       /* SLOG(LOG_DEBUG, TAG_VCD, "[Dbus] Set volume (%f)", volume); */
+
+       msg = dbus_message_new_signal(
+               VC_MANAGER_SERVICE_OBJECT_PATH,
+               VC_MANAGER_SERVICE_INTERFACE,
+               VCD_MANAGER_METHOD_SET_VOLUME);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL");
+               return VCD_ERROR_OUT_OF_MEMORY;
+       }
+
+       dbus_message_append_args(msg, DBUS_TYPE_INT32, &volume, DBUS_TYPE_INVALID);
 
+       if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send");
+               return -1;
+       } else {
+               SLOG(LOG_DEBUG, TAG_VCD, "<<<< Send set volume : pid(%d), volume(%f)", manger_pid, volume);
+               dbus_connection_flush(g_conn_sender);
+       }
+
+       dbus_message_unref(msg);
+
+       return 0;
+}
 
 int vcdc_send_result(int pid, int cmd_type)
 {
@@ -204,10 +235,12 @@ int vcdc_send_result(int pid, int cmd_type)
                dbus_connection_flush(g_conn_sender);
        }
 
+       dbus_message_unref(msg);
+
        return 0;
 }
 
-int vcdc_send_result_to_manager(int manger_pid)
+int vcdc_send_result_to_manager(int manger_pid, int result_type)
 {
        DBusError err;
        dbus_error_init(&err);
@@ -221,6 +254,10 @@ int vcdc_send_result_to_manager(int manger_pid)
                return VCD_ERROR_OUT_OF_MEMORY;
        }
 
+       SLOG(LOG_DEBUG, TAG_VCD, "[Dbus] send result : result type(%d)", result_type);
+
+       dbus_message_append_args(msg, DBUS_TYPE_INT32, &result_type, DBUS_TYPE_INVALID);
+
        dbus_message_set_no_reply(msg, TRUE);
 
        if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
@@ -231,6 +268,8 @@ int vcdc_send_result_to_manager(int manger_pid)
                dbus_connection_flush(g_conn_sender);
        }
 
+       dbus_message_unref(msg);
+
        return 0;
 }
 
@@ -239,6 +278,7 @@ int vcdc_send_speech_detected(int manger_pid)
        DBusError err;
        dbus_error_init(&err);
 
+       /* Send to manager */
        DBusMessage* msg = NULL;
 
        msg = __get_message(manger_pid, VCD_MANAGER_METHOD_SPEECH_DETECTED, VCD_CLIENT_TYPE_MANAGER);
@@ -258,6 +298,90 @@ int vcdc_send_speech_detected(int manger_pid)
                dbus_connection_flush(g_conn_sender);
        }
 
+       dbus_message_unref(msg);
+
+       return 0;
+}
+
+int vcdc_send_service_state(vcd_state_e state)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       DBusMessage* msg = NULL;
+
+       msg = dbus_message_new_signal(
+               VC_MANAGER_SERVICE_OBJECT_PATH,
+               VC_MANAGER_SERVICE_INTERFACE,
+               VCD_MANAGER_METHOD_SET_SERVICE_STATE);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL");
+               return VCD_ERROR_OUT_OF_MEMORY;
+       }
+
+       dbus_message_append_args(msg, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+
+       if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send");
+               return VCD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_VCD, "<<<< Send serive state message to manager : state(%d)", state);
+               dbus_connection_flush(g_conn_sender);
+       }
+
+       dbus_message_unref(msg);
+
+       /* Send to client */
+       msg = NULL;
+
+       msg = dbus_message_new_signal(
+               VC_CLIENT_SERVICE_OBJECT_PATH,
+               VC_CLIENT_SERVICE_INTERFACE,
+               VCD_METHOD_SET_SERVICE_STATE);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL");
+               return VCD_ERROR_OUT_OF_MEMORY;
+       }
+
+       dbus_message_append_args(msg, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+
+       if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send");
+               return VCD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_VCD, "<<<< Send serive state message to client : state(%d)", state);
+               dbus_connection_flush(g_conn_sender);
+       }
+
+       dbus_message_unref(msg);
+
+       msg = NULL;
+
+       /* Send to widget client */
+       msg = dbus_message_new_signal(
+               VC_WIDGET_SERVICE_OBJECT_PATH,
+               VC_WIDGET_SERVICE_INTERFACE,
+               VCD_WIDGET_METHOD_SET_SERVICE_STATE);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL");
+               return VCD_ERROR_OUT_OF_MEMORY;
+       }
+
+       dbus_message_append_args(msg, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+
+       if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send");
+               return VCD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_VCD, "<<<< Send serive state message to widget client : state(%d)", state);
+               dbus_connection_flush(g_conn_sender);
+       }
+
+       dbus_message_unref(msg);
+
        return 0;
 }
 
@@ -272,9 +396,6 @@ int vcdc_send_error_signal(int pid, int reason, char *err_msg)
        memset(service_name, 0, 64);
        snprintf(service_name, 64, "%s", VC_CLIENT_SERVICE_NAME);
 
-       char target_if_name[128];
-       snprintf(target_if_name, sizeof(target_if_name), "%s", VC_CLIENT_SERVICE_INTERFACE);
-
        DBusMessage* msg;
        SLOG(LOG_DEBUG, TAG_VCD, "[Dbus] send error signal : reason(%d), Error Msg(%s)", reason, err_msg);
 
@@ -305,6 +426,8 @@ int vcdc_send_error_signal(int pid, int reason, char *err_msg)
                dbus_connection_flush(g_conn_sender);
        }
 
+       dbus_message_unref(msg);
+
        return 0;
 }
 
index 543a7d6..f8a4966 100644 (file)
@@ -39,14 +39,18 @@ int vcdc_send_hello(int pid, vcd_client_type_e type);
 
 int vcdc_send_show_tooltip(int pid, bool show);
 
+int vcdc_send_set_volume(int manger_pid, float volume);
+
 int vcdc_send_result(int pid, int cmd_type);
 
-int vcdc_send_result_to_manager(int manger_pid);
+int vcdc_send_result_to_manager(int manger_pid, int result_type);
 
 int vcdc_send_speech_detected(int manger_pid);
 
 int vcdc_send_error_signal(int pid, int reason, char *err_msg);
 
+int vcdc_send_service_state(vcd_state_e state);
+
 
 #ifdef __cplusplus
 }
index 52a0d7b..e2e826d 100644 (file)
@@ -88,6 +88,7 @@ int vcd_dbus_server_mgr_initialize(DBusConnection* conn, DBusMessage* msg)
        dbus_error_init(&err);
 
        int pid;
+       int service_state;
        int ret = VCD_ERROR_OPERATION_FAILED;
 
        dbus_message_get_args(msg, &err,
@@ -103,6 +104,7 @@ int vcd_dbus_server_mgr_initialize(DBusConnection* conn, DBusMessage* msg)
        } else {
                SLOG(LOG_DEBUG, TAG_VCD, "[IN] vcd mgr initialize : pid(%d)", pid);
                ret =  vcd_server_mgr_initialize(pid);
+               service_state = vcd_server_get_service_state();
        }
 
        DBusMessage* reply;
@@ -111,6 +113,7 @@ int vcd_dbus_server_mgr_initialize(DBusConnection* conn, DBusMessage* msg)
        if (NULL != reply) {
                dbus_message_append_args(reply,
                        DBUS_TYPE_INT32, &ret,
+                       DBUS_TYPE_INT32, &service_state,
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
@@ -512,7 +515,7 @@ int vcd_dbus_server_mgr_start(DBusConnection* conn, DBusMessage* msg)
        dbus_error_init(&err);
 
        int pid = 0;
-       int silence = 0;
+       int recognition_mode = 0;
        int exclusive = 0;
        int start_by_client = 0;
 
@@ -521,19 +524,19 @@ int vcd_dbus_server_mgr_start(DBusConnection* conn, DBusMessage* msg)
        SLOG(LOG_DEBUG, TAG_VCD, ">>>>> VCD Manager start");
 
        dbus_message_get_args(msg, &err,
-               DBUS_TYPE_INT32, &pid,
-               DBUS_TYPE_INT32, &silence,
-               DBUS_TYPE_INT32, &exclusive,
-               DBUS_TYPE_INT32, &start_by_client,
-               DBUS_TYPE_INVALID);
+                                                 DBUS_TYPE_INT32, &pid,
+                                                 DBUS_TYPE_INT32, &recognition_mode,
+                                                 DBUS_TYPE_INT32, &exclusive,
+                                                 DBUS_TYPE_INT32, &start_by_client,
+                                                 DBUS_TYPE_INVALID);
 
        if (dbus_error_is_set(&err)) {
                SLOG(LOG_ERROR, TAG_VCD, "[IN ERROR] vcd mgr start : get arguments error (%s)", err.message);
                dbus_error_free(&err);
                ret = VCD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_VCD, "[IN] vcd mgr start : pid(%d), silence(%d), exclusive(%d), start by client(%d)", pid, silence, exclusive, start_by_client);
-               ret = vcd_server_mgr_start((bool)silence, (bool)exclusive, (bool)start_by_client);
+               SLOG(LOG_DEBUG, TAG_VCD, "[IN] vcd mgr start : pid(%d) recognition_mode(%d) exclusive(%d) start by client(%d)", pid, recognition_mode, exclusive, start_by_client);
+               ret = vcd_server_mgr_start((vcd_recognition_mode_e)recognition_mode, (bool)exclusive, (bool)start_by_client);
        }
 
        DBusMessage* reply;
@@ -718,11 +721,12 @@ int vcd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
        dbus_error_init(&err);
 
        int pid;
+       int service_state = 0;
        int ret = VCD_ERROR_OPERATION_FAILED;
 
        dbus_message_get_args(msg, &err,
-               DBUS_TYPE_INT32, &pid,
-               DBUS_TYPE_INVALID);
+                                                 DBUS_TYPE_INT32, &pid,
+                                                 DBUS_TYPE_INVALID);
 
        SLOG(LOG_DEBUG, TAG_VCD, ">>>>> VCD Initialize");
 
@@ -733,6 +737,7 @@ int vcd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
        } else {
                SLOG(LOG_DEBUG, TAG_VCD, "[IN] vcd initialize : pid(%d)", pid);
                ret =  vcd_server_initialize(pid);
+               service_state = vcd_server_get_service_state();
        }
 
        int mgr_pid = vcd_client_manager_get_pid();
@@ -744,6 +749,7 @@ int vcd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
                dbus_message_append_args(reply,
                        DBUS_TYPE_INT32, &ret,
                        DBUS_TYPE_INT32, &mgr_pid,
+                       DBUS_TYPE_INT32, &service_state,
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
@@ -1136,7 +1142,7 @@ int vcd_dbus_server_widget_initialize(DBusConnection* conn, DBusMessage* msg)
        dbus_error_init(&err);
 
        int pid;
-
+       int service_state = 0;
        int ret = VCD_ERROR_OPERATION_FAILED;
 
        dbus_message_get_args(msg, &err,
@@ -1152,6 +1158,7 @@ int vcd_dbus_server_widget_initialize(DBusConnection* conn, DBusMessage* msg)
        } else {
                SLOG(LOG_DEBUG, TAG_VCD, "[IN] vcd widget initialize : pid(%d)", pid);
                ret =  vcd_server_widget_initialize(pid);
+               service_state = vcd_server_get_service_state();
        }
 
        DBusMessage* reply;
@@ -1160,6 +1167,7 @@ int vcd_dbus_server_widget_initialize(DBusConnection* conn, DBusMessage* msg)
        if (NULL != reply) {
                dbus_message_append_args(reply,
                        DBUS_TYPE_INT32, &ret,
+                       DBUS_TYPE_INT32, &service_state,
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
index 8a4810d..3b99ae5 100644 (file)
@@ -317,7 +317,7 @@ int __internal_get_engine_info(const char* filepath, vcengine_info_s** info)
        int (*get_engine_info)(vcpe_engine_info_cb callback, void* user_data);
 
        get_engine_info = (int (*)(vcpe_engine_info_cb, void*))dlsym(handle, "vcp_get_engine_info");
-       if ((error = dlerror()) != NULL) {
+       if (NULL != (error = dlerror()) || NULL == get_engine_info) {
                SLOG(LOG_WARN, TAG_VCD, "[Engine Agent WARNING] Invalid engine. Fail to open vcp_get_engine_info : %s", filepath);
                dlclose(handle);
                return -1;
@@ -500,8 +500,8 @@ int __load_engine(vcengine_s* engine)
                return VCD_ERROR_OPERATION_FAILED;
        }
 
-       engine->vcp_load_engine = (int (*)(vcpd_funcs_s*, vcpe_funcs_s*) )dlsym(engine->handle, "vcp_load_engine");
-       if ((error = dlerror()) != NULL) {
+       engine->vcp_load_engine = (int (*)(vcpd_funcs_s*, vcpe_funcs_s*))dlsym(engine->handle, "vcp_load_engine");
+       if (NULL != (error = dlerror()) || NULL == engine->vcp_load_engine) {
                SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent ERROR] Fail to link daemon to vcp_load_engine()");
                dlclose(engine->handle);
                return VCD_ERROR_OPERATION_FAILED;
index 333abfd..e22ae75 100644 (file)
@@ -20,6 +20,8 @@
 #include <math.h>
 #include <sound_manager.h>
 
+#include "vcd_client_data.h"
+#include "vcd_dbus.h"
 #include "vcd_recorder.h"
 #include "vcd_main.h"
 #include "voice_control_plugin_engine.h"
@@ -45,12 +47,10 @@ static audio_in_h   g_audio_h;
 
 static vcp_audio_type_e g_audio_type;
 
-static int             g_audio_rate;
+static unsigned int    g_audio_rate;
 
 static int             g_audio_channel;
 
-static FILE*   g_pFile_vol;
-
 static char    g_normal_buffer[BUFFER_LENGTH + 10];
 
 static bool    g_is_valid_audio_in = false;
@@ -102,23 +102,24 @@ static void _bt_hid_audio_data_receive_cb(bt_hid_voice_data_s *voice_data, void
                        SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to read audio");
                        vcd_recorder_stop();
                }
+       }
 
-               float vol_db = get_volume_decibel((char*)voice_data->audio_buf, (int)voice_data->length);
-
-               rewind(g_pFile_vol);
-
-               fwrite((void*)(&vol_db), sizeof(vol_db), 1, g_pFile_vol);
+       /* Set volume */
+       if (0 == g_buffer_count % 30) {
+               float vol_db = get_volume_decibel((char*)voice_data->audio_buf, (unsigned int)voice_data->length);
+               if (0 != vcdc_send_set_volume(vcd_client_manager_get_pid(), vol_db)) {
+                       SLOG(LOG_ERROR, TAG_VCD, "[Recorder] Fail to send recording volume(%f)", vol_db);
+               }
        }
 
        if (0 == g_buffer_count || 0 == g_buffer_count % 50) {
                SLOG(LOG_WARN, TAG_VCD, "[Recorder][%d] Recording... : read_size(%d)", g_buffer_count, voice_data->length);
-               
+
                if (0 == g_bt_extend_count % 5) {
                        const unsigned char input_data[2] = {SMART_CONTROL_EXTEND_CMD, 0x00 };
                        if (BT_ERROR_NONE != bt_hid_send_rc_command(NULL, input_data, sizeof(input_data))) {
                                SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail bt_hid_send_rc_command(NULL, %s, %d)", input_data, sizeof(input_data));
-                       }
-                       else {
+                       } else {
                                SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] Extend bt audio recorder");
                        }
                }
@@ -229,6 +230,7 @@ int vcd_recorder_create(vcd_recoder_audio_cb audio_cb, vcd_recorder_interrupt_cb
                }
                */
        } else {
+               SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Rate(%d) Channel(%d) Type(%d)", g_audio_rate, audio_ch, audio_type);
                SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to create audio handle : %d", ret);
                g_is_valid_audio_in = false;
        }
@@ -297,19 +299,13 @@ int vcd_recorder_destroy()
 #ifdef TV_BT_MODE
        bt_hid_unset_audio_data_receive_cb();
 
-       bt_hid_host_deinitialize ();
+       bt_hid_host_deinitialize();
 
        bt_deinitialize();
 #endif
 
        g_audio_cb = NULL;
 
-       if (0 == access(VC_RUNTIME_INFO_AUDIO_VOLUME, R_OK)) {
-               if (0 != remove(VC_RUNTIME_INFO_AUDIO_VOLUME)) {
-                       SLOG(LOG_WARN, TAG_VCD, "[Recorder WARN] Fail to remove volume file");
-               }
-       }
-
        if (NULL != g_current_audio_type) {
                free(g_current_audio_type);
                g_current_audio_type = NULL;
@@ -439,7 +435,7 @@ int vcd_recorder_get(char** audio_type)
 
 static float get_volume_decibel(char* data, int size)
 {
-       #define MAX_AMPLITUDE_MEAN_16 32768
+#define MAX_AMPLITUDE_MEAN_16 32768
 
        int i, depthByte;
        int count = 0;
@@ -447,11 +443,12 @@ static float get_volume_decibel(char* data, int size)
        float db = 0.0;
        float rms = 0.0;
        unsigned long long square_sum = 0;
+       short pcm16 = 0;
 
        depthByte = 2;
 
-       for (i = 0;i < size;i += (depthByte<<1)) {
-               short pcm16 = 0;
+       for (i = 0; i < size; i += (depthByte<<1)) {
+               pcm16 = 0;
                memcpy(&pcm16, data + i, sizeof(short));
                square_sum += pcm16 * pcm16;
                count++;
@@ -492,6 +489,14 @@ Eina_Bool __read_normal_func(void *data)
                }
        }
 
+       /* Set volume */
+       if (0 == g_buffer_count % 30) {
+               float vol_db = get_volume_decibel(g_normal_buffer, BUFFER_LENGTH);
+               if (0 != vcdc_send_set_volume(vcd_client_manager_get_pid(), vol_db)) {
+                       SLOG(LOG_ERROR, TAG_VCD, "[Recorder] Fail to send recording volume(%f)", vol_db);
+               }
+       }
+
        if (0 == g_buffer_count || 0 == g_buffer_count % 50) {
                SLOG(LOG_WARN, TAG_VCD, "[Recorder][%d] Recording... : read_size(%d)", g_buffer_count, ret);
 
@@ -502,15 +507,7 @@ Eina_Bool __read_normal_func(void *data)
 
        g_buffer_count++;
 
-       float vol_db = get_volume_decibel(g_normal_buffer, BUFFER_LENGTH);
-
-       rewind(g_pFile_vol);
-
-       fwrite((void*)(&vol_db), sizeof(vol_db), 1, g_pFile_vol);
-
 #ifdef BUF_SAVE_MODE
-       SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] read normal buffer : size(%d)", ret);
-
        /* write pcm buffer */
        fwrite(g_normal_buffer, 1, BUFFER_LENGTH, g_normal_file);
 #endif
@@ -574,11 +571,6 @@ int vcd_recorder_start()
                SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] Start audio in recorder");
        }
 
-       g_pFile_vol = fopen(VC_RUNTIME_INFO_AUDIO_VOLUME, "wb+");
-       if (!g_pFile_vol) {
-               SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to create Volume File");
-       }
-
        g_recorder_state = VCD_RECORDER_STATE_RECORDING;
 
 #ifdef BUF_SAVE_MODE
@@ -606,8 +598,6 @@ int vcd_recorder_stop()
 
        g_recorder_state = VCD_RECORDER_STATE_READY;
 
-       fclose(g_pFile_vol);
-
 #ifdef BUF_SAVE_MODE
        fclose(g_normal_file);
 #endif
index 0781eb7..a098af4 100644 (file)
@@ -59,10 +59,36 @@ static Eina_Bool __cancel_by_interrupt(void *data)
        return EINA_FALSE;
 }
 
+static Eina_Bool __restart_engine(void *data)
+{
+       SLOG(LOG_DEBUG, TAG_VCD, "===== Restart by no result");
+
+       /* Restart recognition */
+       int ret = vcd_engine_recognize_start(true);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to restart recognition : result(%d)", ret);
+               return EINA_FALSE;
+       }
+
+       SLOG(LOG_DEBUG, TAG_VCD, "[Server Success] Start engine");
+
+       if (VCD_RECOGNITION_MODE_RESTART_AFTER_REJECT == vcd_client_get_recognition_mode()) {
+               vcd_config_set_service_state(VCD_STATE_RECORDING);
+               vcdc_send_service_state(VCD_STATE_RECORDING);
+       }
+
+       SLOG(LOG_DEBUG, TAG_VCD, "[Server Success] Restart recognition");
+
+       SLOG(LOG_DEBUG, TAG_VCD, "=====");
+       SLOG(LOG_DEBUG, TAG_VCD, "  ");
+       return EINA_FALSE;
+}
+
 static int __server_recorder_callback(const void* data, const unsigned int length)
 {
        vcd_state_e state = vcd_config_get_service_state();
        if (VCD_STATE_RECORDING != state) {
+               SLOG(LOG_DEBUG, TAG_VCD, "[Server] Skip by engine processing");
                return 0;
        }
 
@@ -85,9 +111,27 @@ static int __server_recorder_callback(const void* data, const unsigned int lengt
                                SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send speech detected");
                        }
                }
-       } else if (VCP_SPEECH_DETECT_END == speech_detected && vcd_client_get_slience_detection()) {
-               /* silence detected */
-               ecore_timer_add(0, __stop_by_silence, NULL);
+       } else if (VCP_SPEECH_DETECT_END == speech_detected) {
+               if (VCD_RECOGNITION_MODE_STOP_BY_SILENCE == vcd_client_get_recognition_mode()) {
+                       /* silence detected */
+                       ecore_timer_add(0, __stop_by_silence, NULL);
+               } else if (VCD_RECOGNITION_MODE_RESTART_AFTER_REJECT == vcd_client_get_recognition_mode()) {
+                       /* Stop engine recognition */
+                       int ret = vcd_engine_recognize_stop();
+                       if (0 != ret) {
+                               SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to stop recognition : %d", ret);
+                       }
+                       vcd_config_set_service_state(VCD_STATE_PROCESSING);
+                       vcdc_send_service_state(VCD_STATE_PROCESSING);
+
+                       SLOG(LOG_DEBUG, TAG_VCD, "[Server] Stop engine only by silence");
+               } else if (VCD_RECOGNITION_MODE_RESTART_CONTINUOUSLY == vcd_client_get_recognition_mode()) {
+                       /* Stop engine recognition */
+                       int ret = vcd_engine_recognize_stop();
+                       if (0 != ret) {
+                               SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to stop recognition : %d", ret);
+                       }
+               }
        }
 
        return 0;
@@ -190,22 +234,58 @@ static Eina_Bool __vcd_send_selected_result(void *data)
                }
        }
 
-       vcd_config_set_service_state(VCD_STATE_READY);
+       if (VCD_RECOGNITION_MODE_RESTART_CONTINUOUSLY != vcd_client_get_recognition_mode()) {
+               vcd_config_set_service_state(VCD_STATE_READY);
+               vcdc_send_service_state(VCD_STATE_READY);
+       }
 
        return EINA_FALSE;
 }
 
-static void __vcd_server_result_cb(vcp_result_event_e event, int* result_id, int count, 
-                                  const char* all_result, const char* non_fixed_result, const char* msg, void *user_data)
+static void __vcd_server_result_cb(vcp_result_event_e event, int* result_id, int count, const char* all_result,
+                                                                  const char* non_fixed_result, const char* msg, void *user_data)
 {
        if (VCD_STATE_PROCESSING != vcd_config_get_service_state()) {
-               SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Current state is not 'Processing'");
-               return;
+               if (VCD_RECOGNITION_MODE_RESTART_CONTINUOUSLY != vcd_client_get_recognition_mode()) {
+                       SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Current state is not 'Processing' and mode is not 'Restart continuously'");
+                       return;
+               }
        }
 
        vc_info_parser_unset_result(vcd_client_manager_get_exclusive());
 
-       SLOG(LOG_DEBUG, TAG_VCD, "[Server] Event(%d), Text(%s) Nonfixed(%s) Msg(%s) Result count(%d)", event, all_result, non_fixed_result, msg, count);
+       SLOG(LOG_DEBUG, TAG_VCD, "[Server] Event(%d), Text(%s) Nonfixed(%s) Msg(%s) Result count(%d)", 
+               event, all_result, non_fixed_result, msg, count);
+
+       if (VCD_RECOGNITION_MODE_RESTART_AFTER_REJECT == vcd_client_get_recognition_mode()) {
+               if (VCP_RESULT_EVENT_REJECTED == event) {
+                       SLOG(LOG_DEBUG, TAG_VCD, "[Server] Restart by no or rejected result");
+                       /* If no result and restart option is ON */
+                       /* Send reject message */
+                       bool temp = vcd_client_manager_get_exclusive();
+                       vc_info_parser_set_result(all_result, event, msg, NULL, temp);
+                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid(), VC_RESULT_TYPE_NOTIFICATION)) {
+                               SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send result");
+                       }
+
+                       ecore_timer_add(0, __restart_engine, NULL);
+                       return;
+               }
+               SLOG(LOG_DEBUG, TAG_VCD, "[Server] Stop recorder due to success");
+               vcd_recorder_stop();
+       } else if (VCD_RECOGNITION_MODE_RESTART_CONTINUOUSLY == vcd_client_get_recognition_mode()) {
+               SLOG(LOG_DEBUG, TAG_VCD, "[Server] Restart continuously");
+               /* Restart option is ON */
+               ecore_timer_add(0, __restart_engine, NULL);
+               if (VCP_RESULT_EVENT_REJECTED == event) {
+                       bool temp = vcd_client_manager_get_exclusive();
+                       vc_info_parser_set_result(all_result, event, msg, NULL, temp);
+                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid(), VC_RESULT_TYPE_NOTIFICATION)) {
+                               SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send result");
+                       }
+                       return;
+               }
+       }
 
        /* No result */
        if (NULL == result_id) {
@@ -230,7 +310,7 @@ static void __vcd_server_result_cb(vcp_result_event_e event, int* result_id, int
 
                if (-1 != vcd_client_manager_get_pid()) {
                        /* Manager client is available */
-                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid())) {
+                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid(), VC_RESULT_TYPE_NORMAL)) {
                                SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send result");
                        }
                }
@@ -251,6 +331,7 @@ static void __vcd_server_result_cb(vcp_result_event_e event, int* result_id, int
                SLOG(LOG_DEBUG, TAG_VCD, "[Server] Fail to create command list");
                vcd_client_manager_set_exclusive(false);
                vcd_config_set_service_state(VCD_STATE_READY);
+               vcdc_send_service_state(VCD_STATE_READY);
                return;
        }
 
@@ -320,7 +401,7 @@ static void __vcd_server_result_cb(vcp_result_event_e event, int* result_id, int
 
                if (-1 != vcd_client_manager_get_pid()) {
                        /* Manager client is available */
-                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid())) {
+                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid(), VC_RESULT_TYPE_NORMAL)) {
                                SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send result");
                        }
                } else {
@@ -334,7 +415,7 @@ static void __vcd_server_result_cb(vcp_result_event_e event, int* result_id, int
 
                if (-1 != vcd_client_manager_get_pid()) {
                        /* Manager client is available */
-                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid())) {
+                       if (0 != vcdc_send_result_to_manager(vcd_client_manager_get_pid(), VC_RESULT_TYPE_NORMAL)) {
                                SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send result");
                        }
                } else {
@@ -444,6 +525,7 @@ int vcd_initialize()
        vcd_client_manager_unset();
 
        vcd_config_set_service_state(VCD_STATE_READY);
+       vcdc_send_service_state(VCD_STATE_READY);
 
        SLOG(LOG_DEBUG, TAG_VCD, "[Server SUCCESS] initialize");
 
@@ -472,6 +554,7 @@ void vcd_finalize()
        }
 
        vcd_config_set_service_state(VCD_STATE_NONE);
+       vcdc_send_service_state(VCD_STATE_NONE);
 
        SLOG(LOG_DEBUG, TAG_VCD, "[Server] mode finalize");
 
@@ -514,6 +597,8 @@ Eina_Bool vcd_cleanup_client(void *data)
                client_list = NULL;
        }
 
+#if 0
+       /* If app is in background state, app cannot response message. */
        if (0 == vcd_client_widget_get_list(&client_list, &client_count)) {
                SLOG(LOG_DEBUG, TAG_VCD, "===== Clean up widget");
                if (NULL != client_list && client_count > 0) {
@@ -536,12 +621,18 @@ Eina_Bool vcd_cleanup_client(void *data)
                free(client_list);
                client_list = NULL;
        }
+#endif
 
        /* manager */
 
        return EINA_TRUE;
 }
 
+int vcd_server_get_service_state()
+{
+       return vcd_config_get_service_state();
+}
+
 /*
 * API for manager
 */
@@ -744,6 +835,7 @@ static int __start_internal_recognition()
        }
 
        vcd_config_set_service_state(VCD_STATE_RECORDING);
+       vcdc_send_service_state(VCD_STATE_RECORDING);
 
        SLOG(LOG_DEBUG, TAG_VCD, "[Server Success] Start recognition");
 
@@ -761,7 +853,7 @@ static Eina_Bool __vcd_request_show_tooltip(void *data)
        return EINA_FALSE;
 }
 
-int vcd_server_mgr_start(bool stop_by_silence, bool exclusive_cmd, bool start_by_client)
+int vcd_server_mgr_start(vcd_recognition_mode_e recognition_mode, bool exclusive_cmd, bool start_by_client)
 {
        /* 1. check current state */
        vcd_state_e state = vcd_config_get_service_state();
@@ -771,7 +863,8 @@ int vcd_server_mgr_start(bool stop_by_silence, bool exclusive_cmd, bool start_by
                return VCD_ERROR_INVALID_STATE;
        }
 
-       vcd_client_set_slience_detection(stop_by_silence);
+       SLOG(LOG_DEBUG, TAG_VCD, "[Server] set recognition mode = %d", recognition_mode);
+       vcd_client_set_recognition_mode(recognition_mode);
 
        if (false == exclusive_cmd) {
                /* Notify show tooltip */
@@ -830,6 +923,7 @@ int vcd_server_mgr_stop()
 
        /* 4. Set original mode */
        vcd_config_set_service_state(VCD_STATE_PROCESSING);
+       vcdc_send_service_state(VCD_STATE_PROCESSING);
 
        return VCD_ERROR_NONE;
 }
@@ -863,6 +957,7 @@ int vcd_server_mgr_cancel()
 
        /* 4. Set state */
        vcd_config_set_service_state(VCD_STATE_READY);
+       vcdc_send_service_state(VCD_STATE_READY);
 
        return VCD_ERROR_NONE;
 }
@@ -870,7 +965,7 @@ int vcd_server_mgr_cancel()
 
 int vcd_server_mgr_result_select()
 {
-       ecore_timer_add(0.01, __vcd_send_selected_result, NULL);
+       __vcd_send_selected_result(NULL);
 
        return VCD_ERROR_NONE;
 }
@@ -1247,8 +1342,8 @@ int vcd_server_widget_cancel(int pid)
 
        ret = vcd_server_mgr_cancel();
        if (0 != ret) {
-               SLOG(LOG_DEBUG, TAG_VCD, "[Server] Fail to start recognition");
-               return VCD_ERROR_OPERATION_FAILED;
+               SLOG(LOG_DEBUG, TAG_VCD, "[Server] Fail to cancel recognition : %d", ret);
+               return ret;
        }
 
        return VCD_ERROR_NONE;
index 27c2dbb..3fa4fc8 100644 (file)
@@ -34,6 +34,8 @@ void vcd_finalize();
 
 Eina_Bool vcd_cleanup_client(void *data);
 
+int vcd_server_get_service_state();
+
 
 /*
 * For manager
@@ -54,7 +56,7 @@ int vcd_server_mgr_get_audio_type(int pid, char** audio_type);
 
 int vcd_server_mgr_set_client_info(int pid);
 
-int vcd_server_mgr_start(bool stop_by_silence, bool exclusive_cmd, bool start_by_client);
+int vcd_server_mgr_start(vcd_recognition_mode_e recognition_mode, bool exclusive_cmd, bool start_by_client);
 
 int vcd_server_mgr_stop();
 
index a408454..ded4aef 100644 (file)
@@ -4,59 +4,59 @@
 
 <!-- root can own the service -->
   <policy user="default">
-    <allow own_prefix="org.tizen.vc.client"/>
-    <allow send_destination="org.tizen.vc.client"/>
-    <allow receive_sender="org.tizen.vc.client"/>
+    <allow own_prefix="org.tizen.voice.vcclient"/>
+    <allow send_destination="org.tizen.voice.vcclient"/>
+    <allow receive_sender="org.tizen.voice.vcclient"/>
   </policy>
 
   <policy user="root">
-    <allow own_prefix="org.tizen.vc.client"/>
-    <allow send_destination="org.tizen.vc.client"/>
-    <allow receive_sender="org.tizen.vc.client"/>
+    <allow own_prefix="org.tizen.voice.vcclient"/>
+    <allow send_destination="org.tizen.voice.vcclient"/>
+    <allow receive_sender="org.tizen.voice.vcclient"/>
   </policy>
 
   <policy context="default">
-    <allow own_prefix="org.tizen.vc.client"/>
-    <allow send_destination="org.tizen.vc.client"/>
-    <allow receive_sender="org.tizen.vc.client"/>
+    <allow own_prefix="org.tizen.voice.vcclient"/>
+    <allow send_destination="org.tizen.voice.vcclient"/>
+    <allow receive_sender="org.tizen.voice.vcclient"/>
   </policy>
 
   
   <policy user="default">
-    <allow own_prefix="org.tizen.vc.widget"/>
-    <allow send_destination="org.tizen.vc.widget"/>
-    <allow receive_sender="org.tizen.vc.widget"/>
+    <allow own_prefix="org.tizen.voice.vcwidget"/>
+    <allow send_destination="org.tizen.voice.vcwidget"/>
+    <allow receive_sender="org.tizen.voice.vcwidget"/>
   </policy>
 
   <policy user="root">
-    <allow own_prefix="org.tizen.vc.widget"/>
-    <allow send_destination="org.tizen.vc.widget"/>
-    <allow receive_sender="org.tizen.vc.widget"/>
+    <allow own_prefix="org.tizen.voice.vcwidget"/>
+    <allow send_destination="org.tizen.voice.vcwidget"/>
+    <allow receive_sender="org.tizen.voice.vcwidget"/>
   </policy>
 
   <policy context="default">
-    <allow own_prefix="org.tizen.vc.widget"/>
-    <allow send_destination="org.tizen.vc.widget"/>
-    <allow receive_sender="org.tizen.vc.widget"/>
+    <allow own_prefix="org.tizen.voice.vcwidget"/>
+    <allow send_destination="org.tizen.voice.vcwidget"/>
+    <allow receive_sender="org.tizen.voice.vcwidget"/>
   </policy>
 
     
   <policy user="default">
-    <allow own_prefix="org.tizen.vc.manager"/>
-    <allow send_destination="org.tizen.vc.manager"/>
-    <allow receive_sender="org.tizen.vc.manager"/>
+    <allow own_prefix="org.tizen.voice.vcmanager"/>
+    <allow send_destination="org.tizen.voice.vcmanager"/>
+    <allow receive_sender="org.tizen.voice.vcmanager"/>
   </policy>
 
   <policy user="root">
-    <allow own_prefix="org.tizen.vc.manager"/>
-    <allow send_destination="org.tizen.vc.manager"/>
-    <allow receive_sender="org.tizen.vc.manager"/>
+    <allow own_prefix="org.tizen.voice.vcmanager"/>
+    <allow send_destination="org.tizen.voice.vcmanager"/>
+    <allow receive_sender="org.tizen.voice.vcmanager"/>
   </policy>
 
   <policy context="default">
-    <allow own_prefix="org.tizen.vc.manager"/>
-    <allow send_destination="org.tizen.vc.manager"/>
-    <allow receive_sender="org.tizen.vc.manager"/>
+    <allow own_prefix="org.tizen.voice.vcmanager"/>
+    <allow send_destination="org.tizen.voice.vcmanager"/>
+    <allow receive_sender="org.tizen.voice.vcmanager"/>
   </policy>