{
if (NULL == engine_id || NULL == language) {
SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Input parameter is NULL");
- return false;
+ return VC_ERROR_OPERATION_FAILED;
}
GSList *iter = NULL;
if (0 >= g_slist_length(g_engine_list)) {
SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] There is no engine!!");
- return false;
+ return VC_ERROR_OPERATION_FAILED;
}
/* Get a first item */
if (NULL == engine_info) {
SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] engine info is NULL");
- return false;
+ iter = g_slist_next(iter);
+ continue;
}
if (0 != strcmp(engine_id, engine_info->uuid)) {
continue;
}
- GSList *iter_lang = NULL;
- char* engine_lang = NULL;
- if (g_slist_length(engine_info->languages) > 0) {
- /* Get a first item */
- iter_lang = g_slist_nth(engine_info->languages, 0);
-
- while (NULL != iter_lang) {
- engine_lang = iter_lang->data;
- if (NULL != engine_lang) {
- /* Check base language */
- if (0 == strcmp(VC_BASE_LANGUAGE, engine_lang)) {
- *language = strdup(engine_lang);
- SLOG(LOG_DEBUG, vc_config_tag(), "Selected language : %s", *language);
- return 0;
- }
- }
+ if (NULL == engine_info->default_lang) {
+ SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] default language of engine info is NULL");
+ return VC_ERROR_INVALID_LANGUAGE;
+ }
- iter_lang = g_slist_next(iter_lang);
- }
+ *language = strdup(engine_info->default_lang);
- /* Not support base language */
- iter_lang = g_slist_nth(engine_info->languages, 0);
- if (NULL != iter_lang)
- engine_lang = iter_lang->data;
-
- if (NULL != engine_lang) {
- *language = strdup(engine_lang);
- SLOG(LOG_DEBUG, vc_config_tag(), "Selected language : %s", *language);
- return 0;
- }
+ if (NULL != *language) {
+ SLOG(LOG_DEBUG, vc_config_tag(), "Selected language : %s", *language);
+ return VC_ERROR_NONE;
}
- break;
}
- return -1;
+ return VC_ERROR_OPERATION_FAILED;
}
Eina_Bool vc_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handler)
#define VC_TAG_ENGINE_BASE_TAG "voice-control-engine"
#define VC_TAG_ENGINE_NAME "name"
#define VC_TAG_ENGINE_ID "id"
+#define VC_TAG_ENGINE_DEFAULT "default"
#define VC_TAG_ENGINE_LANGUAGE_SET "languages"
#define VC_TAG_ENGINE_LANGUAGE "lang"
#define VC_TAG_ENGINE_NON_FIXED_SUPPORT "non-fixed-support"
temp->name = NULL;
temp->uuid = NULL;
+ temp->default_lang = NULL;
temp->languages = NULL;
temp->non_fixed_support = false;
+ bool is_default_lang_set = false;
+
while (cur != NULL) {
if (0 == xmlStrcmp(cur->name, (const xmlChar *)VC_TAG_ENGINE_NAME)) {
key = xmlNodeGetContent(cur);
} else {
SLOG(LOG_WARN, vc_config_tag(), "[WARNING] <%s> has no content", VC_TAG_ENGINE_ID);
}
+ } else if (0 == xmlStrcmp(cur->name, (const xmlChar *)VC_TAG_ENGINE_DEFAULT)) {
+ key = xmlNodeGetContent(cur);
+ if (NULL != key) {
+ /* SLOG(LOG_DEBUG, vc_config_tag(), "Engine uuid : %s", (char *)key); */
+ if (NULL != temp->default_lang) free(temp->default_lang);
+ temp->default_lang = strdup((char*)key);
+
+ is_default_lang_set = true;
+ xmlFree(key);
+ } else {
+ SLOG(LOG_WARN, vc_config_tag(), "[WARNING] <%s> has no content", VC_TAG_ENGINE_DEFAULT);
+ }
} else if (0 == xmlStrcmp(cur->name, (const xmlChar *)VC_TAG_ENGINE_LANGUAGE_SET)) {
xmlNodePtr lang_node = NULL;
char* temp_lang = NULL;
/* SLOG(LOG_DEBUG, vc_config_tag(), "language : %s", (char *)key); */
temp_lang = strdup((char*)key);
temp->languages = g_slist_append(temp->languages, temp_lang);
+
+ if (false == is_default_lang_set) {
+ if (NULL != temp->default_lang) free(temp->default_lang);
+ temp->default_lang = strdup((char*)key);
+
+ is_default_lang_set = true;
+ }
xmlFree(key);
} else {
SLOG(LOG_WARN, vc_config_tag(), "[WARNING] <%s> has no content", VC_TAG_ENGINE_LANGUAGE);