Merge changes I9fd5e4cb,I59872b1a into main am: 66f0636c0e am: 3dbf2ea7fb
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/3114545
Change-Id: I2a1074b38eafc40c7ae194bba0745096da0febae
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/bluetooth/aidl/default/net_bluetooth_mgmt.cpp b/bluetooth/aidl/default/net_bluetooth_mgmt.cpp
index 0699781..24693ef 100644
--- a/bluetooth/aidl/default/net_bluetooth_mgmt.cpp
+++ b/bluetooth/aidl/default/net_bluetooth_mgmt.cpp
@@ -161,6 +161,16 @@
struct mgmt_ev_read_index_list* data =
(struct mgmt_ev_read_index_list*)ev.data;
+ // Prefer the exact hci_interface
+ for (int i = 0; i < data->num_controllers; i++) {
+ if (data->index[i] == hci_interface) {
+ ALOGI("hci interface %d found", data->index[i]);
+ ret = data->index[i];
+ goto end;
+ }
+ }
+
+ // Accept a larger one if we can't find the exact one
for (int i = 0; i < data->num_controllers; i++) {
if (data->index[i] >= hci_interface) {
ALOGI("hci interface %d found", data->index[i]);
@@ -173,7 +183,7 @@
// Received [Index Added] event.
if (ev.opcode == MGMT_EV_INDEX_ADDED && ev.index == hci_interface) {
ALOGI("hci interface %d added", hci_interface);
- ret = 0;
+ ret = hci_interface;
goto end;
}
}
@@ -253,9 +263,9 @@
rfkill(1);
// Wait for the HCI interface to complete initialization or to come online.
- hci_interface = waitHciDev(hci_interface);
- if (hci_interface < 0) {
- ALOGE("hci interface not found");
+ int hci = waitHciDev(hci_interface);
+ if (hci < 0) {
+ ALOGE("hci interface %d not found", hci_interface);
return -1;
}
@@ -268,7 +278,7 @@
struct sockaddr_hci hci_addr = {
.hci_family = AF_BLUETOOTH,
- .hci_dev = static_cast<uint16_t>(hci_interface),
+ .hci_dev = static_cast<uint16_t>(hci),
.hci_channel = HCI_CHANNEL_USER,
};
@@ -279,7 +289,7 @@
return -1;
}
- ALOGI("hci interface %d ready", hci_interface);
+ ALOGI("hci interface %d ready", hci);
bt_fd_ = fd;
return fd;
}