Change internal function to static
[platform/core/uifw/tts.git] / server / ttsd_engine_agent.c
index d0eec55..83abe14 100644 (file)
@@ -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");