From ba3c7454d1ec50609c76ad0ba7a4b155022995ad Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 30 Apr 2021 17:18:19 +0900 Subject: [PATCH] Multiple wakeup engines Change-Id: If2abf021fbf6a50397f1640bbb505da3531f33e5 --- assistant-parser/src/ma_assistant_parser.c | 40 +++++++++++++++++++--- common/ma_defs.h | 1 + 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/assistant-parser/src/ma_assistant_parser.c b/assistant-parser/src/ma_assistant_parser.c index 0c1e94d..f2bc430 100644 --- a/assistant-parser/src/ma_assistant_parser.c +++ b/assistant-parser/src/ma_assistant_parser.c @@ -388,6 +388,40 @@ static void __insert_wakeup_word_from_metadata(xmlNodePtr root, const char *wake FREE(tmp_free) } +static void __insert_wakeup_engine_from_metadata(xmlNodePtr root, const char *wakeup_engine) +{ + LOGD("==== Insert wakeup engines"); + + if (NULL == root || NULL == wakeup_engine) { + LOGE("Invalid parameter, root(%p), wakeup_engine(%s)", root, wakeup_engine); + return; + } + + char *tmp_wakeup_engine, *tmp_free; + tmp_free = tmp_wakeup_engine = strdup(wakeup_engine); + xmlNodePtr wakeup_engines_node = NULL; + xmlNodePtr wakeup_engine_node = NULL; + + char* engine = NULL; + wakeup_engines_node = xmlNewNode(NULL, (const xmlChar*)MA_TAG_ASSISTANT_WAKEUP_ENGINE_SET); + if (wakeup_engines_node) { + engine = strsep(&tmp_wakeup_engine, ","); + while (NULL != engine) { + LOGD("engine (%s)", engine); + wakeup_engine_node = xmlNewNode(NULL, (const xmlChar*)MA_TAG_ASSISTANT_WAKEUP_ENGINE_APPID); + if (wakeup_engine_node) { + xmlNodeSetContent(wakeup_engine_node, (const xmlChar*)engine); + xmlAddChild(wakeup_engines_node, wakeup_engine_node); + } + engine = strsep(&tmp_wakeup_engine, ","); + } + xmlAddChild(root, wakeup_engines_node); + } + + FREE(tmp_free) +} + + static int __write_metadata_inxml(const char *pkgid, const char *appid, GList *list) { GList *iter = NULL; @@ -428,11 +462,7 @@ static int __write_metadata_inxml(const char *pkgid, const char *appid, GList *l xmlAddChild(root, cur); } } else if (!strncmp(md->key, MA_METADATA_ASSISTANT_WAKEUP_ENGINE_APPID, strlen(MA_METADATA_ASSISTANT_WAKEUP_ENGINE_APPID))) { - cur = xmlNewNode(NULL, (const xmlChar*)MA_TAG_ASSISTANT_WAKEUP_ENGINE_APPID); - if (cur) { - xmlNodeSetContent(cur, (const xmlChar*)md->value); - xmlAddChild(root, cur); - } + __insert_wakeup_engine_from_metadata(root, md->value); } else if (!strncmp(md->key, MA_METADATA_ASSISTANT_CUSTOM_UI, strlen(MA_METADATA_ASSISTANT_CUSTOM_UI))) { cur = xmlNewNode(NULL, (const xmlChar*)MA_TAG_ASSISTANT_CUSTOM_UI); if (cur) { diff --git a/common/ma_defs.h b/common/ma_defs.h index 2dc2a95..049d98b 100644 --- a/common/ma_defs.h +++ b/common/ma_defs.h @@ -121,6 +121,7 @@ extern "C" #define MA_TAG_ASSISTANT_LANGUAGE "language" #define MA_TAG_ASSISTANT_WAKEUP_WORD_SET "wakeup-words" #define MA_TAG_ASSISTANT_WAKEUP_WORD "wakeup-word" +#define MA_TAG_ASSISTANT_WAKEUP_ENGINE_SET "wakeup-engines" #define MA_TAG_ASSISTANT_WAKEUP_ENGINE_APPID "wakeup-engine-appid" #define MA_TAG_ASSISTANT_CUSTOM_UI "custom-ui" #define MA_TAG_ASSISTANT_VOICE_KEY_SUPPORT_MODE "voice-key-support-mode" -- 2.34.1