return false;
}
+static void __set_language_into_config(tts_config_s* config_info, const char* language)
+{
+ if (NULL == config_info) {
+ return;
+ }
+
+ memset(g_language, '\0', sizeof(g_language));
+ config_info->language = g_language;
+
+ if (NULL != language) {
+ strncpy(config_info->language, language, sizeof(g_language) - 1);
+ }
+}
+
int __tts_config_mgr_check_engine_is_valid(const char* engine_id)
{
if (NULL == engine_id) {
if (NULL != voice) {
is_valid_voice = true;
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
- strncpy(config_info.language, voice->language, sizeof(g_language) - 1);
-
+ __set_language_into_config(&config_info, voice->language);
config_info.type = voice->type;
SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type);
return TTS_CONFIG_ERROR_OPERATION_FAILED;
}
/* Select first voice as default */
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
-
- strncpy(config_info.language, voice->language, sizeof(g_language) - 1);
+ __set_language_into_config(&config_info, voice->language);
config_info.type = voice->type;
SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type);
return TTS_CONFIG_ERROR_OPERATION_FAILED;
}
-inline static void __invoke_engine_changed_cb(tts_config_client_s* client, engine_changed_cb_parameter_s* params)
+static void __invoke_engine_changed_cb(gpointer data, gpointer user_data)
{
+ tts_config_client_s* client = (tts_config_client_s*)data;
+ engine_changed_cb_parameter_s* params = (engine_changed_cb_parameter_s*)user_data;
+
if (NULL == client || NULL == params) {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] parmeter is NULL. client(%p), params(%p)", client, params);
return;
}
}
-inline static void __invoke_voice_changed_cb(tts_config_client_s* client, voice_changed_cb_parameter_s* params)
+static void __invoke_voice_changed_cb(gpointer data, gpointer user_data)
{
+ tts_config_client_s* client = (tts_config_client_s*)data;
+ voice_changed_cb_parameter_s* params = (voice_changed_cb_parameter_s*)user_data;
+
if (NULL == client || NULL == params) {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] parmeter is NULL. client(%p), params(%p)", client, params);
return;
SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Engine change(%s)", config_info.engine_id);
/* Call all callbacks of client*/
- iter = g_slist_nth(g_config_client_list, 0);
-
- while (NULL != iter) {
- temp_client = iter->data;
- engine_changed_cb_parameter_s params = {config_info.engine_id, config_info.setting,config_info.language,
- config_info.type, config_info.auto_voice, config_info.credential};
- __invoke_engine_changed_cb(temp_client, ¶ms);
-
- iter = g_slist_next(iter);
- }
+ engine_changed_cb_parameter_s params = {config_info.engine_id, config_info.setting,config_info.language,
+ config_info.type, config_info.auto_voice, config_info.credential};
+ g_slist_foreach(g_config_client_list, __invoke_engine_changed_cb, ¶ms);
}
if (auto_voice != config_info.auto_voice) {
before_type = config_info.type;
if (NULL != lang) {
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
- strncpy(config_info.language, lang, sizeof(g_language) - 1);
+ __set_language_into_config(&config_info, lang);
}
if (-1 != voice_type) {
config_info.type = voice_type;
SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Voice change(%s, %d)", config_info.language, config_info.type);
/* Call all callbacks of client*/
- iter = g_slist_nth(g_config_client_list, 0);
-
- while (NULL != iter) {
- temp_client = iter->data;
- voice_changed_cb_parameter_s params = {before_lang, before_type, config_info.language,
- config_info.type, config_info.auto_voice};
- __invoke_voice_changed_cb(temp_client, ¶ms);
-
- iter = g_slist_next(iter);
- }
+ voice_changed_cb_parameter_s params = {before_lang, before_type, config_info.language,
+ config_info.type, config_info.auto_voice};
+ g_slist_foreach(g_config_client_list, __invoke_voice_changed_cb, ¶ms);
if (NULL != before_lang) {
free(before_lang);
before_lang = strdup(config_info.language);
before_type = config_info.type;
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
- strncpy(config_info.language, temp_lang, sizeof(g_language) - 1);
+ __set_language_into_config(&config_info, temp_lang);
SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[Config] Default voice : lang(%s) type(%d)",
config_info.language, config_info.type);
- GSList *iter = NULL;
- tts_config_client_s* temp_client = NULL;
-
/* Call all callbacks of client*/
- iter = g_slist_nth(g_config_client_list, 0);
-
- while (NULL != iter) {
- temp_client = iter->data;
- voice_changed_cb_parameter_s params = {before_lang, before_type, config_info.language, config_info.type,
- config_info.auto_voice};
- __invoke_voice_changed_cb(temp_client, ¶ms);
-
- iter = g_slist_next(iter);
- }
+ voice_changed_cb_parameter_s params = {before_lang, before_type, config_info.language,
+ config_info.type, config_info.auto_voice};
+ g_slist_foreach(g_config_client_list, __invoke_voice_changed_cb, ¶ms);
if (NULL != before_lang) {
free(before_lang);
SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[Config] Default voice : lang(%s) type(%d)", tmp_language, tmp_type);
- GSList *iter = NULL;
- tts_config_client_s* temp_client = NULL;
-
/* Call all callbacks of client*/
- iter = g_slist_nth(g_config_client_list, 0);
-
- while (NULL != iter) {
- temp_client = iter->data;
- voice_changed_cb_parameter_s params = {config_info.language, config_info.type, tmp_language, tmp_type,
- config_info.auto_voice};
- __invoke_voice_changed_cb(temp_client, ¶ms);
-
- iter = g_slist_next(iter);
- }
-
-
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
- strncpy(config_info.language, tmp_language, sizeof(g_language) - 1);
+ voice_changed_cb_parameter_s params = {config_info.language, config_info.type, tmp_language, tmp_type,
+ config_info.auto_voice};
+ g_slist_foreach(g_config_client_list, __invoke_voice_changed_cb, ¶ms);
+ __set_language_into_config(&config_info, tmp_language);
config_info.type = tmp_type;
free(tmp_language);
return ECORE_CALLBACK_PASS_ON;
}
- GSList *iter = NULL;
- tts_config_client_s* temp_client = NULL;
/* Call all callbacks of client*/
- iter = g_slist_nth(g_config_client_list, 0);
-
- while (NULL != iter) {
- temp_client = iter->data;
- engine_changed_cb_parameter_s params = {config_info.engine_id, config_info.setting,config_info.language,
- config_info.type, config_info.auto_voice, config_info.credential};
- __invoke_engine_changed_cb(temp_client, ¶ms);
-
- iter = g_slist_next(iter);
- }
+ engine_changed_cb_parameter_s params = {config_info.engine_id, config_info.setting,config_info.language,
+ config_info.type, config_info.auto_voice, config_info.credential};
+ g_slist_foreach(g_config_client_list, __invoke_engine_changed_cb, ¶ms);
} else {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Undefined event");
}
return TTS_CONFIG_ERROR_NONE;
}
-int tts_config_mgr_initialize(unsigned int uid, tts_config_client_type_e client_type)
+static int __add_new_config_client(unsigned int uid)
{
tts_config_client_s* new_client = NULL;
+ new_client = (tts_config_client_s*)calloc(1, sizeof(tts_config_client_s));
+ if (NULL == new_client) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to allocate memory");
+ return TTS_CONFIG_ERROR_OUT_OF_MEMORY;
+ }
+ new_client->uid = uid;
+ new_client->engine_cb = NULL;
+ new_client->voice_cb = NULL;
+ new_client->speech_cb = NULL;
+ new_client->pitch_cb = NULL;
+ new_client->screen_cb = NULL;
+ new_client->bg_volume_ratio_cb = NULL;
+ new_client->user_data = NULL;
+ new_client->screen_user_data = NULL;
+
+ g_config_client_list = g_slist_append(g_config_client_list, new_client);
+
+ return TTS_CONFIG_ERROR_NONE;
+}
+int tts_config_mgr_initialize(unsigned int uid, tts_config_client_type_e client_type)
+{
/* Register uid */
if (0 < g_slist_length(g_config_client_list)) {
/* Check uid */
iter = g_slist_next(iter);
}
- new_client = (tts_config_client_s*)calloc(1, sizeof(tts_config_client_s));
- if (NULL == new_client) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to allocate memory");
- return TTS_CONFIG_ERROR_OUT_OF_MEMORY;
+ int ret = __add_new_config_client(uid);
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ return ret;
}
- new_client->uid = uid;
- new_client->engine_cb = NULL;
- new_client->voice_cb = NULL;
- new_client->speech_cb = NULL;
- new_client->pitch_cb = NULL;
- new_client->screen_cb = NULL;
- new_client->bg_volume_ratio_cb = NULL;
- new_client->user_data = NULL;
- new_client->screen_user_data = NULL;
-
- g_config_client_list = g_slist_append(g_config_client_list, new_client);
SECURE_SLOG(LOG_WARN, TAG_TTSCONFIG, "[CONFIG] Add uid(%u) but config has already initialized", uid);
SLOG(LOG_INFO, TAG_TTSCONFIG, "Client type : %d", client_type);
return TTS_CONFIG_ERROR_NONE;
} else {
- new_client = (tts_config_client_s*)calloc(1, sizeof(tts_config_client_s));
- if (NULL == new_client) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to allocate memory");
- return TTS_CONFIG_ERROR_OUT_OF_MEMORY;
+ int ret = __add_new_config_client(uid);
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ return ret;
}
- new_client->uid = uid;
- new_client->engine_cb = NULL;
- new_client->voice_cb = NULL;
- new_client->speech_cb = NULL;
- new_client->pitch_cb = NULL;
- new_client->screen_cb = NULL;
- new_client->bg_volume_ratio_cb = NULL;
- new_client->user_data = NULL;
- new_client->screen_user_data = NULL;
-
- g_config_client_list = g_slist_append(g_config_client_list, new_client);
}
if (0 != access(TTS_CONFIG_BASE, F_OK)) {
}
if (NULL != tmp_language) {
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
- strncpy(config_info.language, tmp_language, sizeof(g_language) - 1);
-
+ __set_language_into_config(&config_info, tmp_language);
config_info.type = tmp_type;
free(tmp_language);
return TTS_CONFIG_ERROR_NONE;
}
-
-int tts_config_mgr_get_engine_list(tts_config_supported_engine_cb callback, void* user_data)
+static int __check_precondition()
{
if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Not initialized");
return TTS_CONFIG_ERROR_INVALID_STATE;
}
- GSList *iter = NULL;
- tts_engine_info_s *engine_info = NULL;
-
if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no engine!!");
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!");
return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
}
+ return TTS_CONFIG_ERROR_NONE;
+}
+
+
+int tts_config_mgr_get_engine_list(tts_config_supported_engine_cb callback, void* user_data)
+{
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
+ }
+
+ GSList *iter = NULL;
+ tts_engine_info_s *engine_info = NULL;
+
/* Get a first item */
iter = g_slist_nth(g_engine_list, 0);
int tts_config_mgr_get_engine(char** engine)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
if (NULL == engine) {
int tts_config_mgr_set_engine(const char* engine)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
if (NULL == engine)
if (0 == strcmp(config_info.engine_id, engine))
return TTS_CONFIG_ERROR_NONE;
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
- }
-
SLOG(LOG_DEBUG, TAG_TTSCONFIG, "New engine id : %s", engine);
- int ret = __tts_set_buxtonkey(engine);
+ ret = __tts_set_buxtonkey(engine);
if (0 != ret) {
SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[DEBUG] set_buxtonkey Fail!!");
return ret;
}
if (false == is_valid_voice) {
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
+ __set_language_into_config(&config_info, NULL);
GSList *iter_voice = g_slist_nth(engine_info->voices, 0);
if (NULL != iter_voice) {
int tts_config_mgr_get_voice_list(const char* engine_id, tts_config_supported_voice_cb callback, void* user_data)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
- }
-
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
tts_engine_info_s *engine_info = __get_engine_info(engine_id);
int tts_config_mgr_get_voice(char** language, int* type)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
- }
-
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
if (NULL == language || NULL == type)
int tts_config_mgr_set_voice(const char* language, int type)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
if (NULL == language) {
return TTS_CONFIG_ERROR_INVALID_PARAMETER;
}
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
- }
-
tts_config_s config_info;
if (0 != tts_parser_get_config_info(&config_info)){
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get configure information");
SLOG(LOG_INFO, TAG_TTSCONFIG, "Client type is default. Skip saving configuration file.");
}
- memset(g_language, '\0', sizeof(g_language));
- config_info.language = g_language;
- strncpy(config_info.language, language, sizeof(g_language) - 1);
-
+ __set_language_into_config(&config_info, language);
config_info.type = type;
if (0 != tts_parser_set_config_info(&config_info)){
return TTS_CONFIG_ERROR_NONE;
}
+static int __check_engine_support_pitch(const char* engine_id)
+{
+ tts_engine_info_s *engine_info = __get_engine_info(engine_id);
+ if (NULL == engine_info) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL");
+ return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
+ }
+
+ if (false == engine_info->pitch_support) {
+ return TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE;
+ }
+
+ return TTS_CONFIG_ERROR_NONE;
+}
+
int tts_config_mgr_get_pitch(int* value)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
if (NULL == value) {
return TTS_CONFIG_ERROR_INVALID_PARAMETER;
}
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
- }
-
tts_config_s config_info;
if (0 != tts_parser_get_config_info(&config_info)){
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get configure information");
return TTS_CONFIG_ERROR_OPERATION_FAILED;
}
- tts_engine_info_s *engine_info = __get_engine_info(config_info.engine_id);
- if (NULL == engine_info) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
- }
-
- if (false == engine_info->pitch_support) {
- return TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE;
+ ret = __check_engine_support_pitch(config_info.engine_id);
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ return ret;
}
*value = config_info.pitch;
int tts_config_mgr_set_pitch(int value)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
- }
-
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
tts_config_s config_info;
return TTS_CONFIG_ERROR_OPERATION_FAILED;
}
- tts_engine_info_s *engine_info = __get_engine_info(config_info.engine_id);
- if (NULL == engine_info) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
- }
-
- if (false == engine_info->pitch_support) {
- return TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE;
+ ret = __check_engine_support_pitch(config_info.engine_id);
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ return ret;
}
if (__is_client_type(TTS_CONFIG_CLIENT_TYPE_SETTING | TTS_CONFIG_CLIENT_TYPE_SERVER | TTS_CONFIG_CLIENT_TYPE_INTERRUPT)) {
bool tts_config_check_default_engine_is_valid(const char* engine)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
return false;
}
if (NULL == engine)
return false;
- if (0 >= g_slist_length(g_engine_list))
- return false;
-
tts_engine_info_s *engine_info = __get_engine_info(engine);
if (NULL == engine_info) {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL");
int tts_config_mgr_get_max_text_size(unsigned int* size)
{
- if (0 >= g_slist_length(g_config_client_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized");
- return TTS_CONFIG_ERROR_INVALID_STATE;
+ int ret = __check_precondition();
+ if (TTS_CONFIG_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_TTSCONFIG, "Precondition is not met (%s)", get_error_message(ret));
+ return ret;
}
if (NULL == size) {
return TTS_CONFIG_ERROR_INVALID_PARAMETER;
}
- if (0 >= g_slist_length(g_engine_list)) {
- SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!");
- return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND;
- }
-
tts_config_s config_info;
if (0 != tts_parser_get_config_info(&config_info)){
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get configure information");