From 6ca967c806aa1d8b40313e23c85f1ac324be7a62 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Fri, 23 Aug 2019 16:33:01 +0900 Subject: [PATCH] Add version information interface for wakeup engines Change-Id: I4b53dff321db4190aea8921b1a8fd8033f5e255b --- plugins/wakeup-manager/inc/wakeup_engine_manager.h | 7 +++++++ plugins/wakeup-manager/src/wakeup_engine_manager.cpp | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/plugins/wakeup-manager/inc/wakeup_engine_manager.h b/plugins/wakeup-manager/inc/wakeup_engine_manager.h index 27fd175..3b262df 100644 --- a/plugins/wakeup-manager/inc/wakeup_engine_manager.h +++ b/plugins/wakeup-manager/inc/wakeup_engine_manager.h @@ -39,6 +39,7 @@ using namespace std; /* Need to check whether this dedicated engine path also needs to be configurable */ #define MA_WAKEUP_DEDICATED_ENGINE_PATH "shared/lib/libwakeup-engine.so" +/* Interfaces without version information */ #define MA_WAKEUP_ENGINE_FUNC_INITIALIZE "wakeup_engine_initialize" typedef int (*wakeup_engine_initialize)(void); #define MA_WAKEUP_ENGINE_FUNC_DEINITIALIZE "wakeup_engine_deinitialize" @@ -78,6 +79,10 @@ typedef int (*wakeup_engine_set_error_callback)(wakeup_service_error_cb callback #define MA_WAKEUP_ENGINE_FUNC_SET_AUDIO_DATA_REQUIRE_STATUS_CALLBACK "wakeup_engine_set_audio_data_require_status_callback" typedef int (*wakeup_engine_set_audio_data_require_status_callback)(wakeup_service_audio_data_require_status_cb callback, void* user_data); +/* Interfaces after version 1 */ +#define MA_WAKEUP_ENGINE_FUNC_GET_VERSION "wakeup_engine_get_version" +typedef int (*wakeup_engine_get_version)(int* version); + typedef struct { wakeup_engine_initialize initialize; wakeup_engine_deinitialize deinitialize; @@ -93,6 +98,7 @@ typedef struct { wakeup_engine_feed_audio_data feed_audio_data; wakeup_engine_get_utterance_data_count get_utterance_data_count; wakeup_engine_get_utterance_data get_utterance_data; + wakeup_engine_get_version get_version; wakeup_engine_set_assistant_specific_command set_assistant_specific_command; wakeup_engine_set_wakeup_event_callback set_wakeup_event_callback; wakeup_engine_set_speech_status_callback set_speech_status_callback; @@ -152,6 +158,7 @@ public: bool on_audio_data_require_status(string engine_name, bool require); private: typedef struct { + int version; string engine_name; bool activated{false}; bool audio_data_require_status{false}; diff --git a/plugins/wakeup-manager/src/wakeup_engine_manager.cpp b/plugins/wakeup-manager/src/wakeup_engine_manager.cpp index 75baf6b..266d216 100644 --- a/plugins/wakeup-manager/src/wakeup_engine_manager.cpp +++ b/plugins/wakeup-manager/src/wakeup_engine_manager.cpp @@ -455,6 +455,7 @@ void CWakeupEngineManager::add_engine(string name, string path) return; } + /* Interfaces without version information */ info.interface.initialize = (wakeup_engine_initialize)dlsym(info.engine_handle, MA_WAKEUP_ENGINE_FUNC_INITIALIZE); @@ -513,6 +514,12 @@ void CWakeupEngineManager::add_engine(string name, string path) (wakeup_engine_set_audio_data_require_status_callback)dlsym(info.engine_handle, MA_WAKEUP_ENGINE_FUNC_SET_AUDIO_DATA_REQUIRE_STATUS_CALLBACK); + /* Interfaces after version 1 */ + info.interface.get_version = + (wakeup_engine_get_version)dlsym(info.engine_handle, + MA_WAKEUP_ENGINE_FUNC_GET_VERSION); + + info.version = 0; info.engine_path = path; info.engine_name = name; @@ -563,6 +570,12 @@ void CWakeupEngineManager::add_engine(string name, string path) if (info.interface.initialize) { info.interface.initialize(); } + if (info.interface.get_version) { + int version; + if (0 == info.interface.get_version(&version)) { + info.version = version; + } + } } void CWakeupEngineManager::add_engine_directory(string name, string path) -- 2.7.4