Add get_audio_source_type message handlers 17/210917/4
authorJi-hoon Lee <dalton.lee@samsung.com>
Fri, 26 Jul 2019 02:26:28 +0000 (11:26 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Mon, 5 Aug 2019 11:02:01 +0000 (20:02 +0900)
Change-Id: I10a70b74181e771be259722162da2778bb4fe26e

18 files changed:
inc/multi_assistant_main.h
inc/multi_assistant_service.h
inc/multi_assistant_service_plugin.h
plugins/wakeup-manager/dependency-default/inc/dependency_default.h
plugins/wakeup-manager/dependency-default/inc/dependency_default_audio.h
plugins/wakeup-manager/dependency-default/src/dependency_default.cpp
plugins/wakeup-manager/dependency-default/src/dependency_default_audio.cpp
plugins/wakeup-manager/inc/dependency_resolver.h
plugins/wakeup-manager/inc/wakeup_manager.h
plugins/wakeup-manager/inc/wakeup_manager_wrapper.h
plugins/wakeup-manager/src/dependency_resolver.cpp
plugins/wakeup-manager/src/wakeup_manager.cpp
plugins/wakeup-manager/src/wakeup_manager_wrapper.cpp
src/multi_assistant_dbus.c
src/multi_assistant_dbus_server.c
src/multi_assistant_dbus_server.h
src/multi_assistant_service.c
src/multi_assistant_service_plugin.c

index d4e572ae325f3d1c6e696218faaa29cbec81bb74..5c2e7ebf333d13fea598c67f7d8717e29ee46657 100644 (file)
@@ -54,6 +54,7 @@
 #define MA_METHOD_INITIALIZE                                           "ma_method_initialize"
 #define MA_METHOD_DEINITIALIZE                                         "ma_method_deinitialize"
 #define MA_METHOD_GET_RECORDING_AUDIO_FORMAT           "ma_method_get_recording_audio_format"
+#define MA_METHOD_GET_RECORDING_AUDIO_SOURCE_TYPE      "ma_method_get_recording_audio_source_type"
 #define MA_METHOD_SEND_ASR_RESULT                                      "ma_method_send_asr_result"
 #define MA_METHOD_SEND_RESULT                                          "ma_method_send_result"
 #define MA_METHOD_SEND_RECOGNITION_RESULT                      "ma_method_send_recognition_result"
index 3ac83ad237a8185e819335a5668cbbc7997edce2..90e45dc23137d474193399ffdc6ebde45c1821dd 100644 (file)
@@ -33,6 +33,8 @@ int mas_client_deinitialize(int pid);
 
 int mas_client_get_audio_format(int pid, int* rate, int* channel, int* audio_type);
 
+int mas_client_get_audio_source_type(int pid, char** type);
+
 int mas_client_request_speech_data(int pid);
 
 int mas_client_send_asr_result(int pid, int event, char* asr_result);
index 06f58b51d525ef93e2382a054c88151b7e15cd4b..c68eead85c22dd9d88c1832675ae9b00dcd43c32 100644 (file)
@@ -83,6 +83,8 @@ int multi_assistant_service_plugin_stop_streaming_follow_up_data(void);
 
 int multi_assistant_service_plugin_get_recording_audio_format(int* rate, int* channel, int* audio_type);
 
+int multi_assistant_service_plugin_get_recording_audio_source_type(char **type);
+
 int multi_assistant_service_plugin_set_callbacks(void);
 
 int multi_assistant_service_plugin_set_wakeup_event_callback(wakeup_service_wakeup_event_cb callback, void* user_data);
@@ -146,6 +148,8 @@ typedef int (*wakeup_manager_start_streaming_follow_up_data)(void);
 typedef int (*wakeup_manager_stop_streaming_follow_up_data)(void);
 #define MA_WAKEUP_MANAGER_FUNC_GET_AUDIO_FORMAT "wakeup_manager_get_audio_format"
 typedef int (*wakeup_manager_get_audio_format)(int* rate, int* channel, int* audio_type);
+#define MA_WAKEUP_MANAGER_FUNC_GET_AUDIO_SOURCE_TYPE "wakeup_manager_get_audio_source_type"
+typedef int (*wakeup_manager_get_audio_source_type)(char** type);
 #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"
@@ -182,6 +186,7 @@ typedef struct {
        wakeup_manager_start_streaming_follow_up_data                    start_streaming_follow_up_data;
        wakeup_manager_stop_streaming_follow_up_data                     stop_streaming_follow_up_data;
        wakeup_manager_get_audio_format                                                  get_audio_format;
+       wakeup_manager_get_audio_source_type                                     get_audio_source_type;
        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;
index 274f7c24a5ccfc556e62d6956449a902f46d50ff..3484fd5c8ad40d26cd71accf73d648aa08b0ff52 100644 (file)
@@ -56,6 +56,7 @@ EXPORT_API int mas_dependency_stop_recording(void);
 EXPORT_API int mas_dependency_change_system_volume(void);
 EXPORT_API int mas_dependency_recover_system_volume(void);
 EXPORT_API int mas_dependency_get_audio_format(int* rate, int* channel, int* audio_type);
+EXPORT_API int mas_dependency_get_audio_source_type(char** type);
 
 #ifdef __cplusplus
 }
index 6a603c190b10e3b9827ad7852f16df9e5ac85004..9ba14a035b183fa726c4bd1d576ecdb782f45912 100644 (file)
@@ -29,4 +29,6 @@ void dependency_default_audio_change_system_volume();
 void dependency_default_audio_recover_system_volume();
 
 void dependency_default_audio_get_audio_format(int* rate, int* channel, int* audio_type);
+void dependency_default_audio_get_audio_source_type(char** type);
+
 #endif //_DEPENDENCY_DEFAULT_AUDIO_H_
index 171f24f799a32d9cfeb53108e6a9512cc66e5ed8..d705b0055d2f3ae580315aea827624f21ac02980 100644 (file)
@@ -62,3 +62,9 @@ int mas_dependency_get_audio_format(int* rate, int* channel, int* audio_type)
        dependency_default_audio_get_audio_format(rate, channel, audio_type);
        return 0;
 }
