From: Ji-hoon Lee Date: Thu, 27 Jun 2019 05:42:59 +0000 (+0900) Subject: Send masc_ui_dbus messages only when ui_panel_enabled is true X-Git-Tag: submit/tizen/20190806.020345~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F55%2F208655%2F1;p=platform%2Fcore%2Fuifw%2Fwakeup-engine-default.git Send masc_ui_dbus messages only when ui_panel_enabled is true Change-Id: I1e6a3fb59aaac6e9d16d5ce6fada612c14b229de --- diff --git a/inc/multi_assistant_service_plugin.h b/inc/multi_assistant_service_plugin.h index 83c3660..325b988 100644 --- a/inc/multi_assistant_service_plugin.h +++ b/inc/multi_assistant_service_plugin.h @@ -32,10 +32,17 @@ typedef enum { MA_PLUGIN_EVENT_VOICE_KEY_RELEASED, } ma_plugin_event_e; +typedef struct { + int plugin_version; + bool ui_panel_enabled; +} ma_plugin_settings; + int multi_assistant_service_plugin_initialize(void); int multi_assistant_service_plugin_deinitialize(void); +int multi_assistant_service_plugin_get_settings(ma_plugin_settings **settings, size_t *struct_size); + int multi_assistant_service_plugin_set_language(const char* language); int multi_assistant_service_plugin_add_assistant_wakeup_word(const char* appid, const char* wakeup_word, const char* language); @@ -97,6 +104,8 @@ int multi_assistant_service_plugin_set_error_callback(wakeup_service_error_cb ca typedef int (*wakeup_manager_initialize)(void); #define MA_WAKEUP_MANAGER_FUNC_DEINITIALIZE "wakeup_manager_deinitialize" typedef int (*wakeup_manager_deinitialize)(void); +#define MA_WAKEUP_MANAGER_FUNC_GET_SETTINGS "wakeup_manager_get_settings" +typedef int (*wakeup_manager_get_settings)(ma_plugin_settings **settings, size_t *struct_size); #define MA_WAKEUP_MANAGER_FUNC_ADD_ASSISTANT_WAKEUP_WORD "wakeup_manager_add_assistant_wakeup_word" typedef int (*wakeup_manager_add_assistant_wakeup_word)(const char* appid, const char* wakeup_word, const char* language); #define MA_WAKEUP_MANAGER_FUNC_ADD_ASSISTANT_LANGUAGE "wakeup_manager_add_assistant_language" @@ -151,6 +160,7 @@ typedef int (*wakeup_manager_set_error_callback)(wakeup_service_error_cb callbac typedef struct { wakeup_manager_initialize initialize; wakeup_manager_deinitialize deinitialize; + wakeup_manager_get_settings get_settings; wakeup_manager_add_assistant_wakeup_word add_assistant_wakeup_word; wakeup_manager_add_assistant_language add_assistant_language; wakeup_manager_set_assistant_wakeup_engine set_assistant_wakeup_engine; diff --git a/plugins/wakeup-manager/inc/wakeup_manager.h b/plugins/wakeup-manager/inc/wakeup_manager.h index 532ad5c..2a7d80e 100644 --- a/plugins/wakeup-manager/inc/wakeup_manager.h +++ b/plugins/wakeup-manager/inc/wakeup_manager.h @@ -93,6 +93,7 @@ public: CWakeupPolicy* get_wakeup_policy(); CWakeupEngineManager* get_engine_manager(); CAudioManager* get_audio_manager(); + CWakeupSettings* get_wakeup_settings(); vector get_observers(); void set_last_wakeup_event_info(wakeup_event_info info); diff --git a/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h b/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h index ddb030c..6984f06 100644 --- a/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h +++ b/plugins/wakeup-manager/inc/wakeup_manager_wrapper.h @@ -89,10 +89,17 @@ typedef enum { MA_SYSTEM_VOLUME_EVENT_RECOVER } ma_system_volume_event_e; +typedef struct { + int plugin_version; + bool ui_panel_enabled; +} ma_plugin_settings; + EXPORT_API int wakeup_manager_initialize(void); EXPORT_API int wakeup_manager_deinitialize(void); +EXPORT_API int wakeup_manager_get_settings(ma_plugin_settings **settings, size_t *struct_size); + EXPORT_API int wakeup_manager_add_assistant_wakeup_word(const char* appid, const char* wakeup_word, const char* language); EXPORT_API int wakeup_manager_add_assistant_language(const char* appid, const char* language); diff --git a/plugins/wakeup-manager/src/wakeup_manager.cpp b/plugins/wakeup-manager/src/wakeup_manager.cpp index 2986aa9..76f9562 100644 --- a/plugins/wakeup-manager/src/wakeup_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_manager.cpp @@ -662,6 +662,11 @@ CAudioManager* CWakeupManager::get_audio_manager() return &mAudioManager; } +CWakeupSettings* CWakeupManager::get_wakeup_settings() +{ + return &mWakeupSettings; +} + bool CWakeupManager::CEngineEventObserver::on_wakeup_event(string engine_name, wakeup_event_info info) { MWR_LOGD("[ENTER]"); diff --git a/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp b/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp index e15e73b..594494b 100644 --- a/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp +++ b/plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp @@ -82,6 +82,25 @@ int wakeup_manager_deinitialize(void) return 0; } +int wakeup_manager_get_settings(ma_plugin_settings **settings, size_t *struct_size) +{ + if (NULL == settings || NULL == struct_size) { + MWR_LOGD("[ERROR] Parameter is invalid, settings(%p), struct_size(%p)", settings, struct_size); + return -1; + } + CWakeupSettings* wakeup_settings = g_wakeup_manager.get_wakeup_settings(); + if (wakeup_settings) { + const int PLUGIN_VERSION = 1; + static ma_plugin_settings current_settings; + current_settings.plugin_version = PLUGIN_VERSION; + current_settings.ui_panel_enabled = wakeup_settings->get_ui_panel_enabled(); + *struct_size = sizeof(current_settings); + *settings = ¤t_settings; + } + + return 0; +} + int wakeup_manager_add_assistant_wakeup_word(const char* appid, const char* wakeup_word, const char* language) { MWR_LOGD("[ENTER]"); diff --git a/src/multi_assistant_service_plugin.c b/src/multi_assistant_service_plugin.c index 00a3606..9308345 100644 --- a/src/multi_assistant_service_plugin.c +++ b/src/multi_assistant_service_plugin.c @@ -50,6 +50,18 @@ static int g_count = 1; static void *g_handle = NULL; static wakeup_manager_interface _wakeup_manager_interface = { NULL, }; +static ma_plugin_settings* g_plugin_settings = NULL; + +static bool is_ui_panel_enabled() +{ + /* By default we assume the ui panel is always enabled unless explicitly turned off */ + bool ret = true; + if (g_plugin_settings) { + ret = g_plugin_settings->ui_panel_enabled; + } + MAS_LOGD("UI Panel Enabled : %d", ret); + return ret; +} #if 0 /* + TEST_CODE */ Eina_Bool __send_asr_result(void *data) @@ -90,10 +102,11 @@ Eina_Bool __launch_assistant_by_wakeup_appid_timer(char* appid) if (!appid) return ECORE_CALLBACK_CANCEL; bool use_custom_ui = mas_get_client_custom_ui_option_by_appid(appid); - masc_ui_dbus_enable_common_ui(!use_custom_ui); + bool ui_panel_enabled = is_ui_panel_enabled(); + if (ui_panel_enabled) masc_ui_dbus_enable_common_ui(!use_custom_ui); mas_set_current_client_by_appid(appid); - masc_ui_dbus_change_assistant(appid); + if (ui_panel_enabled) masc_ui_dbus_change_assistant(appid); if ((pid = mas_get_client_pid_by_appid(appid)) != -1) { masc_dbus_active_state_change(pid, MA_ACTIVE_STATE_ACTIVE); /* Bring MA client to foreground - is there a better way instead of launching? */ @@ -129,13 +142,16 @@ static void __wakeup_event_cb(wakeup_event_info event, void* user_data) { MAS_LOGD("[SUCCESS] __wakeup_event_cb is called, wakeup_word(%s)", event.wakeup_word); int ret = -1; - int retry_cnt = 0; - while (0 != ret) { - ret = masc_ui_dbus_send_hello(); - retry_cnt++; - if (5 < retry_cnt) { - MAS_LOGE("[ERROR] Fail to receive reply for hello, ret(%d)", ret); - break; + + if (is_ui_panel_enabled()) { + int retry_cnt = 0; + while (0 != ret) { + ret = masc_ui_dbus_send_hello(); + retry_cnt++; + if (5 < retry_cnt) { + MAS_LOGE("[ERROR] Fail to receive reply for hello, ret(%d)", ret); + break; + } } } @@ -302,9 +318,11 @@ static void __error_cb(int error, const char* err_msg, void* user_data) { MAS_LOGD( "[SUCCESS] __error_cb is called, error(%d), err_msg(%s)", error, err_msg); - int ret = masc_ui_dbus_send_error_message(error, err_msg); - if (0 != ret) { - MAS_LOGE("[ERROR] Fail to send error message, ret(%d)", ret); + if (is_ui_panel_enabled()) { + int ret = masc_ui_dbus_send_error_message(error, err_msg); + if (0 != ret) { + MAS_LOGE("[ERROR] Fail to send error message, ret(%d)", ret); + } } } @@ -330,6 +348,9 @@ int multi_assistant_service_plugin_initialize(void) _wakeup_manager_interface.deinitialize = (wakeup_manager_deinitialize)dlsym(g_handle, MA_WAKEUP_MANAGER_FUNC_DEINITIALIZE); + _wakeup_manager_interface.get_settings = + (wakeup_manager_get_settings)dlsym(g_handle, + MA_WAKEUP_MANAGER_FUNC_GET_SETTINGS); _wakeup_manager_interface.add_assistant_wakeup_word = (wakeup_manager_add_assistant_wakeup_word)dlsym(g_handle, MA_WAKEUP_MANAGER_FUNC_ADD_ASSISTANT_WAKEUP_WORD); @@ -418,6 +439,19 @@ int multi_assistant_service_plugin_initialize(void) MAS_LOGE("[ERROR] Fail to initialize, ret(%d)", ret); } } + + wakeup_manager_get_settings get_settings_func = _wakeup_manager_interface.get_settings; + + if (NULL == get_settings_func) { + MAS_LOGE("[ERROR] symbol lookup failed : %s", MA_WAKEUP_MANAGER_FUNC_GET_SETTINGS); + } else { + size_t struct_size; + ret = get_settings_func(&g_plugin_settings, &struct_size); + if (0 != ret || struct_size != sizeof(ma_plugin_settings)) { + MAS_LOGE("[ERROR] Fail to get settings, ret(%d), size %zu", ret, struct_size); + g_plugin_settings = NULL; + } + } } else { MAS_LOGE("[ERROR] g_handle is not valid"); } @@ -455,6 +489,25 @@ int multi_assistant_service_plugin_deinitialize(void) return ret; } +int multi_assistant_service_plugin_get_settings(ma_plugin_settings **settings, size_t *struct_size) +{ + int ret = -1; + if (NULL != g_handle) { + wakeup_manager_get_settings func = _wakeup_manager_interface.get_settings; + if (NULL == func) { + MAS_LOGE("[ERROR] symbol lookup failed : %s", MA_WAKEUP_MANAGER_FUNC_GET_SETTINGS); + } else { + ret = func(settings, struct_size); + if (0 != ret) { + MAS_LOGE("[ERROR] Fail to get settings, ret(%d)", ret); + } + } + } else { + MAS_LOGE("[ERROR] g_handle is not valid"); + } + return ret; +} + int multi_assistant_service_plugin_set_language(const char* language) { int ret = -1;