diff --git a/src/adapter.c b/src/adapter.c
index 5fd5062..4e38877 100644
--- a/src/adapter.c
+++ b/src/adapter.c
}
struct btd_device *adapter_find_device(struct btd_adapter *adapter,
- const char *dest)
+ const bdaddr_t *dst)
{
struct btd_device *device;
+ char addr[18];
GSList *list;
if (!adapter)
return NULL;
- list = g_slist_find_custom(adapter->devices, dest, device_address_cmp);
+ ba2str(dst, addr);
+
+ list = g_slist_find_custom(adapter->devices, addr, device_address_cmp);
if (!list)
return NULL;
}
static struct btd_device *adapter_create_device(struct btd_adapter *adapter,
- const char *address,
+ const bdaddr_t *bdaddr,
uint8_t bdaddr_type)
{
struct btd_device *device;
- DBG("%s", address);
-
- device = device_create(adapter, address, bdaddr_type);
+ device = device_create(adapter, bdaddr, bdaddr_type);
if (!device)
return NULL;
}
struct btd_device *adapter_get_device(struct btd_adapter *adapter,
- const char *address, uint8_t addr_type)
+ const bdaddr_t *addr,
+ uint8_t addr_type)
{
struct btd_device *device;
- DBG("%s", address);
-
if (!adapter)
return NULL;
- device = adapter_find_device(adapter, address);
+ device = adapter_find_device(adapter, addr);
if (device)
return device;
- return adapter_create_device(adapter, address, addr_type);
+ return adapter_create_device(adapter, addr, addr_type);
}
sdp_list_t *btd_adapter_get_services(struct btd_adapter *adapter)
ba2str(&addr->bdaddr, address);
DBG("Adding existing connection to %s", address);
- device = adapter_get_device(adapter, address, addr->type);
+ device = adapter_get_device(adapter, &addr->bdaddr, addr->type);
if (device)
adapter_add_connection(adapter, device);
}
return;
}
- dev = adapter_create_device(adapter, addr, bdaddr_type);
+ dev = adapter_create_device(adapter, bdaddr, bdaddr_type);
} else
dev = list->data;
{
struct service_auth *auth;
struct btd_device *device;
- char address[18];
static guint id = 0;
- ba2str(dst, address);
- device = adapter_find_device(adapter, address);
+ device = adapter_find_device(adapter, dst);
if (!device)
return 0;
ba2str(&ev->addr.bdaddr, addr);
DBG("hci%u %s confirm_hint %u", adapter->dev_id, addr,
ev->confirm_hint);
- device = adapter_get_device(adapter, addr, ev->addr.type);
+ device = adapter_get_device(adapter, &ev->addr.bdaddr, ev->addr.type);
if (!device) {
error("Unable to get device object for %s", addr);
return;
ba2str(&ev->addr.bdaddr, addr);
DBG("hci%u %s", index, addr);
- device = adapter_get_device(adapter, addr, ev->addr.type);
+ device = adapter_get_device(adapter, &ev->addr.bdaddr, ev->addr.type);
if (!device) {
error("Unable to get device object for %s", addr);
return;
ba2str(&ev->addr.bdaddr, addr);
DBG("hci%u %s", index, addr);
- device = adapter_get_device(adapter, addr, ev->addr.type);
+ device = adapter_get_device(adapter, &ev->addr.bdaddr, ev->addr.type);
if (!device) {
error("Unable to get device object for %s", addr);
return;
DBG("hci%u %s", adapter->dev_id, addr);
- device = adapter_get_device(adapter, addr, ev->addr.type);
+ device = adapter_get_device(adapter, &ev->addr.bdaddr, ev->addr.type);
if (!device) {
error("Unable to get device object for %s", addr);
return;
uint8_t addr_type, uint8_t status)
{
struct btd_device *device;
- char addr[18];
- ba2str(bdaddr, addr);
if (status == 0)
- device = adapter_get_device(adapter, addr, addr_type);
+ device = adapter_get_device(adapter, bdaddr, addr_type);
else
- device = adapter_find_device(adapter, addr);
+ device = adapter_find_device(adapter, bdaddr);
if (device != NULL)
device_bonding_complete(device, status);
DBG("Device %s disconnected, reason %u", dst, reason);
- device = adapter_find_device(adapter, dst);
+ device = adapter_find_device(adapter, &addr->bdaddr);
if (device)
adapter_remove_connection(adapter, device);
return;
}
- device = adapter_get_device(adapter, dst, addr->type);
+ device = adapter_get_device(adapter, &addr->bdaddr, addr->type);
if (!device) {
error("Unable to get device object for %s", dst);
return;
DBG("hci%u new LTK for %s authenticated %u enc_size %u",
adapter->dev_id, dst, ev->key.authenticated, ev->key.enc_size);
- device = adapter_get_device(adapter, dst, addr->type);
+ device = adapter_get_device(adapter, &addr->bdaddr, addr->type);
if (!device) {
error("Unable to get device object for %s", dst);
return;
DBG("hci%u device %s connected eir_len %u", index, addr, eir_len);
- device = adapter_get_device(adapter, addr, ev->addr.type);
+ device = adapter_get_device(adapter, &ev->addr.bdaddr, ev->addr.type);
if (!device) {
error("Unable to get device object for %s", addr);
return;
ba2str(&ev->addr.bdaddr, addr);
DBG("hci%u %s blocked", index, addr);
- device = adapter_find_device(adapter, addr);
+ device = adapter_find_device(adapter, &ev->addr.bdaddr);
if (device)
device_block(device, TRUE);
}
ba2str(&ev->addr.bdaddr, addr);
DBG("hci%u %s unblocked", index, addr);
- device = adapter_find_device(adapter, addr);
+ device = adapter_find_device(adapter, &ev->addr.bdaddr);
if (device)
device_unblock(device, FALSE, TRUE);
}
DBG("hci%u %s status %u", index, addr, ev->status);
- device = adapter_find_device(adapter, addr);
+ device = adapter_find_device(adapter, &ev->addr.bdaddr);
if (device) {
if (device_is_bonding(device, NULL))
device_bonding_failed(device, ev->status);
DBG("hci%u addr %s", index, addr);
- device = adapter_find_device(adapter, addr);
+ device = adapter_find_device(adapter, &ev->addr.bdaddr);
if (!device) {
warn("No device object for unpaired device %s", addr);
return;
diff --git a/src/adapter.h b/src/adapter.h
index 6e1ba9d..2787631 100644
--- a/src/adapter.h
+++ b/src/adapter.h
uint32_t btd_adapter_get_class(struct btd_adapter *adapter);
const char *btd_adapter_get_name(struct btd_adapter *adapter);
struct btd_device *adapter_get_device(struct btd_adapter *adapter,
- const char *address, uint8_t addr_type);
+ const bdaddr_t *addr,
+ uint8_t addr_type);
sdp_list_t *btd_adapter_get_services(struct btd_adapter *adapter);
-struct btd_device *adapter_find_device(struct btd_adapter *adapter, const char *dest);
+struct btd_device *adapter_find_device(struct btd_adapter *adapter,
+ const bdaddr_t *dst);
const char *adapter_get_path(struct btd_adapter *adapter);
const bdaddr_t *adapter_get_address(struct btd_adapter *adapter);
diff --git a/src/attrib-server.c b/src/attrib-server.c
index b2360c3..99656e3 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
struct gatt_channel *channel;
GIOChannel *io;
GError *gerr = NULL;
- char addr[18];
uint16_t cid;
guint mtu = 0;
channel->server = server;
- ba2str(&channel->dst, addr);
-
- device = adapter_find_device(server->adapter, addr);
+ device = adapter_find_device(server->adapter, &channel->dst);
if (device == NULL) {
error("Device object not found for attrib server");
g_free(channel);
diff --git a/src/device.c b/src/device.c
index 1fd7777..1f5b702 100644
--- a/src/device.c
+++ b/src/device.c
}
struct btd_device *device_create(struct btd_adapter *adapter,
- const char *address, uint8_t bdaddr_type)
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
struct btd_device *device;
- const bdaddr_t *src;
- char srcaddr[18];
+ const bdaddr_t *sba;
+ char src[18], dst[18];
char *str;
- DBG("address %s", address);
+ ba2str(bdaddr, dst);
+ DBG("dst %s", dst);
- device = device_new(adapter, address);
+ device = device_new(adapter, dst);
if (device == NULL)
return NULL;
device->bdaddr_type = bdaddr_type;
- src = adapter_get_address(adapter);
- ba2str(src, srcaddr);
+ sba = adapter_get_address(adapter);
+ ba2str(sba, src);
- str = load_cached_name(device, srcaddr, address);
+ str = load_cached_name(device, src, dst);
if (str) {
strcpy(device->name, str);
g_free(str);
diff --git a/src/device.h b/src/device.h
index a86fd59..696632c 100644
--- a/src/device.h
+++ b/src/device.h
struct btd_device;
struct btd_device *device_create(struct btd_adapter *adapter,
- const char *address, uint8_t bdaddr_type);
+ const bdaddr_t *address, uint8_t bdaddr_type);
struct btd_device *device_create_from_storage(struct btd_adapter *adapter,
const char *address, GKeyFile *key_file);
char *btd_device_get_storage_path(struct btd_device *device,
diff --git a/src/profile.c b/src/profile.c
index b0c8500..de0a4a0 100644
--- a/src/profile.c
+++ b/src/profile.c
bdaddr_t *src, bdaddr_t *dst)
{
struct btd_device *device;
- char addr[18];
struct ext_io *conn;
GIOCondition cond;
const char *remote_uuid = server->ext->remote_uuids[0];
conn->ext = server->ext;
conn->adapter = btd_adapter_ref(server->adapter);
- ba2str(dst, addr);
- device = adapter_find_device(server->adapter, addr);
+ device = adapter_find_device(server->adapter, dst);
if (device)
conn->device = btd_device_ref(device);