X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=server%2Fttsd_engine_agent.c;h=83abe14f2caeedac977adc5fa1396d469b6a843a;hb=616ead4395c7cd83a0d9e232aa5e880570647484;hp=d0eec552c2b5781de37023ef4af397edc7b2c235;hpb=505a44e5165e759d09f0c591d75108f1eebd810f;p=platform%2Fcore%2Fuifw%2Ftts.git diff --git a/server/ttsd_engine_agent.c b/server/ttsd_engine_agent.c index d0eec55..83abe14 100644 --- a/server/ttsd_engine_agent.c +++ b/server/ttsd_engine_agent.c @@ -73,7 +73,7 @@ static void __free_voice_list(GList* voice_list); static int ttsd_print_voicelist(); /** Get engine info */ -int __internal_get_engine_info(ttse_request_callback_s* callback); +static int __internal_get_engine_info(ttse_request_callback_s* callback); static const char* __ttsd_get_engine_error_code(ttse_error_e err) { @@ -259,7 +259,7 @@ static int __update_voice_list() int ttsd_engine_agent_load_current_engine(ttse_request_callback_s* callback) { - SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] === ttsd_engine_agent_load_current_engine START"); + SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] load current engine START"); if (false == g_agent_init) { @@ -388,7 +388,10 @@ int ttsd_engine_agent_unload_current_engine() data = iter->data; if (NULL != data) { - if (NULL != data->lang) free(data->lang); + if (NULL != data->lang) { + free(data->lang); + data->lang = NULL; + } g_cur_voices = g_slist_remove(g_cur_voices, data); free(data); data = NULL; @@ -675,14 +678,14 @@ int ttsd_engine_agent_set_default_voice(const char* language, int vctype) if (0 == data->client_ref_count) { /* Unload voice */ ret = g_engine_info->callbacks->unload_voice(data->lang, data->type); - if (0 == ret) { + if (0 == ret) { SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent SUCCESS] Unload voice : lang(%s), type(%d)", - data->lang, data->type); - data->is_loaded = false; - } else { + data->lang, data->type); + data->is_loaded = false; + } else { SECURE_SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to unload voice : lang(%s), type(%d), result(%s)", - data->lang, data->type, __ttsd_get_engine_error_code(ret)); - } + data->lang, data->type, __ttsd_get_engine_error_code(ret)); + } } break; } @@ -691,7 +694,10 @@ int ttsd_engine_agent_set_default_voice(const char* language, int vctype) iter = g_slist_next(iter); } - if (NULL != g_engine_info->default_lang) free(g_engine_info->default_lang); + if (NULL != g_engine_info->default_lang) { + free(g_engine_info->default_lang); + g_engine_info->default_lang = NULL; + } g_engine_info->default_lang = strdup(language); g_engine_info->default_vctype = vctype; @@ -744,6 +750,7 @@ int ttsd_engine_agent_set_default_pitch(int pitch) g_engine_info->default_pitch = pitch; + SLOG(LOG_INFO, tts_tag(), "[Engine Agent] Set pitch(%d)", pitch); return 0; } @@ -773,6 +780,7 @@ int ttsd_engine_agent_is_credential_needed(int uid, bool* credential_needed) result = g_engine_info->callbacks->need_app_credential(); *credential_needed = result; + SLOG(LOG_INFO, tts_tag(), "[Engine Agent] Need app credential, credential_needed(%d)", *credential_needed); return TTSD_ERROR_NONE; } @@ -825,26 +833,26 @@ int ttsd_engine_load_voice(const char* lang, const int vctype) return TTSD_ERROR_OPERATION_FAILED; } - /* 2. increse ref count */ + /* 2. increase ref count */ data->client_ref_count++; /* 3. if ref count change 0 to 1 and not default, load voice */ if (1 == data->client_ref_count && false == data->is_default) { /* load voice */ ret = g_engine_info->callbacks->load_voice(data->lang, data->type); - if (0 == ret) { + if (0 == ret) { SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent SUCCESS] Load voice : lang(%s), type(%d)", - data->lang, data->type); - data->is_loaded = true; - } else { + data->lang, data->type); + data->is_loaded = true; + } else { SECURE_SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to load voice : lang(%s), type(%d), result(%s)", - data->lang, data->type, __ttsd_get_engine_error_code(ret)); + data->lang, data->type, __ttsd_get_engine_error_code(ret)); - return TTSD_ERROR_OPERATION_FAILED; - } - } else { + return TTSD_ERROR_OPERATION_FAILED; + } + } else { SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent] Not load voice : default voice(%d) or ref count(%d)", - data->is_default, data->client_ref_count); + data->is_default, data->client_ref_count); } #ifdef ENGINE_AGENT_DEBUG @@ -899,26 +907,26 @@ int ttsd_engine_unload_voice(const char* lang, const int vctype) return TTSD_ERROR_OPERATION_FAILED; } - /* 2. Decrese ref count */ + /* 2. Decrease ref count */ data->client_ref_count--; /* 3. if ref count change 0 and not default, load voice */ if (0 == data->client_ref_count && false == data->is_default) { /* unload voice */ ret = g_engine_info->callbacks->unload_voice(data->lang, data->type); - if (0 == ret) { + if (0 == ret) { SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent SUCCESS] Unload voice : lang(%s), type(%d)", - data->lang, data->type); - data->is_loaded = false; - } else { + data->lang, data->type); + data->is_loaded = false; + } else { SECURE_SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to unload voice : lang(%s), type(%d), result(%s)", - data->lang, data->type, __ttsd_get_engine_error_code(ret)); + data->lang, data->type, __ttsd_get_engine_error_code(ret)); - return TTSD_ERROR_OPERATION_FAILED; - } - } else { + return TTSD_ERROR_OPERATION_FAILED; + } + } else { SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent] Not unload voice : default voice(%d) or ref count(%d)", - data->is_default, data->client_ref_count); + data->is_default, data->client_ref_count); } #ifdef ENGINE_AGENT_DEBUG @@ -949,7 +957,10 @@ int ttsd_engine_start_synthesis(const char* lang, int vctype, const char* text, int temp_type; if (true != ttsd_engine_select_valid_voice(lang, vctype, &temp_lang, &temp_type)) { SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to select default voice"); - if (NULL != temp_lang) free(temp_lang); + if (NULL != temp_lang) { + free(temp_lang); + temp_lang = NULL; + } return TTSD_ERROR_INVALID_VOICE; } else { SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent] Start synthesis : language(%s), type(%d), speed(%d), text(%s), credential(%s)", @@ -997,6 +1008,7 @@ int ttsd_engine_cancel_synthesis() return TTSD_ERROR_ENGINE_NOT_FOUND; } + SLOG(LOG_INFO, tts_tag(), "[Engine Agent] Cancel synth"); /* stop synthesis */ int ret = 0; ret = g_engine_info->callbacks->cancel_synth(); @@ -1146,7 +1158,46 @@ int ttsd_engine_get_private_data(const char* key, char** data) SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to get private data(%d)", ret); } - *data = strdup(temp); + if (NULL == temp) + *data = strdup("NULL"); + else + *data = strdup(temp); + + return ret; +} + +int ttsd_engine_check_app_agreed(const char* appid, bool* is_agreed) +{ + if (false == g_agent_init) { + SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Not Initialized"); + return TTSD_ERROR_OPERATION_FAILED; + } + + if (false == g_engine_info->is_loaded) { + SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] No loaded engine"); + return TTSD_ERROR_ENGINE_NOT_FOUND; + } + + if (NULL == appid || NULL == is_agreed) { + SLOG(LOG_WARN, tts_tag(), "[Engine Agent WARNING] Invalid parameter, appid is NULL"); + return TTSD_ERROR_NONE; + } + + + if (NULL == g_engine_info->callbacks->check_app_agreed) { + SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Not supported feature"); + return TTSD_ERROR_NOT_SUPPORTED_FEATURE; + } + + int ret = 0; + bool tmp = true; // default value is true until now + ret = g_engine_info->callbacks->check_app_agreed(appid, &tmp); + if (0 != ret) { + SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to check app agreed(%d)", ret); + return TTSD_ERROR_OPERATION_FAILED; + } + + *is_agreed = tmp; return ret; } @@ -1165,8 +1216,12 @@ void __free_voice_list(GList* voice_list) data = iter->data; if (NULL != data) { - if (NULL != data->language) free(data->language); + if (NULL != data->language) { + free(data->language); + data->language = NULL; + } free(data); + data = NULL; } voice_list = g_list_remove_link(voice_list, iter); @@ -1187,7 +1242,7 @@ int ttsd_print_voicelist() GSList *iter = NULL; ttsvoice_s* data = NULL; - SLOG(LOG_DEBUG, tts_tag(), "=== Voice list ==="); + SLOG(LOG_DEBUG, tts_tag(), "@@@ Voice list @@@"); if (g_slist_length(g_cur_voices) > 0) { /* Get a first item */ @@ -1212,14 +1267,14 @@ int ttsd_print_voicelist() } } - SLOG(LOG_DEBUG, tts_tag(), "=================="); + SLOG(LOG_DEBUG, tts_tag(), "@@@@@"); return 0; } -int __internal_get_engine_info(ttse_request_callback_s* callback) +static int __internal_get_engine_info(ttse_request_callback_s* callback) { - SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] === inside __internal_get_engine_info"); + SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] internal get engine info"); if (NULL == callback) { SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Invalid engine");