From: sooyeon Date: Thu, 23 Jun 2022 01:47:28 +0000 (+0900) Subject: Implement functions related to auth, set_foreground, send_utterance_status X-Git-Tag: submit/tizen/20220801.042437~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=74ed32b827f73b53356317b0e9ece9cd7e0dd356;p=platform%2Fcore%2Fuifw%2Fvoice-control.git Implement functions related to auth, set_foreground, send_utterance_status Change-Id: Ieddc83ffd9e76e75eedf28416dd21e952a6419ba Signed-off-by: sooyeon --- diff --git a/client/vc_mgr.c b/client/vc_mgr.c index 6769fa1..2a31598 100755 --- a/client/vc_mgr.c +++ b/client/vc_mgr.c @@ -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) { diff --git a/client/vc_mgr_tidl.c b/client/vc_mgr_tidl.c index 3d98e9c..7376fd5 100755 --- a/client/vc_mgr_tidl.c +++ b/client/vc_mgr_tidl.c @@ -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; } diff --git a/client/vc_tidl.c b/client/vc_tidl.c index 77ddc1d..9e85e9a 100755 --- a/client/vc_tidl.c +++ b/client/vc_tidl.c @@ -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"); diff --git a/server/vcd_server.c b/server/vcd_server.c index a9beceb..a4badcf 100644 --- a/server/vcd_server.c +++ b/server/vcd_server.c @@ -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"); diff --git a/server/vcd_tidl.c b/server/vcd_tidl.c index d45260d..6a67e3b 100644 --- a/server/vcd_tidl.c +++ b/server/vcd_tidl.c @@ -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, "@@@"); } diff --git a/server/vcd_tidl.h b/server/vcd_tidl.h index 7881923..e62c242 100644 --- a/server/vcd_tidl.h +++ b/server/vcd_tidl.h @@ -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); diff --git a/tidl/vc_mgr.tidl b/tidl/vc_mgr.tidl index f790247..b20a6a3 100644 --- a/tidl/vc_mgr.tidl +++ b/tidl/vc_mgr.tidl @@ -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 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