- To reduce RAM usage, unifying 3 TTSD processes (default, sr, noti) is necessary.
- (server) Add a variable 'mode' into 'app_data_s' in ttsd_data. This is used when ttsd_player checks the current playing_info's mode.
- (client) Make only Default mode TTSD process launched, when client's mode is default/sr/noti.
Change-Id: Iba8c4ff99dd8d5b035c2804148a1b5b0803c4a27
Signed-off-by: sooyeon <sooyeon.kim@samsung.com>
return NULL;
}
- if (TTS_MODE_DEFAULT == mode) {
+ if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
snprintf(appid, 256, "%s", g_engine_name);
- } else if (TTS_MODE_NOTIFICATION == mode) {
- snprintf(appid, 256, "%s-noti", g_engine_name);
- } else if (TTS_MODE_SCREEN_READER == mode) {
- snprintf(appid, 256, "%s-sr", g_engine_name);
+// } else if (TTS_MODE_NOTIFICATION == mode) {
+// snprintf(appid, 256, "%s-noti", g_engine_name);
+// } else if (TTS_MODE_SCREEN_READER == mode) {
+// snprintf(appid, 256, "%s-sr", g_engine_name);
} else if (TTS_MODE_INTERRUPT == mode) {
snprintf(appid, 256, "%s-interrupt", g_engine_name);
} else {
}
tts_mode_e mode = tts_client_get_mode(client);
- if (TTS_MODE_DEFAULT == mode) {
+ if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
- } else if (TTS_MODE_NOTIFICATION == mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
- } else if (TTS_MODE_SCREEN_READER == mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
+// } else if (TTS_MODE_NOTIFICATION == mode) {
+// snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
+// } else if (TTS_MODE_SCREEN_READER == mode) {
+// snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
} else if (TTS_MODE_INTERRUPT == mode) {
snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
}
/* remove a rule for daemon error */
char rule_err[256] = {0, };
- if (TTS_MODE_DEFAULT == mode) {
+ if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
- } else if (TTS_MODE_NOTIFICATION == mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
- } else if (TTS_MODE_SCREEN_READER == mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
+// } else if (TTS_MODE_NOTIFICATION == mode) {
+// snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
+// } else if (TTS_MODE_SCREEN_READER == mode) {
+// snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
} else if (TTS_MODE_INTERRUPT == mode) {
snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
}
__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, "@@@");
DBusMessage* msg;
tts_mode_e mode = tts_client_get_mode(client);
- if (TTS_MODE_DEFAULT == mode) {
+ if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
msg = dbus_message_new_method_call(
TTS_SERVER_SERVICE_NAME,
TTS_SERVER_SERVICE_OBJECT_PATH,
TTS_SERVER_SERVICE_INTERFACE,
method);
- } else if (TTS_MODE_NOTIFICATION == mode) {
+/* } else if (TTS_MODE_NOTIFICATION == mode) {
msg = dbus_message_new_method_call(
TTS_NOTI_SERVER_SERVICE_NAME,
TTS_NOTI_SERVER_SERVICE_OBJECT_PATH,
TTS_SR_SERVER_SERVICE_OBJECT_PATH,
TTS_SR_SERVER_SERVICE_INTERFACE,
method);
- } else if (TTS_MODE_INTERRUPT == mode) {
+*/ } else if (TTS_MODE_INTERRUPT == mode) {
msg = dbus_message_new_method_call(
TTS_INTERRUPT_SERVER_SERVICE_NAME,
TTS_INTERRUPT_SERVER_SERVICE_OBJECT_PATH,
}
tts_mode_e mode = tts_client_get_mode(client);
- if (TTS_MODE_DEFAULT == mode) {
+ if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
- } else if (TTS_MODE_NOTIFICATION == mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
- } else if (TTS_MODE_SCREEN_READER == mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
+// } else if (TTS_MODE_NOTIFICATION == mode) {
+// snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
+// } else if (TTS_MODE_SCREEN_READER == mode) {
+// snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
} else if (TTS_MODE_INTERRUPT == mode) {
snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
}
/* remove a rule for daemon error */
tts_mode_e mode = tts_client_get_mode(client);
SLOG(LOG_INFO, TAG_TTSC, "[INFO] Remove match, mode(%d)", mode);
- if (TTS_MODE_DEFAULT == mode) {
+ if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
__tts_dbus_remove_match(TTS_MODE_DEFAULT);
- } else if (TTS_MODE_NOTIFICATION == mode) {
- __tts_dbus_remove_match(TTS_MODE_NOTIFICATION);
- } else if (TTS_MODE_SCREEN_READER == mode) {
- __tts_dbus_remove_match(TTS_MODE_SCREEN_READER);
+// } else if (TTS_MODE_NOTIFICATION == mode) {
+// __tts_dbus_remove_match(TTS_MODE_NOTIFICATION);
+// } else if (TTS_MODE_SCREEN_READER == mode) {
+// __tts_dbus_remove_match(TTS_MODE_SCREEN_READER);
} else if (TTS_MODE_INTERRUPT == mode) {
__tts_dbus_remove_match(TTS_MODE_INTERRUPT);
}
return result;
}
+int tts_dbus_request_set_mode(int uid, tts_mode_e mode)
+{
+ DBusMessage* msg;
+ DBusError err;
+ dbus_error_init(&err);
+
+ msg = __tts_dbus_make_message(uid, TTS_METHOD_SET_MODE);
+
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts set mode : Fail to make message");
+ return TTS_ERROR_OPERATION_FAILED;
+ } else {
+ SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts set mode : uid(%d), mode(%d)", uid, mode);
+ }
+
+ if (true != dbus_message_append_args(msg,
+ DBUS_TYPE_INT32, &uid,
+ DBUS_TYPE_INT32, &mode,
+ DBUS_TYPE_INVALID)) {
+ dbus_message_unref(msg);
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
+
+ return TTS_ERROR_OPERATION_FAILED;
+ }
+
+ DBusMessage* result_msg;
+ int result = TTS_ERROR_OPERATION_FAILED;
+
+ result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
+ dbus_message_unref(msg);
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
+ dbus_error_free(&err);
+ }
+
+ if (NULL != result_msg) {
+ dbus_message_get_args(result_msg, &err,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts set mode : Get arguments error (%s)", err.message);
+ dbus_error_free(&err);
+ result = TTS_ERROR_OPERATION_FAILED;
+ }
+ dbus_message_unref(result_msg);
+
+ if (0 == result) {
+ SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts set mode : result(%d)", result);
+ } else {
+ SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts set mode : result(%d)", result);
+ }
+ } else {
+ SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
+ tts_dbus_reconnect();
+ result = TTS_ERROR_TIMED_OUT;
+ }
+
+ return result;
+}
+
int tts_dbus_request_add_text(int uid, const char* text, const char* lang, int vctype, int speed, int uttid, const char* credential)
{
if (NULL == text || NULL == lang) {
int tts_dbus_request_finalize(int uid);
-int tts_dbus_set_sound_type(int uid, int type);
+int tts_dbus_request_set_mode(int uid, tts_mode_e mode);
int tts_dbus_request_add_text(int uid, const char* text, const char* lang, int vctype, int speed, int uttid, const char* credential);
info->connected = true;
info->connection_requesting = false;
info->register_callback_invoked = false;
- if (0 != rpc_port_proxy_tts_invoke_set_mode(info->rpc_h, tts_client_get_mode(client))) {
+ 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;
}
}
char* mode_str = "";
- if (TTS_MODE_NOTIFICATION == mode) {
- mode_str = TTS_NOTI_SERVER_MODE;
- } else if (TTS_MODE_SCREEN_READER == mode) {
- mode_str = TTS_SR_SERVER_MODE;
- } else if (TTS_MODE_INTERRUPT == mode) {
+ if (TTS_MODE_INTERRUPT == mode) {
mode_str = TTS_INTERRUPT_SERVER_MODE;
}
#define TTS_NOTI_SERVER_SERVICE_NAME "org.tizen.voice.ttsnotiserver"
#define TTS_NOTI_SERVER_SERVICE_OBJECT_PATH "/org/tizen/voice/ttsnotiserver"
#define TTS_NOTI_SERVER_SERVICE_INTERFACE "org.tizen.voice.ttsnotiserver"
-#define TTS_NOTI_SERVER_MODE "-noti"
+//#define TTS_NOTI_SERVER_MODE "-noti"
#define TTS_SR_SERVER_SERVICE_NAME "org.tizen.voice.ttssrserver"
#define TTS_SR_SERVER_SERVICE_OBJECT_PATH "/org/tizen/voice/ttssrserver"
#define TTS_SR_SERVER_SERVICE_INTERFACE "org.tizen.voice.ttssrserver"
-#define TTS_SR_SERVER_MODE "-sr"
+//#define TTS_SR_SERVER_MODE "-sr"
#define TTS_INTERRUPT_SERVER_SERVICE_NAME "org.tizen.voice.ttsinterruptserver"
#define TTS_INTERRUPT_SERVER_SERVICE_OBJECT_PATH "/org/tizen/voice/ttsinterruptserver"
#define TTS_METHOD_HELLO_SYNC "tts_method_hello_sync"
#define TTS_METHOD_INITIALIZE "tts_method_initialize"
#define TTS_METHOD_FINALIZE "tts_method_finalilze"
+#define TTS_METHOD_SET_MODE "tts_method_set_mode"
#define TTS_METHOD_GET_SUPPORT_VOICES "tts_method_get_support_voices"
#define TTS_METHOD_GET_CURRENT_VOICE "tts_method_get_current_voice"
#define TTS_METHOD_ADD_QUEUE "tts_method_add_queue"
#include <mutex>
#include <vector>
-#include "ttsd_main.h"
#include "ttsd_data.h"
using namespace std;
int uid;
int utt_id_stopped;
app_tts_state_e state;
+ ttsd_mode_e mode;
std::list<speak_data_s*> m_speak_data;
std::list<sound_data_s*> m_wav_data;
app.uid = uid;
app.utt_id_stopped = 0;
app.state = APP_STATE_READY;
+ app.mode = TTSD_MODE_DEFAULT;
app.ipc_method = TTS_IPC_METHOD_UNDEFINED;
g_app_list.push_back(app);
return app_data->ipc_method;
}
+int ttsd_data_set_mode(int uid, ttsd_mode_e mode)
+{
+ lock_guard<mutex> lock(g_app_data_mutex);
+ app_data_s* app_data = __get_client_app_data(uid);
+ if (nullptr == app_data) {
+ SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%d)", uid);
+ return TTSD_ERROR_INVALID_PARAMETER;
+ }
+
+ app_data->mode = mode;
+
+ return TTSD_ERROR_NONE;
+}
+
+ttsd_mode_e ttsd_data_get_mode(int uid)
+{
+ lock_guard<mutex> lock(g_app_data_mutex);
+ app_data_s* app_data = __get_client_app_data(uid);
+ if (nullptr == app_data) {
+ SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%d)", uid);
+ return TTSD_MODE_DEFAULT;
+ }
+
+ return app_data->mode;
+}
+
int ttsd_data_get_speak_data_size(int uid)
{
lock_guard<mutex> lock(g_app_data_mutex);
#include "ttse.h"
#include "ttsd_stub.h"
#include "tts_ipc_method.h"
+#include "ttsd_main.h"
#ifdef __cplusplus
extern "C" {
tts_ipc_method_e ttsd_data_get_ipc_method(int uid);
+int ttsd_data_set_mode(int uid, ttsd_mode_e mode);
+
+ttsd_mode_e ttsd_data_get_mode(int uid);
+
/* speak data */
int ttsd_data_add_speak_data(int uid, speak_data_s* data);
} else if (dbus_message_is_method_call(msg, g_service_interface, TTS_METHOD_FINALIZE)) {
ttsd_dbus_server_finalize(g_conn_listener, msg);
+ } else if (dbus_message_is_method_call(msg, g_service_interface, TTS_METHOD_SET_MODE)) {
+ ttsd_dbus_server_set_mode(g_conn_listener, msg);
+
} else if (dbus_message_is_method_call(msg, g_service_interface, TTS_METHOD_GET_SUPPORT_VOICES)) {
ttsd_dbus_server_get_support_voices(g_conn_listener, msg);
return 0;
}
+int ttsd_dbus_server_set_mode(DBusConnection* conn, DBusMessage* msg)
+{
+ DBusError err;
+ dbus_error_init(&err);
+
+ int uid;
+ int tmp_mode;
+ ttsd_mode_e mode;
+ int ret = 0;
+ dbus_message_get_args(msg, &err,
+ DBUS_TYPE_INT32, &uid,
+ DBUS_TYPE_INT32, &tmp_mode,
+ DBUS_TYPE_INVALID);
+
+ mode = (ttsd_mode_e)tmp_mode;
+ SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS set mode");
+
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] Fail to get arguments (%s)", err.message);
+ dbus_error_free(&err);
+ ret = TTSD_ERROR_OPERATION_FAILED;
+ } else {
+ SLOG(LOG_DEBUG, tts_tag(), "[IN] tts set mode. uid(%d), mode(%d)", uid, mode);
+ ret = ttsd_server_set_mode(uid, mode);
+ }
+
+ DBusMessage* reply;
+ reply = dbus_message_new_method_return(msg);
+
+ if (NULL != reply) {
+ dbus_message_append_args(reply,
+ DBUS_TYPE_INT32, &ret,
+ DBUS_TYPE_INVALID);
+
+ if (0 == ret) {
+ SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts set mode : (%d)", ret);
+ } else {
+ SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts set mode : (%d)", ret);
+ }
+
+ if (!dbus_connection_send(conn, reply, NULL)) {
+ SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to send reply");
+ }
+
+ dbus_connection_flush(conn);
+ dbus_message_unref(reply);
+ } else {
+ SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to create reply message");
+ }
+
+ SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
+ SLOG(LOG_DEBUG, tts_tag(), "");
+
+ return 0;
+}
+
int ttsd_dbus_server_get_support_voices(DBusConnection* conn, DBusMessage* msg)
{
DBusError err;
int ttsd_dbus_server_finalize(DBusConnection* conn, DBusMessage* msg);
+int ttsd_dbus_server_set_mode(DBusConnection* conn, DBusMessage* msg);
+
int ttsd_dbus_server_get_support_voices(DBusConnection* conn, DBusMessage* msg);
int ttsd_dbus_server_get_current_voice(DBusConnection* conn, DBusMessage* msg);
return;
}
- switch (ttsd_get_mode()) {
+ int uid = g_playing_info->uid;
+ ttsd_mode_e mode = ttsd_data_get_mode(uid);
+
+ switch (mode) {
case TTSD_MODE_DEFAULT:
- SLOG(LOG_DEBUG, tts_tag(), "[Player] Pause current player - mode(%d)", ttsd_get_mode());
+ SLOG(LOG_DEBUG, tts_tag(), "[Player] Pause current player - mode(%d)", mode);
g_audio_state = AUDIO_STATE_READY;
- int uid = g_playing_info->uid;
if (0 != ttsd_player_pause(uid)) {
SLOG(LOG_WARN, tts_tag(), "[Player WARNING] Fail to pause the player");
break;
case TTSD_MODE_NOTIFICATION:
case TTSD_MODE_SCREEN_READER:
- SLOG(LOG_DEBUG, tts_tag(), "[Player] Stop current player - mode(%d)", ttsd_get_mode());
+ SLOG(LOG_DEBUG, tts_tag(), "[Player] Stop current player - mode(%d)", mode);
g_audio_state = AUDIO_STATE_READY;
ttsd_send_all_stop();
break;
case TTSD_MODE_INTERRUPT:
- SLOG(LOG_DEBUG, tts_tag(), "[Player] Ignore focus release - mode(%d)", ttsd_get_mode());
+ SLOG(LOG_DEBUG, tts_tag(), "[Player] Ignore focus release - mode(%d)", mode);
break;
default:
- SLOG(LOG_ERROR, tts_tag(), "[Player ERROR] Invalid mode - mode(%d)", ttsd_get_mode());
+ SLOG(LOG_ERROR, tts_tag(), "[Player ERROR] Invalid mode - mode(%d)", mode);
break;
}
}
}
-static void __set_policy_for_playing(int volume)
+static void __set_policy_for_playing(void)
{
ecore_main_loop_thread_safe_call_async(__del_timer_for_delayed_recover, NULL);
int idx = 0;
/* set volume policy as 40% */
- __set_policy_for_playing(40);
+ __set_policy_for_playing();
while (1) { // 1st while(1)
pthread_mutex_lock(&g_play_thread_mutex);
/* check g_playing_info one more time */
if (AUDIO_STATE_READY == g_audio_state || AUDIO_STATE_WAIT_FOR_PLAYING == g_audio_state) {
/* set volume policy as 40%, when resume play thread*/
- __set_policy_for_playing(40);
+ __set_policy_for_playing();
}
/* resume play thread */
}
SLOG(LOG_INFO, tts_tag(), "[Player INFO] Success to destroy and recreate audio out");
- __set_policy_for_playing(40);
+ __set_policy_for_playing();
}
while (APP_STATE_PLAYING == player->state || APP_STATE_PAUSED == player->state) {
// Check whether set_policy is done or not
if (false == g_is_set_policy) {
SLOG(LOG_INFO, tts_tag(), "[Player INFO] Set policy");
- __set_policy_for_playing(40);
+ __set_policy_for_playing();
}
if (AUDIO_STATE_READY == g_audio_state || AUDIO_STATE_WAIT_FOR_PLAYING == g_audio_state) {
void __screen_reader_changed_cb(bool value)
{
- if (TTSD_MODE_SCREEN_READER == ttsd_get_mode() && false == value) {
+/* if (TTSD_MODE_SCREEN_READER == ttsd_get_mode() && false == value) {
SLOG(LOG_INFO, tts_tag(), "[Server] Screen reader is OFF. Start to terminate tts daemon");
if (g_terminate_timer) {
ecore_timer_del(g_terminate_timer);
}
g_terminate_timer = ecore_timer_add(1, ttsd_terminate_daemon, NULL);
} else {
+*/
SLOG(LOG_DEBUG, tts_tag(), "[Server] Screen reader is %s", value ? "ON" : "OFF");
- }
+// }
return;
}
ttsd_set_synth_control(TTSD_SYNTHESIS_CONTROL_EXPIRED);
- if (TTSD_MODE_SCREEN_READER == ttsd_get_mode()) {
+// if (TTSD_MODE_SCREEN_READER == ttsd_get_mode()) {
ttsd_config_set_screen_reader_callback(__screen_reader_changed_cb);
- }
+// }
g_check_client_timer = ecore_timer_add(CLIENT_CLEAN_UP_TIME, ttsd_cleanup_client, NULL);
if (NULL == g_check_client_timer) {
return TTSD_ERROR_NONE;
}
+int ttsd_server_set_mode(int uid, ttsd_mode_e mode)
+{
+ app_tts_state_e state;
+ if (0 > ttsd_data_get_client_state(uid, &state)) {
+ SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] uid(%d) is NOT valid", uid);
+ return TTSD_ERROR_INVALID_PARAMETER;
+ }
+
+ if (APP_STATE_READY != state) {
+ SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Current state(%d) is NOT 'READY'", uid);
+ return TTSD_ERROR_INVALID_STATE;
+ }
+
+ int ret = ttsd_data_set_mode(uid, mode);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to set mode : ret(%d)", ret);
+ } else {
+ SLOG(LOG_DEBUG, tts_tag(), "[Server] Set mode. uid(%d), mode(%d)", uid, mode);
+ }
+
+ return ret;
+}
+
int ttsd_server_add_queue(int uid, const char* text, const char* lang, int voice_type, int speed, int utt_id, const char* credential)
{
app_tts_state_e state;
return EINA_FALSE;
}
- if (TTSD_MODE_DEFAULT != ttsd_get_mode()) {
+ ttsd_mode_e mode = ttsd_data_get_mode(uid);
+ if (TTSD_MODE_DEFAULT != mode) {
/* send message to client about changing state */
ttsdc_ipc_send_set_state_message(pid, uid, APP_STATE_READY);
} else {
SLOG(LOG_INFO, tts_tag(), "[Server] playing uid (%d)", current_uid);
if (uid != current_uid && -1 != current_uid) {
- if (TTSD_MODE_DEFAULT != ttsd_get_mode()) {
+ if (TTSD_MODE_DEFAULT != ttsd_data_get_mode(current_uid)) {
/* Send interrupt message */
SLOG(LOG_DEBUG, tts_tag(), "[Server] Old uid(%d) will be interrupted into 'Stop' state ", current_uid);
SLOG(LOG_INFO, tts_tag(), "[Server] playing uid (%d)", current_uid);
if (uid != current_uid && -1 != current_uid) {
- if (TTSD_MODE_DEFAULT != ttsd_get_mode()) {
+ if (TTSD_MODE_DEFAULT != ttsd_data_get_mode(current_uid)) {
/* Send interrupt message */
SLOG(LOG_DEBUG, tts_tag(), "[Server] Old uid(%d) will be interrupted into 'Stop' state ", current_uid);
int ttsd_server_finalize(int uid);
+int ttsd_server_set_mode(int uid, ttsd_mode_e mode);
+
int ttsd_server_get_support_voices(int uid, GList** voice_list);
int ttsd_server_get_current_voice(int uid, char** language, int* voice_type);
return TTSE_ERROR_NONE;
}
-static int __set_mode_cb(rpc_port_stub_tts_context_h context, int mode, void* user_data)
+static int __set_mode_cb(rpc_port_stub_tts_context_h context, int uid, int mode, void* user_data)
{
//ttsd_set_mode(mode);
- SLOG(LOG_INFO, tts_tag(), "[Server] TTSD MODE : (%d)", ttsd_get_mode());
+ SLOG(LOG_INFO, tts_tag(), "[Server] Set client mode. uid (%d), mode (%d)", uid, mode);
+
+ int ret = -1;
+ ret = ttsd_data_set_mode(uid, mode);
+ if (TTSD_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, tts_tag(), "[Server] Fail to set mode. uid is not invalid");
+ return ret;
+ }
return TTSE_ERROR_NONE;
}
void register_cb(int pid, int uid, notify_cb callback) async;
int register_cb_sync(int pid, int uid, notify_cb callback);
- int set_mode(int mode);
+ int set_mode(in int uid, in int mode);
int initialize(in int pid, in int uid, out bool credential_needed);
int finalize(in int uid);
int add_text(int uid, string text, string lang, int vctype, int speed, int uttid, string credential);