From: sungrae jo Date: Tue, 5 Jan 2021 02:18:48 +0000 (+0900) Subject: Add mgr dbus for set_audio_streaming_mode X-Git-Tag: submit/tizen/20210201.095542^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F99%2F250599%2F7;p=platform%2Fcore%2Fuifw%2Fvoice-control.git Add mgr dbus for set_audio_streaming_mode Change-Id: I69262206664f94848040a99a11db5ce2cb384016 Signed-off-by: sungrae jo --- diff --git a/client/vc_mgr.c b/client/vc_mgr.c index 3caa9ae..e9703c6 100755 --- a/client/vc_mgr.c +++ b/client/vc_mgr.c @@ -4525,20 +4525,38 @@ int vc_mgr_set_audio_streaming_mode(vc_audio_streaming_mode_e mode) return VC_ERROR_INVALID_STATE; } - if (VC_STATE_INITIALIZED != state && VC_SERVICE_STATE_READY != service_state) { + if (VC_STATE_INITIALIZED == state && VC_SERVICE_STATE_NONE == service_state) { + ret = vc_mgr_client_set_audio_streaming_mode(g_vc_m, mode); + if (VC_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to set multi assistant mode : %s", __vc_mgr_get_error_code(ret)); + return VC_ERROR_INVALID_STATE; + } else { + SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Set audio streaming mode in vc mgr client"); + } + } else if (VC_STATE_READY == state && VC_SERVICE_STATE_READY == service_state) { + ret = vc_mgr_client_set_audio_streaming_mode(g_vc_m, mode); + if (VC_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to set multi assistant mode : %s", __vc_mgr_get_error_code(ret)); + return VC_ERROR_INVALID_STATE; + } else { + SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Set audio streaming mode in vc mgr client"); + } + + ret = vc_mgr_dbus_request_set_audio_streaming_mode(g_vc_m->handle, mode); + if (VC_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to set audio streaming mode : %s", __vc_mgr_get_error_code(ret)); + return VC_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Set audio streaming mode in vc mgr dbus"); + } + } else { SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid State: Current state is not 'INITIALIZED', state(%d)", state); SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid State: Current service state is not 'READY', service_state(%d)", service_state); SLOG(LOG_DEBUG, TAG_VCM, "@@@"); return VC_ERROR_INVALID_STATE; } - ret = vc_mgr_client_set_audio_streaming_mode(g_vc_m, mode); - if (0 != ret) { - SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to set multi assistant mode, ret(%d)", ret); - return VC_ERROR_INVALID_STATE; - } - - return ret; + return VC_ERROR_NONE; } int __vc_change_system_volume(vc_system_volume_event_e volume_event) diff --git a/client/vc_mgr_dbus.c b/client/vc_mgr_dbus.c index f9a5493..7e2b875 100755 --- a/client/vc_mgr_dbus.c +++ b/client/vc_mgr_dbus.c @@ -2107,6 +2107,50 @@ int vc_mgr_dbus_request_cancel(int pid) return result; } +int vc_mgr_dbus_request_set_audio_streaming_mode(int pid, vc_audio_streaming_mode_e mode) +{ + if (0 != __dbus_check()) { + return VC_ERROR_OPERATION_FAILED; + } + + DBusMessage* msg; + + /* create a signal & check for errors */ + msg = dbus_message_new_method_call( + VC_SERVER_SERVICE_NAME, + VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */ + VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */ + VC_MANAGER_METHOD_SET_AUDIO_STREAMING_MODE); /* name of the signal */ + + if (NULL == msg) { + SLOG(LOG_ERROR, TAG_VCM, "@@ vc mgr set audio streaming mode : Fail to make message "); + return VC_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_INFO, TAG_VCM, "@@ vc mgr set audio streaming mode : pid(%d) mode(%d)", pid, mode); + } + + dbus_message_append_args(msg, + DBUS_TYPE_INT32, &pid, + DBUS_TYPE_INT32, &mode, + DBUS_TYPE_INVALID); + + dbus_message_set_no_reply(msg, TRUE); + + /* send the message and flush the connection */ + if (1 != dbus_connection_send(g_m_conn_sender, msg, NULL)) { + SLOG(LOG_ERROR, TAG_VCM, "[Dbus ERROR] Fail to set audio streaming mode"); + dbus_message_unref(msg); + return VC_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_INFO, TAG_VCM, "[Dbus] Success to set audio streaming mode"); + dbus_connection_flush(g_m_conn_sender); + } + + dbus_message_unref(msg); + + return VC_ERROR_NONE; +} + static DBusMessage* __get_message(int pid, const char* method, int type) { char service_name[64]; @@ -2431,4 +2475,3 @@ int vc_mgr_dbus_change_system_volume(int pid, vc_system_volume_event_e volume_ev return result; } - diff --git a/client/vc_mgr_dbus.h b/client/vc_mgr_dbus.h index 7d706f1..c144024 100644 --- a/client/vc_mgr_dbus.h +++ b/client/vc_mgr_dbus.h @@ -78,6 +78,8 @@ int vc_mgr_dbus_send_audio_streaming(int pid, vc_audio_streaming_event_e event, int vc_mgr_dbus_change_system_volume(int pid, vc_system_volume_event_e volume_event); +int vc_mgr_dbus_request_set_audio_streaming_mode(int pid, vc_audio_streaming_mode_e mode); + #ifdef __cplusplus } #endif diff --git a/common/vc_defs.h b/common/vc_defs.h index 4011131..21c2e58 100644 --- a/common/vc_defs.h +++ b/common/vc_defs.h @@ -148,6 +148,7 @@ extern "C" { #define VC_MANAGER_METHOD_START "vc_manager_method_request_start" #define VC_MANAGER_METHOD_STOP "vc_manager_method_request_stop" #define VC_MANAGER_METHOD_CANCEL "vc_manager_method_request_cancel" +#define VC_MANAGER_METHOD_SET_AUDIO_STREAMING_MODE "vc_manager_method_set_audio_streaming_mode" #define VC_MANAGER_METHOD_RESULT_SELECTION "vc_manager_method_result_selection" #define VC_MANAGER_METHOD_SET_DOMAIN "vc_manager_method_set_domain" #define VC_MANAGER_METHOD_DO_ACTION "vc_manager_method_do_action" diff --git a/server/vcd_config.c b/server/vcd_config.c index 0f61317..cdf2f3d 100644 --- a/server/vcd_config.c +++ b/server/vcd_config.c @@ -168,6 +168,11 @@ int vcd_config_get_audio_streaming_mode(vcd_audio_streaming_mode_e* streaming_mo int vcd_config_set_audio_streaming_mode(vcd_audio_streaming_mode_e streaming_mode) { + if (streaming_mode < VCD_AUDIO_STREAMING_MODE_VC_SERVICE || streaming_mode > VCD_AUDIO_STREAMING_MODE_OUTSIDE) { + SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid streaming mode(%d)", streaming_mode); + return -1; + } + g_audio_streaming_mode = streaming_mode; return 0; } diff --git a/server/vcd_dbus.c b/server/vcd_dbus.c index 1ef35c2..7811988 100755 --- a/server/vcd_dbus.c +++ b/server/vcd_dbus.c @@ -1173,6 +1173,9 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle else if (dbus_message_is_method_call(msg, VC_SERVER_SERVICE_INTERFACE, VC_MANAGER_METHOD_CHANGE_SYSTEM_VOLUME)) vcd_dbus_server_mgr_change_system_volume(g_conn_listener, msg); + else if (dbus_message_is_method_call(msg, VC_SERVER_SERVICE_INTERFACE, VC_MANAGER_METHOD_SET_AUDIO_STREAMING_MODE)) + vcd_dbus_server_mgr_set_audio_streaming_mode(g_conn_listener, msg); + /* client event */ else if (dbus_message_is_method_call(msg, VC_SERVER_SERVICE_INTERFACE, VC_METHOD_INITIALIZE)) vcd_dbus_server_initialize(g_conn_listener, msg); diff --git a/server/vcd_dbus_server.c b/server/vcd_dbus_server.c index 119d5f8..d7314de 100755 --- a/server/vcd_dbus_server.c +++ b/server/vcd_dbus_server.c @@ -1126,6 +1126,30 @@ int vcd_dbus_server_mgr_change_system_volume(DBusConnection* conn, DBusMessage* } +int vcd_dbus_server_mgr_set_audio_streaming_mode(DBusConnection* conn, DBusMessage* msg) +{ + DBusError err; + dbus_error_init(&err); + + int pid; + int mode; + dbus_message_get_args(msg, &err, + DBUS_TYPE_INT32, &pid, + DBUS_TYPE_INT32, &mode, + DBUS_TYPE_INVALID); + + SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set audio streaming mode"); + + if (dbus_error_is_set(&err)) { + SLOG(LOG_ERROR, TAG_VCD, "[IN ERROR] vcd mgr set audio streaming mode : get arguments error (%s)", err.message); + dbus_error_free(&err); + } else { + SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio streaming mode : pid(%d) mode(%d)", pid, mode); + vcd_config_set_audio_streaming_mode((vcd_audio_streaming_mode_e)mode); + } + return 0; +} + /* * Dbus Server functions for client */ diff --git a/server/vcd_dbus_server.h b/server/vcd_dbus_server.h index 7890502..dca8add 100644 --- a/server/vcd_dbus_server.h +++ b/server/vcd_dbus_server.h @@ -67,6 +67,8 @@ int vcd_dbus_server_mgr_send_specific_engine_request(DBusConnection* conn, DBusM int vcd_dbus_server_mgr_change_system_volume(DBusConnection* conn, DBusMessage* msg); +int vcd_dbus_server_mgr_set_audio_streaming_mode(DBusConnection* conn, DBusMessage* msg); + /* for TTS feedback */ int vcd_dbus_server_mgr_start_feedback(DBusConnection* conn, DBusMessage* msg);