device-manager-dbus: Add new DBus method to get device state 28/187828/2 accepted/tizen/unified/20180830.060737 submit/tizen/20180829.052026
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 28 Aug 2018 23:22:57 +0000 (08:22 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 29 Aug 2018 01:45:40 +0000 (10:45 +0900)
IsDeviceRunningById
 : arg#1 (in)  int32 for device_id
   arg#2 (out) boolean for running state

[Version] 11.1.25
[Issue type] new API

Change-Id: I26c280b9cb4e5da19196af11880e38e840f8f3b8
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/pulseaudio-modules-tizen.spec
src/device-manager-dbus.c

index 361fb39..c0eb8bd 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          11.1.24
+Version:          11.1.25
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index 99b7c91..a878ea2 100644 (file)
     "   <arg name=\"device_id\" direction=\"in\" type=\"i\"/>\n"                            \
     "   <arg name=\"device\" direction=\"out\" type=\"(isiisii)\"/>\n"                      \
     "  </method>\n"                                                                         \
+    "  <method name=\"IsDeviceRunningById\">\n"                                             \
+    "   <arg name=\"device_id\" direction=\"in\" type=\"i\"/>\n"                            \
+    "   <arg name=\"is_running\" direction=\"out\" type=\"b\"/>\n"                          \
+    "  </method>\n"                                                                         \
     "  <method name=\"IsStreamOnDevice\">\n"                                                \
     "   <arg name=\"stream_id\" direction=\"in\" type=\"i\"/>\n"                            \
     "   <arg name=\"device_id\" direction=\"in\" type=\"i\"/>\n"                            \
@@ -191,6 +195,7 @@ do { \
 /*** Defines for method handle ***/
 static void handle_get_connected_device_list(DBusConnection *conn, DBusMessage *msg, void *userdata);
 static void handle_get_device_by_id(DBusConnection *conn, DBusMessage *msg, void *userdata);
+static void handle_is_device_running_by_id(DBusConnection *conn, DBusMessage *msg, void *userdata);
 static void handle_is_stream_on_device(DBusConnection *conn, DBusMessage *msg, void *userdata);
 static void handle_get_bt_a2dp_status(DBusConnection *conn, DBusMessage *msg, void *userdata);
 static void handle_get_supported_sample_formats(DBusConnection *conn, DBusMessage *msg, void *userdata);
@@ -215,6 +220,7 @@ static int method_call_bt_get_name(DBusConnection *conn, const char *device_path
 enum method_handler_index {
     METHOD_HANDLER_GET_CONNECTED_DEVICE_LIST,
     METHOD_HANDLER_GET_DEVICE_BY_ID,
+    METHOD_HANDLER_IS_DEVICE_RUNNING_BY_ID,
     METHOD_HANDLER_IS_STREAM_ON_DEVICE,
     METHOD_HANDLER_GET_BT_A2DP_STATUS,
     METHOD_HANDLER_LOAD_SINK,
@@ -243,6 +249,9 @@ static pa_dbus_method_handler method_handlers[METHOD_HANDLER_MAX] = {
     [METHOD_HANDLER_GET_DEVICE_BY_ID] = {
         .method_name = "GetDeviceById",
         .receive_cb = handle_get_device_by_id },
+    [METHOD_HANDLER_IS_DEVICE_RUNNING_BY_ID] = {
+        .method_name = "IsDeviceRunningById",
+        .receive_cb = handle_is_device_running_by_id },
     [METHOD_HANDLER_IS_STREAM_ON_DEVICE] = {
         .method_name = "IsStreamOnDevice",
         .receive_cb = handle_is_stream_on_device },
@@ -761,6 +770,43 @@ static void handle_get_device_by_id(DBusConnection *conn, DBusMessage *msg, void
     }
 }
 
+static void handle_is_device_running_by_id(DBusConnection *conn, DBusMessage *msg, void *userdata)
+{
+    pa_device_manager *manager;
+    DBusMessage *reply;
+    pa_tz_device *device;
+    dbus_int32_t device_id;
+    dbus_bool_t is_running;
+
+    pa_assert(conn);
+    pa_assert(msg);
+    pa_assert(userdata);
+
+    manager = (pa_device_manager *)userdata;
+
+    pa_assert_se(dbus_message_get_args(msg, NULL,
+                                       DBUS_TYPE_INT32, &device_id,
+                                       DBUS_TYPE_INVALID));
+
+    pa_log_info("Is device running by id(%d)", device_id);
+
+    if ((device = device_list_get_device_by_id(manager, device_id))) {
+        pa_assert_se((reply = dbus_message_new_method_return(msg)));
+
+        is_running = pa_tz_device_is_running(device);
+
+        pa_log_info("device(id:%d) is %s", device_id, is_running ? "Running" : "Not Running");
+
+        pa_assert_se(dbus_message_append_args(reply, DBUS_TYPE_BOOLEAN, &is_running,
+                                              DBUS_TYPE_INVALID));
+
+        pa_assert_se(dbus_connection_send(conn, reply, NULL));
+        dbus_message_unref(reply);
+    } else {
+        pa_dbus_send_error(conn, msg, DBUS_ERROR_FAILED, "%s", "org.tizen.multimedia.audio.Internal");
+    }
+}
+
 static void handle_is_stream_on_device(DBusConnection *conn, DBusMessage *msg, void *userdata) {
     pa_device_manager *manager;
     DBusMessage *reply;