#define MA_METHOD_SET_PREPROCESSING_ALLOW_MODE "ma_method_set_preprocessing_allow_mode"
#define MA_METHOD_SEND_PREPROCESSING_RESULT "ma_method_send_preprocessing_result"
#define MA_METHOD_SET_WAKE_WORD_AUDIO_REQUIRE_FLAG "ma_method_set_wake_word_audio_require_flag"
+#define MA_METHOD_SET_ASSISTANT_LANGUAGE "ma_method_set_assistant_language"
#define MA_METHOD_ERROR "ma_method_error"
#define MA_UI_METHOD_INITIALIZE "ma_ui_method_initialize"
typedef int (*wakeup_manager_get_audio_source_type)(char** type);
#define MA_WAKEUP_MANAGER_FUNC_SET_WAKE_WORD_AUDIO_REQUIRE_FLAG "wakeup_manager_set_wake_word_audio_require_flag"
typedef int (*wakeup_manager_set_wake_word_audio_require_flag)(bool require);
+#define MA_WAKEUP_MANAGER_FUNC_SET_ASSISTANT_LANGUAGE "wakeup_manager_set_assistant_language"
+typedef int (*wakeup_manager_set_assistant_language)(const char* appid, const char* language);
#define MA_WAKEUP_MANAGER_FUNC_SET_WAKEUP_EVENT_CALLBACK "wakeup_manager_set_wakeup_event_callback"
typedef int (*wakeup_manager_set_wakeup_event_callback)(wakeup_service_wakeup_event_cb callback, void* user_data);
#define MA_WAKEUP_MANAGER_FUNC_SET_UTTERANCE_STREAMING_CALLBACK "wakeup_manager_set_utterance_streaming_callback"
wakeup_manager_get_audio_format get_audio_format;
wakeup_manager_get_audio_source_type get_audio_source_type;
wakeup_manager_set_wake_word_audio_require_flag set_wake_word_audio_require_flag;
+ wakeup_manager_set_assistant_language set_assistant_language;
wakeup_manager_set_wakeup_event_callback set_wakeup_event_callback;
wakeup_manager_set_utterance_streaming_callback set_utterance_streaming_callback;
wakeup_manager_set_previous_utterance_streaming_callback set_previous_utterance_streaming_callback;
void set_selected_wakeup_info(wakeup_event_info wakeup_info);
bool set_language(string language);
+ bool set_assistant_language(string appid, string language);
void set_assistant_activated(string appid, bool activated);
bool get_assistant_activated(string appid);
void set_wake_word_audio_require_flag(bool require);
bool add_assistant_language(string appid, string language);
bool add_assistant_wakeup_word(string appid, string wakeup_word, string language);
bool set_assistant_wakeup_engine(string appid, string engine);
+ bool set_assistant_language(string appid, string language);
bool set_assistant_enabled(string appid, bool enabled);
bool get_assistant_enabled(string appid);
EXPORT_API int wakeup_manager_set_wake_word_audio_require_flag(bool require);
+EXPORT_API int wakeup_manager_set_assistant_language(const char* appid, const char *language);
+
EXPORT_API int wakeup_manager_set_wakeup_event_callback(wakeup_service_wakeup_event_cb callback, void* user_data);
EXPORT_API int wakeup_manager_set_utterance_streaming_callback(wakeup_service_speech_streaming_cb callback, void* user_data);
return true;
}
+bool CWakeupEngineManager::set_assistant_language(string appid, string language)
+{
+ for (auto& info : mEngineInfo) {
+ const auto& iter = find_if(info.assistant_list.begin(), info.assistant_list.end(),
+ [appid](const string& assistant) {
+ return (0 == assistant.compare(appid));
+ });
+
+ /* If the appid is in the assistant list */
+ if (info.assistant_list.end() != iter) {
+ try {
+ int ret = info.interface.set_language(language.c_str());
+ MWR_LOGD("set_language returned %d : %s %s %s",
+ ret, appid.c_str(), info.engine_name.c_str(), language.c_str());
+ } catch (const std::exception& e) {
+ MWR_LOGE("[ERROR] wakeup engine %s threw exception : %s",
+ info.engine_name.c_str(), e.what());
+ }
+ }
+ }
+ return true;
+}
+
void CWakeupEngineManager::set_assistant_activated(string appid, bool activated)
{
MWR_LOGD("[ENTER] : %s %d", appid.c_str(), activated);
return true;
}
+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);
+
+ MWR_LOGD("[END]");
+ return true;
+}
+
bool CWakeupManager::set_assistant_enabled(string appid, bool enabled)
{
MWR_LOGD("[ENTER]");
return 0;
}
+int wakeup_manager_set_assistant_language(const char* appid, const char* language)
+{
+ MWR_LOGD("[ENTER]");
+
+ string appid_string;
+ string language_string;
+ if (NULL == appid || NULL == language) {
+ MWR_LOGE("[ERROR] Parameter is invalid, appid(%s), language(%s)", appid, language);
+ return -1;
+ }
+ appid_string = appid;
+ language_string = language;
+
+ if (nullptr == g_wakeup_manager) return -1;
+ g_wakeup_manager->set_assistant_language(appid_string, language_string);
+
+ MWR_LOGD("[END]");
+ return 0;
+}
+
int wakeup_manager_set_wakeup_event_callback(wakeup_service_wakeup_event_cb callback, void* user_data)
{
MWR_LOGD("[ENTER]");
} else if (dbus_message_is_method_call(msg, MA_SERVER_SERVICE_INTERFACE, MA_METHOD_SET_WAKE_WORD_AUDIO_REQUIRE_FLAG)) {
ma_service_dbus_set_wake_word_audio_require_flag(g_conn_listener, msg);
+ } else if (dbus_message_is_method_call(msg, MA_SERVER_SERVICE_INTERFACE, MA_METHOD_SET_ASSISTANT_LANGUAGE)) {
+ ma_service_dbus_set_assistant_language(g_conn_listener, msg);
+
} else if (dbus_message_is_method_call(msg, MA_SERVER_SERVICE_INTERFACE, MA_UI_METHOD_INITIALIZE)) {
ma_service_ui_dbus_initialize(g_conn_listener, msg);
return 0;
}
+int ma_service_dbus_set_assistant_language(DBusConnection* conn, DBusMessage* msg)
+{
+ DBusError err;
+ dbus_error_init(&err);
+
+ int pid;
+ int ret = 0;
+ char* language;
+
+ dbus_message_get_args(msg, &err,
+ DBUS_TYPE_INT32, &pid,
+ DBUS_TYPE_STRING, &language,
+ DBUS_TYPE_INVALID);
+
+ MAS_LOGD("[DEBUG] MAS SET ASSISTANT LANGUAGE");
+
+ if (dbus_error_is_set(&err)) {
+ MAS_LOGE("[IN ERROR] mas set assistant language : Get arguments error (%s)", err.message);
+ dbus_error_free(&err);
+ ret = -1; //MAS_ERROR_OPERATION_FAILED;
+ } else {
+ MAS_LOGD("[IN] mas set assistant language : pid(%d), language(%s)", pid, language);
+ ret = mas_client_set_assistant_language(pid, language);
+ }
+
+ MAS_LOGD("<<<<<");
+ MAS_LOGD(" ");
+
+ return 0;
+}
+
int ma_service_ui_dbus_initialize(DBusConnection* conn, DBusMessage* msg)
{
DBusError err;
return 0;
}
+int mas_client_set_assistant_language(int pid, const char* language)
+{
+ const char* pid_appid = NULL;
+ char buf[MAX_APPID_LEN] = {'\0',};
+ int ret = aul_app_get_appid_bypid(pid, buf, sizeof(buf));
+ if (AUL_R_OK == ret) {
+ buf[MAX_APPID_LEN - 1] = '\0';
+ pid_appid = buf;
+ }
+
+ multi_assistant_service_plugin_assistant_language(pid_appid, language);
+ return 0;
+}
+
int mas_ui_client_initialize(int pid)
{
MAS_LOGD("[Enter] pid(%d)", pid);
_wakeup_manager_interface.set_wake_word_audio_require_flag =
(wakeup_manager_set_wake_word_audio_require_flag)dlsym(g_handle,
MA_WAKEUP_MANAGER_FUNC_SET_WAKE_WORD_AUDIO_REQUIRE_FLAG);
+ _wakeup_manager_interface.set_assistant_language =
+ (wakeup_manager_set_assistant_language)dlsym(g_handle,
+ MA_WAKEUP_MANAGER_FUNC_SET_ASSISTANT_LANGUAGE);
_wakeup_manager_interface.set_wakeup_event_callback =
(wakeup_manager_set_wakeup_event_callback)dlsym(g_handle,
MA_WAKEUP_MANAGER_FUNC_SET_WAKEUP_EVENT_CALLBACK);
return ret;
}
+int multi_assistant_service_plugin_assistant_language(const char* appid, const char* language)
+{
+ int ret = -1;
+ if (NULL != g_handle) {
+ wakeup_manager_set_assistant_language func = _wakeup_manager_interface.set_assistant_language;
+ if (NULL == func) {
+ MAS_LOGE("[ERROR] symbol lookup failed : %s", MA_WAKEUP_MANAGER_FUNC_SET_ASSISTANT_LANGUAGE);
+ } else {
+ ret = func(appid, language);
+ if (0 != ret) {
+ MAS_LOGE("[ERROR] Fail to set assistant language, ret(%d)", ret);
+ }
+ }
+ } else {
+ MAS_LOGE("[ERROR] g_handle is not valid");
+ }
+ return ret;
+}
+
int multi_assistant_service_plugin_set_callbacks(void)
{
int ret = multi_assistant_service_plugin_set_wakeup_event_callback(__wakeup_event_cb, NULL);