Implement functions related to auth, set_foreground, send_utterance_status 62/278962/1
authorsooyeon <sooyeon.kim@samsung.com>
Thu, 23 Jun 2022 01:47:28 +0000 (10:47 +0900)
committersooyeon <sooyeon.kim@samsung.com>
Fri, 29 Jul 2022 01:25:58 +0000 (10:25 +0900)
Change-Id: Ieddc83ffd9e76e75eedf28416dd21e952a6419ba
Signed-off-by: sooyeon <sooyeon.kim@samsung.com>
client/vc_mgr.c
client/vc_mgr_tidl.c
client/vc_tidl.c
server/vcd_server.c
server/vcd_tidl.c
server/vcd_tidl.h
tidl/vc_mgr.tidl

index 6769fa1..2a31598 100755 (executable)
@@ -278,12 +278,6 @@ int vc_mgr_initialize(void)
                return VC_ERROR_NONE;
        }
 
-       // TODO: remove dbus after migrate from dbus to tidl done
-       if (0 != vc_mgr_dbus_open_connection()) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to open dbus connection");
-               return VC_ERROR_OPERATION_FAILED;
-       }
-
        if (0 != vc_mgr_tidl_open_connection()) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to open tidl connection");
                return VC_ERROR_OPERATION_FAILED;
@@ -416,10 +410,6 @@ int vc_mgr_deinitialize(void)
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to release VC mgr player(%d)", ret);
        }
 */
-       // TODO: remove dbus after migrate from dbus to tidl done
-       if (0 != vc_mgr_dbus_close_connection()) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to close connection");
-       }
 
        if (0 != vc_mgr_tidl_close_connection()) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to close connection");
@@ -549,20 +539,6 @@ static Eina_Bool __send_hello_message(void *data)
                }
        }
 
-       // TODO: remove dbus after migrate from dbus to tidl done
-       if (0 != vc_mgr_dbus_request_hello()) {
-               if (g_dbus_send_hello_count == 20) {
-                       g_dbus_send_hello_count = 0;
-                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to request hello !! send error to manager");
-                       __vc_mgr_cb_error(VC_ERROR_TIMED_OUT, -1, "voice_framework.error.vcfw.connect_engine_fail");
-                       g_send_hello_timer = NULL;
-                       return EINA_FALSE;
-               } else {
-                       g_dbus_send_hello_count++;
-                       return EINA_TRUE;
-               }
-       }
-
        SLOG(LOG_DEBUG, TAG_VCM, "===== [Manager] Connect daemon");
 
        if (NULL == g_request_init_timer) {
index 3d98e9c..7376fd5 100755 (executable)
@@ -276,6 +276,7 @@ static void __notify_cb(void *user_data, bundle *msg)
        } /* VCD_MANAGER_METHOD_FEEDBACK_AUDIO_FORMAT */
 
        // TODO: uncomment this line after vcc done
+       // NEED2CHECK: when vcc send 'set_foreground', __vcd_mgr_set_foreground_cb will be invoked...
        // else if (0 == strncmp(VCC_MANAGER_METHOD_SET_FOREGROUND, method, strlen(VCC_MANAGER_METHOD_SET_FOREGROUND))) {
        //      SLOG(LOG_INFO, TAG_VCM, "@@@ Set foreground");
        //      char* temp_pid = NULL;
@@ -1183,7 +1184,7 @@ int vc_mgr_tidl_send_utterance_status(int pid, int utt_id, vc_tts_utterance_stat
                return VC_ERROR_OPERATION_FAILED;
        }
 
-       rpc_port_proxy_vc_mgr_proxy_vc_mgr_invoke_send_utterance_status(g_proxy_tidl_info->rpc_h, utt_id, utt_status);
+       rpc_port_proxy_vc_mgr_proxy_vc_mgr_invoke_send_utterance_status(g_proxy_tidl_info->rpc_h, pid, utt_id, utt_status);
 
        return VC_ERROR_NONE;
 }
