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 <stom.hwang@samsung.com>
}
// 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, "@@@");
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, "@@@");
__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, "@@@");
REQUEST_GET_PRIVATE_DATA,
REQUEST_PLAY_PCM,
REQUEST_STOP_PCM,
- REQUEST_ADD_PCM
+ REQUEST_ADD_PCM,
+ REQUEST_SET_MODE
} tts_ipc_vtable_e;
&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;
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);
+}
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
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");
}
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;
+}
#ifndef __TTS_TIDL_H_
#define __TTS_TIDL_H_
+#include <tts.h>
+
#ifdef __cplusplus
extern "C" {
#endif
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