From 4d000d33e1399981d72ea0b14321ee28a20ac5c9 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 13 Dec 2019 16:44:06 +0900 Subject: [PATCH 01/16] Rename inappropriate send_* functions to set_* Change-Id: Ia5d18f98ddbe51377e5681f9be15457d6b80f8c6 --- inc/multi_assistant_service_client.h | 2 +- inc/multi_assistant_service_plugin.h | 8 ++++---- plugins/wakeup-manager/inc/wakeup_manager.h | 4 ++-- plugins/wakeup-manager/inc/wakeup_manager_wrapper.h | 4 ++-- plugins/wakeup-manager/src/wakeup_manager.cpp | 4 ++-- plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp | 8 ++++---- src/multi_assistant_dbus_server.c | 2 +- src/multi_assistant_service.c | 4 ++-- src/multi_assistant_service_plugin.c | 12 ++++++------ 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/inc/multi_assistant_service_client.h b/inc/multi_assistant_service_client.h index 110d0d1..b6d7f42 100644 --- a/inc/multi_assistant_service_client.h +++ b/inc/multi_assistant_service_client.h @@ -49,7 +49,7 @@ int mas_client_stop_streaming_audio_data(int pid, int type); int mas_client_update_voice_feedback_state(int pid, int state); -int mas_client_send_assistant_specific_command(int pid, const char *command); +int mas_client_set_assistant_specific_command(int pid, const char *command); int mas_client_set_background_volume(int pid, double ratio); diff --git a/inc/multi_assistant_service_plugin.h b/inc/multi_assistant_service_plugin.h index 1f31ac0..4f431e6 100644 --- a/inc/multi_assistant_service_plugin.h +++ b/inc/multi_assistant_service_plugin.h @@ -57,7 +57,7 @@ int multi_assistant_service_plugin_deactivate(void); int multi_assistant_service_plugin_update_voice_feedback_state(const char* appid, int state); -int multi_assistant_service_plugin_send_assistant_specific_command(const char *appid, const char* command); +int multi_assistant_service_plugin_set_assistant_specific_command(const char *appid, const char* command); int multi_assistant_service_plugin_set_background_volume(const char *appid, double ratio); @@ -127,8 +127,8 @@ typedef int (*wakeup_manager_activate)(void); typedef int (*wakeup_manager_deactivate)(void); #define MA_WAKEUP_MANAGER_FUNC_UPDATE_VOICE_FEEDBACK_STATE "wakeup_manager_update_voice_feedback_state" typedef int (*wakeup_manager_update_voice_feedback_state)(const char* appid, int state); -#define MA_WAKEUP_MANAGER_FUNC_SEND_ASSISTANT_SPECIFIC_COMMAND "wakeup_manager_send_assistant_specific_command" -typedef int (*wakeup_manager_send_assistant_specific_command)(const char* appid, const char* command); +#define MA_WAKEUP_MANAGER_FUNC_SET_ASSISTANT_SPECIFIC_COMMAND "wakeup_manager_set_assistant_specific_command" +typedef int (*wakeup_manager_set_assistant_specific_command)(const char* appid, const char* command); #define MA_WAKEUP_MANAGER_FUNC_SET_BACKGROUND_VOLUME "wakeup_manager_set_background_volume" typedef int (*wakeup_manager_set_background_volume)(const char* appid, double ratio); #define MA_WAKEUP_MANAGER_FUNC_UPDATE_RECOGNITION_RESULT "wakeup_manager_update_recognition_result" @@ -189,7 +189,7 @@ typedef struct { wakeup_manager_activate activate; wakeup_manager_deactivate deactivate; wakeup_manager_update_voice_feedback_state update_voice_feedback_state; - wakeup_manager_send_assistant_specific_command send_assistant_specific_command; + wakeup_manager_set_assistant_specific_command set_assistant_specific_command; wakeup_manager_set_background_volume set_background_volume; wakeup_manager_update_recognition_result update_recognition_result; wakeup_manager_process_plugin_event process_plugin_event; diff --git a/plugins/wakeup-manager/inc/wakeup_manager.h b/plugins/wakeup-manager/inc/wakeup_manager.h index 25c5498..f734256 100644 --- a/plugins/wakeup-manager/inc/wakeup_manager.h +++ b/plugins/wakeup-manager/inc/wakeup_manager.h @@ -95,7 +95,7 @@ public: string get_default_assistant(); bool update_voice_feedback_state(string appid, bool state); - bool send_assistant_specific_command(string appid, string command); + bool set_assistant_specific_command(string appid, string command); bool set_background_volume(string appid, double ratio); bool update_recognition_result(string appid, int result); bool process_plugin_event(mas_plugin_event_e event, void* data, int len); @@ -129,7 +129,7 @@ public: wakeup_manager_state_e get_manager_state(); void feed_audio_data(mas_speech_streaming_event_e event, void* buffer, int len); - void send_dependency_module_command(string engine_name, string command); + void set_dependency_module_command(string engine_name, string command); private: class CEngineEventObserver : public IEngineEventObserver { diff --git a/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h b/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h index 1477360..7857664 100644 --- a/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h +++ b/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h @@ -87,7 +87,7 @@ EXPORT_API int wakeup_manager_deactivate(void); EXPORT_API int wakeup_manager_update_voice_feedback_state(const char *appid, int state); -EXPORT_API int wakeup_manager_send_assistant_specific_command(const char* appid, const char* command); +EXPORT_API int wakeup_manager_set_assistant_specific_command(const char* appid, const char* command); EXPORT_API int wakeup_manager_set_background_volume(const char *appid, double ratio); @@ -139,7 +139,7 @@ EXPORT_API int wakeup_manager_set_wakeup_service_state_changed_callback(wakeup_s int wakeup_manager_feed_audio_data(mas_speech_streaming_event_e event, void* buffer, int len); -int wakeup_manager_send_dependency_module_command(const char* engine_name, const char* command); +int wakeup_manager_set_dependency_module_command(const char* engine_name, const char* command); int wakeup_manager_wakeup_assistant(const mas_wakeup_event_info* wakeup_info); diff --git a/plugins/wakeup-manager/src/wakeup_manager.cpp b/plugins/wakeup-manager/src/wakeup_manager.cpp index 7372efb..528578b 100644 --- a/plugins/wakeup-manager/src/wakeup_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_manager.cpp @@ -409,7 +409,7 @@ bool CWakeupManager::update_voice_feedback_state(string appid, bool state) return true; } -bool CWakeupManager::send_assistant_specific_command(string appid, string command) +bool CWakeupManager::set_assistant_specific_command(string appid, string command) { MWR_LOGD("[ENTER]"); @@ -829,7 +829,7 @@ void CWakeupManager::feed_audio_data(mas_speech_streaming_event_e event, void* b mAudioManager.feed_audio_data(event, buffer, len); } -void CWakeupManager::send_dependency_module_command(string engine_name, string command) +void CWakeupManager::set_dependency_module_command(string engine_name, string command) { mWakeupEngineManager.engine_set_dependency_module_command(engine_name, command); } diff --git a/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp b/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp index 5dc12dc..5e0b31a 100644 --- a/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp +++ b/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp @@ -312,7 +312,7 @@ int wakeup_manager_update_voice_feedback_state(const char* appid, int state) return 0; } -int wakeup_manager_send_assistant_specific_command(const char* appid, const char* command) +int wakeup_manager_set_assistant_specific_command(const char* appid, const char* command) { MWR_LOGD("[ENTER]"); @@ -325,7 +325,7 @@ int wakeup_manager_send_assistant_specific_command(const char* appid, const char if (command) command_string = command; if (nullptr == g_wakeup_manager) return -1; - g_wakeup_manager->send_assistant_specific_command(appid_string, command_string); + g_wakeup_manager->set_assistant_specific_command(appid_string, command_string); MWR_LOGD("[END]"); return 0; @@ -674,10 +674,10 @@ int wakeup_manager_feed_audio_data(mas_speech_streaming_event_e event, void* buf return 0; } -int wakeup_manager_send_dependency_module_command(const char* engine_name, const char* command) +int wakeup_manager_set_dependency_module_command(const char* engine_name, const char* command) { if (nullptr == g_wakeup_manager) return -1; - g_wakeup_manager->send_dependency_module_command( + g_wakeup_manager->set_dependency_module_command( engine_name ? engine_name : "", command ? command : ""); return 0; diff --git a/src/multi_assistant_dbus_server.c b/src/multi_assistant_dbus_server.c index 7fcde20..c229817 100644 --- a/src/multi_assistant_dbus_server.c +++ b/src/multi_assistant_dbus_server.c @@ -522,7 +522,7 @@ int ma_service_dbus_send_assistant_specific_command(DBusConnection* conn, DBusMe ret = -1; //MAS_ERROR_OPERATION_FAILED; } else { MAS_LOGD("[IN] mas send assistant specific command : pid(%d), command(%s)", pid, command); - ret = mas_client_send_assistant_specific_command(pid, command); + ret = mas_client_set_assistant_specific_command(pid, command); } MAS_LOGD("<<<<<"); diff --git a/src/multi_assistant_service.c b/src/multi_assistant_service.c index 7faabf5..2e955bb 100644 --- a/src/multi_assistant_service.c +++ b/src/multi_assistant_service.c @@ -440,7 +440,7 @@ int mas_client_update_voice_feedback_state(int pid, int state) return 0; } -int mas_client_send_assistant_specific_command(int pid, const char *command) +int mas_client_set_assistant_specific_command(int pid, const char *command) { const char* pid_appid = NULL; char buf[MAX_APPID_LEN] = {'\0',}; @@ -448,7 +448,7 @@ int mas_client_send_assistant_specific_command(int pid, const char *command) buf[MAX_APPID_LEN - 1] = '\0'; pid_appid = buf; } - multi_assistant_service_plugin_send_assistant_specific_command(pid_appid, command); + multi_assistant_service_plugin_set_assistant_specific_command(pid_appid, command); return 0; } diff --git a/src/multi_assistant_service_plugin.c b/src/multi_assistant_service_plugin.c index d9a1e6e..6eed1f5 100644 --- a/src/multi_assistant_service_plugin.c +++ b/src/multi_assistant_service_plugin.c @@ -426,9 +426,9 @@ int multi_assistant_service_plugin_initialize(void) _wakeup_manager_interface.update_voice_feedback_state = (wakeup_manager_update_voice_feedback_state)dlsym(g_handle, MA_WAKEUP_MANAGER_FUNC_UPDATE_VOICE_FEEDBACK_STATE); - _wakeup_manager_interface.send_assistant_specific_command = - (wakeup_manager_send_assistant_specific_command)dlsym(g_handle, - MA_WAKEUP_MANAGER_FUNC_SEND_ASSISTANT_SPECIFIC_COMMAND); + _wakeup_manager_interface.set_assistant_specific_command = + (wakeup_manager_set_assistant_specific_command)dlsym(g_handle, + MA_WAKEUP_MANAGER_FUNC_SET_ASSISTANT_SPECIFIC_COMMAND); _wakeup_manager_interface.set_background_volume = (wakeup_manager_set_background_volume)dlsym(g_handle, MA_WAKEUP_MANAGER_FUNC_SET_BACKGROUND_VOLUME); @@ -756,13 +756,13 @@ int multi_assistant_service_plugin_update_voice_feedback_state(const char* appid return ret; } -int multi_assistant_service_plugin_send_assistant_specific_command(const char* appid, const char* command) +int multi_assistant_service_plugin_set_assistant_specific_command(const char* appid, const char* command) { int ret = -1; if (NULL != g_handle) { - wakeup_manager_send_assistant_specific_command func = _wakeup_manager_interface.send_assistant_specific_command; + wakeup_manager_set_assistant_specific_command func = _wakeup_manager_interface.set_assistant_specific_command; if (NULL == func) { - MAS_LOGE("[ERROR] symbol lookup failed : %s", MA_WAKEUP_MANAGER_FUNC_SEND_ASSISTANT_SPECIFIC_COMMAND); + MAS_LOGE("[ERROR] symbol lookup failed : %s", MA_WAKEUP_MANAGER_FUNC_SET_ASSISTANT_SPECIFIC_COMMAND); } else { ret = func(appid, command); if (0 != ret) { -- 2.7.4 From 3cdc69d8f343d4284b2781aaa44894ac034c448c Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 13 Dec 2019 16:45:18 +0900 Subject: [PATCH 02/16] Enable sending dependency module commands Change-Id: Ib1727f074d9d07d216a485a594d045d60f02b28e --- plugins/wakeup-manager/src/wakeup_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/wakeup-manager/src/wakeup_manager.cpp b/plugins/wakeup-manager/src/wakeup_manager.cpp index 528578b..095083a 100644 --- a/plugins/wakeup-manager/src/wakeup_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_manager.cpp @@ -116,7 +116,7 @@ bool CWakeupManager::initialize() mas_dependency_plugin_proxy_interface interface; interface.process_event = wakeup_manager_process_plugin_event; interface.feed_audio_data = wakeup_manager_feed_audio_data; - //interface.send_dependency_module_command = wakeup_manager_send_dependency_module_command; + interface.send_command = wakeup_manager_set_dependency_module_command; interface.wakeup_assistant = wakeup_manager_wakeup_assistant; dependency_resolver_initialize(interface); -- 2.7.4 From 6b360f012d264fc0505967fe0adfce16e148f1a9 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 13 Dec 2019 16:48:55 +0900 Subject: [PATCH 03/16] Bump version to 0.2.14 Change-Id: Ifc50009ee06fb4f6e9c676d6638596cf44945935 --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index 7ba4aa1..bc42b6b 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index 74f0601..60ef2ca 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.13 +Version: 0.2.14 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4 From 7e4fa6dfe156ce28c813dba281dbceb8e922c844 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 17 Dec 2019 16:21:04 +0900 Subject: [PATCH 04/16] Add missing FINISH event after streaming in AudioManager Change-Id: I044ad8e2c328ae3abd93e542be07675042825fc5 --- plugins/wakeup-manager/src/wakeup_audio_manager.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/wakeup-manager/src/wakeup_audio_manager.cpp b/plugins/wakeup-manager/src/wakeup_audio_manager.cpp index 201c8a6..b1541a6 100644 --- a/plugins/wakeup-manager/src/wakeup_audio_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_audio_manager.cpp @@ -208,6 +208,7 @@ void CAudioManager::streaming_audio_data_thread_func(long start_time) MWR_LOGD("[ENTER]"); unique_lock lock(mMutex, defer_lock); + bool finish_event_sent = false; lock.lock(); auto lead = mAudioData.begin(); @@ -286,11 +287,24 @@ void CAudioManager::streaming_audio_data_thread_func(long start_time) if (MAS_SPEECH_STREAMING_EVENT_FINISH == speech_data.event) { MWR_LOGI("[INFO] Finish to get and send speech data"); + finish_event_sent = true; break; } advance(lead, 1); } + + if (true != finish_event_sent) { + unsigned char final_buffer[2] = {'\0', }; + for (const auto& observer : mObservers) { + if (observer) { + if (!observer->on_streaming_audio_data( + MAS_SPEECH_STREAMING_EVENT_FINISH, final_buffer, sizeof(final_buffer))) { + LOGE("[Recorder WARNING] One of the observer returned false"); + } + } + } + } MWR_LOGD("[EXIT]"); } -- 2.7.4 From 8486162823f96ff0ab5f3bd1a889ebf0c9cb6d91 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 17 Dec 2019 16:21:22 +0900 Subject: [PATCH 05/16] Bump version to 0.2.15 Change-Id: If0e4ad366cb1a7ac04c4fc8f3c1ca331cf9940de --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index bc42b6b..798bd6c 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index 60ef2ca..319a9eb 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.14 +Version: 0.2.15 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4 From 1f6538bcd9c0916c0479a303058791d4018c3f6d Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 13 Dec 2019 20:25:34 +0900 Subject: [PATCH 06/16] Restore assistant language configurations when activating Change-Id: Ia1f00b588bcf5b07a87f8b5598e31fd16d841c08 --- packaging/org.tizen.multi-assistant-service.spec | 1 + plugins/wakeup-manager/CMakeLists.txt | 2 + .../wakeup-manager/inc/assistant_config_manager.h | 56 ++++++++++++++ plugins/wakeup-manager/inc/wakeup_manager.h | 2 + .../src/assistant_config_manager.cpp | 88 ++++++++++++++++++++++ plugins/wakeup-manager/src/wakeup_manager.cpp | 73 +++++++++++------- 6 files changed, 193 insertions(+), 29 deletions(-) create mode 100644 plugins/wakeup-manager/inc/assistant_config_manager.h create mode 100644 plugins/wakeup-manager/src/assistant_config_manager.cpp diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index 319a9eb..231db59 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -14,6 +14,7 @@ BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(capi-appfw-app-manager) BuildRequires: pkgconfig(capi-appfw-package-manager) BuildRequires: pkgconfig(capi-appfw-service-application) +BuildRequires: pkgconfig(capi-appfw-preference) BuildRequires: pkgconfig(capi-media-audio-io) BuildRequires: pkgconfig(capi-network-connection) BuildRequires: pkgconfig(dlog) diff --git a/plugins/wakeup-manager/CMakeLists.txt b/plugins/wakeup-manager/CMakeLists.txt index 55a8770..4e86c6c 100644 --- a/plugins/wakeup-manager/CMakeLists.txt +++ b/plugins/wakeup-manager/CMakeLists.txt @@ -16,6 +16,7 @@ SET(WMPKG_CHECK_MODULES ecore dlog capi-appfw-app-manager + capi-appfw-preference capi-network-connection capi-media-audio-io capi-media-sound-manager @@ -48,6 +49,7 @@ SET(SRCS src/wakeup_manager_wrapper.cpp src/dependency_resolver.cpp src/heap_tracer.cpp + src/assistant_config_manager.cpp ) FOREACH(flag ${wmpkgs_CFLAGS}) diff --git a/plugins/wakeup-manager/inc/assistant_config_manager.h b/plugins/wakeup-manager/inc/assistant_config_manager.h new file mode 100644 index 0000000..0dd7dda --- /dev/null +++ b/plugins/wakeup-manager/inc/assistant_config_manager.h @@ -0,0 +1,56 @@ +/* + * Copyright 2018-2019 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _ASSISTANT_CONFIG_MANAGER_H_ +#define _ASSISTANT_CONFIG_MANAGER_H_ + +#include +#include + +namespace multiassistant +{ +namespace wakeup +{ + +using namespace std; + +constexpr char LANGUAGE_PREFIX[] = "LANGUAGE_"; + +typedef void (*foreach_assistant_language_cb)(const char* appid, const char* language, void* user_data); + +class CAssistantConfigManager +{ +public: + CAssistantConfigManager(); + virtual ~CAssistantConfigManager(); + + CAssistantConfigManager(const CAssistantConfigManager&) = delete; + CAssistantConfigManager& operator=(const CAssistantConfigManager&) = delete; + + void initialize(); + void deinitialize(); + + int set_assistant_language(string assistant, string language); + int get_assistant_language(string assistant, string& language); + + void foreach_assistant_language(foreach_assistant_language_cb callback, void* user_data); +private: +}; + +} // wakeup +} // multiassistant + +#endif _ASSISTANT_CONFIG_MANAGER_H_ diff --git a/plugins/wakeup-manager/inc/wakeup_manager.h b/plugins/wakeup-manager/inc/wakeup_manager.h index f734256..b010453 100644 --- a/plugins/wakeup-manager/inc/wakeup_manager.h +++ b/plugins/wakeup-manager/inc/wakeup_manager.h @@ -23,6 +23,7 @@ #include "wakeup_engine_manager.h" #include "wakeup_audio_manager.h" #include "wakeup_policy_default.h" +#include "assistant_config_manager.h" #include #include @@ -204,6 +205,7 @@ private: CAudioManager mAudioManager; CWakeupEngineManager mWakeupEngineManager; CWakeupSettings mWakeupSettings; + CAssistantConfigManager mAssistantConfigManager; CAudioEventObserver mAudioEventObserver; CEngineEventObserver mEngineEventObserver; diff --git a/plugins/wakeup-manager/src/assistant_config_manager.cpp b/plugins/wakeup-manager/src/assistant_config_manager.cpp new file mode 100644 index 0000000..e15b411 --- /dev/null +++ b/plugins/wakeup-manager/src/assistant_config_manager.cpp @@ -0,0 +1,88 @@ +#include "assistant_config_manager.h" + +#include + +#include + +namespace multiassistant +{ +namespace wakeup +{ + +CAssistantConfigManager::CAssistantConfigManager() +{ +} + +CAssistantConfigManager::~CAssistantConfigManager() +{ +} + +void CAssistantConfigManager::initialize() +{ +} + +void CAssistantConfigManager::deinitialize() +{ +} + +int CAssistantConfigManager::set_assistant_language(string assistant, string language) +{ + string key = string{LANGUAGE_PREFIX} + assistant; + + preference_set_string(key.c_str(), language.c_str()); + + return 0; +} + +int CAssistantConfigManager::get_assistant_language(string assistant, string& language) +{ + string key = string{LANGUAGE_PREFIX} + assistant; + + bool existing = false; + preference_is_existing(key.c_str(), &existing); + if (!existing) return -1; + + char* value = nullptr; + preference_get_string(key.c_str(), &value); + if (nullptr == value) return -1; + + language = value; + free(value); + + return 0; +} + +void CAssistantConfigManager::foreach_assistant_language(foreach_assistant_language_cb callback, void* user_data) +{ + typedef struct { + foreach_assistant_language_cb callback; + void* user_data; + } foreach_assistant_language_cb_closure; + + foreach_assistant_language_cb_closure closure; + closure.callback = callback; + closure.user_data = user_data; + + preference_foreach_item( + [](const char *key, void *user_data) { + string prefix = string{LANGUAGE_PREFIX}; + foreach_assistant_language_cb_closure* closure = + static_cast(user_data); + if (key && strlen(key) > prefix.length() && + 0 == prefix.compare(0, prefix.length(), key, prefix.length())) { + char* value = nullptr; + preference_get_string(key, &value); + if (value) { + if (closure) { + closure->callback(key + prefix.length(), value, closure->user_data); + } + free(value); + } + } + return true; + }, static_cast(&closure) + ); +} + +} // wakeup +} // multiassistant diff --git a/plugins/wakeup-manager/src/wakeup_manager.cpp b/plugins/wakeup-manager/src/wakeup_manager.cpp index 095083a..c4e42cf 100644 --- a/plugins/wakeup-manager/src/wakeup_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_manager.cpp @@ -28,7 +28,11 @@ namespace wakeup static bool check_language_valid(string language) { - return true; + bool valid = true; + if (0 == language.length()) { + valid = false; + } + return valid; } static bool initialize_wakeup_event_info(mas_wakeup_event_info* wakeup_info) @@ -113,6 +117,8 @@ bool CWakeupManager::initialize() mWakeupEngineManager.subscribe(&mEngineEventObserver); mWakeupEngineManager.initialize(); + mAssistantConfigManager.initialize(); + mas_dependency_plugin_proxy_interface interface; interface.process_event = wakeup_manager_process_plugin_event; interface.feed_audio_data = wakeup_manager_feed_audio_data; @@ -133,6 +139,8 @@ bool CWakeupManager::deinitialize() dependency_resolver_deinitialize(); + mAssistantConfigManager.deinitialize(); + mWakeupEngineManager.unsubscribe(&mEngineEventObserver); mWakeupEngineManager.deinitialize(); @@ -261,6 +269,7 @@ bool CWakeupManager::set_assistant_language(string appid, string language) MWR_LOGD("[ENTER] : %s, %s", appid.c_str(), language.c_str()); mWakeupEngineManager.set_assistant_language(appid, language); + mAssistantConfigManager.set_assistant_language(appid, language); MWR_LOGD("[END]"); return true; @@ -318,45 +327,51 @@ bool CWakeupManager::get_assistant_enabled(string appid) bool CWakeupManager::set_language(string language) { - bool ret = false; + bool valid = false; MWR_LOGD("[ENTER] : %s", language.c_str()); if (check_language_valid(language)) { mCurrentLanguage = language; + valid = true; + } else { + MWR_LOGE("[ERROR] Invalid language (%s)", language.c_str()); + } - bool found = false; - for (auto& info : mAssistantLanguageInfo) { - found = false; - for(auto it = info.languageList.begin(); it != info.languageList.end(); it++) { - if(language == *it) { - found = true; - break; - } - } - if(false == found) { - mAssistantSupportsCurrentLanguage[info.appid] = false; - } else { - mAssistantSupportsCurrentLanguage[info.appid] = true; - } - - bool activated = found; - if (false == mAssistantEnabled[info.appid]) { - activated = false; - } - if (0 == info.appid.compare(mCurrentDefaultAssistant)) { - activated = true; + for (auto& info : mAssistantLanguageInfo) { + bool disable = false; + if (valid) { + bool supported = false; + if (info.languageList.end() != + find(info.languageList.begin(), info.languageList.end(), language)) { + supported = true; } - mWakeupEngineManager.set_assistant_activated(info.appid, activated); + mAssistantSupportsCurrentLanguage[info.appid] = supported; + /* Disable this assistant if language not supported */ + if (!supported) disable = true; + } else { + /* If current language is not valid, assume all languages support it */ + mAssistantSupportsCurrentLanguage[info.appid] = true; } - mWakeupEngineManager.set_language(language); - ret = true; - } else { - MWR_LOGE("[ERROR] Not supported language (%s)", language.c_str()); + if (false == mAssistantEnabled[info.appid]) { + disable = true; + } + if (0 == info.appid.compare(mCurrentDefaultAssistant)) { + /* Default Assistant should be activated no matter what */ + disable = false; + } + mWakeupEngineManager.set_assistant_activated(info.appid, !disable); + std::string assistant_language; + int ret = mAssistantConfigManager.get_assistant_language(info.appid, assistant_language); + if (0 != ret || !check_language_valid(assistant_language)) { + mWakeupEngineManager.set_assistant_language(info.appid, language); + } else { + mWakeupEngineManager.set_assistant_language(info.appid, assistant_language); + } } MWR_LOGD("[END]"); - return ret; + return valid; } bool CWakeupManager::get_voice_key_pressed() -- 2.7.4 From 5afd1db88433ef88f4e167f4adbd2c9d3375665b Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 20 Dec 2019 19:03:01 +0900 Subject: [PATCH 07/16] Make dbus message sending to be executed in main thread Change-Id: I04bdf186730cb31556f20ce7753888d7981b0d10 --- src/multi_assistant_dbus.c | 6 ++++- src/multi_assistant_service_plugin.c | 46 +++++++++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/multi_assistant_dbus.c b/src/multi_assistant_dbus.c index 664a111..eab7619 100644 --- a/src/multi_assistant_dbus.c +++ b/src/multi_assistant_dbus.c @@ -217,7 +217,11 @@ int masc_dbus_send_streaming_audio_data(int pid, int event, unsigned char* data, MAS_LOGE("[Dbus ERROR] Fail to Send"); return -1; // MAS_ERROR_OPERATION_FAILED; } else { - MAS_LOGD("[Dbus DEBUG] Success to Send utterance stream"); + static int last_event = -1; + if (event != last_event) { + MAS_LOGI("[Dbus DEBUG] Success to Send utterance stream : event (%d)", event); + } + last_event = event; dbus_connection_flush(g_conn_sender); } diff --git a/src/multi_assistant_service_plugin.c b/src/multi_assistant_service_plugin.c index 6eed1f5..bd9de18 100644 --- a/src/multi_assistant_service_plugin.c +++ b/src/multi_assistant_service_plugin.c @@ -272,15 +272,20 @@ static void handle_speech_streaming_event_failure(void *data) mas_client_send_recognition_result(0, MA_RECOGNITION_RESULT_EVENT_ERROR); } -static void __audio_streaming_cb(mas_speech_streaming_event_e event, unsigned char* buffer, int len, void *user_data) +static void handle_speech_streaming_event_success(void *data) { - if (event == MAS_SPEECH_STREAMING_EVENT_FAIL) { - ecore_main_loop_thread_safe_call_async(handle_speech_streaming_event_failure, NULL); + if (NULL == data) return; + + mas_speech_data* speech_data = data; + if (NULL == speech_data->buffer) { + free(speech_data); return; } + static int count = 0; - if (event != MAS_SPEECH_STREAMING_EVENT_CONTINUE || count % 100 == 0) { - MAS_LOGD( "[SUCCESS] __audio_streaming_cb is called, event(%d), buffer(%p), len(%d)", event, buffer, len); + if (speech_data->event != MAS_SPEECH_STREAMING_EVENT_CONTINUE || count % 100 == 0) { + MAS_LOGD( "[SUCCESS] __audio_streaming_cb is called, event(%d), buffer(%p), len(%d)", + speech_data->event, speech_data->buffer, speech_data->len); } ++count; @@ -289,13 +294,15 @@ static void __audio_streaming_cb(mas_speech_streaming_event_e event, unsigned ch if (pid == -1) { MAS_LOGE("[ERROR] Fail to retrieve pid of current MA client"); } else { - if (__validate_streaming_event_order(pid, &event)) { - int ret = masc_dbus_send_streaming_audio_data(pid, event, buffer, len); + if (__validate_streaming_event_order(pid, &(speech_data->event))) { + int ret = masc_dbus_send_streaming_audio_data(pid, + speech_data->event, speech_data->buffer, speech_data->len); if (0 != ret) { MAS_LOGE("[ERROR] Fail to send speech data, ret(%d)", ret); } if (pid != preprocessing_pid && -1 != preprocessing_pid) { - int ret = masc_dbus_send_streaming_audio_data(preprocessing_pid, event, buffer, len); + int ret = masc_dbus_send_streaming_audio_data(preprocessing_pid, + speech_data->event, speech_data->buffer, speech_data->len); if (0 != ret) { MAS_LOGE("[ERROR] Fail to send speech data to preprocessing client, ret(%d)", ret); } @@ -304,11 +311,10 @@ static void __audio_streaming_cb(mas_speech_streaming_event_e event, unsigned ch } #ifdef BUF_SAVE_MODE - /* write pcm buffer */ if (g_pFile) - fwrite(buffer, 1, len, g_pFile); + fwrite(speech_data->buffer, 1, speech_data->len, g_pFile); - if (MAS_SPEECH_STREAMING_EVENT_FINISH == event) { + if (MAS_SPEECH_STREAMING_EVENT_FINISH == speech_data->event) { if (g_pFile) { MAS_LOGE("[Recorder SUCCESS] File Close"); fclose(g_pFile); @@ -318,6 +324,24 @@ static void __audio_streaming_cb(mas_speech_streaming_event_e event, unsigned ch } } #endif + free(speech_data->buffer); + free(speech_data); +} + +static void __audio_streaming_cb(mas_speech_streaming_event_e event, unsigned char* buffer, int len, void *user_data) +{ + if (event == MAS_SPEECH_STREAMING_EVENT_FAIL) { + ecore_main_loop_thread_safe_call_async(handle_speech_streaming_event_failure, NULL); + } else { + mas_speech_data* data = malloc(sizeof(mas_speech_data)); + if (data) { + data->event = event; + data->buffer = malloc(len); + if (data->buffer) memcpy(data->buffer, buffer, len); + data->len = len; + ecore_main_loop_thread_safe_call_async(handle_speech_streaming_event_success, data); + } + } } static void __speech_status_cb(mas_speech_status_e status, void *user_data) -- 2.7.4 From f52c70256b054f4ea89c2fa99257d3eb956eaa02 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 20 Dec 2019 19:03:59 +0900 Subject: [PATCH 08/16] Bump version to 0.2.16 Change-Id: I5920abb2f85dc696b670a6362572b947d022ab8a --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index 798bd6c..0681181 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index 231db59..dae3bb2 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.15 +Version: 0.2.16 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4 From bad27bbe5a77a0bb83642e0f1564036fc98286b6 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 27 Dec 2019 22:52:10 +0900 Subject: [PATCH 09/16] Make sure to emit FINISH event even when streaming fails Change-Id: I1c52a569e2ec6e4981f1e9b716b91de42998f04b --- plugins/wakeup-manager/src/wakeup_audio_manager.cpp | 5 +++++ plugins/wakeup-manager/src/wakeup_engine_manager.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/plugins/wakeup-manager/src/wakeup_audio_manager.cpp b/plugins/wakeup-manager/src/wakeup_audio_manager.cpp index b1541a6..6a76a4f 100644 --- a/plugins/wakeup-manager/src/wakeup_audio_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_audio_manager.cpp @@ -251,6 +251,7 @@ void CAudioManager::streaming_audio_data_thread_func(long start_time) break; } if (g_speech_pcm_wait_count < cnt) { + unsigned char final_buffer[2] = {'\0', }; MWR_LOGE("[ERROR] Wrong request, there's no pcm data"); for (const auto& observer : mObservers) { if (observer) { @@ -258,6 +259,10 @@ void CAudioManager::streaming_audio_data_thread_func(long start_time) MAS_SPEECH_STREAMING_EVENT_FAIL, NULL, 0)) { LOGE("[Recorder WARNING] One of the observer returned false"); } + if (!observer->on_streaming_audio_data( + MAS_SPEECH_STREAMING_EVENT_FINISH, final_buffer, sizeof(final_buffer))) { + LOGE("[Recorder WARNING] One of the observer returned false"); + } } } MWR_LOGD("[EXIT]"); diff --git a/plugins/wakeup-manager/src/wakeup_engine_manager.cpp b/plugins/wakeup-manager/src/wakeup_engine_manager.cpp index 596b697..f374d58 100644 --- a/plugins/wakeup-manager/src/wakeup_engine_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_engine_manager.cpp @@ -329,6 +329,7 @@ void CWakeupEngineManager::streaming_speech_data_thread_func() break; } if (g_speech_pcm_wait_count < cnt) { + unsigned char final_buffer[2] = {'\0', }; MWR_LOGE("[ERROR] Wrong request, there's no pcm data"); for (const auto& observer : mObservers) { if (observer) { @@ -336,6 +337,10 @@ void CWakeupEngineManager::streaming_speech_data_thread_func() MAS_SPEECH_STREAMING_EVENT_FAIL, NULL, 0)) { LOGE("[Recorder WARNING] One of the observer returned false"); } + if (!observer->on_streaming_audio_data( + MAS_SPEECH_STREAMING_EVENT_FINISH, final_buffer, sizeof(final_buffer))) { + LOGE("[Recorder WARNING] One of the observer returned false"); + } } } return; -- 2.7.4 From f076bc13e8a705bcaa4c4952172d4813541185e0 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 27 Dec 2019 22:52:48 +0900 Subject: [PATCH 10/16] Bump version to 0.2.17 Change-Id: I0de37fa3eceb45fecb626b1e65225416160b204c --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index 0681181..5f7e6b9 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index dae3bb2..cb7e250 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.16 +Version: 0.2.17 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4 From 9cdfde61edb7b186a5eff6998e4f1734a31d97e5 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 3 Jan 2020 13:55:19 +0900 Subject: [PATCH 11/16] Return observers as a const reference instead of a value Change-Id: I3f8aad8fa2502959a4bcf94703d547ae32eec608 --- plugins/wakeup-manager/inc/wakeup_settings.h | 2 +- plugins/wakeup-manager/src/wakeup_settings.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/wakeup-manager/inc/wakeup_settings.h b/plugins/wakeup-manager/inc/wakeup_settings.h index 6804209..7155c33 100644 --- a/plugins/wakeup-manager/inc/wakeup_settings.h +++ b/plugins/wakeup-manager/inc/wakeup_settings.h @@ -63,7 +63,7 @@ public: void subscribe(ISettingsEventObserver *observer); void unsubscribe(ISettingsEventObserver *observer); - vector get_observers(); + const vector& get_observers(); string get_default_assistant_appid(); bool get_ui_panel_enabled(); diff --git a/plugins/wakeup-manager/src/wakeup_settings.cpp b/plugins/wakeup-manager/src/wakeup_settings.cpp index 96a006f..7324838 100644 --- a/plugins/wakeup-manager/src/wakeup_settings.cpp +++ b/plugins/wakeup-manager/src/wakeup_settings.cpp @@ -34,7 +34,7 @@ static void wakeup_setting_input_language_changed_cb(keynode_t* node, void* data if (VCONF_TYPE_STRING == node->type) { const char* value = static_cast(node->value.s); - vector observers = settings->get_observers(); + const auto& observers = settings->get_observers(); for (const auto& observer : observers) { if (observer) { if (!observer->on_voice_input_language_changed(value)) { @@ -82,7 +82,7 @@ static void wakeup_setting_enabled_assistants_changed_cb(keynode_t* node, void* } } - vector observers = settings->get_observers(); + const auto& observers = settings->get_observers(); for (const auto& observer : observers) { if (observer) { for (const auto& assistant : newlyAddedAssistants) { @@ -112,7 +112,7 @@ static void wakeup_setting_default_assistant_appid_changed_cb(keynode_t* node, v if (VCONF_TYPE_STRING == node->type) { const char* value = static_cast(node->value.s); - vector observers = settings->get_observers(); + const auto& observers = settings->get_observers(); for (const auto& observer : observers) { if (observer) { if (!observer->on_default_assistant_appid_changed(value)) { @@ -251,7 +251,7 @@ void CWakeupSettings::unsubscribe(ISettingsEventObserver *observer) } } -vector CWakeupSettings::get_observers() +const vector& CWakeupSettings::get_observers() { return mObservers; } -- 2.7.4 From e5247e6f013256d6dcae95f8c528e5a36dcc9ef8 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 3 Jan 2020 13:56:18 +0900 Subject: [PATCH 12/16] Bump version to 0.2.18 Change-Id: I6b2601289fcde7ee565ce77268786666f256c545 --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index 5f7e6b9..29f8e6b 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index cb7e250..72e171c 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.17 +Version: 0.2.18 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4 From ee25e99146221ab0bf7ef738065f1953f921cd19 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 3 Jan 2020 15:48:00 +0900 Subject: [PATCH 13/16] Prevent already-running assistant from being prelaunched Change-Id: Ib891fd476a68d5b7ea2bb07f9d6d78a76022a688 --- src/multi_assistant_service.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/multi_assistant_service.c b/src/multi_assistant_service.c index 2e955bb..5043b09 100644 --- a/src/multi_assistant_service.c +++ b/src/multi_assistant_service.c @@ -1043,6 +1043,13 @@ int mas_launch_client_by_appid(const char *appid, CLIENT_LAUNCH_MODE launch_mode return -1; } + if (CLIENT_LAUNCH_MODE_PRELAUNCH == launch_mode) { + if (1 == aul_app_is_running(appid)) { + MAS_LOGE("appid %s is already running, no need for a prelaunch", appid); + return -1; + } + } + bundle *b = NULL; b = bundle_create(); if (NULL == b) { -- 2.7.4 From 0268faeff6546bf32877e686509e41c516d8d43f Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 3 Jan 2020 15:48:29 +0900 Subject: [PATCH 14/16] Bump version to 0.2.19 Change-Id: Iec9a4ecd932caf016b6f908a4e536ccfd5bbd200 --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index 29f8e6b..63492cc 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index 72e171c..cb4c6b7 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.18 +Version: 0.2.19 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4 From dfd0dee91e54a0c80e288035552af727f9e89ac5 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 3 Jan 2020 19:00:50 +0900 Subject: [PATCH 15/16] Set background option to FALSE if not in PRELAUNCH mode Change-Id: Ibe2a5fbaeefde1a24d67ea3a17c44f59706d0971 --- src/multi_assistant_service.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/multi_assistant_service.c b/src/multi_assistant_service.c index 5043b09..d07cf18 100644 --- a/src/multi_assistant_service.c +++ b/src/multi_assistant_service.c @@ -1057,7 +1057,8 @@ int mas_launch_client_by_appid(const char *appid, CLIENT_LAUNCH_MODE launch_mode return -1; } - int result = aul_svc_set_background_launch(b, TRUE); + int result = aul_svc_set_background_launch(b, + (CLIENT_LAUNCH_MODE_PRELAUNCH == launch_mode ? TRUE : FALSE)); if (result < AUL_R_OK) { MAS_LOGE("ERROR : aul_svc_set_background_launch failed. app_id [%s] bundle[%p] result[%d : %s]", appid, b, result, get_error_message(result)); -- 2.7.4 From 80ad51539202b3493ace3250aa1740fbc379398d Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 3 Jan 2020 19:02:23 +0900 Subject: [PATCH 16/16] Bump version to 0.2.20 Change-Id: I1b4f5d2c6876c7fa6a09bb3356bb2a71b7575ff7 --- org.tizen.multi-assistant-service.xml | 2 +- packaging/org.tizen.multi-assistant-service.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.multi-assistant-service.xml b/org.tizen.multi-assistant-service.xml index 63492cc..8642e5a 100644 --- a/org.tizen.multi-assistant-service.xml +++ b/org.tizen.multi-assistant-service.xml @@ -1,5 +1,5 @@ - + Won Nam Jang Sooyeon Kim diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index cb4c6b7..32ad561 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -1,6 +1,6 @@ Name: org.tizen.multi-assistant-service Summary: Multi assistant service -Version: 0.2.19 +Version: 0.2.20 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Flora-1.1 -- 2.7.4