Diff between a332daeba9235d8bd419dc6b81b23215131355ca and 3be6d4a82f746e0570bb16b0b550baffa63c74aa

Changed Files

File Additions Deletions Status
android/adapter.c +7 -7 modified
android/adapter.h +1 -1 modified
android/main.c +9 -6 modified

Full Patch

diff --git a/android/adapter.c b/android/adapter.c
index 001059a..dcb823b 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -950,11 +950,11 @@ static void load_link_keys_complete(uint8_t status, uint16_t length,
 
 	DBG("status %u", status);
 
-	cb(0);
+	cb(0, &adapter.bdaddr);
 	return;
 
 failed:
-	cb(err);
+	cb(err, NULL);
 }
 
 static void load_link_keys(GSList *keys, bt_adapter_ready cb)
@@ -989,7 +989,7 @@ static void load_link_keys(GSList *keys, bt_adapter_ready cb)
 
 	if (id == 0) {
 		error("Failed to load link keys");
-		cb(-EIO);
+		cb(-EIO, NULL);
 	}
 }
 
@@ -1336,7 +1336,7 @@ static void read_info_complete(uint8_t status, uint16_t length, const void *para
 	return;
 
 failed:
-	cb(err);
+	cb(err, NULL);
 }
 
 static void mgmt_index_added_event(uint16_t index, uint16_t length,
@@ -1358,7 +1358,7 @@ static void mgmt_index_added_event(uint16_t index, uint16_t length,
 
 	if (mgmt_send(mgmt_if, MGMT_OP_READ_INFO, index, 0, NULL,
 				read_info_complete, cb, NULL) == 0) {
-		cb(-EIO);
+		cb(-EIO, NULL);
 		return;
 	}
 }
@@ -1425,7 +1425,7 @@ static void read_index_list_complete(uint8_t status, uint16_t length,
 	return;
 
 failed:
-	cb(-EIO);
+	cb(-EIO, NULL);
 }
 
 static void read_version_complete(uint8_t status, uint16_t length,
@@ -1471,7 +1471,7 @@ static void read_version_complete(uint8_t status, uint16_t length,
 	error("Failed to read controller index list");
 
 failed:
-	cb(-EIO);
+	cb(-EIO, NULL);
 }
 
 bool bt_adapter_start(int index, bt_adapter_ready cb)
diff --git a/android/adapter.h b/android/adapter.h
index e8993f2..68f2046 100644
--- a/android/adapter.h
+++ b/android/adapter.h
@@ -21,7 +21,7 @@
  *
  */
 
-typedef void (*bt_adapter_ready)(int err);
+typedef void (*bt_adapter_ready)(int err, const bdaddr_t *addr);
 bool bt_adapter_start(int index, bt_adapter_ready cb);
 
 typedef void (*bt_adapter_stopped)(void);
diff --git a/android/main.c b/android/main.c
index 8164819..553f2e0 100644
--- a/android/main.c
+++ b/android/main.c
@@ -65,6 +65,8 @@
 
 static guint bluetooth_start_timeout = 0;
 
+static bdaddr_t adapter_bdaddr;
+
 static GMainLoop *event_loop;
 
 static GIOChannel *hal_cmd_io = NULL;
@@ -75,7 +77,6 @@ static bool services[HAL_SERVICE_ID_MAX + 1] = { false };
 static void service_register(void *buf, uint16_t len)
 {
 	struct hal_cmd_register_module *m = buf;
-	const bdaddr_t *adapter_bdaddr = bt_adapter_get_address();
 	int sk = g_io_channel_unix_get_fd(hal_notif_io);
 
 	if (m->service_id > HAL_SERVICE_ID_MAX || services[m->service_id])
@@ -88,22 +89,22 @@ static void service_register(void *buf, uint16_t len)
 
 		break;
 	case HAL_SERVICE_ID_SOCK:
-		if (!bt_socket_register(sk, adapter_bdaddr))
+		if (!bt_socket_register(sk, &adapter_bdaddr))
 			goto failed;
 
 		break;
 	case HAL_SERVICE_ID_HIDHOST:
-		if (!bt_hid_register(sk, adapter_bdaddr))
+		if (!bt_hid_register(sk, &adapter_bdaddr))
 			goto failed;
 
 		break;
 	case HAL_SERVICE_ID_A2DP:
-		if (!bt_a2dp_register(sk, adapter_bdaddr))
+		if (!bt_a2dp_register(sk, &adapter_bdaddr))
 			goto failed;
 
 		break;
 	case HAL_SERVICE_ID_PAN:
-		if (!bt_pan_register(sk, adapter_bdaddr))
+		if (!bt_pan_register(sk, &adapter_bdaddr))
 			goto failed;
 
 		break;
@@ -372,13 +373,15 @@ static gboolean cmd_connect_cb(GIOChannel *io, GIOCondition cond,
 	return FALSE;
 }
 
-static void adapter_ready(int err)
+static void adapter_ready(int err, const bdaddr_t *addr)
 {
 	if (err < 0) {
 		error("Adapter initialization failed: %s", strerror(-err));
 		exit(EXIT_FAILURE);
 	}
 
+	bacpy(&adapter_bdaddr, addr);
+
 	if (bluetooth_start_timeout > 0) {
 		g_source_remove(bluetooth_start_timeout);
 		bluetooth_start_timeout = 0;