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)
if (id == 0) {
error("Failed to load link keys");
- cb(-EIO);
+ cb(-EIO, NULL);
}
}
return;
failed:
- cb(err);
+ cb(err, NULL);
}
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;
}
}
return;
failed:
- cb(-EIO);
+ cb(-EIO, NULL);
}
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)
static guint bluetooth_start_timeout = 0;
+static bdaddr_t adapter_bdaddr;
+
static GMainLoop *event_loop;
static GIOChannel *hal_cmd_io = NULL;
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])
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;
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;