diff options
author | Jakub Tyszkowski <jakub.tyszkowski@tieto.com> | 2014-11-06 10:30:38 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2014-11-09 20:40:44 +0100 |
commit | e06725834c5282fe393fb24ece7a0aaf4000517d (patch) | |
tree | a93af7f9308565c01bb9b7010430a0ba5951b3a8 | |
parent | 7ad8f2d33ecf88c5e18d529dc6b8da69fbf55cb8 (diff) | |
download | bluez-e06725834c5282fe393fb24ece7a0aaf4000517d.tar.gz |
android/gatt: Use proper identity address for auto connect
We should behave the same as when we connect using active scan.
-rw-r--r-- | android/gatt.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/android/gatt.c b/android/gatt.c index 8b6810c71..2fad5ee58 100644 --- a/android/gatt.c +++ b/android/gatt.c @@ -584,8 +584,24 @@ static void device_set_state(struct gatt_device *dev, uint32_t state) static bool auto_connect_le(struct gatt_device *dev) { /* For LE devices use auto connect feature if possible */ - if (bt_kernel_conn_control()) - return bt_auto_connect_add(&dev->bdaddr); + if (bt_kernel_conn_control()) { + const bdaddr_t *bdaddr; + + /* + * If address type is random it might be that IRK was received + * and random is just for faking Android Framework. ID address + * should be used for connection if present. + */ + if (dev->bdaddr_type == BDADDR_LE_RANDOM) { + bdaddr = bt_get_id_addr(&dev->bdaddr, NULL); + if (!bdaddr) + return -EINVAL; + } else { + bdaddr = &dev->bdaddr; + } + + return bt_auto_connect_add(bdaddr); + } /* Trigger discovery if not already started */ if (!scanning) { |