Add get_audio_source_type message handlers
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 d4e572a..5c2e7eb 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 3ac83ad..90e45dc 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 06f58b5..c68eead 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 274f7c2..3484fd5 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 6a603c1..9ba14a0 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 171f24f..d705b00 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 570b44c..afb3e99 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 e4fcdf7..6d224f8 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 c76e3a0..a129f9d 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 e3ba274..93d71f5 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 eda0f3b..7b541a6 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 565ca1d..83c7320 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 89e9af5..6424077 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 c17d21b..6130846 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 a1daa33..1c70b09 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 a626d11..0738f40 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 d7fe03a..e73a723 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 819ab1d..4b40351 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);