add printing api for personal voices 19/317619/1
authordyamy-lee <dyamy.lee@samsung.com>
Wed, 24 Jul 2024 07:39:58 +0000 (16:39 +0900)
committerdyamy-lee <dyamy.lee@samsung.com>
Thu, 12 Sep 2024 08:44:10 +0000 (17:44 +0900)
Change-Id: Icc68669af2c5d56b177e113ab1ca1e19768088db

common/tts_config_mgr.c
common/tts_config_parser.c
common/tts_config_parser.h

index 4fd8e17..6538ba0 100644 (file)
@@ -2211,6 +2211,45 @@ bool tts_config_check_default_voice_is_valid(const char* language, int type)
        return __tts_config_mgr_check_lang_is_valid(config_info.engine_id, language, type);
 }
 
+int __tts_config_mgr_print_personal_info(const char* engine_id)
+{
+       char filepath[PATH_MAX_SIZE] = {'\0',};
+
+       memset(filepath, '\0', PATH_MAX_SIZE);
+       snprintf(filepath, PATH_MAX_SIZE, "%s/%s-%s", TTS_DOWNLOAD_PERSONAL_INFO, engine_id, "personal.xml");
+
+       tts_personal_info_s* info = NULL;
+       int ret = tts_parser_get_personal_info(filepath, &info);
+       if (0 != ret) {
+               return -1;
+       }
+
+       GSList *iter_personal_voice = NULL;
+       tts_config_personal_s* personal_voice = NULL;
+       if (g_slist_length(info->personal_voices) > 0) {
+               /* Get a first item */
+               iter_personal_voice = g_slist_nth(info->personal_voices, 0);
+
+               int j = 1;
+               while (NULL != iter_personal_voice) {
+                       /*Get handle data from list*/
+                       personal_voice = iter_personal_voice->data;
+
+                       SLOG(LOG_DEBUG, TAG_TTSCONFIG, "  [%dth] lang(%s) unique_id(%s) display_name(%s) device_name(%s)", j, personal_voice->language, personal_voice->unique_id, personal_voice->display_name, personal_voice->device_name);
+
+                       /*Get next item*/
+                       iter_personal_voice = g_slist_next(iter_personal_voice);
+                       j++;
+               }
+       } else {
+               tts_parser_free_personal_info(info);
+               return -1;
+       }
+
+       tts_parser_free_personal_info(info);
+
+       return 0;
+}
 
 int __tts_config_mgr_print_engine_info()
 {
@@ -2260,6 +2299,13 @@ int __tts_config_mgr_print_engine_info()
                } else {
                        SLOG(LOG_ERROR, TAG_TTSCONFIG, "  Voice is NONE");
                }
+
+               SLOG(LOG_DEBUG, TAG_TTSCONFIG, " Personal Voices");
+               int ret = __tts_config_mgr_print_personal_info(engine_info->uuid);
+               if (0 != ret) {
+                       SLOG(LOG_ERROR, TAG_TTSCONFIG, "  Personal Voice is NONE");
+               }
+
                iter = g_slist_next(iter);
                i++;
        }
index 01ef37d..deb271a 100644 (file)
@@ -410,6 +410,7 @@ int tts_parser_get_personal_info(const char* path, tts_personal_info_s** persona
                /* Invalid engine */
                SECURE_SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Invalid engine : %s", path);
                // free personal info
+               tts_parser_free_personal_info(temp);
                return -1;
        }
 
@@ -628,6 +629,58 @@ int tts_parser_get_engine_info(const char* path, tts_engine_info_s** engine_info
        return 0;
 }
 
+int tts_parser_free_personal_info(tts_personal_info_s* personal_info)
+{
+       if (NULL == personal_info) {
+               SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Input parameter is NULL");
+               return -1;
+       }
+
+       if (NULL != personal_info->engine_id) {
+               free(personal_info->engine_id);
+               personal_info->engine_id = NULL;
+       }
+
+       GSList *iter = NULL;
+       if (g_slist_length(personal_info->personal_voices) > 0) {
+               iter = g_slist_nth(personal_info->personal_voices, 0);
+               while (NULL != iter) {
+                       tts_config_personal_s *temp = (tts_config_personal_s*)iter->data;
+                       if (NULL != temp) {
+                               if (NULL != temp->language) {
+                                       free(temp->language);
+                                       temp->language = NULL;
+                               }
+                               if (NULL != temp->unique_id) {
+                                       free(temp->unique_id);
+                                       temp->unique_id = NULL;
+                               }
+                               if (NULL != temp->display_name) {
+                                       free(temp->display_name);
+                                       temp->display_name = NULL;
+                               }
+                               if (NULL != temp->device_name) {
+                                       free(temp->device_name);
+                                       temp->device_name = NULL;
+                               }
+
+                               free(temp);
+                               temp = NULL;
+                       }
+
+                       personal_info->personal_voices = g_slist_delete_link(personal_info->personal_voices, iter);
+                       iter = g_slist_nth(personal_info->personal_voices, 0);
+               }
+       }
+
+       if (NULL != personal_info) {
+               free(personal_info);
+               personal_info = NULL;
+       }
+
+       return 0;
+}
+
 int tts_parser_free_engine_info(tts_engine_info_s* engine_info)
 {
        if (NULL == engine_info) {
index db59b2a..a74a0d2 100644 (file)
@@ -107,6 +107,8 @@ int tts_parser_update_personal_info(const char* path, const char* engine_id, con
 
 int tts_parser_get_personal_info(const char* path, tts_personal_info_s** personal_info);
 
+int tts_parser_free_personal_info(tts_personal_info_s* personal_info);
+
 #ifdef __cplusplus
 }
 #endif