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)
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];
return result;
}
-
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
#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"
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;
}
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);
}
+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
*/
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);