From: Luiz Augusto von Dentz Date: Thu, 14 Apr 2022 00:17:01 +0000 (-0700) Subject: adapter: Add btd_adapter_find_device_by_fd X-Git-Tag: accepted/tizen/unified/20230608.164325~126 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eda76471f745081b3302b1fb74bb3ded112ae565;p=platform%2Fupstream%2Fbluez.git adapter: Add btd_adapter_find_device_by_fd This adds btd_adapter_find_device_by_fd that lookup a device by a fd socket destination address. Signed-off-by: Manika Shrivastava Signed-off-by: Ayush Garg --- diff --git a/src/adapter.c b/src/adapter.c index 97e8512..daac434 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1908,6 +1908,39 @@ struct btd_device *btd_adapter_get_device(struct btd_adapter *adapter, return adapter_create_device(adapter, addr, addr_type); } +struct btd_device *btd_adapter_find_device_by_fd(int fd) +{ + bdaddr_t src, dst; + uint8_t dst_type; + GIOChannel *io = NULL; + GError *gerr = NULL; + struct btd_adapter *adapter; + + io = g_io_channel_unix_new(fd); + if (!io) + return NULL; + + bt_io_get(io, &gerr, + BT_IO_OPT_SOURCE_BDADDR, &src, + BT_IO_OPT_DEST_BDADDR, &dst, + BT_IO_OPT_DEST_TYPE, &dst_type, + BT_IO_OPT_INVALID); + if (gerr) { + error("bt_io_get: %s", gerr->message); + g_error_free(gerr); + g_io_channel_unref(io); + return NULL; + } + + g_io_channel_unref(io); + + adapter = adapter_find(&src); + if (!adapter) + return NULL; + + return btd_adapter_find_device(adapter, &dst, dst_type); +} + sdp_list_t *btd_adapter_get_services(struct btd_adapter *adapter) { return adapter->services; diff --git a/src/adapter.h b/src/adapter.h index 628d02d..635632d 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -162,6 +162,7 @@ struct btd_device *btd_adapter_find_device(struct btd_adapter *adapter, uint8_t dst_type); struct btd_device *btd_adapter_find_device_by_path(struct btd_adapter *adapter, const char *path); +struct btd_device *btd_adapter_find_device_by_fd(int fd); #ifdef TIZEN_FEATURE_BLUEZ_MODIFY void btd_adapter_update_found_device(struct btd_adapter *adapter,