index 77ddc1d..9e85e9a 100755 (executable)
@@ -220,6 +220,17 @@ static void __notify_cb(void* user_data, int pid, bundle* msg)
                __vc_cb_error_to_app(atoi(pid), atoi(reason), err_msg);
        } /* VCD_METHOD_ERROR_TO_APP */
        else if (0 == strncmp(VC_MANAGER_METHOD_UTTERANCE_STATUS, method, strlen(VC_MANAGER_METHOD_UTTERANCE_STATUS))) {
+               /* signal!!! */
+               char* pid;
+               char* utt_id;
+               char* utt_status = NULL;
+
+               bundle_get_str(msg, VC_BUNDLE_PID, &pid);
+               bundle_get_str(msg, VC_BUNDLE_UTTID, &utt_id);
+               bundle_get_str(msg, VC_BUNDLE_UTTSTATUS, &utt_status);
+
+               SLOG(LOG_DEBUG, TAG_VCC, "@@ vc Get utterance status : pid(%d), utt_id(%d), utt_status(%d)", atoi(pid), atoi(utt_id), atoi(utt_status));
+               __vc_cb_utterance_status(atoi(utt_id), atoi(utt_status));
        } /* VC_MANAGER_METHOD_UTTERANCE_STATUS */
        else {
                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Invalid msg");
index a9beceb..a4badcf 100644 (file)
@@ -1340,16 +1340,6 @@ int vcd_initialize(vce_request_callback_s *callback)
        vcd_client_manager_unset();
 
 //     if (TRUE == __is_default_engine()) {
-               /* Open dbus connection */
-               // TODO: remove
-               // if (0 != vcd_dbus_open_connection()) {
-               //      SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to open connection");
-               //      if (TRUE != vcd_finalize()) {
-               //              SLOG(LOG_ERROR, TAG_VCD, "[Server Error] Fail to finalize");
-               //      }
-               //      return VCD_ERROR_OPERATION_FAILED;
-               // }
-
                /* Open tidl connection */
                if (0 != vcd_tidl_open_connection()) {
                        SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to open tidl connection");
@@ -1437,12 +1427,6 @@ bool vcd_finalize()
                vcdc_send_service_state(VCD_STATE_NONE);
        }
 
-       /* Close dbus connection */
-       // TODO: remove
-       // if (0 != vcd_dbus_close_connection()) {
-       //      SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to close connection");
-       // }
-
        /* Close tidl connection */
        if (0 != vcd_tidl_close_connection()) {
                SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to close connection");
index d45260d..6a67e3b 100644 (file)
@@ -504,12 +504,14 @@ static int __vc_set_foreground_cb(rpc_port_stub_vcd_stub_vc_context_h context, i
     int ret = VCD_ERROR_OPERATION_FAILED;
 
     ret = vcd_server_set_foreground(pid, value);
-    if (VCD_ERROR_NONE == ret) {
-       SLOG(LOG_INFO, TAG_VCD, "[IN] vcd set foreground : pid(%d)", pid);
-    } else {
+    if (VCD_ERROR_NONE != ret) {
        SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd set foreground : pid(%d) ret(%d)", pid, ret);
+        return ret;
     }
     
+    SLOG(LOG_INFO, TAG_VCD, "[IN] vcd set foreground : pid(%d)", pid);
+    vcdc_send_request_set_foreground(pid, value);
+
     return ret;
 }
 
@@ -565,85 +567,75 @@ static int __vc_auth_enable_cb(rpc_port_stub_vcd_stub_vc_context_h context, int
 {
     SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_enable_cb. Send a request to vc_mgr");
 
-    // int ret = VCD_ERROR_OPERATION_FAILED;
-    // ret = vcdc_send_request_auth_enable(pid);
-    // if (VCD_ERROR_NONE == ret) {
-    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth enable. pid(%d), mgr_pid(%d)", pid, mgr_pid);
-    // } else {
-    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth enable. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
-    // }
-
-    // return ret;
+    int ret = VCD_ERROR_OPERATION_FAILED;
+    ret = vcdc_send_request_auth_enable(pid);
+    if (VCD_ERROR_NONE == ret) {
+        SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth enable. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    } else {
+        SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth enable. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    }
 
-    return VCD_ERROR_NONE;
+    return ret;
 }
 
 static int __vc_auth_disable_cb(rpc_port_stub_vcd_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
     SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_disable_cb. Send a request to vc_mgr");
 
-    // int ret = VCD_ERROR_OPERATION_FAILED;
-    // ret = vcdc_send_request_auth_disable(pid);
-    // if (VCD_ERROR_NONE == ret) {
-    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth disable. pid(%d), mgr_pid(%d)", pid, mgr_pid);
-    // } else {
-    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth disable. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
-    // }
-
-    // return ret;
+    int ret = VCD_ERROR_OPERATION_FAILED;
+    ret = vcdc_send_request_auth_disable(pid);
+    if (VCD_ERROR_NONE == ret) {
+        SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth disable. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    } else {
+        SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth disable. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    }
 
-    return VCD_ERROR_NONE;
+    return ret;
 }
 
 static int __vc_auth_start_cb(rpc_port_stub_vcd_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
     SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_start_cb. Send a request to vc_mgr");
 
-    // int ret = VCD_ERROR_OPERATION_FAILED;
-    // ret = vcdc_send_request_auth_start(pid);
-    // if (VCD_ERROR_NONE == ret) {
-    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth start. pid(%d), mgr_pid(%d)", pid, mgr_pid);
-    // } else {
-    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth start. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
-    // }
-
-    // return ret;
+    int ret = VCD_ERROR_OPERATION_FAILED;
+    ret = vcdc_send_request_auth_start(pid);
+    if (VCD_ERROR_NONE == ret) {
+        SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth start. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    } else {
+        SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth start. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    }
 
-    return VCD_ERROR_NONE;
+    return ret;
 }
 
 static int __vc_auth_stop_cb(rpc_port_stub_vcd_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
     SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_stop_cb. Send a request to vc_mgr");
 
-    // int ret = VCD_ERROR_OPERATION_FAILED;
-    // ret = vcdc_send_request_auth_stop(pid);
-    // if (VCD_ERROR_NONE == ret) {
-    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth stop. pid(%d), mgr_pid(%d)", pid, mgr_pid);
-    // } else {
-    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth stop. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
-    // }
-
-    // return ret;
+    int ret = VCD_ERROR_OPERATION_FAILED;
+    ret = vcdc_send_request_auth_stop(pid);
+    if (VCD_ERROR_NONE == ret) {
+        SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth stop. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    } else {
+        SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth stop. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    }
 
-    return VCD_ERROR_NONE;
+    return ret;
 }
 
 static int __vc_auth_cancel_cb(rpc_port_stub_vcd_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
     SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_cancel_cb. Send a request to vc_mgr");
 
-    // int ret = VCD_ERROR_OPERATION_FAILED;
-    // ret = vcdc_send_request_auth_cancel(pid);
-    // if (VCD_ERROR_NONE == ret) {
-    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth cancel. pid(%d), mgr_pid(%d)", pid, mgr_pid);
-    // } else {
-    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth cancel. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
-    // }
-
-    // return ret;
+    int ret = VCD_ERROR_OPERATION_FAILED;
+    ret = vcdc_send_request_auth_cancel(pid);
+    if (VCD_ERROR_NONE == ret) {
+        SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth cancel. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    } else {
+        SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth cancel. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    }
 
-    return VCD_ERROR_NONE;
+    return ret;
 }
 
 static int __vc_request_tts_cb(rpc_port_stub_vcd_stub_vc_context_h context, int pid, const char *text, const char *lang, bool to_vcm, int *utt_id, void *user_data)
@@ -2090,11 +2082,56 @@ static void  __vc_mgr_send_result_selection_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr
        SLOG(LOG_DEBUG, TAG_VCD, "@@@");
 }
 
-static void  __vc_mgr_send_utterance_status_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int utt_id, int utt_status, void *user_data)
+static void  __vc_mgr_send_utterance_status_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int utt_id, int utt_status, void *user_data)
 {
        SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager send utterance status");
-       SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr send utterance status : utt_id(%d), utt_status(%d)", utt_id, utt_status);
-       // TODO: send parameter to client?? It seems to send method (no reply) to mgr. Need to check.
+       SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr send utterance status : pid(%d), utt_id(%d), utt_status(%d)", pid, utt_id, utt_status);
+
+    pthread_mutex_lock(&g_client_tidl_info_mutex);
+
+    SLOG(LOG_INFO, TAG_VCD, "[TIDL] message to client");
+    client_tidl_info_s* client_tidl_info = vcd_client_get_tidl_info(pid);
+    if (NULL == client_tidl_info) {
+        SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
+        pthread_mutex_unlock(&g_client_tidl_info_mutex);
+        return;
+    }
+
+    rpc_port_stub_vcd_stub_vc_notify_cb_h handle = client_tidl_info->notify_cb;
+    if (NULL == handle) {
+        SLOG(LOG_ERROR, TAG_VCD, "[TIDL] notify callback handle is null");
+        pthread_mutex_unlock(&g_client_tidl_info_mutex);
+        return;
+    }
+
+    bundle* msg = bundle_create();
+    if (NULL == msg) {
+        SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+        pthread_mutex_unlock(&g_client_tidl_info_mutex);
+        return;
+    }
+
+    char pid_char[10] = {0};
+    char uttid_char[10] = {0};
+    char uttstatus_char[10] = {0};
+    snprintf(pid_char, 10, "%d", pid);
+    snprintf(uttid_char, 10, "%d", utt_id);
+    snprintf(uttstatus_char, 10, "%d", utt_status);
+
+    bundle_add_str(msg, VC_BUNDLE_METHOD, VC_MANAGER_METHOD_UTTERANCE_STATUS);
+    bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
+    bundle_add_str(msg, VC_BUNDLE_REASON, uttid_char);
+    bundle_add_str(msg, VC_BUNDLE_ERR_MSG, uttstatus_char);
+
+    if (0 != rpc_port_stub_vcd_stub_vc_notify_cb_invoke(handle, pid, msg)) {
+        SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send msg");
+        bundle_free(msg);
+        pthread_mutex_unlock(&g_client_tidl_info_mutex);
+        return;
+    }
+
+    bundle_free(msg);
+    pthread_mutex_unlock(&g_client_tidl_info_mutex);
 
        SLOG(LOG_DEBUG, TAG_VCD, "@@@");
 }
index 7881923..e62c242 100644 (file)
@@ -65,6 +65,20 @@ int vcdc_send_request_get_private_data(int pid, const char* key, char** data);
 
 int vcdc_send_asr_result(int pid, int event, const char* asr_result, int cmd_type, bool* is_consumed);
 
+void vcdc_send_request_set_foreground(int pid, int value);
+
+
+/* for auth */
+int vcdc_send_request_auth_enable(int pid);
+
+int vcdc_send_request_auth_disable(int pid);
+
+int vcdc_send_request_auth_start(int pid);
+
+int vcdc_send_request_auth_stop(int pid);
+
+int vcdc_send_request_auth_cancel(int pid);
+
 /* for TTS feedback */
 int vcdc_send_feedback_audio_format_to_manager(int manager_pid, int rate, vc_audio_channel_e channel, vce_audio_type_e audio_type);
 
index f790247..b20a6a3 100644 (file)
@@ -22,5 +22,5 @@ interface vc_mgr {
        void send_specific_engine_request(in int pid, in string engine_app_id, in string event, in string request) async;
        void send_result_selection(in int pid) async;
        void send_audio_streaming(in int pid, in int event, array<char> data_in) async;
-       void send_utterance_status(in int utt_id, in int utt_status) async;
+       void send_utterance_status(in int pid, in int utt_id, in int utt_status) async;
 }
\ No newline at end of file