Add mgr dbus for set_audio_streaming_mode 99/250599/7 submit/tizen/20210201.095542 submit/tizen/20210202.020818
authorsungrae jo <seongrae.jo@samsung.com>
Tue, 5 Jan 2021 02:18:48 +0000 (11:18 +0900)
committersungrae jo <seongrae.jo@samsung.com>
Tue, 5 Jan 2021 06:26:30 +0000 (15:26 +0900)
Change-Id: I69262206664f94848040a99a11db5ce2cb384016
Signed-off-by: sungrae jo <seongrae.jo@samsung.com>
client/vc_mgr.c
client/vc_mgr_dbus.c
client/vc_mgr_dbus.h
common/vc_defs.h
server/vcd_config.c
server/vcd_dbus.c
server/vcd_dbus_server.c
server/vcd_dbus_server.h

index 3caa9ae2adb1a66c12185e20f2ac7b1c40a376f9..e9703c6041d60ef80f103b65f9bc048c9f80d479 100755 (executable)
@@ -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)
index f9a54933a489b433eaeaf95f30c8a4c2336645cd..7e2b8756c45776248320ce2f1bc38497bbf2cd8b 100755 (executable)
@@ -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;
 }
-
index 7d706f1ed23d0ff3edba68d319d8bd76d650b5f3..c1440249d916e458fe336cf6bbb68c1c99ab395e 100644 (file)
@@ -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
index 40111317ec53be400e4259ed7095e1268924935c..21c2e58563f3a30adaeeccdbbd4f14b4617f110e 100644 (file)
@@ -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"
index 0f6131766f006ac11e4abcb6d4a20185c5c6e0c2..cdf2f3dc7ec8596cc5fc53f6e2ad346f796e69b5 100644 (file)
@@ -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;
 }
index 1ef35c22ec316ec467a99aff56fffae8db62585a..7811988cfb5d69d5f74b0df8dd6afc997e00bed6 100755 (executable)
@@ -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);
index 119d5f8fb7f4f6742bd6ae8ccd63413f1a6292e8..d7314dec3225eb271aaaaeae11fab55906ccbaa7 100755 (executable)
@@ -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
 */
index 7890502212d4df4900eaf5df56b127930cc7f39c..dca8add8083a3fa0da78ba5e0a9177b5fda78763 100644 (file)
@@ -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);