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);
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"
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;
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)
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? */
{
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;
+ }
}
}
{
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);
+ }
}
}
_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);
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");
}
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;