Multiple wakeup engines 82/262082/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Fri, 30 Apr 2021 08:18:19 +0000 (17:18 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Thu, 17 Jun 2021 04:05:15 +0000 (13:05 +0900)
Change-Id: If2abf021fbf6a50397f1640bbb505da3531f33e5

assistant-parser/src/ma_assistant_parser.c
common/ma_defs.h

index 0c1e94da1fc7018d38115b1d0cbb41867e734de7..f2bc430b5fb1d26a3b86d116c7c21b17a77e66a8 100644 (file)
@@ -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) {
index 2dc2a9560722006a70da3cc995207fd711cedcd9..049d98baafa42d0d2277ae06a7857305293850c3 100644 (file)
@@ -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"