From: Suyeon Hwang Date: Thu, 11 Nov 2021 07:19:48 +0000 (+0900) Subject: Send mode to server after prepare success X-Git-Tag: submit/tizen_6.5/20211112.081028~1^2~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bf6862a575dc29d4cd7d7ee86558a29bf381d230;p=platform%2Fcore%2Fuifw%2Ftts.git Send mode to server after prepare success Current code, request set mode message by tidl is trasmitted before prepare is finished. This behavior makes server stores proper mode information of client, so the policy works wrong way. This patch makes client request set mode after prepare is finished. And also, this patch unify the logic to request set mode from both tidl and dbus. Change-Id: Ifa7201b26c6b6ad9cc206f7e9a4f259757e04702 Signed-off-by: Suyeon Hwang --- diff --git a/client/tts_core.c b/client/tts_core.c index 3ed28a40..d529b86a 100644 --- a/client/tts_core.c +++ b/client/tts_core.c @@ -539,6 +539,8 @@ static Eina_Bool __prepare_sync_cb(tts_client_s* client) } // TODO: make function duplicated block + tts_ipc_request_set_mode(uid, tts_client_get_mode(client)); + tts_core_notify_state_changed(client, TTS_STATE_READY); SLOG(LOG_DEBUG, TAG_TTSC, "@@@"); @@ -1027,6 +1029,8 @@ int tts_core_receive_hello(int uid, int ret, int credential_needed) return TTS_ERROR_OPERATION_FAILED; } + tts_ipc_request_set_mode(uid, tts_client_get_mode(client)); + tts_core_notify_state_changed_async(client, TTS_STATE_READY); SLOG(LOG_DEBUG, TAG_TTSC, "@@@"); diff --git a/client/tts_dbus.c b/client/tts_dbus.c index 8519d29c..2a6c37ed 100644 --- a/client/tts_dbus.c +++ b/client/tts_dbus.c @@ -152,11 +152,6 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle __tts_dbus_add_match(uid); } tts_core_receive_hello(uid, ret, credential_needed); - - tts_client_s* client = tts_client_get_by_uid(uid); - if (client) { - tts_dbus_request_set_mode(uid, tts_client_get_mode(client)); - } } SLOG(LOG_DEBUG, TAG_TTSC, "@@@"); diff --git a/client/tts_ipc.c b/client/tts_ipc.c index c102982d..394b5dee 100644 --- a/client/tts_ipc.c +++ b/client/tts_ipc.c @@ -31,7 +31,8 @@ typedef enum { REQUEST_GET_PRIVATE_DATA, REQUEST_PLAY_PCM, REQUEST_STOP_PCM, - REQUEST_ADD_PCM + REQUEST_ADD_PCM, + REQUEST_SET_MODE } tts_ipc_vtable_e; @@ -39,13 +40,13 @@ int(*ttsc_dbus_vtable[])() = { &tts_dbus_open_connection, &tts_dbus_close_connec &tts_dbus_request_hello, &tts_dbus_request_hello_sync, &tts_dbus_request_initialize, &tts_dbus_request_finalize, &tts_dbus_request_add_text, &tts_dbus_request_play, &tts_dbus_request_stop, &tts_dbus_request_pause, &tts_dbus_request_set_private_data, &tts_dbus_request_get_private_data, - &tts_dbus_request_play_pcm, &tts_dbus_request_stop_pcm, &tts_dbus_request_add_pcm }; + &tts_dbus_request_play_pcm, &tts_dbus_request_stop_pcm, &tts_dbus_request_add_pcm, &tts_dbus_request_set_mode }; int(*ttsc_tidl_vtable[])() = { &tts_tidl_open_connection, &tts_tidl_close_connection, &tts_tidl_stop_listening, &tts_tidl_request_hello, &tts_tidl_request_hello_sync, &tts_tidl_request_initialize, &tts_tidl_request_finalize, &tts_tidl_request_add_text, &tts_tidl_request_play, &tts_tidl_request_stop, &tts_tidl_request_pause, &tts_tidl_request_set_private_data, &tts_tidl_request_get_private_data, - &tts_tidl_request_play_pcm, &tts_tidl_request_stop_pcm, &tts_tidl_request_add_pcm }; + &tts_tidl_request_play_pcm, &tts_tidl_request_stop_pcm, &tts_tidl_request_add_pcm, &tts_tidl_request_set_mode }; static int (**g_vtable)(); static tts_ipc_method_e g_ipc_method = TTS_IPC_METHOD_UNDEFINED; @@ -373,3 +374,21 @@ int tts_ipc_request_add_pcm(int uid, int event, const char* data, int data_size, return g_vtable[REQUEST_ADD_PCM](uid, event, data, data_size, audio_type, rate); } // LCOV_EXCL_STOP + +int tts_ipc_request_set_mode(int uid, tts_mode_e mode) +{ + SLOG(LOG_INFO, TAG_TTSC, "[IPC] tts_ipc_request_set_mode"); + + tts_client_s* client = tts_client_get_by_uid(uid); + if (!client) { + SLOG(LOG_ERROR, TAG_TTSC, "Fail to get tts_client with uid"); + return TTS_ERROR_OPERATION_FAILED; + } + + if (NULL == g_vtable) { + SLOG(LOG_ERROR, TAG_TTSC, "g_vtable is NULL"); + return TTS_ERROR_OPERATION_FAILED; + } + + return g_vtable[REQUEST_SET_MODE](uid, mode); +} diff --git a/client/tts_ipc.h b/client/tts_ipc.h index a8af0b70..4900e772 100644 --- a/client/tts_ipc.h +++ b/client/tts_ipc.h @@ -58,6 +58,8 @@ int tts_ipc_request_stop_pcm(int uid); int tts_ipc_request_add_pcm(int uid, int event, const char* data, int data_size, int audio_type, int rate); +int tts_ipc_request_set_mode(int uid, tts_mode_e mode); + #ifdef __cplusplus } #endif diff --git a/client/tts_tidl.c b/client/tts_tidl.c index 969ab390..ef2ad4cd 100644 --- a/client/tts_tidl.c +++ b/client/tts_tidl.c @@ -161,10 +161,6 @@ static void __on_connected(rpc_port_proxy_tts_h h, void *user_data) info->connected = true; info->connection_requesting = false; info->register_callback_invoked = false; - if (0 != rpc_port_proxy_tts_invoke_set_mode(info->rpc_h, uid, tts_client_get_mode(client))) { - SLOG(LOG_ERROR, TAG_TTSC, "Failed to set mode"); - return; - } SLOG(LOG_DEBUG, TAG_TTSC, "Connected to server"); } @@ -884,3 +880,32 @@ int tts_tidl_request_add_pcm(int uid, int event, const char* data, int data_size return TTS_ERROR_NONE; } // LCOV_EXCL_STOP + +int tts_tidl_request_set_mode(int uid, tts_mode_e mode) +{ + SLOG(LOG_DEBUG, TAG_TTSC, "[TIDL] tts_tidl_request_set_mode"); + + tts_client_s* client = tts_client_get_by_uid(uid); + if (NULL == client) { + SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get client"); + return TTS_ERROR_INVALID_PARAMETER; + } + + tts_tidl_info_s* info = __get_tidl_info_s(uid); + if (NULL == info) { + SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get tidl info"); + return TTS_ERROR_INVALID_PARAMETER; + } + + if (!info->connected) { + SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not Connected"); + return TTS_ERROR_OPERATION_FAILED; + } + + if (0 != rpc_port_proxy_tts_invoke_set_mode(info->rpc_h, uid, mode)) { + SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request set private data : Fail to invoke message"); + return TTS_ERROR_OPERATION_FAILED; + } + + return TTS_ERROR_NONE; +} diff --git a/client/tts_tidl.h b/client/tts_tidl.h index 5bc88e83..6af4168b 100644 --- a/client/tts_tidl.h +++ b/client/tts_tidl.h @@ -14,6 +14,8 @@ #ifndef __TTS_TIDL_H_ #define __TTS_TIDL_H_ +#include + #ifdef __cplusplus extern "C" { #endif @@ -50,6 +52,8 @@ int tts_tidl_request_stop_pcm(int uid); int tts_tidl_request_add_pcm(int uid, int event, const char* data, int data_size, int audio_type, int rate); +int tts_tidl_request_set_mode(int uid, tts_mode_e mode); + #ifdef __cplusplus } #endif