# 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)
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)
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)
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)
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)
#include <stdlib.h>
#include <string.h>
#include <glib.h>
+#include <dlfcn.h>
#include "multi_wakeup_recognizer.h"
#include "multi_assistant_main.h"
static int g_count = 1;
#endif
+static void *g_handle = NULL;
#if 0 /* + TEST_CODE */
Eina_Bool __send_asr_result(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);
}
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);
}
{
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);
}
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);
}
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);
}
}
#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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}