+
+int mas_dependency_get_audio_source_type(char** type)
+{
+       dependency_default_audio_get_audio_source_type(type);
+       return 0;
+}
index 570b44c87be8223cf4e13c1ef59cd9b1f7b898f1..afb3e99cef324ef36a4ca9a6055e7f14a9d132d0 100644 (file)
@@ -361,4 +361,13 @@ void dependency_default_audio_get_audio_format(int* rate, int* channel, int* aud
        *rate = 16000;
        *channel = 0;
        *audio_type = 0;
+}
+
+void dependency_default_audio_get_audio_source_type(char** type)
+{
+       static char source_type[] = "default_audio";
+       if (!type) {
+               return;
+       }
+       *type = source_type;
 }
\ No newline at end of file
index e4fcdf730d8bc6c5cdf96c92fa162ad97753b88b..6d224f8350dee8386f4ad07b924ada2e4bf179c4 100644 (file)
@@ -42,6 +42,7 @@ int dependency_resolver_stop_recording();
 int dependency_resolver_change_system_volume();
 int dependency_resolver_recover_system_volume();
 int dependency_resolver_get_audio_format(int* rate, int* channel, int* audio_type);
+int dependency_resolver_get_audio_source_type(char** type);
 
 /**************************************************************************************
  *** Definitions for dependencies
@@ -66,6 +67,8 @@ typedef int (*mas_dependency_change_system_volume)(void);
 typedef int (*mas_dependency_recover_system_volume)(void);
 #define MAS_DEPENDENCY_FUNC_GET_AUDIO_FORMAT "mas_dependency_get_audio_format"
 typedef int (*mas_dependency_get_audio_format)(int* rate, int* channel, int* audio_type);
+#define MAS_DEPENDENCY_FUNC_GET_AUDIO_SOURCE_TYPE "mas_dependency_get_audio_source_type"
+typedef int (*mas_dependency_get_audio_source_type)(char** type);
 
 typedef struct {
        mas_dependency_initialize                                                               initialize;
@@ -76,6 +79,7 @@ typedef struct {
        mas_dependency_change_system_volume                                             change_system_volume;
        mas_dependency_recover_system_volume                                    recover_system_volume;
        mas_dependency_get_audio_format                                                 get_audio_format;
+       mas_dependency_get_audio_source_type                                    get_audio_source_type;
 } mas_dependency;
 
 #ifdef __cplusplus
index c76e3a051eecf0d34b59e1e7756bb39649bc705a..a129f9d4b690e0217a5941ed72ace8efe4f23426 100644 (file)
@@ -81,6 +81,7 @@ public:
        bool update_result_state(string appid, int state);
        bool process_event(ma_plugin_event_e event, void* data, int len);
        bool get_audio_format(int* rate, int* channel, int* audio_type);
+       bool get_audio_source_type(char** type);
        bool set_language(string language);
        bool get_voice_key_pressed();
 
index e3ba274fcd4cc94beb6011c4dbd24d6e7cb05bc6..93d71f5f93fb4148744186b65c7a83f1ae54a93f 100644 (file)
@@ -114,6 +114,8 @@ EXPORT_API int wakeup_manager_stop_streaming_follow_up_data(void);
 
 EXPORT_API int wakeup_manager_get_audio_format(int *rate, int *channel, int *audio_type);
 
+EXPORT_API int wakeup_manager_get_audio_source_type(char** type);
+
 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);
index eda0f3bd465ba79530cd694d4de7f3957484fa1b..7b541a617701ad9b2a7e41b19575af246109b5c5 100644 (file)
@@ -81,6 +81,9 @@ int dependency_resolver_initialize(mas_proxy_interface interface)
        g_mas_dependency.get_audio_format =
                (mas_dependency_get_audio_format)dlsym(g_handle,
                MAS_DEPENDENCY_FUNC_GET_AUDIO_FORMAT);
+       g_mas_dependency.get_audio_source_type =
+               (mas_dependency_get_audio_source_type)dlsym(g_handle,
+               MAS_DEPENDENCY_FUNC_GET_AUDIO_SOURCE_TYPE);
 
        int ret = -1;
        int dependency_version = 0;
@@ -246,3 +249,22 @@ int dependency_resolver_get_audio_format(int* rate, int* channel, int* audio_typ
        return ret;
 }
 
+int dependency_resolver_get_audio_source_type(char** type)
+{
+       int ret = -1;
+       if (NULL != g_handle) {
+               mas_dependency_get_audio_source_type func = g_mas_dependency.get_audio_source_type;
+               if (NULL == func) {
+                       MAS_LOGE("[ERROR] symbol lookup failed : %s", MAS_DEPENDENCY_FUNC_GET_AUDIO_SOURCE_TYPE);
+               } else {
+                       ret = func(type);
+                       if (0 != ret) {
+                               MAS_LOGE("[ERROR] Fail to get audio source type, ret(%d)", ret);
+                       }
+               }
+       } else {
+               MAS_LOGE("[ERROR] g_handle is not valid");
+       }
+
+       return ret;
+}
index 565ca1df09c67f01723a06338a68f62df702d8ad..83c7320a04014fbdaa873c1fe0127d3ad9511614 100644 (file)
@@ -571,6 +571,21 @@ bool CWakeupManager::get_audio_format(int* rate, int* channel, int* audio_type)
        return true;
 }
 
+bool CWakeupManager::get_audio_source_type(char** type)
+{
+       MWR_LOGD("[ENTER]");
+
+       if (!type) {
+               MWR_LOGE("[ERROR] Invalid parameter");
+               return false;
+       }
+
+       dependency_resolver_get_audio_source_type(type);
+
+       MWR_LOGD("[END] type(%s)", *type);
+       return true;
+}
+
 CWakeupPolicy* CWakeupManager::get_wakeup_policy()
 {
        return mWakeupPolicy.get();
index 89e9af5c1e1de07934b4756e886b97f972f8470a..642407713e760a86c4a490e05721ac51a7f9356b 100644 (file)
@@ -359,6 +359,21 @@ int wakeup_manager_get_audio_format(int* rate, int* channel, int* audio_type)
        return 0;
 }
 
+int wakeup_manager_get_audio_source_type(char** type)
+{
+       MWR_LOGD("[ENTER]");
+
+       if (!type) {
+               MWR_LOGE("[ERROR] Invalid parameter");
+               return -1;
+       }
+
+       g_wakeup_manager.get_audio_source_type(type);
+
+       MWR_LOGD("[END] type(%s)", *type);
+       return 0;
+}
+
 int wakeup_manager_set_wakeup_event_callback(wakeup_service_wakeup_event_cb callback, void* user_data)
 {
        MWR_LOGD("[ENTER]");
index c17d21ba2bd1d1e63efd7f772eccd3ba4a60ad36..6130846555ad5113b2aa31a608b03767a453a88f 100644 (file)
@@ -668,6 +668,9 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle
                } else if (dbus_message_is_method_call(msg, MA_SERVER_SERVICE_INTERFACE, MA_METHOD_GET_RECORDING_AUDIO_FORMAT)) {
                        ma_service_dbus_get_audio_format(g_conn_listener, msg);
 
+               } else if (dbus_message_is_method_call(msg, MA_SERVER_SERVICE_INTERFACE, MA_METHOD_GET_RECORDING_AUDIO_SOURCE_TYPE)) {
+                       ma_service_dbus_get_audio_source_type(g_conn_listener, msg);
+
                } else if (dbus_message_is_method_call(msg, MA_SERVER_SERVICE_INTERFACE, MA_METHOD_SEND_ASR_RESULT)) {
                        ma_service_dbus_send_asr_result(g_conn_listener, msg);
 
index a1daa3312fee1e014ee2c79099bb3790aa5d4cf0..1c70b090cca9f35fb75ce428c800e115102b7650 100644 (file)
@@ -199,6 +199,68 @@ int ma_service_dbus_get_audio_format(DBusConnection* conn, DBusMessage* msg)
        return 0;
 }
 
+int ma_service_dbus_get_audio_source_type(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       int pid = -1;
+       char *type = NULL;
+       int ret;
+
+       dbus_message_get_args(msg, &err,
+               DBUS_TYPE_INT32, &pid,
+               DBUS_TYPE_INVALID);
+
+       MAS_LOGD("[DEBUG] MAS GET AUDIO SOURCE TYPE");
+
+       if (dbus_error_is_set(&err)) {
+               MAS_LOGE("[IN ERROR] mas get audio source type : Get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = -1; //MAS_ERROR_OPERATION_FAILED;
+       } else {
+               MAS_LOGD("[IN] mas get default voice");
+               ret = mas_client_get_audio_source_type(pid, &type);
+       }
+
+       DBusMessage* reply;
+       reply = dbus_message_new_method_return(msg);
+
+       char* temp_type = NULL;
+
+       if (type)
+               temp_type = strdup(type);
+       else
+               temp_type = strdup("#NULL");
+
+       if (NULL != reply) {
+               /* Append result and voice */
+               dbus_message_append_args(reply,
+                       DBUS_TYPE_INT32, &ret,
+                       DBUS_TYPE_STRING, &temp_type,
+                       DBUS_TYPE_INVALID);
+               if (0 == ret) {
+                       MAS_LOGD("[OUT] mas get audio source type : type(%s)", temp_type);
+               } else {
+                       MAS_LOGE("[OUT ERROR] mas get audio source type : result(%d)", ret);
+               }
+
+               if (!dbus_connection_send(conn, reply, NULL)) {
+                       MAS_LOGE("[OUT ERROR] mas get audio source type : Out Of Memory!");
+               }
+
+               dbus_connection_flush(conn);
+               dbus_message_unref(reply);
+       } else {
+               MAS_LOGE("[OUT ERROR] mas get audio source type : Fail to create reply message!!");
+       }
+
+       if (temp_type)
+               free(temp_type);
+
+       return 0;
+}
+
 int ma_service_dbus_send_asr_result(DBusConnection* conn, DBusMessage* msg)
 {
        DBusError err;
index a626d11e00121fb932cce05373e19142bd1d7410..0738f406ef37973b83628ebafcac83c6736f8c2b 100644 (file)
@@ -31,6 +31,8 @@ int ma_service_dbus_deinitialize(DBusConnection* conn, DBusMessage* msg);
 
 int ma_service_dbus_get_audio_format(DBusConnection* conn, DBusMessage* msg);
 
+int ma_service_dbus_get_audio_source_type(DBusConnection* conn, DBusMessage* msg);
+
 int ma_service_dbus_send_asr_result(DBusConnection* conn, DBusMessage* msg);
 
 int ma_service_dbus_send_result(DBusConnection* conn, DBusMessage* msg);
index d7fe03a8d847b3a9bbc56598109a881d944fdfe9..e73a723ca8f31ce7535b9230aed359a549ff06b0 100644 (file)
@@ -228,6 +228,18 @@ int mas_client_get_audio_format(int pid, int* rate, int* channel, int* audio_typ
        return ret;
 }
 
+int mas_client_get_audio_source_type(int pid, char** type)
+{
+       MAS_LOGD("[Enter] pid(%d)", pid);
+
+       int ret = multi_assistant_service_plugin_get_recording_audio_source_type(type);
+       if (0 != ret){
+               MAS_LOGE("[ERROR] Fail to get recording audio source type, ret(%d)", ret);
+       }
+
+       return ret;
+}
+
 int mas_client_activate(int pid)
 {
        int ret = -1;
index 819ab1d2e311ed5a4d9eb43d958f428cbb0b9908..4b403513ddca2022f9d6b216b836001b6811eeee 100644 (file)
@@ -408,6 +408,9 @@ int multi_assistant_service_plugin_initialize(void)
        _wakeup_manager_interface.get_audio_format =
                (wakeup_manager_get_audio_format)dlsym(g_handle,
                MA_WAKEUP_MANAGER_FUNC_GET_AUDIO_FORMAT);
+       _wakeup_manager_interface.get_audio_source_type =
+               (wakeup_manager_get_audio_source_type)dlsym(g_handle,
+               MA_WAKEUP_MANAGER_FUNC_GET_AUDIO_SOURCE_TYPE);
        _wakeup_manager_interface.set_wakeup_event_callback =
                (wakeup_manager_set_wakeup_event_callback)dlsym(g_handle,
                MA_WAKEUP_MANAGER_FUNC_SET_WAKEUP_EVENT_CALLBACK);
@@ -831,6 +834,25 @@ int multi_assistant_service_plugin_get_recording_audio_format(int *rate, int *ch
        return ret;
 }
 
+int multi_assistant_service_plugin_get_recording_audio_source_type(char** type)
+{
+       int ret = -1;
+       if (NULL != g_handle) {
+               wakeup_manager_get_audio_source_type func = _wakeup_manager_interface.get_audio_source_type;
+               if (NULL == func) {
+                       MAS_LOGE("[ERROR] symbol lookup failed : %s", MA_WAKEUP_MANAGER_FUNC_GET_AUDIO_SOURCE_TYPE);
+               } else {
+                       ret = func(type);
+                       if (0 != ret) {
+                               MAS_LOGE("[ERROR] Fail to get recording audio source type, 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);