add handle_remote_pulse_device 84/239284/1
authorSeungbae Shin <seungbae.shin@samsung.com>
Thu, 23 Jul 2020 10:28:16 +0000 (19:28 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Thu, 23 Jul 2020 10:28:16 +0000 (19:28 +0900)
Change-Id: Ief48ffa9bef20c84ffbd212d5412ef2c600785d5

src/device-manager.c
src/tizen-device-def.h

index 63d13a9e559c37e364337964eec46462f6b0f031..b4f510d0b3055f7ac34acb607742ffcf904ece13 100644 (file)
@@ -1482,6 +1482,44 @@ static void handle_raop_pulse_device(pa_object *pdevice, bool is_loaded, pa_devi
     }
 }
 
+
+static void handle_remote_pulse_device(pa_object *pdevice, bool is_loaded, pa_device_manager *dm) {
+    dm_device_direction_t direction;
+    pa_tz_device *device;
+    const char *system_id;
+
+    pa_assert(pdevice);
+    pa_assert(dm);
+
+    pa_log_info("Handle REMOTE pulse device");
+
+    direction = pulse_device_get_direction(pdevice);
+    system_id = pulse_device_get_system_id(pdevice);
+
+    if (is_loaded) {
+        pa_tz_device_new_data data;
+
+        pa_proplist *prop = pulse_device_get_proplist(pdevice);
+        const char *name = pa_proplist_gets(prop, PA_PROP_DEVICE_DESCRIPTION);
+
+        pa_tz_device_new_data_init(&data, dm->device_list, dm->comm, dm->dbus_conn);
+        _fill_new_data_basic(&data, DEVICE_TYPE_NETWORK, direction, false, dm);
+        pa_tz_device_new_data_set_name(&data, name);
+        pa_tz_device_new_data_set_system_id(&data, system_id);
+        if (direction == DM_DEVICE_DIRECTION_OUT)
+            pa_tz_device_new_data_add_sink(&data, DEVICE_ROLE_REMOTE, PA_SINK(pdevice));
+        else
+            pa_tz_device_new_data_add_source(&data, DEVICE_ROLE_REMOTE, PA_SOURCE(pdevice));
+        pa_tz_device_new(&data);
+        pa_tz_device_new_data_done(&data);
+    } else {
+        if (!(device = device_list_get_device(dm, DEVICE_TYPE_NETWORK, NULL, system_id)))
+            pa_log_warn("Can't get REMOTE device for %s", system_id);
+        else
+            pa_tz_device_free(device);
+    }
+}
+
 static void handle_acm_pulse_device(pa_object *pdevice, bool is_loaded, pa_device_manager *dm) {
     pa_tz_device *device;
 
@@ -1750,7 +1788,7 @@ static pa_hook_result_t source_proplist_changed(pa_core *core, pa_source *source
     if (remote_access) {
         /* FIXME : handle same value as before */
         pulse_device_set_use_internal_codec(PA_OBJECT(source), false);
-        handle_raop_pulse_device(PA_OBJECT(source), pa_safe_streq(remote_access, "allowed"), dm);
+        handle_remote_pulse_device(PA_OBJECT(source), pa_safe_streq(remote_access, "allowed"), dm);
     }
     return PA_HOOK_OK;
 }
@@ -1763,7 +1801,7 @@ static pa_hook_result_t sink_proplist_changed(pa_core *core, pa_sink *sink, pa_d
     if (remote_access) {
         /* FIXME : handle same value as before */
         pulse_device_set_use_internal_codec(PA_OBJECT(sink), false);
-        handle_raop_pulse_device(PA_OBJECT(sink), pa_safe_streq(remote_access, "allowed"), dm);
+        handle_remote_pulse_device(PA_OBJECT(sink), pa_safe_streq(remote_access, "allowed"), dm);
     }
     return PA_HOOK_OK;
 }
index ed91400c70900f1cec64d4ec197e8f21cb11925c..787c74b4f9c71d457cde32812de138f1cf23e8fb 100644 (file)
@@ -27,6 +27,7 @@
 #define DEVICE_ROLE_HIGH_LATENCY            "high-latency"
 #define DEVICE_ROLE_UHQA                    "uhqa"
 #define DEVICE_ROLE_RAOP                    "raop"
+#define DEVICE_ROLE_REMOTE                  "remote"
 #define DEVICE_ROLE_ACM                     "acm"
 
 typedef enum dm_device_direction_type {