From: sungrae jo Date: Wed, 17 Oct 2018 07:48:50 +0000 (+0900) Subject: Fixed function call to dlopen X-Git-Tag: submit/tizen/20181204.065424~5^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aac066aba9b07f00a5d8d6f1e8bd727ecf6b7492;p=platform%2Fcore%2Fuifw%2Fwakeup-engine-default.git Fixed function call to dlopen Change-Id: I053f9554d066a579f27b60a9d06cd90d70a8df6a Signed-off-by: sungrae jo --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c75002..fb7bbc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,8 +83,8 @@ EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") # Install libraries IF("${ARCH}" MATCHES "^arm.*") -TARGET_LINK_LIBRARIES(${BINNAME} -Llib/armv7l -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libmulti-wakeup-recognizer.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) +TARGET_LINK_LIBRARIES(${BINNAME} -Llib/armv7l -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer -ldl ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libmulti-wakeup-recognizer.so DESTINATION ${TZ_SYS_RO_SHARE}/multiassistant/ma/1.0/engine/ COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libopus.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libboost_iostreams.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libn66asrdll.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) @@ -92,8 +92,8 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libspeex.so DESTINATION ${PREFIX}/l INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libvoiceactivity.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/armv7l/libvoice-transport.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) ELSEIF("${ARCH}" MATCHES "^i586.*") -TARGET_LINK_LIBRARIES(${BINNAME} -Llib/i586 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libmulti-wakeup-recognizer.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) +TARGET_LINK_LIBRARIES(${BINNAME} -Llib/i586 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer -ldl ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libmulti-wakeup-recognizer.so DESTINATION ${TZ_SYS_RO_SHARE}/multiassistant/ma/1.0/engine/ COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libopus.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libboost_iostreams.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libn66asrdll.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) @@ -101,8 +101,8 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libspeex.so DESTINATION ${PREFIX}/lib INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libvoiceactivity.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libvoice-transport.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) ELSEIF("${ARCH}" MATCHES "^i686.*") -TARGET_LINK_LIBRARIES(${BINNAME} -Llib/i586 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libmulti-wakeup-recognizer.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) +TARGET_LINK_LIBRARIES(${BINNAME} -Llib/i586 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer -ldl ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libmulti-wakeup-recognizer.so DESTINATION ${TZ_SYS_RO_SHARE}/multiassistant/ma/1.0/engine/ COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libopus.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libboost_iostreams.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libn66asrdll.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) @@ -110,8 +110,8 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libspeex.so DESTINATION ${PREFIX}/lib INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libvoiceactivity.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/i586/libvoice-transport.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) ELSEIF("${ARCH}" MATCHES "^aarch64.*") -TARGET_LINK_LIBRARIES(${BINNAME} -Llib/aarch64 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libmulti-wakeup-recognizer.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) +TARGET_LINK_LIBRARIES(${BINNAME} -Llib/aarch64 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer -ldl ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libmulti-wakeup-recognizer.so DESTINATION ${TZ_SYS_RO_SHARE}/multiassistant/ma/1.0/engine/ COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libopus.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libboost_iostreams.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libn66asrdll.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) @@ -120,7 +120,7 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libvoiceactivity.so DESTINATION ${ INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/aarch64/libvoice-transport.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) ELSEIF("${ARCH}" MATCHES "^x86_64.*") TARGET_LINK_LIBRARIES(${BINNAME} -Llib/x86_64 -lopus -lboost_iostreams -ln66asrdll -lspeex -lvoiceactivity -lvoice-transport -lmulti-wakeup-recognizer ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/x86_64/libmulti-wakeup-recognizer.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/x86_64/libmulti-wakeup-recognizer.so DESTINATION ${TZ_SYS_RO_SHARE}/multiassistant/ma/1.0/engine/ COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/x86_64/libopus.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/x86_64/libboost_iostreams.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_SOURCE_DIR}/lib/x86_64/libn66asrdll.so DESTINATION ${PREFIX}/lib COMPONENT RuntimeLibraries) diff --git a/inc/multi_assistant_main.h b/inc/multi_assistant_main.h index 7ba7fcb..7d3237b 100644 --- a/inc/multi_assistant_main.h +++ b/inc/multi_assistant_main.h @@ -71,5 +71,10 @@ #define MAS_UI_METHOD_CHANGE_ASSISTANT "mas_ui_method_change_assistant" #define MAS_UI_METHOD_ERROR "mas_ui_method_error" +/************************************************************************************** + *** Definitions for configuration + *************************************************************************************/ +#define MA_DEFAULT_ENGINE tzplatform_mkpath(tzplatform_getid("TZ_SYS_RO_SHARE"), "multiassistant/ma/1.0/engine") + #endif /* __MULTI_ASSISTANT_SERVICE_H__ */ diff --git a/inc/multi_wakeup_recognizer.h b/inc/multi_wakeup_recognizer.h index 862deb4..58a6b6c 100644 --- a/inc/multi_wakeup_recognizer.h +++ b/inc/multi_wakeup_recognizer.h @@ -59,34 +59,6 @@ typedef void (*wakeup_service_speech_status_cb)(wakeup_service_speech_status_e s typedef void (*wakeup_service_error_cb)(int error, const char* err_msg, void* user_data); - -int wakeup_service_initialize(void); - -int wakeup_service_deinitialize(void); - -int wakeup_service_set_language(const char* language); - -int wakeup_service_set_wakeup_word(const char* language, const char* wakeup_word); - -int wakeup_service_start_recording(void); - -int wakeup_service_stop_recording(void); - -int wakeup_service_cancel_recording(void); - -int wakeup_service_request_speech_data(void); - -int wakeup_service_get_recording_audio_format(int *rate, int *channel, int *audio_type); - -int wakeup_service_set_wakeup_event_callback(wakeup_service_wakeup_event_cb callback, void* user_data); - -int wakeup_service_set_speech_streaming_callback(wakeup_service_speech_streaming_cb callback, void* user_data); - -int wakeup_service_set_speech_status_callback(wakeup_service_speech_status_cb callback, void* user_data); - -int wakeup_service_set_error_callback(wakeup_service_error_cb callback, void* user_data); - - #ifdef __cplusplus } #endif diff --git a/packaging/org.tizen.multi-assistant-service.spec b/packaging/org.tizen.multi-assistant-service.spec index d359957..e9c2bf4 100644 --- a/packaging/org.tizen.multi-assistant-service.spec +++ b/packaging/org.tizen.multi-assistant-service.spec @@ -52,6 +52,7 @@ LDFLAGS="$LDFLAGS -Wl,-z -Wl,nodelete" export LDFLAGS cmake \ -DCMAKE_INSTALL_PREFIX=%{_appdir} \ + -DTZ_SYS_RO_SHARE=%TZ_SYS_RO_SHARE \ make %{?jobs:-j%jobs} @@ -69,6 +70,7 @@ cp LICENSE.Flora %{buildroot}%{TZ_SYS_RO_SHARE}/license/%{name} %post mkdir -p %{_bindir} +mkdir -p %{_libdir}/multiassistant/ma/1.0/engine #/usr/bin/signing-client/hash-signer-client.sh -a -d -p platform /usr/apps/org.tizen.multi-assistant-service mv %{_appdir}/lib/libboost_iostreams.so %{_appdir}/lib/libboost_iostreams.so.1.58.0 ln -s %{_appdir}/lib/libboost_iostreams.so.1.58.0 %{_appdir}/lib/libboost_iostreams.so @@ -87,6 +89,7 @@ exit 0 %defattr(-,root,root,-) /usr/share/license/* /usr/share/packages/org.tizen.multi-assistant-service.xml +%{TZ_SYS_RO_SHARE}/multiassistant/ma/1.0/engine/libmulti-wakeup-recognizer.so %{_appdir}/author-signature.xml %{_appdir}/signature1.xml %{_appdir}/lib/* diff --git a/src/multi_assistant_service_plugin.c b/src/multi_assistant_service_plugin.c index 1e4a7f7..25f8104 100644 --- a/src/multi_assistant_service_plugin.c +++ b/src/multi_assistant_service_plugin.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "multi_wakeup_recognizer.h" #include "multi_assistant_main.h" @@ -45,6 +46,7 @@ static FILE* g_pFile = NULL; static int g_count = 1; #endif +static void *g_handle = NULL; #if 0 /* + TEST_CODE */ Eina_Bool __send_asr_result(void *data) @@ -90,7 +92,9 @@ Eina_Bool __request_speech_data(void *data) MAS_LOGD("MA Client with wakeup word %s exists, requesting speech data", (wakeup_word ? wakeup_word : "NULL")); masc_ui_dbus_change_assistant(mas_get_client_appid_by_pid(pid)); ma_client_set_temp_speech_data_requested(1); - int ret = wakeup_service_request_speech_data(); + int (*ws_request_speech_data)(void); + ws_request_speech_data = (int (*)(void))dlsym(g_handle, "wakeup_service_request_speech_data"); + int ret = ws_request_speech_data(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to request speech data(%d)", ret); } @@ -243,7 +247,9 @@ static void __speech_status_cb(wakeup_service_speech_status_e status, void *user MAS_LOGD( "[SUCCESS] __speech_status_cb is called, status(%d)", status); if (WAKEUP_SPEECH_STATUS_END_POINT_DETECTED == status) { - int ret = wakeup_service_stop_recording(); + int (*ws_stop_recording)(void); + ws_stop_recording = (int (*)(void))dlsym(g_handle, "wakeup_service_stop_recording"); + int ret = ws_stop_recording(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to stop recording, ret(%d)", ret); } @@ -254,9 +260,11 @@ static Eina_Bool __wakeup_start_recording(void* data) { MAS_LOGD( "[SUCCESS] __wakeup_start_recording is called."); - int ret; + (void*)data; - ret = wakeup_service_start_recording(); + int (*ws_start_recording)(void); + ws_start_recording = (int (*)(void))dlsym(g_handle, "wakeup_service_start_recording"); + int ret = ws_start_recording(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to start recording, ret(%d)", ret); } @@ -267,7 +275,10 @@ static Eina_Bool __wakeup_start_recording(void* data) static void __error_cb(int error, const char* err_msg, void* user_data) { MAS_LOGD( "[SUCCESS] __error_cb is called, error(%d), err_msg(%d)", error, err_msg); - int ret = wakeup_service_cancel_recording(); + + int (*ws_cancel_recording)(void); + ws_cancel_recording = (int (*)(void))dlsym(g_handle, "wakeup_service_cancel_recording"); + int ret = ws_cancel_recording(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to cancel recording, ret(%d)", ret); } @@ -282,7 +293,19 @@ static void __error_cb(int error, const char* err_msg, void* user_data) int multi_assistant_service_plugin_initialize(void) { - int ret = wakeup_service_initialize(); + char filepath[512] = {'\0',}; + snprintf(filepath, 512, "%s/%s", MA_DEFAULT_ENGINE, "libmulti-wakeup-recognizer.so"); + + g_handle = NULL; + g_handle = dlopen(filepath, RTLD_LAZY); + if (NULL != dlerror()) { + MAS_LOGE("[ERROR] Fail to dlopen"); + return -1; //MAS_ERROR_OPERATION_FAILED; + } + + int (*ws_initialize)(void); + ws_initialize = (int (*)(void))dlsym(g_handle, "wakeup_service_initialize"); + int ret = ws_initialize(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to initialize, ret(%d)", ret); } @@ -300,16 +323,26 @@ int multi_assistant_service_plugin_deinitialize(void) } #endif - int ret = wakeup_service_deinitialize(); + int (*ws_deinitialize)(void); + ws_deinitialize = (int (*)(void))dlsym(g_handle, "wakeup_service_deinitialize"); + int ret = ws_deinitialize(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to deinitialize, ret(%d)", ret); } + + if (g_handle) { + dlclose(g_handle); + g_handle = NULL; + } + return ret; } int multi_assistant_service_plugin_set_language(const char* language) { - int ret = wakeup_service_set_language(language); + int (*ws_set_language)(const char* language); + ws_set_language = (int (*)(const char* language))dlsym(g_handle, "wakeup_service_set_language"); + int ret = ws_set_language(language); if (0 != ret) { MAS_LOGE("[ERROR] Fail to set langauge(%s), ret(%d)", language, ret); } @@ -318,7 +351,9 @@ int multi_assistant_service_plugin_set_language(const char* language) int multi_assistant_service_plugin_set_wakeup_word(const char* language, const char* wakeup_word) { - int ret = wakeup_service_set_wakeup_word(language, wakeup_word); + int (*ws_set_wakeup_word)(const char* language, const char* wakeup_word); + ws_set_wakeup_word = (int (*)(const char* language, const char* wakeup_word))dlsym(g_handle, "wakeup_service_set_wakeup_word"); + int ret = ws_set_wakeup_word(language, wakeup_word); if (0 != ret) { MAS_LOGE("[ERROR] Fail to set wakeup word(%s)(%s), ret(%d)", language, wakeup_word, ret); } @@ -327,7 +362,9 @@ int multi_assistant_service_plugin_set_wakeup_word(const char* language, const c int multi_assistant_service_plugin_start_recording(void) { - int ret = wakeup_service_start_recording(); + int (*ws_start_recording)(void); + ws_start_recording = (int (*)(void))dlsym(g_handle, "wakeup_service_start_recording"); + int ret = ws_start_recording(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to start recording, ret(%d)", ret); } @@ -336,7 +373,9 @@ int multi_assistant_service_plugin_start_recording(void) int multi_assistant_service_plugin_stop_recording(void) { - int ret = wakeup_service_stop_recording(); + int (*ws_stop_recording)(void); + ws_stop_recording = (int (*)(void))dlsym(g_handle, "wakeup_service_stop_recording"); + int ret = ws_stop_recording(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to stop recording, ret(%d)", ret); } @@ -345,7 +384,9 @@ int multi_assistant_service_plugin_stop_recording(void) int multi_assistant_service_plugin_cancel_recording(void) { - int ret = wakeup_service_cancel_recording(); + int (*ws_cancel_recording)(void); + ws_cancel_recording = (int (*)(void))dlsym(g_handle, "wakeup_service_cancel_recording"); + int ret = ws_cancel_recording(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to cancel recording, ret(%d)", ret); } @@ -354,7 +395,9 @@ int multi_assistant_service_plugin_cancel_recording(void) int multi_assistant_service_plugin_request_speech_data(void) { - int ret = wakeup_service_request_speech_data(); + int (*ws_request_speech_data)(void); + ws_request_speech_data = (int (*)(void))dlsym(g_handle, "wakeup_service_request_speech_data"); + int ret = ws_request_speech_data(); if (0 != ret) { MAS_LOGE("[ERROR] Fail to request speech data, ret(%d)", ret); } @@ -391,7 +434,9 @@ int multi_assistant_service_plugin_set_callbacks(void) int multi_assistant_service_plugin_get_recording_audio_format(int *rate, int *channel, int *audio_type) { - int ret = wakeup_service_get_recording_audio_format(rate, channel, audio_type); + int (*ws_get_recording_audio_format)(int *rate, int *channel, int *audio_type); + ws_get_recording_audio_format = (int (*)(int *rate, int *channel, int *audio_type))dlsym(g_handle, "wakeup_service_get_recording_audio_format"); + int ret = ws_get_recording_audio_format(rate, channel, audio_type); if (0 != ret) { MAS_LOGE("[ERROR] Fail to get recording audio format, ret(%d)", ret); } @@ -400,7 +445,9 @@ int multi_assistant_service_plugin_get_recording_audio_format(int *rate, int *ch int multi_assistant_service_plugin_set_wakeup_event_callback(wakeup_service_wakeup_event_cb callback, void* user_data) { - int ret = wakeup_service_set_wakeup_event_callback(callback, user_data); + int (*ws_set_wakeup_event_callback)(wakeup_service_wakeup_event_cb callback, void* user_data); + ws_set_wakeup_event_callback = (int (*)(wakeup_service_wakeup_event_cb callback, void* user_data))dlsym(g_handle, "wakeup_service_set_wakeup_event_callback"); + int ret = ws_set_wakeup_event_callback(callback, user_data); if (0 != ret) { MAS_LOGE("[ERROR] Fail to set wakeup event callback, ret(%d)", ret); } @@ -409,7 +456,9 @@ int multi_assistant_service_plugin_set_wakeup_event_callback(wakeup_service_wake int multi_assistant_service_plugin_set_speech_streaming_callback(wakeup_service_speech_streaming_cb callback, void* user_data) { - int ret = wakeup_service_set_speech_streaming_callback(callback, user_data); + int (*ws_set_speech_streaming_callback)(wakeup_service_speech_streaming_cb callback, void* user_data); + ws_set_speech_streaming_callback = (int (*)(wakeup_service_speech_streaming_cb callback, void* user_data))dlsym(g_handle, "wakeup_service_set_speech_streaming_callback"); + int ret = ws_set_speech_streaming_callback(callback, user_data); if (0 != ret) { MAS_LOGE("[ERROR] Fail to speech streaming callback, ret(%d)", ret); } @@ -418,7 +467,9 @@ int multi_assistant_service_plugin_set_speech_streaming_callback(wakeup_service_ int multi_assistant_service_plugin_set_speech_status_callback(wakeup_service_speech_status_cb callback, void* user_data) { - int ret = wakeup_service_set_speech_status_callback(callback, user_data); + int (*ws_set_speech_status_callback)(wakeup_service_speech_status_cb callback, void* user_data); + ws_set_speech_status_callback = (int (*)(wakeup_service_speech_status_cb callback, void* user_data))dlsym(g_handle, "wakeup_service_set_speech_status_callback"); + int ret = ws_set_speech_status_callback(callback, user_data); if (0 != ret) { MAS_LOGE("[ERROR] Fail to set speech status callback, ret(%d)", ret); } @@ -427,7 +478,9 @@ int multi_assistant_service_plugin_set_speech_status_callback(wakeup_service_spe int multi_assistant_service_plugin_set_error_callback(wakeup_service_error_cb callback, void* user_data) { - int ret = wakeup_service_set_error_callback(callback, user_data); + int (*ws_set_error_callback)(wakeup_service_error_cb callback, void* user_data); + ws_set_error_callback = (int (*)(wakeup_service_error_cb callback, void* user_data))dlsym(g_handle, "wakeup_service_set_error_callback"); + int ret = ws_set_error_callback(callback, user_data); if (0 != ret) { MAS_LOGE("[ERROR] Fail to set error callback, ret(%d)", ret); }