From: sooyeon Date: Mon, 13 Jun 2022 12:07:36 +0000 (+0900) Subject: Add functions related to auth and stub tidl X-Git-Tag: submit/tizen/20220801.042437~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F58%2F278958%2F1;p=platform%2Fcore%2Fuifw%2Fvoice-control.git Add functions related to auth and stub tidl Change-Id: I1eded5e4c8f419de2925d30019c4c1579d013008 Signed-off-by: sooyeon --- diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 5fe0268..c269a11 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -12,6 +12,7 @@ SET(SRCS vcd_dbus_server.c vcd_dbus.c vcd_tidl.c + vcd_stub.c vcd_mgr_stub.c vcd_mgr_proxy.c vcd_widget_stub.c diff --git a/server/vcd_client_data.c b/server/vcd_client_data.c index 8d5136d..8e33a1f 100644 --- a/server/vcd_client_data.c +++ b/server/vcd_client_data.c @@ -1446,6 +1446,46 @@ client_ipc_info_s* vcd_client_get_ipc_info(int pid) return __get_client_ipc_info_element(pid); } +int vcd_client_get_ipc_list(int** pids, int* pid_count) +{ + if (NULL == pids || NULL == pid_count) + return -1; + + int count = g_slist_length(g_client_ipc_info_list); + + if (0 == count) + return -1; + + int *tmp; + tmp = (int*)calloc(count, sizeof(int)); + if (NULL == tmp) { + SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to allocate memory"); + return VCD_ERROR_OUT_OF_MEMORY; + } + + GSList *iter = NULL; + client_ipc_info_s *data = NULL; + int i = 0; + + iter = g_slist_nth(g_client_ipc_info_list, 0); + + while (NULL != iter) { + data = iter->data; + + if (NULL != data) { + tmp[i] = data->pid; + } + + iter = g_slist_next(iter); + i++; + } + + *pids = tmp; + *pid_count = count; + + return 0; +} + bool vcd_client_is_available(int pid) { vc_client_info_s* client_info = NULL; diff --git a/server/vcd_client_data.h b/server/vcd_client_data.h index 0620b19..789f329 100644 --- a/server/vcd_client_data.h +++ b/server/vcd_client_data.h @@ -204,6 +204,8 @@ int vcd_client_delete_ipc_info(int pid); client_ipc_info_s* vcd_client_get_ipc_info(int pid); +int vcd_client_get_ipc_list(int** pids, int* pid_count); + bool vcd_client_is_available(int pid); int vcd_client_get_ref_count(); diff --git a/server/vcd_dbus.c b/server/vcd_dbus.c index f7cfc10..0e67e46 100755 --- a/server/vcd_dbus.c +++ b/server/vcd_dbus.c @@ -227,7 +227,6 @@ int vcdc_send_result(int pid, int manager_pid, int cmd_type) return 0; } -*/ int vcdc_send_manager_pid(int manager_pid) { DBusError err; @@ -235,7 +234,7 @@ int vcdc_send_manager_pid(int manager_pid) DBusMessage* msg = NULL; - /* Send to client */ + // Send to client msg = dbus_message_new_signal( VC_CLIENT_SERVICE_OBJECT_PATH, VC_CLIENT_SERVICE_INTERFACE, @@ -260,62 +259,7 @@ int vcdc_send_manager_pid(int manager_pid) return 0; } - -int vcdc_send_error_signal_to_manager(int manager_pid, int reason, char *err_msg) -{ - SLOG(LOG_ERROR, TAG_VCD, "@@ Send error signal to manager"); - - if (0 != __dbus_check()) { - return VCD_ERROR_OPERATION_FAILED; - } - - int daemon_pid; - 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_ERROR); - - if (NULL == msg) { - SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL"); - return VCD_ERROR_OUT_OF_MEMORY; - } - - char *temp_msg = NULL; - if (NULL == err_msg) { - SLOG(LOG_WARN, TAG_VCD, "[Dbus ERROR] Input parameter is NULL"); - temp_msg = strdup("#NULL"); - } else { - temp_msg = strdup(err_msg); - } - - daemon_pid = getpid(); - dbus_message_append_args(msg, DBUS_TYPE_INT32, &reason, DBUS_TYPE_INT32, &daemon_pid, DBUS_TYPE_STRING, &temp_msg, DBUS_TYPE_INVALID); - - if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) { - SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send"); - if (NULL != temp_msg) { - free(temp_msg); - temp_msg = NULL; - } - return VCD_ERROR_OPERATION_FAILED; - } else { - SLOG(LOG_INFO, TAG_VCD, "@@ Send error signal to manager : reason(%d), Error Msg(%s)", reason, temp_msg); - dbus_connection_flush(g_conn_sender); - } - - dbus_message_unref(msg); - if (NULL != temp_msg) { - free(temp_msg); - temp_msg = NULL; - } - - return 0; -} +*/ int vcdc_send_error_signal(int reason, char *err_msg) { @@ -453,7 +397,6 @@ int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg) */ /* ->>>>>>> Replace IPC (VCC) from dbus to tidl int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len) { SLOG(LOG_INFO, TAG_VCD, "[Dbus] Send TTS feedback streaming : pid(%d), utt_id(%d), feedback event(%d), buffer(%p), length(%d)", pid, utt_id, event, buffer, len); diff --git a/server/vcd_dbus.h b/server/vcd_dbus.h index d6ae86c..e1abbe3 100644 --- a/server/vcd_dbus.h +++ b/server/vcd_dbus.h @@ -38,7 +38,7 @@ int vcdc_send_error_signal(int reason, char *err_msg); //int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg); -int vcdc_send_manager_pid(int manager_pid); +// int vcdc_send_manager_pid(int manager_pid); /* for TTS feedback */ //int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len); diff --git a/server/vcd_tidl.c b/server/vcd_tidl.c index c81e81c..354cf21 100644 --- a/server/vcd_tidl.c +++ b/server/vcd_tidl.c @@ -316,14 +316,13 @@ void __send_signal(bundle* msg) /** * TIDL functions for VC client */ - static void __vc_create_cb(rpc_port_stub_vc_context_h context, void *user_data) { SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_create_cb"); char *sender = NULL; - rpc_port_stub_SamsungAIAppPort_context_get_sender(context, &sender); + rpc_port_stub_vc_context_get_sender(context, &sender); if (!sender) { SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Sender is NULL"); return ; @@ -450,9 +449,9 @@ static int __vc_initialize_cb(rpc_port_stub_vc_context_h context, int pid, int * *mgr_pid = vcd_client_manager_get_pid(); if (VCD_ERROR_NONE == ret) { - SLOG(LOG_INFO, TAG_VCD, "[IN] vcd initialize : pid(%d) daemon_pid(%d)", pid, daemon_pid); + SLOG(LOG_INFO, TAG_VCD, "[IN] vcd initialize : pid(%d) daemon_pid(%d)", pid, *daemon_pid); } else { - SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd initialize : pid(%d) daemon_pid(%d) ret(%d)", pid, daemon_pid, ret); + SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd initialize : pid(%d) daemon_pid(%d) ret(%d)", pid, *daemon_pid, ret); } return ret; @@ -549,7 +548,7 @@ static int __vc_request_dialog_cb(rpc_port_stub_vc_context_h context, int pid, c if (VCD_ERROR_NONE == ret) { SLOG(LOG_INFO, TAG_VCD, "[IN] vcd request dialog : pid(%d), disp_text(%s), utt_text(%s), continuous(%d)", pid, disp_text, utt_text, continuous); } else { - SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd request dialog : pid(%d), disp_text(%s), utt_text(%s), continuous(%d), ret(%d)", pid, disp_text, utt_text, continuous, ret(%d)); + SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd request dialog : pid(%d), disp_text(%s), utt_text(%s), continuous(%d), ret(%d)", pid, disp_text, utt_text, continuous, ret); } return ret; @@ -561,7 +560,7 @@ static int __vc_is_system_command_valid_cb(rpc_port_stub_vc_context_h context, i int ret = VCD_ERROR_OPERATION_FAILED; - ret = vcd_server_is_system_command_valid(pid, &is_sys_cmd_valid); + ret = vcd_server_is_system_command_valid(pid, (int*)is_sys_cmd_valid); if (VCD_ERROR_NONE == ret) { SLOG(LOG_INFO, TAG_VCD, "[IN] vcd check system command is valid : pid(%d), is_sys_cmd_valid(%d)", pid, *is_sys_cmd_valid); } else { @@ -573,28 +572,87 @@ static int __vc_is_system_command_valid_cb(rpc_port_stub_vc_context_h context, i static int __vc_auth_enable_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data) { - SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_enable_cb"); + 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; + return VCD_ERROR_NONE; } static int __vc_auth_disable_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data) { - SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_disable_cb"); + 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; + + return VCD_ERROR_NONE; } static int __vc_auth_start_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data) { - SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_start_cb"); + 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; + + return VCD_ERROR_NONE; } static int __vc_auth_stop_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data) { - SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_stop_cb"); + 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; + + return VCD_ERROR_NONE; } static int __vc_auth_cancel_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data) { - SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_cancel_cb"); + 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; + + return VCD_ERROR_NONE; } static int __vc_request_tts_cb(rpc_port_stub_vc_context_h context, int pid, const char *text, const char *lang, bool to_vcm, int *utt_id, void *user_data) @@ -603,7 +661,7 @@ static int __vc_request_tts_cb(rpc_port_stub_vc_context_h context, int pid, cons int ret = VCD_ERROR_OPERATION_FAILED; - ret = vcd_server_request_tts(pid, text, lang, to_vcm, &utt_id); + ret = vcd_server_request_tts(pid, text, lang, to_vcm, utt_id); if (VCD_ERROR_NONE == ret) { SLOG(LOG_INFO, TAG_VCD, "[IN] vcd request tts : pid(%d), text(%s), language(%s), to_vcm(%d)", pid, text, lang, to_vcm); } else { @@ -635,7 +693,7 @@ static int __vc_get_tts_audio_format_cb(rpc_port_stub_vc_context_h context, int int ret = VCD_ERROR_OPERATION_FAILED; - ret = vcd_server_get_tts_audio_format(pid, &rate, &channel, &audio_type); + ret = vcd_server_get_tts_audio_format(pid, rate, channel, audio_type); if (VCD_ERROR_NONE == ret) { SLOG(LOG_INFO, TAG_VCD, "[IN] vcd get tts audio format : pid(%d), rate(%d), channel(%d), audio_type(%d)", pid, *rate, *channel, *audio_type); } else { @@ -774,6 +832,57 @@ int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg) return VCD_ERROR_NONE; } +int vcdc_send_manager_pid(int manager_pid) +{ + // send signal to all pid + + // get all pids + int* client_list = NULL; + int client_count = 0; + int ret = -1; + ret = vcd_client_get_ipc_list(&client_list, &client_count); + if (0 != ret || 0 == client_count) { + SLOG(LOG_WARN, TAG_VCD, "[WARNING] There is no client"); + return VCD_ERROR_NONE; + } + + client_ipc_info_s* info; + int pid = -1; + bundle* bundle_data; + char pid_char[10] = {0}; + char mgrpid_char[10] = {0}; + for (int i = 0 ; i < client_count ; i++) { + pid = client_list[i]; + + info = vcd_client_get_ipc_info(pid); + if (NULL == info) { + SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get ipc info. pid(%d)", pid); + continue; + } + + bundle_data = bundle_create(); + if (NULL == bundle_data) { + SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data"); + continue; + } + + SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send manager pid(%d) to app(%d)", manager_pid, pid); + + snprintf(pid_char, 10, "%d", pid); + snprintf(mgrpid_char, 10, "%d", manager_pid); + + bundle_add_str(bundle_data, VC_BUNDLE_METHOD, VCD_METHOD_SEND_MANAGER_PID); + bundle_add_str(bundle_data, VC_BUNDLE_PID, pid_char); + bundle_add_str(bundle_data, VC_BUNDLE_MANAGER_PID, mgrpid_char); + + rpc_port_stub_vc_notify_cb_invoke(info->notify_cb, pid, bundle_data); + + bundle_free(bundle_data); + } + + return VCD_ERROR_NONE; +} + int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len) { if (NULL == buffer || 0 >= len) { diff --git a/server/vcd_tidl.h b/server/vcd_tidl.h index a4cd96e..715e3f3 100644 --- a/server/vcd_tidl.h +++ b/server/vcd_tidl.h @@ -74,14 +74,12 @@ int vcdc_send_result(int pid, int manager_pid, int cmd_type); int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg); +int vcdc_send_manager_pid(int manager_pid); + int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len); #ifdef __cplusplus } #endif -<<<<<<< HEAD -#endif /* __VCD_TIDL_h__ */ -======= #endif /* __VCD_TIDL_h__ */ ->>>>>>> Replace IPC (VCC) from dbus to tidl