* [PATCH 7/7] device: Make device_get_address return const pointer
From: Szymon Janc @ 2012-10-05 8:17 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1349425021-16766-1-git-send-email-szymon.janc@tieto.com>
---
src/device.c | 2 +-
src/device.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/device.c b/src/device.c
index 72cae3b..1c65b68 100644
--- a/src/device.c
+++ b/src/device.c
@@ -2312,7 +2312,7 @@ struct btd_adapter *device_get_adapter(struct btd_device *device)
return device->adapter;
}
-bdaddr_t *device_get_address(struct btd_device *device)
+const bdaddr_t *device_get_address(struct btd_device *device)
{
return &device->bdaddr;
}
diff --git a/src/device.h b/src/device.h
index f919af4..0c16c18 100644
--- a/src/device.h
+++ b/src/device.h
@@ -64,7 +64,7 @@ void btd_device_add_uuid(struct btd_device *device, const char *uuid);
void device_probe_profile(gpointer a, gpointer b);
void device_remove_profile(gpointer a, gpointer b);
struct btd_adapter *device_get_adapter(struct btd_device *device);
-bdaddr_t *device_get_address(struct btd_device *device);
+const bdaddr_t *device_get_address(struct btd_device *device);
void device_set_addr_type(struct btd_device *device, uint8_t bdaddr_type);
uint8_t device_get_addr_type(struct btd_device *device);
const gchar *device_get_path(struct btd_device *device);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 6/7] adapter: Constify use of bdaddr_t pointer parameters
From: Szymon Janc @ 2012-10-05 8:17 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1349425021-16766-1-git-send-email-szymon.janc@tieto.com>
Mark all input only bdaddr_t pointer parameters as const.
---
src/adapter.c | 52 +++++++++++++++++++++++++++++-----------------------
src/adapter.h | 51 +++++++++++++++++++++++++++++----------------------
2 files changed, 58 insertions(+), 45 deletions(-)
diff --git a/src/adapter.c b/src/adapter.c
index 152d3bd..7e695b9 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2037,14 +2037,14 @@ static void load_devices(struct btd_adapter *adapter)
textfile_foreach(filename, create_stored_device_from_blocked, adapter);
}
-int btd_adapter_block_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type)
+int btd_adapter_block_address(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
return mgmt_block_device(adapter->dev_id, bdaddr, bdaddr_type);
}
-int btd_adapter_unblock_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type)
+int btd_adapter_unblock_address(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
return mgmt_unblock_device(adapter->dev_id, bdaddr,
bdaddr_type);
@@ -2751,7 +2751,7 @@ static int found_device_cmp(gconstpointer a, gconstpointer b)
}
struct remote_dev_info *adapter_search_found_devices(struct btd_adapter *adapter,
- bdaddr_t *bdaddr)
+ const bdaddr_t *bdaddr)
{
GSList *l;
@@ -2978,7 +2978,7 @@ static void dev_prepend_uuid(gpointer data, gpointer user_data)
dev->services = g_slist_prepend(dev->services, g_strdup(new_uuid));
}
-static gboolean pairing_is_legacy(bdaddr_t *local, bdaddr_t *peer,
+static gboolean pairing_is_legacy(const bdaddr_t *local, const bdaddr_t *peer,
const uint8_t *eir, const char *name)
{
unsigned char features[8];
@@ -2998,7 +2998,7 @@ static gboolean pairing_is_legacy(bdaddr_t *local, bdaddr_t *peer,
return TRUE;
}
-static char *read_stored_data(bdaddr_t *local, bdaddr_t *peer,
+static char *read_stored_data(const bdaddr_t *local, const bdaddr_t *peer,
uint8_t peer_type, const char *file)
{
char local_addr[18], key[20], filename[PATH_MAX + 1], *str;
@@ -3067,9 +3067,10 @@ static gboolean connect_pending_cb(gpointer user_data)
}
void adapter_update_found_devices(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t bdaddr_type,
- int8_t rssi, uint8_t confirm_name,
- uint8_t *data, uint8_t data_len)
+ const bdaddr_t *bdaddr,
+ uint8_t bdaddr_type, int8_t rssi,
+ uint8_t confirm_name, uint8_t *data,
+ uint8_t data_len)
{
struct remote_dev_info *dev;
struct eir_data eir_data;
@@ -3652,7 +3653,7 @@ int btd_adapter_set_fast_connectable(struct btd_adapter *adapter,
return mgmt_set_fast_connectable(adapter->dev_id, enable);
}
-int btd_adapter_read_clock(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+int btd_adapter_read_clock(struct btd_adapter *adapter, const bdaddr_t *bdaddr,
int which, int timeout, uint32_t *clock,
uint16_t *accuracy)
{
@@ -3664,33 +3665,37 @@ int btd_adapter_read_clock(struct btd_adapter *adapter, bdaddr_t *bdaddr,
}
int btd_adapter_disconnect_device(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t bdaddr_type)
+ const bdaddr_t *bdaddr,
+ uint8_t bdaddr_type)
{
return mgmt_disconnect(adapter->dev_id, bdaddr, bdaddr_type);
}
-int btd_adapter_remove_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type)
+int btd_adapter_remove_bonding(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
return mgmt_unpair_device(adapter->dev_id, bdaddr, bdaddr_type);
}
-int btd_adapter_pincode_reply(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+int btd_adapter_pincode_reply(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr,
const char *pin, size_t pin_len)
{
return mgmt_pincode_reply(adapter->dev_id, bdaddr, pin, pin_len);
}
-int btd_adapter_confirm_reply(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type, gboolean success)
+int btd_adapter_confirm_reply(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type,
+ gboolean success)
{
return mgmt_confirm_reply(adapter->dev_id, bdaddr, bdaddr_type,
success);
}
-int btd_adapter_passkey_reply(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type, uint32_t passkey)
+int btd_adapter_passkey_reply(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type,
+ uint32_t passkey)
{
return mgmt_passkey_reply(adapter->dev_id, bdaddr, bdaddr_type,
passkey);
@@ -3703,14 +3708,14 @@ int btd_adapter_set_did(struct btd_adapter *adapter, uint16_t vendor,
return mgmt_set_did(adapter->dev_id, vendor, product, version, source);
}
-int adapter_create_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+int adapter_create_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr,
uint8_t addr_type, uint8_t io_cap)
{
suspend_discovery(adapter);
return mgmt_create_bonding(adapter->dev_id, bdaddr, addr_type, io_cap);
}
-int adapter_cancel_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr)
+int adapter_cancel_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr)
{
return mgmt_cancel_bonding(adapter->dev_id, bdaddr);
}
@@ -3760,14 +3765,15 @@ int btd_adapter_read_local_oob_data(struct btd_adapter *adapter)
}
int btd_adapter_add_remote_oob_data(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t *hash, uint8_t *randomizer)
+ const bdaddr_t *bdaddr,
+ uint8_t *hash, uint8_t *randomizer)
{
return mgmt_add_remote_oob_data(adapter->dev_id, bdaddr, hash,
randomizer);
}
int btd_adapter_remove_remote_oob_data(struct btd_adapter *adapter,
- bdaddr_t *bdaddr)
+ const bdaddr_t *bdaddr)
{
return mgmt_remove_remote_oob_data(adapter->dev_id, bdaddr);
}
diff --git a/src/adapter.h b/src/adapter.h
index 07c0ad5..72a9988 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -124,11 +124,12 @@ uint16_t adapter_get_dev_id(struct btd_adapter *adapter);
const gchar *adapter_get_path(struct btd_adapter *adapter);
const bdaddr_t *adapter_get_address(struct btd_adapter *adapter);
struct remote_dev_info *adapter_search_found_devices(struct btd_adapter *adapter,
- bdaddr_t *bdaddr);
+ const bdaddr_t *bdaddr);
void adapter_update_found_devices(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t bdaddr_type,
- int8_t rssi, uint8_t confirm_name,
- uint8_t *data, uint8_t data_len);
+ const bdaddr_t *bdaddr,
+ uint8_t bdaddr_type, int8_t rssi,
+ uint8_t confirm_name, uint8_t *data,
+ uint8_t data_len);
void adapter_emit_device_found(struct btd_adapter *adapter,
struct remote_dev_info *dev);
void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode);
@@ -205,36 +206,41 @@ void btd_adapter_unregister_powered_callback(struct btd_adapter *adapter,
int btd_adapter_set_fast_connectable(struct btd_adapter *adapter,
gboolean enable);
-int btd_adapter_read_clock(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+int btd_adapter_read_clock(struct btd_adapter *adapter, const bdaddr_t *bdaddr,
int which, int timeout, uint32_t *clock,
uint16_t *accuracy);
-int btd_adapter_block_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type);
-int btd_adapter_unblock_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type);
+int btd_adapter_block_address(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type);
+int btd_adapter_unblock_address(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type);
int btd_adapter_disconnect_device(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t bdaddr_type);
-
-int btd_adapter_remove_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+ const bdaddr_t *bdaddr,
uint8_t bdaddr_type);
-int btd_adapter_pincode_reply(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+int btd_adapter_remove_bonding(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type);
+
+int btd_adapter_pincode_reply(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr,
const char *pin, size_t pin_len);
-int btd_adapter_confirm_reply(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type, gboolean success);
-int btd_adapter_passkey_reply(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type, uint32_t passkey);
+int btd_adapter_confirm_reply(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type,
+ gboolean success);
+int btd_adapter_passkey_reply(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type,
+ uint32_t passkey);
int btd_adapter_set_did(struct btd_adapter *adapter, uint16_t vendor,
uint16_t product, uint16_t version,
uint16_t source);
-int adapter_create_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t bdaddr_type, uint8_t io_cap);
+int adapter_create_bonding(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t bdaddr_type,
+ uint8_t io_cap);
-int adapter_cancel_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr);
+int adapter_cancel_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr);
void adapter_bonding_complete(struct btd_adapter *adapter,
const bdaddr_t *bdaddr, uint8_t status);
@@ -244,10 +250,11 @@ void adapter_read_local_oob_data_complete(struct btd_adapter *adapter,
uint8_t *hash, uint8_t *randomizer);
int btd_adapter_add_remote_oob_data(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t *hash, uint8_t *randomizer);
+ const bdaddr_t *bdaddr,
+ uint8_t *hash, uint8_t *randomizer);
int btd_adapter_remove_remote_oob_data(struct btd_adapter *adapter,
- bdaddr_t *bdaddr);
+ const bdaddr_t *bdaddr);
int btd_adapter_gatt_server_start(struct btd_adapter *adapter);
void btd_adapter_gatt_server_stop(struct btd_adapter *adapter);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 5/7] mgmt: Constify use of bdaddr_t pointer parameters
From: Szymon Janc @ 2012-10-05 8:16 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1349425021-16766-1-git-send-email-szymon.janc@tieto.com>
Mark all input only bdaddr_t pointer parameters as const.
---
plugins/neard.c | 5 +++--
src/adapter.c | 6 +++---
src/adapter.h | 6 +++---
src/mgmt.c | 31 ++++++++++++++++---------------
src/mgmt.h | 26 +++++++++++++-------------
5 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/plugins/neard.c b/plugins/neard.c
index 2fe1785..2da5024 100644
--- a/plugins/neard.c
+++ b/plugins/neard.c
@@ -216,8 +216,9 @@ static void read_local_complete(struct btd_adapter *adapter, uint8_t *hash,
error("D-Bus send failed");
}
-static void bonding_complete(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t status, void *user_data)
+static void bonding_complete(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t status,
+ void *user_data)
{
DBusMessage *msg = user_data;
DBusMessage *reply;
diff --git a/src/adapter.c b/src/adapter.c
index 46048ad..152d3bd 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3716,7 +3716,7 @@ int adapter_cancel_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr)
}
static void check_oob_bonding_complete(struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t status)
+ const bdaddr_t *bdaddr, uint8_t status)
{
if (!adapter->oob_handler || !adapter->oob_handler->bonding_cb)
return;
@@ -3731,8 +3731,8 @@ static void check_oob_bonding_complete(struct btd_adapter *adapter,
adapter->oob_handler = NULL;
}
-void adapter_bonding_complete(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t status)
+void adapter_bonding_complete(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t status)
{
struct btd_device *device;
char addr[18];
diff --git a/src/adapter.h b/src/adapter.h
index d4fb14b..07c0ad5 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -47,7 +47,7 @@ typedef void (*oob_read_local_cb_t) (struct btd_adapter *adapter,
uint8_t *hash, uint8_t *randomizer,
void *user_data);
typedef void (*oob_bonding_cb_t) (struct btd_adapter *adapter,
- bdaddr_t *bdaddr, uint8_t status,
+ const bdaddr_t *bdaddr, uint8_t status,
void *user_data);
struct oob_handler {
@@ -236,8 +236,8 @@ int adapter_create_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr,
int adapter_cancel_bonding(struct btd_adapter *adapter, bdaddr_t *bdaddr);
-void adapter_bonding_complete(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- uint8_t status);
+void adapter_bonding_complete(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr, uint8_t status);
int btd_adapter_read_local_oob_data(struct btd_adapter *adapter);
void adapter_read_local_oob_data_complete(struct btd_adapter *adapter,
diff --git a/src/mgmt.c b/src/mgmt.c
index b689be8..d3f7809 100644
--- a/src/mgmt.c
+++ b/src/mgmt.c
@@ -432,8 +432,8 @@ static void mgmt_new_settings(int sk, uint16_t index, void *buf, size_t len)
info->current_settings = settings;
}
-static void bonding_complete(struct controller_info *info, bdaddr_t *bdaddr,
- uint8_t status)
+static void bonding_complete(struct controller_info *info,
+ const bdaddr_t *bdaddr, uint8_t status)
{
struct btd_adapter *adapter;
@@ -579,7 +579,7 @@ static void mgmt_connect_failed(int sk, uint16_t index, void *buf, size_t len)
bonding_complete(info, &ev->addr.bdaddr, ev->status);
}
-int mgmt_pincode_reply(int index, bdaddr_t *bdaddr, const char *pin,
+int mgmt_pincode_reply(int index, const bdaddr_t *bdaddr, const char *pin,
size_t pin_len)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_pin_code_reply)];
@@ -660,7 +660,7 @@ static void mgmt_pin_code_request(int sk, uint16_t index, void *buf, size_t len)
}
}
-int mgmt_confirm_reply(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
+int mgmt_confirm_reply(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type,
gboolean success)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_user_confirm_reply)];
@@ -691,7 +691,7 @@ int mgmt_confirm_reply(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
return 0;
}
-int mgmt_passkey_reply(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
+int mgmt_passkey_reply(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type,
uint32_t passkey)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_user_passkey_reply)];
@@ -2130,7 +2130,7 @@ int mgmt_set_fast_connectable(int index, gboolean enable)
return 0;
}
-int mgmt_read_clock(int index, bdaddr_t *bdaddr, int which, int timeout,
+int mgmt_read_clock(int index, const bdaddr_t *bdaddr, int which, int timeout,
uint32_t *clock, uint16_t *accuracy)
{
char addr[18];
@@ -2158,7 +2158,7 @@ int mgmt_read_bdaddr(int index, bdaddr_t *bdaddr)
return 0;
}
-int mgmt_block_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type)
+int mgmt_block_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_block_device)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2187,7 +2187,7 @@ int mgmt_block_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type)
return 0;
}
-int mgmt_unblock_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type)
+int mgmt_unblock_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_unblock_device)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2228,7 +2228,7 @@ int mgmt_get_conn_list(int index, GSList **conns)
return 0;
}
-int mgmt_disconnect(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type)
+int mgmt_disconnect(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_disconnect)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2252,7 +2252,7 @@ int mgmt_disconnect(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type)
return 0;
}
-int mgmt_unpair_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type)
+int mgmt_unpair_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_unpair_device)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2373,7 +2373,8 @@ int mgmt_set_io_capability(int index, uint8_t io_capability)
return 0;
}
-int mgmt_create_bonding(int index, bdaddr_t *bdaddr, uint8_t addr_type, uint8_t io_cap)
+int mgmt_create_bonding(int index, const bdaddr_t *bdaddr, uint8_t addr_type,
+ uint8_t io_cap)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_pair_device)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2399,7 +2400,7 @@ int mgmt_create_bonding(int index, bdaddr_t *bdaddr, uint8_t addr_type, uint8_t
return 0;
}
-int mgmt_cancel_bonding(int index, bdaddr_t *bdaddr)
+int mgmt_cancel_bonding(int index, const bdaddr_t *bdaddr)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_addr_info)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2438,7 +2439,7 @@ int mgmt_read_local_oob_data(int index)
return 0;
}
-int mgmt_add_remote_oob_data(int index, bdaddr_t *bdaddr,
+int mgmt_add_remote_oob_data(int index, const bdaddr_t *bdaddr,
uint8_t *hash, uint8_t *randomizer)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_add_remote_oob_data)];
@@ -2467,7 +2468,7 @@ int mgmt_add_remote_oob_data(int index, bdaddr_t *bdaddr,
return 0;
}
-int mgmt_remove_remote_oob_data(int index, bdaddr_t *bdaddr)
+int mgmt_remove_remote_oob_data(int index, const bdaddr_t *bdaddr)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_remove_remote_oob_data)];
struct mgmt_hdr *hdr = (void *) buf;
@@ -2491,7 +2492,7 @@ int mgmt_remove_remote_oob_data(int index, bdaddr_t *bdaddr)
return 0;
}
-int mgmt_confirm_name(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
+int mgmt_confirm_name(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type,
gboolean name_known)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_confirm_name)];
diff --git a/src/mgmt.h b/src/mgmt.h
index 1d25cb0..a2c0497 100644
--- a/src/mgmt.h
+++ b/src/mgmt.h
@@ -36,18 +36,18 @@ int mgmt_start_discovery(int index);
int mgmt_start_le_scanning(int index);
int mgmt_stop_discovery(int index);
-int mgmt_read_clock(int index, bdaddr_t *bdaddr, int which, int timeout,
+int mgmt_read_clock(int index, const bdaddr_t *bdaddr, int which, int timeout,
uint32_t *clock, uint16_t *accuracy);
int mgmt_read_bdaddr(int index, bdaddr_t *bdaddr);
-int mgmt_block_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type);
-int mgmt_unblock_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type);
+int mgmt_block_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
+int mgmt_unblock_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
int mgmt_get_conn_list(int index, GSList **conns);
-int mgmt_disconnect(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type);
+int mgmt_disconnect(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
-int mgmt_unpair_device(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type);
+int mgmt_unpair_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
int mgmt_add_uuid(int index, uuid_t *uuid, uint8_t svc_hint);
int mgmt_remove_uuid(int index, uuid_t *uuid);
@@ -60,24 +60,24 @@ int mgmt_load_ltks(int index, GSList *keys);
int mgmt_set_io_capability(int index, uint8_t io_capability);
-int mgmt_create_bonding(int index, bdaddr_t *bdaddr, uint8_t addr_type,
+int mgmt_create_bonding(int index, const bdaddr_t *bdaddr, uint8_t addr_type,
uint8_t io_cap);
-int mgmt_cancel_bonding(int index, bdaddr_t *bdaddr);
+int mgmt_cancel_bonding(int index, const bdaddr_t *bdaddr);
-int mgmt_pincode_reply(int index, bdaddr_t *bdaddr, const char *pin,
+int mgmt_pincode_reply(int index, const bdaddr_t *bdaddr, const char *pin,
size_t pin_len);
-int mgmt_confirm_reply(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
+int mgmt_confirm_reply(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type,
gboolean success);
-int mgmt_passkey_reply(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
+int mgmt_passkey_reply(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type,
uint32_t passkey);
int mgmt_read_local_oob_data(int index);
-int mgmt_add_remote_oob_data(int index, bdaddr_t *bdaddr,
+int mgmt_add_remote_oob_data(int index, const bdaddr_t *bdaddr,
uint8_t *hash, uint8_t *randomizer);
-int mgmt_remove_remote_oob_data(int index, bdaddr_t *bdaddr);
+int mgmt_remove_remote_oob_data(int index, const bdaddr_t *bdaddr);
-int mgmt_confirm_name(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
+int mgmt_confirm_name(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type,
gboolean name_known);
int mgmt_ssp_enabled(int index);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 4/7] device: Convert device_get_address into simple getter
From: Szymon Janc @ 2012-10-05 8:16 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1349425021-16766-1-git-send-email-szymon.janc@tieto.com>
This allow to remove number of local variables used only to get device
address and pass it as pointer later on.
bdaddr_type parameter is also removed as there is device_get_addr_type
already present which can be used to get it if needed.
---
attrib/client.c | 42 ++++++++++++++++--------------------------
audio/manager.c | 6 ++----
plugins/wiimote.c | 4 +---
profiles/gatt/gas.c | 20 ++++++++------------
profiles/health/hdp.c | 4 +---
profiles/health/hdp_util.c | 27 +++++++++++++--------------
profiles/input/device.c | 6 +++---
profiles/network/manager.c | 10 +++++-----
profiles/proximity/monitor.c | 11 +++--------
src/adapter.c | 6 ++----
src/device.c | 37 ++++++++++++++-----------------------
src/device.h | 3 +--
src/event.c | 27 +++++++++------------------
src/profile.c | 24 +++++++++---------------
14 files changed, 87 insertions(+), 140 deletions(-)
diff --git a/attrib/client.c b/attrib/client.c
index eea06ae..30513d1 100644
--- a/attrib/client.c
+++ b/attrib/client.c
@@ -222,17 +222,6 @@ static void remove_attio(struct gatt_service *gatt)
}
}
-static void gatt_get_address(struct gatt_service *gatt, bdaddr_t *sba,
- bdaddr_t *dba, uint8_t *bdaddr_type)
-{
- struct btd_device *device = gatt->dev;
- struct btd_adapter *adapter;
-
- adapter = device_get_adapter(device);
- bacpy(sba, adapter_get_address(adapter));
- device_get_address(device, dba, bdaddr_type);
-}
-
static int characteristic_handle_cmp(gconstpointer a, gconstpointer b)
{
const struct characteristic *chr = a;
@@ -684,14 +673,15 @@ static GSList *string_to_characteristic_list(struct gatt_service *gatt,
static GSList *load_characteristics(struct gatt_service *gatt, uint16_t start)
{
+ struct btd_device *device = gatt->dev;
+ struct btd_adapter *adapter = device_get_adapter(device);
GSList *chrs_list;
- bdaddr_t sba, dba;
- uint8_t bdaddr_type;
char *str;
- gatt_get_address(gatt, &sba, &dba, &bdaddr_type);
-
- str = read_device_characteristics(&sba, &dba, bdaddr_type, start);
+ str = read_device_characteristics(adapter_get_address(adapter),
+ device_get_address(device),
+ device_get_addr_type(device),
+ start);
if (str == NULL)
return NULL;
@@ -705,8 +695,7 @@ static GSList *load_characteristics(struct gatt_service *gatt, uint16_t start)
static void store_attribute(struct gatt_service *gatt, uint16_t handle,
uint16_t type, uint8_t *value, gsize len)
{
- bdaddr_t sba, dba;
- uint8_t bdaddr_type;
+ struct btd_device *device = gatt->dev;
bt_uuid_t uuid;
char *str, *tmp;
guint i;
@@ -721,9 +710,9 @@ static void store_attribute(struct gatt_service *gatt, uint16_t handle,
for (i = 0, tmp = str + MAX_LEN_UUID_STR; i < len; i++, tmp += 2)
sprintf(tmp, "%02X", value[i]);
- gatt_get_address(gatt, &sba, &dba, &bdaddr_type);
-
- write_device_attribute(&sba, &dba, bdaddr_type, handle, str);
+ write_device_attribute(adapter_get_address(device_get_adapter(device)),
+ device_get_address(device),
+ device_get_addr_type(device), handle, str);
g_free(str);
}
@@ -964,9 +953,9 @@ static void char_discovered_cb(GSList *characteristics, guint8 status,
struct gatt_service *gatt = current->gatt;
struct gatt_primary *prim = gatt->prim;
uint16_t *previous_end = NULL;
+ struct btd_device *device = gatt->dev;
+ struct btd_adapter *adapter = device_get_adapter(device);
GSList *l;
- bdaddr_t sba, dba;
- uint8_t bdaddr_type;
if (status != 0) {
const char *str = att_ecode2str(status);
@@ -1005,9 +994,10 @@ static void char_discovered_cb(GSList *characteristics, guint8 status,
if (previous_end)
*previous_end = prim->range.end;
- gatt_get_address(gatt, &sba, &dba, &bdaddr_type);
- store_characteristics(&sba, &dba, bdaddr_type, prim->range.start,
- gatt->chars);
+ store_characteristics(adapter_get_address(adapter),
+ device_get_address(device),
+ device_get_addr_type(device),
+ prim->range.start, gatt->chars);
g_slist_foreach(gatt->chars, update_all_chars, gatt);
diff --git a/audio/manager.c b/audio/manager.c
index e6886d7..26cd9bf 100644
--- a/audio/manager.c
+++ b/audio/manager.c
@@ -663,11 +663,9 @@ failed:
static struct audio_device *get_audio_dev(struct btd_device *device)
{
struct btd_adapter *adapter = device_get_adapter(device);
- bdaddr_t dst;
- device_get_address(device, &dst, NULL);
-
- return manager_get_device(adapter_get_address(adapter), &dst, TRUE);
+ return manager_get_device(adapter_get_address(adapter),
+ device_get_address(device), TRUE);
}
static void audio_remove(struct btd_profile *p, struct btd_device *device)
diff --git a/plugins/wiimote.c b/plugins/wiimote.c
index 93d1e2d..5708bf8 100644
--- a/plugins/wiimote.c
+++ b/plugins/wiimote.c
@@ -62,11 +62,9 @@ static ssize_t wii_pincb(struct btd_adapter *adapter, struct btd_device *device,
char *pinbuf, gboolean *display)
{
uint16_t vendor, product;
- bdaddr_t dba;
char addr[18], name[25];
- device_get_address(device, &dba, NULL);
- ba2str(&dba, addr);
+ ba2str(device_get_address(device), addr);
vendor = btd_device_get_vendor(device);
product = btd_device_get_product(device);
diff --git a/profiles/gatt/gas.c b/profiles/gatt/gas.c
index 03bdd5a..82c2ef0 100644
--- a/profiles/gatt/gas.c
+++ b/profiles/gatt/gas.c
@@ -170,8 +170,6 @@ static void ccc_written_cb(guint8 status, const guint8 *pdu, guint16 plen,
gpointer user_data)
{
struct gas *gas = user_data;
- bdaddr_t dba;
- uint8_t bdaddr_type;
if (status) {
error("Write Service Changed CCC failed: %s",
@@ -181,11 +179,11 @@ static void ccc_written_cb(guint8 status, const guint8 *pdu, guint16 plen,
DBG("Service Changed indications enabled");
- device_get_address(gas->device, &dba, &bdaddr_type);
-
write_ctp_handle(adapter_get_address(device_get_adapter(gas->device)),
- &dba, bdaddr_type, GATT_CHARAC_SERVICE_CHANGED,
- gas->changed_handle);
+ device_get_address(gas->device),
+ device_get_addr_type(gas->device),
+ GATT_CHARAC_SERVICE_CHANGED,
+ gas->changed_handle);
}
static void write_ccc(GAttrib *attrib, uint16_t handle, gpointer user_data)
@@ -379,8 +377,6 @@ int gas_register(struct btd_device *device, struct att_range *gap,
struct att_range *gatt)
{
struct gas *gas;
- bdaddr_t dba;
- uint8_t bdaddr_type;
gas = g_new0(struct gas, 1);
gas->gap.start = gap->start;
@@ -396,11 +392,11 @@ int gas_register(struct btd_device *device, struct att_range *gap,
attio_connected_cb,
attio_disconnected_cb, gas);
- device_get_address(gas->device, &dba, &bdaddr_type);
-
read_ctp_handle(adapter_get_address(device_get_adapter(gas->device)),
- &dba, bdaddr_type, GATT_CHARAC_SERVICE_CHANGED,
- &gas->changed_handle);
+ device_get_address(gas->device),
+ device_get_addr_type(gas->device),
+ GATT_CHARAC_SERVICE_CHANGED,
+ &gas->changed_handle);
return 0;
}
diff --git a/profiles/health/hdp.c b/profiles/health/hdp.c
index d07462a..fd21a23 100644
--- a/profiles/health/hdp.c
+++ b/profiles/health/hdp.c
@@ -210,10 +210,8 @@ static int cmp_device(gconstpointer a, gconstpointer b)
static gint cmp_dev_addr(gconstpointer a, gconstpointer dst)
{
const struct hdp_device *device = a;
- bdaddr_t addr;
- device_get_address(device->dev, &addr, NULL);
- return bacmp(&addr, dst);
+ return bacmp(device_get_address(device->dev), dst);
}
static gint cmp_dev_mcl(gconstpointer a, gconstpointer mcl)
diff --git a/profiles/health/hdp_util.c b/profiles/health/hdp_util.c
index 1d9419e..1fd33e5 100644
--- a/profiles/health/hdp_util.c
+++ b/profiles/health/hdp_util.c
@@ -857,12 +857,12 @@ gboolean hdp_get_mdep(struct hdp_device *device, struct hdp_application *app,
GDestroyNotify destroy, GError **err)
{
struct get_mdep_data *mdep_data;
- bdaddr_t dst;
const bdaddr_t *src;
+ const bdaddr_t *dst;
uuid_t uuid;
- device_get_address(device->dev, &dst, NULL);
src = adapter_get_address(device_get_adapter(device->dev));
+ dst = device_get_address(device->dev);
mdep_data = g_new0(struct get_mdep_data, 1);
mdep_data->app = hdp_application_ref(app);
@@ -871,7 +871,7 @@ gboolean hdp_get_mdep(struct hdp_device *device, struct hdp_application *app,
mdep_data->destroy = destroy;
bt_string2uuid(&uuid, HDP_UUID);
- if (bt_search_service(src, &dst, &uuid, get_mdep_cb, mdep_data,
+ if (bt_search_service(src, dst, &uuid, get_mdep_cb, mdep_data,
free_mdep_data) < 0) {
g_set_error(err, HDP_ERROR, HDP_CONNECTION_ERROR,
"Can't get remote SDP record");
@@ -1044,7 +1044,6 @@ static void search_cb(sdp_list_t *recs, int err, gpointer user_data)
{
struct conn_mcl_data *conn_data = user_data;
GError *gerr = NULL;
- bdaddr_t dst;
uint16_t ccpsm;
if (conn_data->dev->hdp_adapter->mi == NULL) {
@@ -1067,10 +1066,10 @@ static void search_cb(sdp_list_t *recs, int err, gpointer user_data)
conn_data = con_mcl_data_ref(conn_data);
- device_get_address(conn_data->dev->dev, &dst, NULL);
- if (!mcap_create_mcl(conn_data->dev->hdp_adapter->mi, &dst, ccpsm,
- create_mcl_cb, conn_data,
- destroy_con_mcl_data, &gerr)) {
+ if (!mcap_create_mcl(conn_data->dev->hdp_adapter->mi,
+ device_get_address(conn_data->dev->dev),
+ ccpsm, create_mcl_cb, conn_data,
+ destroy_con_mcl_data, &gerr)) {
con_mcl_data_unref(conn_data);
goto fail;
}
@@ -1087,12 +1086,12 @@ gboolean hdp_establish_mcl(struct hdp_device *device,
GError **err)
{
struct conn_mcl_data *conn_data;
- bdaddr_t dst;
const bdaddr_t *src;
+ const bdaddr_t *dst;
uuid_t uuid;
- device_get_address(device->dev, &dst, NULL);
src = adapter_get_address(device_get_adapter(device->dev));
+ dst = device_get_address(device->dev);
conn_data = g_new0(struct conn_mcl_data, 1);
conn_data->refs = 1;
@@ -1102,7 +1101,7 @@ gboolean hdp_establish_mcl(struct hdp_device *device,
conn_data->dev = health_device_ref(device);
bt_string2uuid(&uuid, HDP_UUID);
- if (bt_search_service(src, &dst, &uuid, search_cb, conn_data,
+ if (bt_search_service(src, dst, &uuid, search_cb, conn_data,
destroy_con_mcl_data) < 0) {
g_set_error(err, HDP_ERROR, HDP_CONNECTION_ERROR,
"Can't get remote SDP record");
@@ -1158,12 +1157,12 @@ gboolean hdp_get_dcpsm(struct hdp_device *device, hdp_continue_dcpsm_f func,
GError **err)
{
struct get_dcpsm_data *dcpsm_data;
- bdaddr_t dst;
const bdaddr_t *src;
+ const bdaddr_t *dst;
uuid_t uuid;
- device_get_address(device->dev, &dst, NULL);
src = adapter_get_address(device_get_adapter(device->dev));
+ dst = device_get_address(device->dev);
dcpsm_data = g_new0(struct get_dcpsm_data, 1);
dcpsm_data->func = func;
@@ -1171,7 +1170,7 @@ gboolean hdp_get_dcpsm(struct hdp_device *device, hdp_continue_dcpsm_f func,
dcpsm_data->destroy = destroy;
bt_string2uuid(&uuid, HDP_UUID);
- if (bt_search_service(src, &dst, &uuid, get_dcpsm_cb, dcpsm_data,
+ if (bt_search_service(src, dst, &uuid, get_dcpsm_cb, dcpsm_data,
free_dcpsm_data) < 0) {
g_set_error(err, HDP_ERROR, HDP_CONNECTION_ERROR,
"Can't get remote SDP record");
diff --git a/profiles/input/device.c b/profiles/input/device.c
index ed50e3b..92e1fa9 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
@@ -782,11 +782,10 @@ static struct input_device *input_device_new(struct btd_device *device,
struct btd_adapter *adapter = device_get_adapter(device);
struct input_device *idev;
char name[249], src_addr[18], dst_addr[18];
- uint8_t dst_type;
idev = g_new0(struct input_device, 1);
bacpy(&idev->src, adapter_get_address(adapter));
- device_get_address(device, &idev->dst, &dst_type);
+ bacpy(&idev->dst, device_get_address(device));
idev->device = btd_device_ref(device);
idev->path = g_strdup(path);
idev->handle = handle;
@@ -795,7 +794,8 @@ static struct input_device *input_device_new(struct btd_device *device,
ba2str(&idev->src, src_addr);
ba2str(&idev->dst, dst_addr);
- if (read_device_name(src_addr, dst_addr, dst_type, name) == 0)
+ if (read_device_name(src_addr, dst_addr, device_get_addr_type(device),
+ name) == 0)
idev->name = g_strdup(name);
if (g_dbus_register_interface(btd_get_dbus_connection(),
diff --git a/profiles/network/manager.c b/profiles/network/manager.c
index 42b5214..049fbc7 100644
--- a/profiles/network/manager.c
+++ b/profiles/network/manager.c
@@ -79,19 +79,19 @@ static int network_probe(struct btd_profile *p, struct btd_device *device,
struct btd_adapter *adapter = device_get_adapter(device);
const gchar *path = device_get_path(device);
const bdaddr_t *src;
- bdaddr_t dst;
+ const bdaddr_t *dst;
DBG("path %s", path);
src = adapter_get_address(adapter);
- device_get_address(device, &dst, NULL);
+ dst = device_get_address(device);
if (g_slist_find_custom(uuids, PANU_UUID, bt_uuid_strcmp))
- connection_register(device, path, src, &dst, BNEP_SVC_PANU);
+ connection_register(device, path, src, dst, BNEP_SVC_PANU);
if (g_slist_find_custom(uuids, GN_UUID, bt_uuid_strcmp))
- connection_register(device, path, src, &dst, BNEP_SVC_GN);
+ connection_register(device, path, src, dst, BNEP_SVC_GN);
if (g_slist_find_custom(uuids, NAP_UUID, bt_uuid_strcmp))
- connection_register(device, path, src, &dst, BNEP_SVC_NAP);
+ connection_register(device, path, src, dst, BNEP_SVC_NAP);
return 0;
}
diff --git a/profiles/proximity/monitor.c b/profiles/proximity/monitor.c
index 03df0e2..1a14265 100644
--- a/profiles/proximity/monitor.c
+++ b/profiles/proximity/monitor.c
@@ -407,7 +407,6 @@ static DBusMessage *set_link_loss_alert(DBusConnection *conn, DBusMessage *msg,
{
struct monitor *monitor = data;
struct btd_device *device = monitor->device;
- bdaddr_t dba;
if (!level_is_valid(level))
return btd_error_invalid_args(msg);
@@ -418,10 +417,9 @@ static DBusMessage *set_link_loss_alert(DBusConnection *conn, DBusMessage *msg,
g_free(monitor->linklosslevel);
monitor->linklosslevel = g_strdup(level);
- device_get_address(device, &dba, NULL);
-
write_proximity_config(adapter_get_address(device_get_adapter(device)),
- &dba, "LinkLossAlertLevel", level);
+ device_get_address(device),
+ "LinkLossAlertLevel", level);
if (monitor->attrib)
write_alert_level(monitor);
@@ -593,14 +591,11 @@ int monitor_register(struct btd_device *device,
{
const char *path = device_get_path(device);
struct monitor *monitor;
- bdaddr_t dba;
char *level;
- device_get_address(device, &dba, NULL);
-
level = read_proximity_config(
adapter_get_address(device_get_adapter(device)),
- &dba, "LinkLossAlertLevel");
+ device_get_address(device), "LinkLossAlertLevel");
monitor = g_new0(struct monitor, 1);
monitor->device = btd_device_ref(device);
diff --git a/src/adapter.c b/src/adapter.c
index c640956..46048ad 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3616,7 +3616,6 @@ ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
{
GSList *l;
btd_adapter_pin_cb_t cb;
- bdaddr_t dba;
ssize_t ret;
for (l = adapter->pin_callbacks; l != NULL; l = g_slist_next(l)) {
@@ -3626,9 +3625,8 @@ ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
return ret;
}
- device_get_address(dev, &dba, NULL);
-
- return read_pin_code(adapter_get_address(adapter), &dba, pin_buf);
+ return read_pin_code(adapter_get_address(adapter),
+ device_get_address(dev), pin_buf);
}
void btd_adapter_register_powered_callback(struct btd_adapter *adapter,
diff --git a/src/device.c b/src/device.c
index dfbf925..72cae3b 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1222,28 +1222,25 @@ uint16_t btd_device_get_version(struct btd_device *device)
static void device_remove_stored(struct btd_device *device)
{
- const bdaddr_t *src;
- bdaddr_t dst;
- uint8_t dst_type;
-
- src = adapter_get_address(device->adapter);
- device_get_address(device, &dst, &dst_type);
+ const bdaddr_t *src = adapter_get_address(device->adapter);
+ uint8_t dst_type = device->bdaddr_type;
- delete_entry(src, "profiles", &dst, dst_type);
- delete_entry(src, "trusts", &dst, dst_type);
+ delete_entry(src, "profiles", &device->bdaddr, dst_type);
+ delete_entry(src, "trusts", &device->bdaddr, dst_type);
if (device_is_bonded(device)) {
- delete_entry(src, "linkkeys", &dst, dst_type);
- delete_entry(src, "aliases", &dst, dst_type);
- delete_entry(src, "longtermkeys", &dst, dst_type);
+ delete_entry(src, "linkkeys", &device->bdaddr, dst_type);
+ delete_entry(src, "aliases", &device->bdaddr, dst_type);
+ delete_entry(src, "longtermkeys", &device->bdaddr, dst_type);
device_set_bonded(device, FALSE);
device->paired = FALSE;
- btd_adapter_remove_bonding(device->adapter, &dst, dst_type);
+ btd_adapter_remove_bonding(device->adapter, &device->bdaddr,
+ dst_type);
}
- delete_all_records(src, &dst, dst_type);
- delete_device_service(src, &dst, dst_type);
+ delete_all_records(src, &device->bdaddr, dst_type);
+ delete_device_service(src, &device->bdaddr, dst_type);
if (device->blocked)
device_unblock(device, TRUE, FALSE);
@@ -1884,12 +1881,9 @@ static char *primary_list_to_string(GSList *primary_list)
static void store_services(struct btd_device *device)
{
struct btd_adapter *adapter = device->adapter;
- bdaddr_t dba;
char *str = primary_list_to_string(device->primaries);
- device_get_address(device, &dba, NULL);
-
- write_device_services(adapter_get_address(adapter), &dba,
+ write_device_services(adapter_get_address(adapter), &device->bdaddr,
device->bdaddr_type, str);
g_free(str);
@@ -2318,12 +2312,9 @@ struct btd_adapter *device_get_adapter(struct btd_device *device)
return device->adapter;
}
-void device_get_address(struct btd_device *device, bdaddr_t *bdaddr,
- uint8_t *bdaddr_type)
+bdaddr_t *device_get_address(struct btd_device *device)
{
- bacpy(bdaddr, &device->bdaddr);
- if (bdaddr_type != NULL)
- *bdaddr_type = device->bdaddr_type;
+ return &device->bdaddr;
}
void device_set_addr_type(struct btd_device *device, uint8_t bdaddr_type)
diff --git a/src/device.h b/src/device.h
index 462b9a1..f919af4 100644
--- a/src/device.h
+++ b/src/device.h
@@ -64,8 +64,7 @@ void btd_device_add_uuid(struct btd_device *device, const char *uuid);
void device_probe_profile(gpointer a, gpointer b);
void device_remove_profile(gpointer a, gpointer b);
struct btd_adapter *device_get_adapter(struct btd_device *device);
-void device_get_address(struct btd_device *device, bdaddr_t *bdaddr,
- uint8_t *bdaddr_type);
+bdaddr_t *device_get_address(struct btd_device *device);
void device_set_addr_type(struct btd_device *device, uint8_t bdaddr_type);
uint8_t device_get_addr_type(struct btd_device *device);
const gchar *device_get_path(struct btd_device *device);
diff --git a/src/event.c b/src/event.c
index 9626053..84c7f88 100644
--- a/src/event.c
+++ b/src/event.c
@@ -90,20 +90,18 @@ static void pincode_cb(struct agent *agent, DBusError *derr,
const char *pincode, struct btd_device *device)
{
struct btd_adapter *adapter = device_get_adapter(device);
- bdaddr_t dba;
int err;
- device_get_address(device, &dba, NULL);
-
if (derr) {
- err = btd_adapter_pincode_reply(adapter, &dba, NULL, 0);
+ err = btd_adapter_pincode_reply(adapter,
+ device_get_address(device), NULL, 0);
if (err < 0)
goto fail;
return;
}
- err = btd_adapter_pincode_reply(adapter, &dba, pincode,
- pincode ? strlen(pincode) : 0);
+ err = btd_adapter_pincode_reply(adapter, device_get_address(device),
+ pincode, pincode ? strlen(pincode) : 0);
if (err < 0)
goto fail;
@@ -141,13 +139,9 @@ int btd_event_request_pin(bdaddr_t *sba, bdaddr_t *dba, gboolean secure)
static int confirm_reply(struct btd_adapter *adapter,
struct btd_device *device, gboolean success)
{
- bdaddr_t bdaddr;
- uint8_t bdaddr_type;
-
- device_get_address(device, &bdaddr, &bdaddr_type);
-
- return btd_adapter_confirm_reply(adapter, &bdaddr, bdaddr_type,
- success);
+ return btd_adapter_confirm_reply(adapter, device_get_address(device),
+ device_get_addr_type(device),
+ success);
}
static void confirm_cb(struct agent *agent, DBusError *err, void *user_data)
@@ -164,15 +158,12 @@ static void passkey_cb(struct agent *agent, DBusError *err, uint32_t passkey,
{
struct btd_device *device = user_data;
struct btd_adapter *adapter = device_get_adapter(device);
- bdaddr_t bdaddr;
- uint8_t bdaddr_type;
-
- device_get_address(device, &bdaddr, &bdaddr_type);
if (err)
passkey = INVALID_PASSKEY;
- btd_adapter_passkey_reply(adapter, &bdaddr, bdaddr_type, passkey);
+ btd_adapter_passkey_reply(adapter, device_get_address(device),
+ device_get_addr_type(device), passkey);
}
int btd_event_user_confirm(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey)
diff --git a/src/profile.c b/src/profile.c
index 46b2e21..eb63e1e 100644
--- a/src/profile.c
+++ b/src/profile.c
@@ -184,13 +184,9 @@ static void ext_io_destroy(gpointer p)
ext_cancel(ext);
}
- if (ext_io->resolving) {
- bdaddr_t dst;
-
- device_get_address(ext_io->device, &dst, NULL);
-
- bt_cancel_discovery(adapter_get_address(ext_io->adapter), &dst);
- }
+ if (ext_io->resolving)
+ bt_cancel_discovery(adapter_get_address(ext_io->adapter),
+ device_get_address(ext_io->device));
if (ext_io->rec_handle)
remove_record_from_server(ext_io->rec_handle);
@@ -720,7 +716,6 @@ static void record_cb(sdp_list_t *recs, int err, gpointer user_data)
{
struct ext_io *conn = user_data;
struct ext_profile *ext = conn->ext;
- bdaddr_t dst;
sdp_list_t *r;
conn->resolving = false;
@@ -772,9 +767,8 @@ static void record_cb(sdp_list_t *recs, int err, gpointer user_data)
goto failed;
}
- device_get_address(conn->device, &dst, NULL);
-
- err = connect_io(conn, adapter_get_address(conn->adapter), &dst);
+ err = connect_io(conn, adapter_get_address(conn->adapter),
+ device_get_address(conn->device));
if (err < 0) {
error("Connecting %s failed: %s", ext->name, strerror(-err));
goto failed;
@@ -810,7 +804,6 @@ static int ext_connect_dev(struct btd_device *dev, struct btd_profile *profile,
struct btd_adapter *adapter;
struct ext_io *conn;
struct ext_profile *ext;
- bdaddr_t dst;
int err;
ext = find_ext(profile);
@@ -818,15 +811,16 @@ static int ext_connect_dev(struct btd_device *dev, struct btd_profile *profile,
return -ENOENT;
adapter = device_get_adapter(dev);
- device_get_address(dev, &dst, NULL);
conn = g_new0(struct ext_io, 1);
conn->ext = ext;
if (ext->psm || ext->chan)
- err = connect_io(conn, adapter_get_address(adapter), &dst);
+ err = connect_io(conn, adapter_get_address(adapter),
+ device_get_address(dev));
else
- err = resolve_service(conn, adapter_get_address(adapter), &dst);
+ err = resolve_service(conn, adapter_get_address(adapter),
+ device_get_address(dev));
if (err < 0)
goto failed;
--
1.7.9.5
^ permalink raw reply related
* [PATCH 3/7] adapter: Constify pointer returned by adapter_get_address
From: Szymon Janc @ 2012-10-05 8:16 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1349425021-16766-1-git-send-email-szymon.janc@tieto.com>
---
audio/manager.c | 4 ++--
profiles/gatt/gas.c | 10 ++++++----
profiles/health/hdp_util.c | 9 ++++++---
profiles/health/mcap.c | 2 +-
profiles/health/mcap_lib.h | 2 +-
profiles/network/connection.c | 6 +++---
profiles/network/connection.h | 2 +-
profiles/network/manager.c | 3 ++-
profiles/proximity/monitor.c | 4 ++--
profiles/sap/server.c | 2 +-
profiles/sap/server.h | 2 +-
src/adapter.c | 2 +-
src/adapter.h | 2 +-
src/attrib-server.c | 2 +-
src/device.c | 5 +++--
src/eir.c | 2 +-
src/eir.h | 2 +-
src/profile.c | 9 ++++++---
18 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/audio/manager.c b/audio/manager.c
index 6ddea5a..e6886d7 100644
--- a/audio/manager.c
+++ b/audio/manager.c
@@ -507,7 +507,7 @@ static int headset_server_init(struct audio_adapter *adapter)
GError *err = NULL;
uint32_t features;
GIOChannel *io;
- bdaddr_t *src;
+ const bdaddr_t *src;
if (config) {
gboolean tmp;
@@ -608,7 +608,7 @@ static int gateway_server_init(struct audio_adapter *adapter)
gboolean master = TRUE;
GError *err = NULL;
GIOChannel *io;
- bdaddr_t *src;
+ const bdaddr_t *src;
if (config) {
gboolean tmp;
diff --git a/profiles/gatt/gas.c b/profiles/gatt/gas.c
index f0fcbe7..03bdd5a 100644
--- a/profiles/gatt/gas.c
+++ b/profiles/gatt/gas.c
@@ -86,8 +86,9 @@ static inline int create_filename(char *buf, size_t size,
return create_name(buf, size, STORAGEDIR, addr, name);
}
-static int write_ctp_handle(bdaddr_t *sba, bdaddr_t *dba, uint8_t bdaddr_type,
- uint16_t uuid, uint16_t handle)
+static int write_ctp_handle(const bdaddr_t *sba, const bdaddr_t *dba,
+ uint8_t bdaddr_type, uint16_t uuid,
+ uint16_t handle)
{
char filename[PATH_MAX + 1], addr[18], key[27], value[7];
@@ -104,8 +105,9 @@ static int write_ctp_handle(bdaddr_t *sba, bdaddr_t *dba, uint8_t bdaddr_type,
return textfile_put(filename, key, value);
}
-static int read_ctp_handle(bdaddr_t *sba, bdaddr_t *dba, uint8_t bdaddr_type,
- uint16_t uuid, uint16_t *value)
+static int read_ctp_handle(const bdaddr_t *sba, const bdaddr_t *dba,
+ uint8_t bdaddr_type, uint16_t uuid,
+ uint16_t *value)
{
char filename[PATH_MAX + 1], addr[18], key[27];
char *str;
diff --git a/profiles/health/hdp_util.c b/profiles/health/hdp_util.c
index 931c1dd..1d9419e 100644
--- a/profiles/health/hdp_util.c
+++ b/profiles/health/hdp_util.c
@@ -857,7 +857,8 @@ gboolean hdp_get_mdep(struct hdp_device *device, struct hdp_application *app,
GDestroyNotify destroy, GError **err)
{
struct get_mdep_data *mdep_data;
- bdaddr_t dst, *src;
+ bdaddr_t dst;
+ const bdaddr_t *src;
uuid_t uuid;
device_get_address(device->dev, &dst, NULL);
@@ -1086,7 +1087,8 @@ gboolean hdp_establish_mcl(struct hdp_device *device,
GError **err)
{
struct conn_mcl_data *conn_data;
- bdaddr_t dst, *src;
+ bdaddr_t dst;
+ const bdaddr_t *src;
uuid_t uuid;
device_get_address(device->dev, &dst, NULL);
@@ -1156,7 +1158,8 @@ gboolean hdp_get_dcpsm(struct hdp_device *device, hdp_continue_dcpsm_f func,
GError **err)
{
struct get_dcpsm_data *dcpsm_data;
- bdaddr_t dst, *src;
+ bdaddr_t dst;
+ const bdaddr_t *src;
uuid_t uuid;
device_get_address(device->dev, &dst, NULL);
diff --git a/profiles/health/mcap.c b/profiles/health/mcap.c
index 86f0575..57ea1c3 100644
--- a/profiles/health/mcap.c
+++ b/profiles/health/mcap.c
@@ -1984,7 +1984,7 @@ drop:
g_io_channel_shutdown(chan, TRUE, NULL);
}
-struct mcap_instance *mcap_create_instance(bdaddr_t *src,
+struct mcap_instance *mcap_create_instance(const bdaddr_t *src,
BtIOSecLevel sec,
uint16_t ccpsm,
uint16_t dcpsm,
diff --git a/profiles/health/mcap_lib.h b/profiles/health/mcap_lib.h
index 8fcc141..603ccc0 100644
--- a/profiles/health/mcap_lib.h
+++ b/profiles/health/mcap_lib.h
@@ -196,7 +196,7 @@ void mcap_sync_set_req(struct mcap_mcl *mcl,
/* MCAP main operations */
-struct mcap_instance *mcap_create_instance(bdaddr_t *src,
+struct mcap_instance *mcap_create_instance(const bdaddr_t *src,
BtIOSecLevel sec, uint16_t ccpsm,
uint16_t dcpsm,
mcap_mcl_event_cb mcl_connected,
diff --git a/profiles/network/connection.c b/profiles/network/connection.c
index 7688beb..9646e5a 100644
--- a/profiles/network/connection.c
+++ b/profiles/network/connection.c
@@ -594,8 +594,8 @@ void connection_unregister(const char *path)
}
static struct network_peer *create_peer(struct btd_device *device,
- const char *path, bdaddr_t *src,
- bdaddr_t *dst)
+ const char *path, const bdaddr_t *src,
+ const bdaddr_t *dst)
{
struct network_peer *peer;
@@ -623,7 +623,7 @@ static struct network_peer *create_peer(struct btd_device *device,
}
int connection_register(struct btd_device *device, const char *path,
- bdaddr_t *src, bdaddr_t *dst, uint16_t id)
+ const bdaddr_t *src, const bdaddr_t *dst, uint16_t id)
{
struct network_peer *peer;
struct network_conn *nc;
diff --git a/profiles/network/connection.h b/profiles/network/connection.h
index 2e33c55..efc4ccb 100644
--- a/profiles/network/connection.h
+++ b/profiles/network/connection.h
@@ -22,5 +22,5 @@
*/
int connection_register(struct btd_device *device, const char *path,
- bdaddr_t *src, bdaddr_t *dst, uint16_t id);
+ const bdaddr_t *src, const bdaddr_t *dst, uint16_t id);
void connection_unregister(const char *path);
diff --git a/profiles/network/manager.c b/profiles/network/manager.c
index 661181d..42b5214 100644
--- a/profiles/network/manager.c
+++ b/profiles/network/manager.c
@@ -78,7 +78,8 @@ static int network_probe(struct btd_profile *p, struct btd_device *device,
{
struct btd_adapter *adapter = device_get_adapter(device);
const gchar *path = device_get_path(device);
- bdaddr_t *src, dst;
+ const bdaddr_t *src;
+ bdaddr_t dst;
DBG("path %s", path);
diff --git a/profiles/proximity/monitor.c b/profiles/proximity/monitor.c
index 477eeea..03df0e2 100644
--- a/profiles/proximity/monitor.c
+++ b/profiles/proximity/monitor.c
@@ -93,7 +93,7 @@ static inline int create_filename(char *buf, size_t size,
return create_name(buf, size, STORAGEDIR, addr, name);
}
-static int write_proximity_config(bdaddr_t *sba, bdaddr_t *dba,
+static int write_proximity_config(const bdaddr_t *sba, const bdaddr_t *dba,
const char *alert, const char *level)
{
char filename[PATH_MAX + 1], addr[18], key[38];
@@ -109,7 +109,7 @@ static int write_proximity_config(bdaddr_t *sba, bdaddr_t *dba,
return textfile_put(filename, key, level);
}
-static char *read_proximity_config(bdaddr_t *sba, bdaddr_t *dba,
+static char *read_proximity_config(const bdaddr_t *sba, const bdaddr_t *dba,
const char *alert)
{
char filename[PATH_MAX + 1], addr[18], key[38];
diff --git a/profiles/sap/server.c b/profiles/sap/server.c
index 6072432..9a7cb72 100644
--- a/profiles/sap/server.c
+++ b/profiles/sap/server.c
@@ -1366,7 +1366,7 @@ static void destroy_sap_interface(void *data)
server_remove(server);
}
-int sap_server_register(const char *path, bdaddr_t *src)
+int sap_server_register(const char *path, const bdaddr_t *src)
{
sdp_record_t *record = NULL;
GError *gerr = NULL;
diff --git a/profiles/sap/server.h b/profiles/sap/server.h
index 9ea9a78..e636d91 100644
--- a/profiles/sap/server.h
+++ b/profiles/sap/server.h
@@ -20,5 +20,5 @@
#include <gdbus.h>
-int sap_server_register(const char *path, bdaddr_t *src);
+int sap_server_register(const char *path, const bdaddr_t *src);
void sap_server_unregister(const char *path);
diff --git a/src/adapter.c b/src/adapter.c
index 6cb6f7c..c640956 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2668,7 +2668,7 @@ const gchar *adapter_get_path(struct btd_adapter *adapter)
return adapter->path;
}
-bdaddr_t *adapter_get_address(struct btd_adapter *adapter)
+const bdaddr_t *adapter_get_address(struct btd_adapter *adapter)
{
return &adapter->bdaddr;
}
diff --git a/src/adapter.h b/src/adapter.h
index f3599b5..d4fb14b 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -122,7 +122,7 @@ void adapter_set_discovering(struct btd_adapter *adapter,
gboolean discovering);
uint16_t adapter_get_dev_id(struct btd_adapter *adapter);
const gchar *adapter_get_path(struct btd_adapter *adapter);
-bdaddr_t *adapter_get_address(struct btd_adapter *adapter);
+const bdaddr_t *adapter_get_address(struct btd_adapter *adapter);
struct remote_dev_info *adapter_search_found_devices(struct btd_adapter *adapter,
bdaddr_t *bdaddr);
void adapter_update_found_devices(struct btd_adapter *adapter,
diff --git a/src/attrib-server.c b/src/attrib-server.c
index e7e2531..9155ab2 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
@@ -1237,7 +1237,7 @@ int btd_adapter_gatt_server_start(struct btd_adapter *adapter)
{
struct gatt_server *server;
GError *gerr = NULL;
- bdaddr_t *addr;
+ const bdaddr_t *addr;
DBG("Start GATT server in hci%d", adapter_get_dev_id(adapter));
diff --git a/src/device.c b/src/device.c
index d5aa8e1..dfbf925 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1116,7 +1116,7 @@ struct btd_device *device_create(struct btd_adapter *adapter,
gchar *address_up;
struct btd_device *device;
const gchar *adapter_path = adapter_get_path(adapter);
- bdaddr_t *src;
+ const bdaddr_t *src;
char srcaddr[18], alias[MAX_NAME_LENGTH + 1];
uint16_t vendor, product, version;
@@ -1222,7 +1222,8 @@ uint16_t btd_device_get_version(struct btd_device *device)
static void device_remove_stored(struct btd_device *device)
{
- bdaddr_t *src, dst;
+ const bdaddr_t *src;
+ bdaddr_t dst;
uint8_t dst_type;
src = adapter_get_address(device->adapter);
diff --git a/src/eir.c b/src/eir.c
index d9fdb32..1f8d229 100644
--- a/src/eir.c
+++ b/src/eir.c
@@ -280,7 +280,7 @@ static void eir_generate_uuid128(sdp_list_t *list, uint8_t *ptr,
}
}
-int eir_create_oob(bdaddr_t *addr, const char *name, uint32_t cod,
+int eir_create_oob(const bdaddr_t *addr, const char *name, uint32_t cod,
uint8_t *hash, uint8_t *randomizer,
uint16_t did_vendor, uint16_t did_product,
uint16_t did_version, uint16_t did_source,
diff --git a/src/eir.h b/src/eir.h
index d8c5e32..1ad0832 100644
--- a/src/eir.h
+++ b/src/eir.h
@@ -53,7 +53,7 @@ struct eir_data {
void eir_data_free(struct eir_data *eir);
int eir_parse(struct eir_data *eir, uint8_t *eir_data, uint8_t eir_len);
int eir_parse_oob(struct eir_data *eir, uint8_t *eir_data, uint16_t eir_len);
-int eir_create_oob(bdaddr_t *addr, const char *name, uint32_t cod,
+int eir_create_oob(const bdaddr_t *addr, const char *name, uint32_t cod,
uint8_t *hash, uint8_t *randomizer,
uint16_t did_vendor, uint16_t did_product,
uint16_t did_version, uint16_t did_source,
diff --git a/src/profile.c b/src/profile.c
index c10e315..46b2e21 100644
--- a/src/profile.c
+++ b/src/profile.c
@@ -470,7 +470,8 @@ static sdp_record_t *ext_get_record(struct ext_profile *ext)
return NULL;
}
-static uint16_t ext_register_record(struct ext_profile *ext, bdaddr_t *src)
+static uint16_t ext_register_record(struct ext_profile *ext,
+ const bdaddr_t *src)
{
sdp_record_t *rec;
@@ -661,7 +662,8 @@ static void ext_device_remove(struct btd_profile *p, struct btd_device *dev)
remove_connect(ext, dev);
}
-static int connect_io(struct ext_io *conn, bdaddr_t *src, bdaddr_t *dst)
+static int connect_io(struct ext_io *conn, const bdaddr_t *src,
+ const bdaddr_t *dst)
{
struct ext_profile *ext = conn->ext;
GError *gerr = NULL;
@@ -786,7 +788,8 @@ failed:
ext_io_destroy(conn);
}
-static int resolve_service(struct ext_io *conn, bdaddr_t *src, bdaddr_t *dst)
+static int resolve_service(struct ext_io *conn, const bdaddr_t *src,
+ const bdaddr_t *dst)
{
struct ext_profile *ext = conn->ext;
uuid_t uuid;
--
1.7.9.5
^ permalink raw reply related
* [PATCH 2/7] storage: Constify bdaddr_t pointers parameters
From: Szymon Janc @ 2012-10-05 8:16 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1349425021-16766-1-git-send-email-szymon.janc@tieto.com>
---
src/storage.c | 97 +++++++++++++++++++++++++++++++--------------------------
src/storage.h | 95 ++++++++++++++++++++++++++++++-------------------------
2 files changed, 105 insertions(+), 87 deletions(-)
diff --git a/src/storage.c b/src/storage.c
index 96db6f5..df6b0aa 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -110,7 +110,7 @@ int write_device_alias(const char *src, const char *dst, uint8_t dst_type,
return textfile_put(filename, key, alias);
}
-int write_discoverable_timeout(bdaddr_t *bdaddr, int timeout)
+int write_discoverable_timeout(const bdaddr_t *bdaddr, int timeout)
{
char filename[PATH_MAX + 1], str[32];
@@ -143,7 +143,7 @@ int read_discoverable_timeout(const char *src, int *timeout)
return 0;
}
-int write_pairable_timeout(bdaddr_t *bdaddr, int timeout)
+int write_pairable_timeout(const bdaddr_t *bdaddr, int timeout)
{
char filename[PATH_MAX + 1], str[32];
@@ -176,7 +176,7 @@ int read_pairable_timeout(const char *src, int *timeout)
return 0;
}
-int write_device_mode(bdaddr_t *bdaddr, const char *mode)
+int write_device_mode(const bdaddr_t *bdaddr, const char *mode)
{
char filename[PATH_MAX + 1];
@@ -226,7 +226,7 @@ int read_on_mode(const char *src, char *mode, int length)
return 0;
}
-int write_local_name(bdaddr_t *bdaddr, const char *name)
+int write_local_name(const bdaddr_t *bdaddr, const char *name)
{
char filename[PATH_MAX + 1], str[249];
int i;
@@ -245,7 +245,7 @@ int write_local_name(bdaddr_t *bdaddr, const char *name)
return textfile_put(filename, "name", str);
}
-int read_local_name(bdaddr_t *bdaddr, char *name)
+int read_local_name(const bdaddr_t *bdaddr, char *name)
{
char filename[PATH_MAX + 1], *str;
int len;
@@ -266,7 +266,7 @@ int read_local_name(bdaddr_t *bdaddr, char *name)
return 0;
}
-int write_local_class(bdaddr_t *bdaddr, uint8_t *class)
+int write_local_class(const bdaddr_t *bdaddr, uint8_t *class)
{
char filename[PATH_MAX + 1], str[9];
@@ -279,7 +279,7 @@ int write_local_class(bdaddr_t *bdaddr, uint8_t *class)
return textfile_put(filename, "class", str);
}
-int read_local_class(bdaddr_t *bdaddr, uint8_t *class)
+int read_local_class(const bdaddr_t *bdaddr, uint8_t *class)
{
char filename[PATH_MAX + 1], tmp[3], *str;
int i;
@@ -301,8 +301,8 @@ int read_local_class(bdaddr_t *bdaddr, uint8_t *class)
return 0;
}
-int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- uint16_t *appearance)
+int read_remote_appearance(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t *appearance)
{
char filename[PATH_MAX + 1], key[20], *str;
@@ -325,7 +325,7 @@ int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
return 0;
}
-int write_remote_appearance(bdaddr_t *local, bdaddr_t *peer,
+int write_remote_appearance(const bdaddr_t *local, const bdaddr_t *peer,
uint8_t bdaddr_type, uint16_t appearance)
{
char filename[PATH_MAX + 1], key[20], str[7];
@@ -342,7 +342,8 @@ int write_remote_appearance(bdaddr_t *local, bdaddr_t *peer,
return textfile_put(filename, key, str);
}
-int write_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t class)
+int write_remote_class(const bdaddr_t *local, const bdaddr_t *peer,
+ uint32_t class)
{
char filename[PATH_MAX + 1], addr[18], str[9];
@@ -356,7 +357,8 @@ int write_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t class)
return textfile_put(filename, addr, str);
}
-int read_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t *class)
+int read_remote_class(const bdaddr_t *local, const bdaddr_t *peer,
+ uint32_t *class)
{
char filename[PATH_MAX + 1], addr[18], *str;
@@ -378,8 +380,8 @@ int read_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t *class)
return 0;
}
-int write_device_name(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- const char *name)
+int write_device_name(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, const char *name)
{
char filename[PATH_MAX + 1], key[20], str[HCI_MAX_NAME_LENGTH + 1];
int i;
@@ -433,8 +435,9 @@ done:
return 0;
}
-int write_remote_eir(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- uint8_t *data, uint8_t data_len)
+int write_remote_eir(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, uint8_t *data,
+ uint8_t data_len)
{
char filename[PATH_MAX + 1], key[20], str[481];
int i;
@@ -453,8 +456,8 @@ int write_remote_eir(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
return textfile_put(filename, key, str);
}
-int read_remote_eir(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- uint8_t *data)
+int read_remote_eir(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, uint8_t *data)
{
char filename[PATH_MAX + 1], key[18], *str;
int i;
@@ -494,8 +497,9 @@ done:
return 0;
}
-int write_version_info(bdaddr_t *local, bdaddr_t *peer, uint16_t manufacturer,
- uint8_t lmp_ver, uint16_t lmp_subver)
+int write_version_info(const bdaddr_t *local, const bdaddr_t *peer,
+ uint16_t manufacturer, uint8_t lmp_ver,
+ uint16_t lmp_subver)
{
char filename[PATH_MAX + 1], addr[18], str[16];
@@ -510,7 +514,7 @@ int write_version_info(bdaddr_t *local, bdaddr_t *peer, uint16_t manufacturer,
return textfile_put(filename, addr, str);
}
-int write_features_info(bdaddr_t *local, bdaddr_t *peer,
+int write_features_info(const bdaddr_t *local, const bdaddr_t *peer,
unsigned char *page1, unsigned char *page2)
{
char filename[PATH_MAX + 1], addr[18];
@@ -554,7 +558,7 @@ static int decode_bytes(const char *str, unsigned char *bytes, size_t len)
return 0;
}
-int read_remote_features(bdaddr_t *local, bdaddr_t *peer,
+int read_remote_features(const bdaddr_t *local, const bdaddr_t *peer,
unsigned char *page1, unsigned char *page2)
{
char filename[PATH_MAX + 1], addr[18], *str;
@@ -587,8 +591,8 @@ int read_remote_features(bdaddr_t *local, bdaddr_t *peer,
return err;
}
-int write_lastseen_info(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- struct tm *tm)
+int write_lastseen_info(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, struct tm *tm)
{
char filename[PATH_MAX + 1], key[20], str[24];
@@ -605,8 +609,8 @@ int write_lastseen_info(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
return textfile_put(filename, key, str);
}
-int write_lastused_info(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- struct tm *tm)
+int write_lastused_info(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, struct tm *tm)
{
char filename[PATH_MAX + 1], key[20], str[24];
@@ -623,8 +627,9 @@ int write_lastused_info(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
return textfile_put(filename, key, str);
}
-int write_link_key(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- unsigned char *key, uint8_t type, int length)
+int write_link_key(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, unsigned char *key,
+ uint8_t type, int length)
{
char filename[PATH_MAX + 1], addr[20], str[38];
int i;
@@ -653,8 +658,9 @@ int write_link_key(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
return textfile_put(filename, addr, str);
}
-int read_link_key(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- unsigned char *key, uint8_t *type)
+int read_link_key(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, unsigned char *key,
+ uint8_t *type)
{
char filename[PATH_MAX + 1], addr[20], tmp[3], *str;
int i;
@@ -697,7 +703,7 @@ done:
return 0;
}
-ssize_t read_pin_code(bdaddr_t *local, bdaddr_t *peer, char *pin)
+ssize_t read_pin_code(const bdaddr_t *local, const bdaddr_t *peer, char *pin)
{
char filename[PATH_MAX + 1], addr[18], *str;
ssize_t len;
@@ -760,8 +766,8 @@ gboolean read_trust(const bdaddr_t *local, const char *addr, uint8_t addr_type)
return ret;
}
-int write_device_profiles(bdaddr_t *src, bdaddr_t *dst, uint8_t dst_type,
- const char *profiles)
+int write_device_profiles(const bdaddr_t *src, const bdaddr_t *dst,
+ uint8_t dst_type, const char *profiles)
{
char filename[PATH_MAX + 1], key[20];
@@ -778,7 +784,7 @@ int write_device_profiles(bdaddr_t *src, bdaddr_t *dst, uint8_t dst_type,
return textfile_put(filename, key, profiles);
}
-int delete_entry(bdaddr_t *src, const char *storage, bdaddr_t *dst,
+int delete_entry(const bdaddr_t *src, const char *storage, const bdaddr_t *dst,
uint8_t dst_type)
{
char filename[PATH_MAX + 1], key[20];
@@ -1147,7 +1153,7 @@ int read_device_id(const gchar *srcaddr, const gchar *dstaddr,
return 0;
}
-int write_device_pairable(bdaddr_t *bdaddr, gboolean mode)
+int write_device_pairable(const bdaddr_t *bdaddr, gboolean mode)
{
char filename[PATH_MAX + 1];
@@ -1158,7 +1164,7 @@ int write_device_pairable(bdaddr_t *bdaddr, gboolean mode)
return textfile_put(filename, "pairable", mode ? "yes" : "no");
}
-int read_device_pairable(bdaddr_t *bdaddr, gboolean *mode)
+int read_device_pairable(const bdaddr_t *bdaddr, gboolean *mode)
{
char filename[PATH_MAX + 1], *str;
@@ -1359,8 +1365,9 @@ int read_device_attributes(const bdaddr_t *sba, textfile_cb func, void *data)
return textfile_foreach(filename, func, data);
}
-int read_device_ccc(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- uint16_t handle, uint16_t *value)
+int read_device_ccc(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t handle,
+ uint16_t *value)
{
char filename[PATH_MAX + 1], addr[18], key[25];
char *str;
@@ -1386,8 +1393,9 @@ int read_device_ccc(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
return err;
}
-int write_device_ccc(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- uint16_t handle, uint16_t value)
+int write_device_ccc(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t handle,
+ uint16_t value)
{
char filename[PATH_MAX + 1], addr[18], key[25], config[5];
@@ -1403,7 +1411,7 @@ int write_device_ccc(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
return textfile_put(filename, key, config);
}
-void delete_device_ccc(bdaddr_t *local, bdaddr_t *peer)
+void delete_device_ccc(const bdaddr_t *local, const bdaddr_t *peer)
{
char filename[PATH_MAX + 1], addr[18];
@@ -1414,8 +1422,8 @@ void delete_device_ccc(bdaddr_t *local, bdaddr_t *peer)
delete_by_pattern(filename, addr);
}
-int write_longtermkeys(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- const char *key)
+int write_longtermkeys(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, const char *key)
{
char filename[PATH_MAX + 1], addr[20];
@@ -1432,7 +1440,8 @@ int write_longtermkeys(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
return textfile_put(filename, addr, key);
}
-gboolean has_longtermkeys(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type)
+gboolean has_longtermkeys(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type)
{
char filename[PATH_MAX + 1], key[20], *str;
diff --git a/src/storage.h b/src/storage.h
index 6a8df83..741b8a7 100644
--- a/src/storage.h
+++ b/src/storage.h
@@ -27,50 +27,57 @@ int read_device_alias(const char *src, const char *dst, uint8_t dst_type,
char *alias, size_t size);
int write_device_alias(const char *src, const char *dst, uint8_t dst_type,
const char *alias);
-int write_discoverable_timeout(bdaddr_t *bdaddr, int timeout);
+int write_discoverable_timeout(const bdaddr_t *bdaddr, int timeout);
int read_discoverable_timeout(const char *src, int *timeout);
-int write_pairable_timeout(bdaddr_t *bdaddr, int timeout);
+int write_pairable_timeout(const bdaddr_t *bdaddr, int timeout);
int read_pairable_timeout(const char *src, int *timeout);
-int write_device_mode(bdaddr_t *bdaddr, const char *mode);
+int write_device_mode(const bdaddr_t *bdaddr, const char *mode);
int read_device_mode(const char *src, char *mode, int length);
int read_on_mode(const char *src, char *mode, int length);
-int write_local_name(bdaddr_t *bdaddr, const char *name);
-int read_local_name(bdaddr_t *bdaddr, char *name);
-int write_local_class(bdaddr_t *bdaddr, uint8_t *class);
-int read_local_class(bdaddr_t *bdaddr, uint8_t *class);
-int write_remote_appearance(bdaddr_t *local, bdaddr_t *peer,
+int write_local_name(const bdaddr_t *bdaddr, const char *name);
+int read_local_name(const bdaddr_t *bdaddr, char *name);
+int write_local_class(const bdaddr_t *bdaddr, uint8_t *class);
+int read_local_class(const bdaddr_t *bdaddr, uint8_t *class);
+int write_remote_appearance(const bdaddr_t *local, const bdaddr_t *peer,
uint8_t bdaddr_type, uint16_t appearance);
-int read_remote_appearance(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- uint16_t *appearance);
-int write_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t class);
-int read_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t *class);
-int write_device_name(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- const char *name);
+int read_remote_appearance(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t *appearance);
+int write_remote_class(const bdaddr_t *local, const bdaddr_t *peer,
+ uint32_t class);
+int read_remote_class(const bdaddr_t *local, const bdaddr_t *peer,
+ uint32_t *class);
+int write_device_name(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, const char *name);
int read_device_name(const char *src, const char *dst, uint8_t dst_type,
char *name);
-int write_remote_eir(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- uint8_t *data, uint8_t data_len);
-int read_remote_eir(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- uint8_t *data);
-int write_version_info(bdaddr_t *local, bdaddr_t *peer, uint16_t manufacturer, uint8_t lmp_ver, uint16_t lmp_subver);
-int write_features_info(bdaddr_t *local, bdaddr_t *peer, unsigned char *page1, unsigned char *page2);
-int read_remote_features(bdaddr_t *local, bdaddr_t *peer, unsigned char *page1, unsigned char *page2);
-int write_lastseen_info(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- struct tm *tm);
-int write_lastused_info(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- struct tm *tm);
-int write_link_key(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- unsigned char *key, uint8_t type, int length);
-int read_link_key(bdaddr_t *local, bdaddr_t *peer, uint8_t peer_type,
- unsigned char *key, uint8_t *type);
-ssize_t read_pin_code(bdaddr_t *local, bdaddr_t *peer, char *pin);
+int write_remote_eir(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, uint8_t *data, uint8_t data_len);
+int read_remote_eir(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, uint8_t *data);
+int write_version_info(const bdaddr_t *local, const bdaddr_t *peer,
+ uint16_t manufacturer, uint8_t lmp_ver,
+ uint16_t lmp_subver);
+int write_features_info(const bdaddr_t *local, const bdaddr_t *peer,
+ unsigned char *page1, unsigned char *page2);
+int read_remote_features(const bdaddr_t *local, const bdaddr_t *peer,
+ unsigned char *page1, unsigned char *page2);
+int write_lastseen_info(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, struct tm *tm);
+int write_lastused_info(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, struct tm *tm);
+int write_link_key(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, unsigned char *key,
+ uint8_t type, int length);
+int read_link_key(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t peer_type, unsigned char *key, uint8_t *type);
+ssize_t read_pin_code(const bdaddr_t *local, const bdaddr_t *peer, char *pin);
gboolean read_trust(const bdaddr_t *local, const char *addr,
uint8_t addr_type);
int write_trust(const char *src, const char *addr, uint8_t addr_type,
gboolean trust);
-int write_device_profiles(bdaddr_t *src, bdaddr_t *dst, uint8_t dst_type,
- const char *profiles);
-int delete_entry(bdaddr_t *src, const char *storage, bdaddr_t *dst,
+int write_device_profiles(const bdaddr_t *src, const bdaddr_t *dst,
+ uint8_t dst_type, const char *profiles);
+int delete_entry(const bdaddr_t *src, const char *storage, const bdaddr_t *dst,
uint8_t dst_type);
int store_record(const gchar *src, const gchar *dst, uint8_t dst_type,
sdp_record_t *rec);
@@ -89,8 +96,8 @@ int store_device_id(const gchar *src, const gchar *dst, uint8_t dst_type,
int read_device_id(const gchar *src, const gchar *dst, uint8_t dst_type,
uint16_t *source, uint16_t *vendor,
uint16_t *product, uint16_t *version);
-int write_device_pairable(bdaddr_t *local, gboolean mode);
-int read_device_pairable(bdaddr_t *local, gboolean *mode);
+int write_device_pairable(const bdaddr_t *local, gboolean mode);
+int read_device_pairable(const bdaddr_t *local, gboolean *mode);
gboolean read_blocked(const bdaddr_t *local, const bdaddr_t *remote,
uint8_t remote_type);
int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
@@ -110,11 +117,13 @@ int write_device_attribute(const bdaddr_t *sba, const bdaddr_t *dba,
uint8_t bdaddr_type, uint16_t handle,
const char *chars);
int read_device_attributes(const bdaddr_t *sba, textfile_cb func, void *data);
-int read_device_ccc(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- uint16_t handle, uint16_t *value);
-int write_device_ccc(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- uint16_t handle, uint16_t value);
-void delete_device_ccc(bdaddr_t *local, bdaddr_t *peer);
-int write_longtermkeys(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
- const char *key);
-gboolean has_longtermkeys(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type);
+int read_device_ccc(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t handle, uint16_t *value);
+int write_device_ccc(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, uint16_t handle,
+ uint16_t value);
+void delete_device_ccc(const bdaddr_t *local, const bdaddr_t *peer);
+int write_longtermkeys(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type, const char *key);
+gboolean has_longtermkeys(const bdaddr_t *local, const bdaddr_t *peer,
+ uint8_t bdaddr_type);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 1/7] adapter: Convert adapter_get_address into simple getter
From: Szymon Janc @ 2012-10-05 8:16 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
Most uses of adapter_get_address were in form of:
bdaddr_t addr;
adapter_get_address(adapter, &addr);
foo(&addr);
Changing it to getter makes code simpler and avoid number of not
needed memcpy.
---
attrib/client.c | 2 +-
audio/manager.c | 48 +++++---------
plugins/adaptername.c | 4 +-
plugins/dbusoob.c | 8 +--
plugins/neard.c | 16 ++---
plugins/service.c | 57 ++++++-----------
plugins/wiimote.c | 5 +-
profiles/alert/server.c | 4 +-
profiles/gatt/gas.c | 16 ++---
profiles/health/hdp.c | 14 ++---
profiles/health/hdp_util.c | 24 ++++---
profiles/input/device.c | 2 +-
profiles/input/manager.c | 11 +---
profiles/network/manager.c | 10 +--
profiles/network/server.c | 8 +--
profiles/proximity/monitor.c | 13 ++--
profiles/sap/manager.c | 5 +-
src/adapter.c | 13 ++--
src/adapter.h | 2 +-
src/attrib-server.c | 18 +++---
src/device.c | 143 +++++++++++++++++-------------------------
src/manager.c | 5 +-
src/profile.c | 28 ++++-----
23 files changed, 179 insertions(+), 277 deletions(-)
diff --git a/attrib/client.c b/attrib/client.c
index d49804c..eea06ae 100644
--- a/attrib/client.c
+++ b/attrib/client.c
@@ -229,7 +229,7 @@ static void gatt_get_address(struct gatt_service *gatt, bdaddr_t *sba,
struct btd_adapter *adapter;
adapter = device_get_adapter(device);
- adapter_get_address(adapter, sba);
+ bacpy(sba, adapter_get_address(adapter));
device_get_address(device, dba, bdaddr_type);
}
diff --git a/audio/manager.c b/audio/manager.c
index dbc98d5..6ddea5a 100644
--- a/audio/manager.c
+++ b/audio/manager.c
@@ -507,7 +507,7 @@ static int headset_server_init(struct audio_adapter *adapter)
GError *err = NULL;
uint32_t features;
GIOChannel *io;
- bdaddr_t src;
+ bdaddr_t *src;
if (config) {
gboolean tmp;
@@ -521,10 +521,10 @@ static int headset_server_init(struct audio_adapter *adapter)
master = tmp;
}
- adapter_get_address(adapter->btd_adapter, &src);
+ src = adapter_get_address(adapter->btd_adapter);
io = bt_io_listen(NULL, ag_confirm, adapter, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR, src,
BT_IO_OPT_CHANNEL, chan,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_MEDIUM,
BT_IO_OPT_MASTER, master,
@@ -540,7 +540,7 @@ static int headset_server_init(struct audio_adapter *adapter)
goto failed;
}
- if (add_record_to_server(&src, record) < 0) {
+ if (add_record_to_server(src, record) < 0) {
error("Unable to register HS AG service record");
sdp_record_free(record);
goto failed;
@@ -555,7 +555,7 @@ static int headset_server_init(struct audio_adapter *adapter)
chan = DEFAULT_HF_AG_CHANNEL;
io = bt_io_listen(NULL, ag_confirm, adapter, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR, src,
BT_IO_OPT_CHANNEL, chan,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_MEDIUM,
BT_IO_OPT_MASTER, master,
@@ -571,7 +571,7 @@ static int headset_server_init(struct audio_adapter *adapter)
goto failed;
}
- if (add_record_to_server(&src, record) < 0) {
+ if (add_record_to_server(src, record) < 0) {
error("Unable to register HF AG service record");
sdp_record_free(record);
goto failed;
@@ -608,7 +608,7 @@ static int gateway_server_init(struct audio_adapter *adapter)
gboolean master = TRUE;
GError *err = NULL;
GIOChannel *io;
- bdaddr_t src;
+ bdaddr_t *src;
if (config) {
gboolean tmp;
@@ -622,10 +622,10 @@ static int gateway_server_init(struct audio_adapter *adapter)
master = tmp;
}
- adapter_get_address(adapter->btd_adapter, &src);
+ src = adapter_get_address(adapter->btd_adapter);
io = bt_io_listen(NULL, hf_io_cb, adapter, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR, src,
BT_IO_OPT_CHANNEL, chan,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_MEDIUM,
BT_IO_OPT_MASTER, master,
@@ -643,7 +643,7 @@ static int gateway_server_init(struct audio_adapter *adapter)
goto failed;
}
- if (add_record_to_server(&src, record) < 0) {
+ if (add_record_to_server(src, record) < 0) {
error("Unable to register HFP HS service record");
sdp_record_free(record);
goto failed;
@@ -663,12 +663,11 @@ failed:
static struct audio_device *get_audio_dev(struct btd_device *device)
{
struct btd_adapter *adapter = device_get_adapter(device);
- bdaddr_t src, dst;
+ bdaddr_t dst;
- adapter_get_address(adapter, &src);
device_get_address(device, &dst, NULL);
- return manager_get_device(&src, &dst, TRUE);
+ return manager_get_device(adapter_get_address(adapter), &dst, TRUE);
}
static void audio_remove(struct btd_profile *p, struct btd_device *device)
@@ -970,7 +969,6 @@ static int a2dp_server_probe(struct btd_profile *p,
{
struct audio_adapter *adp;
const gchar *path = adapter_get_path(adapter);
- bdaddr_t src;
int err;
DBG("path %s", path);
@@ -979,9 +977,7 @@ static int a2dp_server_probe(struct btd_profile *p,
if (!adp)
return -EINVAL;
- adapter_get_address(adapter, &src);
-
- err = a2dp_register(&src, config);
+ err = a2dp_register(adapter_get_address(adapter), config);
if (err < 0)
audio_adapter_unref(adp);
@@ -993,7 +989,6 @@ static void a2dp_server_remove(struct btd_profile *p,
{
struct audio_adapter *adp;
const gchar *path = adapter_get_path(adapter);
- bdaddr_t src;
DBG("path %s", path);
@@ -1001,8 +996,7 @@ static void a2dp_server_remove(struct btd_profile *p,
if (!adp)
return;
- adapter_get_address(adapter, &src);
- a2dp_unregister(&src);
+ a2dp_unregister(adapter_get_address(adapter));
audio_adapter_unref(adp);
}
@@ -1011,7 +1005,6 @@ static int avrcp_server_probe(struct btd_profile *p,
{
struct audio_adapter *adp;
const gchar *path = adapter_get_path(adapter);
- bdaddr_t src;
int err;
DBG("path %s", path);
@@ -1020,9 +1013,7 @@ static int avrcp_server_probe(struct btd_profile *p,
if (!adp)
return -EINVAL;
- adapter_get_address(adapter, &src);
-
- err = avrcp_register(&src, config);
+ err = avrcp_register(adapter_get_address(adapter), config);
if (err < 0)
audio_adapter_unref(adp);
@@ -1034,7 +1025,6 @@ static void avrcp_server_remove(struct btd_profile *p,
{
struct audio_adapter *adp;
const gchar *path = adapter_get_path(adapter);
- bdaddr_t src;
DBG("path %s", path);
@@ -1042,8 +1032,7 @@ static void avrcp_server_remove(struct btd_profile *p,
if (!adp)
return;
- adapter_get_address(adapter, &src);
- avrcp_unregister(&src);
+ avrcp_unregister(adapter_get_address(adapter));
audio_adapter_unref(adp);
}
@@ -1051,7 +1040,6 @@ static int media_server_probe(struct btd_adapter *adapter)
{
struct audio_adapter *adp;
const gchar *path = adapter_get_path(adapter);
- bdaddr_t src;
int err;
DBG("path %s", path);
@@ -1060,9 +1048,7 @@ static int media_server_probe(struct btd_adapter *adapter)
if (!adp)
return -EINVAL;
- adapter_get_address(adapter, &src);
-
- err = media_register(path, &src);
+ err = media_register(path, adapter_get_address(adapter));
if (err < 0)
audio_adapter_unref(adp);
diff --git a/plugins/adaptername.c b/plugins/adaptername.c
index cd0ffb2..f58fb0f 100644
--- a/plugins/adaptername.c
+++ b/plugins/adaptername.c
@@ -200,7 +200,6 @@ static int adaptername_probe(struct btd_adapter *adapter)
int current_id;
char name[MAX_NAME_LENGTH + 1];
char *pretty_hostname;
- bdaddr_t bdaddr;
pretty_hostname = read_pretty_host_name();
if (pretty_hostname != NULL) {
@@ -210,10 +209,9 @@ static int adaptername_probe(struct btd_adapter *adapter)
}
adapter_set_allow_name_changes(adapter, TRUE);
- adapter_get_address(adapter, &bdaddr);
current_id = adapter_get_dev_id(adapter);
- if (read_local_name(&bdaddr, name) < 0)
+ if (read_local_name(adapter_get_address(adapter), name) < 0)
expand_name(name, MAX_NAME_LENGTH, main_opts.name, current_id);
DBG("Setting name '%s' for device 'hci%d'", name, current_id);
diff --git a/plugins/dbusoob.c b/plugins/dbusoob.c
index ea40355..5c5b6ef 100644
--- a/plugins/dbusoob.c
+++ b/plugins/dbusoob.c
@@ -194,10 +194,8 @@ static gboolean parse_data(DBusMessageIter *data, struct oob_data *remote_data)
static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
{
bdaddr_t bdaddr;
- bdaddr_t local;
str2ba(data->addr, &bdaddr);
- adapter_get_address(adapter, &local);
if (data->hash) {
if (btd_adapter_add_remote_oob_data(adapter, &bdaddr,
@@ -206,10 +204,12 @@ static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
}
if (data->class)
- write_remote_class(&local, &bdaddr, data->class);
+ write_remote_class(adapter_get_address(adapter), &bdaddr,
+ data->class);
if (data->name)
- write_device_name(&local, &bdaddr, 0, data->name);
+ write_device_name(adapter_get_address(adapter), &bdaddr, 0,
+ data->name);
return TRUE;
}
diff --git a/plugins/neard.c b/plugins/neard.c
index 632d454..2fe1785 100644
--- a/plugins/neard.c
+++ b/plugins/neard.c
@@ -180,13 +180,11 @@ static void read_local_complete(struct btd_adapter *adapter, uint8_t *hash,
int len;
uint8_t eir[NFC_OOB_EIR_MAX];
uint8_t *peir = eir;
- bdaddr_t addr;
DBusMessageIter iter;
DBusMessageIter dict;
- adapter_get_address(adapter, &addr);
-
- len = eir_create_oob(&addr, btd_adapter_get_name(adapter),
+ len = eir_create_oob(adapter_get_address(adapter),
+ btd_adapter_get_name(adapter),
btd_adapter_get_class(adapter), hash,
randomizer, main_opts.did_vendor,
main_opts.did_product, main_opts.did_version,
@@ -254,7 +252,6 @@ static int process_eir(struct btd_adapter *adapter, uint8_t *eir, size_t size,
{
struct btd_device *device;
struct eir_data eir_data;
- bdaddr_t local;
char remote_address[18];
DBG("size %zu", size);
@@ -288,16 +285,15 @@ static int process_eir(struct btd_adapter *adapter, uint8_t *eir, size_t size,
if (device)
adapter_remove_device(adapter, device, TRUE);
- adapter_get_address(adapter, &local);
-
/* store OOB data */
if (eir_data.class != 0)
- write_remote_class(&local, &eir_data.addr, eir_data.class);
+ write_remote_class(adapter_get_address(adapter),
+ &eir_data.addr, eir_data.class);
/* TODO handle incomplete name? */
if (eir_data.name)
- write_device_name(&local, &eir_data.addr, BDADDR_BREDR,
- eir_data.name);
+ write_device_name(adapter_get_address(adapter), &eir_data.addr,
+ BDADDR_BREDR, eir_data.name);
if (eir_data.hash)
btd_adapter_add_remote_oob_data(adapter, &eir_data.addr,
diff --git a/plugins/service.c b/plugins/service.c
index 4a38270..e81452c 100644
--- a/plugins/service.c
+++ b/plugins/service.c
@@ -134,13 +134,20 @@ static void exit_callback(DBusConnection *conn, void *user_data)
g_free(user_record);
}
+static const bdaddr_t *get_address(struct service_adapter *serv_adapter)
+{
+ if (serv_adapter->adapter)
+ return adapter_get_address(serv_adapter->adapter);
+
+ return BDADDR_ANY;
+}
+
static int add_xml_record(const char *sender,
struct service_adapter *serv_adapter,
const char *record, dbus_uint32_t *handle)
{
struct record_data *user_record;
sdp_record_t *sdp_record;
- bdaddr_t src;
sdp_record = sdp_xml_parse_record(record, strlen(record));
if (!sdp_record) {
@@ -148,12 +155,7 @@ static int add_xml_record(const char *sender,
return -EIO;
}
- if (serv_adapter->adapter)
- adapter_get_address(serv_adapter->adapter, &src);
- else
- bacpy(&src, BDADDR_ANY);
-
- if (add_record_to_server(&src, sdp_record) < 0) {
+ if (add_record_to_server(get_address(serv_adapter), sdp_record) < 0) {
error("Failed to register service record");
sdp_record_free(sdp_record);
return -EIO;
@@ -181,7 +183,6 @@ static DBusMessage *update_record(DBusMessage *msg,
struct service_adapter *serv_adapter,
dbus_uint32_t handle, sdp_record_t *sdp_record)
{
- bdaddr_t src;
int err;
if (remove_record_from_server(handle) < 0) {
@@ -189,13 +190,8 @@ static DBusMessage *update_record(DBusMessage *msg,
return btd_error_not_available(msg);
}
- if (serv_adapter->adapter)
- adapter_get_address(serv_adapter->adapter, &src);
- else
- bacpy(&src, BDADDR_ANY);
-
sdp_record->handle = handle;
- err = add_record_to_server(&src, sdp_record);
+ err = add_record_to_server(get_address(serv_adapter), sdp_record);
if (err < 0) {
sdp_record_free(sdp_record);
error("Failed to update the service record");
@@ -322,7 +318,6 @@ static void auth_cb(DBusError *derr, void *user_data)
struct service_adapter *serv_adapter = user_data;
DBusMessage *reply;
struct pending_auth *auth;
- bdaddr_t src;
auth = next_pending(serv_adapter);
if (auth == NULL) {
@@ -350,14 +345,9 @@ done:
if (auth == NULL)
return;
- if (serv_adapter->adapter)
- adapter_get_address(serv_adapter->adapter, &src);
- else
- bacpy(&src, BDADDR_ANY);
-
- auth->id = btd_request_authorization(&src, &auth->dst,
- auth->uuid, auth_cb,
- serv_adapter);
+ auth->id = btd_request_authorization(get_address(serv_adapter),
+ &auth->dst, auth->uuid,
+ auth_cb, serv_adapter);
}
static DBusMessage *request_authorization(DBusConnection *conn,
@@ -373,7 +363,6 @@ static DBusMessage *request_authorization(DBusConnection *conn,
struct pending_auth *auth;
char uuid_str[MAX_LEN_UUID_STR];
uuid_t *uuid, *uuid128;
- bdaddr_t src;
if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &address,
DBUS_TYPE_UINT32, &handle,
@@ -427,12 +416,8 @@ static DBusMessage *request_authorization(DBusConnection *conn,
if (auth == NULL)
return btd_error_does_not_exist(msg);
- if (serv_adapter->adapter)
- adapter_get_address(serv_adapter->adapter, &src);
- else
- bacpy(&src, BDADDR_ANY);
-
- auth->id = btd_request_authorization(&src, &auth->dst, auth->uuid,
+ auth->id = btd_request_authorization(get_address(serv_adapter),
+ &auth->dst, auth->uuid,
auth_cb, serv_adapter);
if (auth->id == 0) {
serv_adapter->pending_list = g_slist_remove(serv_adapter->pending_list,
@@ -451,7 +436,6 @@ static DBusMessage *cancel_authorization(DBusConnection *conn,
struct service_adapter *serv_adapter = data;
struct pending_auth *auth;
const gchar *sender;
- bdaddr_t src;
sender = dbus_message_get_sender(msg);
@@ -473,14 +457,9 @@ static DBusMessage *cancel_authorization(DBusConnection *conn,
if (auth == NULL)
goto done;
- if (serv_adapter->adapter)
- adapter_get_address(serv_adapter->adapter, &src);
- else
- bacpy(&src, BDADDR_ANY);
-
- auth->id = btd_request_authorization(&src, &auth->dst,
- auth->uuid, auth_cb,
- serv_adapter);
+ auth->id = btd_request_authorization(get_address(serv_adapter),
+ &auth->dst, auth->uuid,
+ auth_cb, serv_adapter);
done:
return dbus_message_new_method_return(msg);
diff --git a/plugins/wiimote.c b/plugins/wiimote.c
index f7fad60..93d1e2d 100644
--- a/plugins/wiimote.c
+++ b/plugins/wiimote.c
@@ -62,10 +62,9 @@ static ssize_t wii_pincb(struct btd_adapter *adapter, struct btd_device *device,
char *pinbuf, gboolean *display)
{
uint16_t vendor, product;
- bdaddr_t sba, dba;
+ bdaddr_t dba;
char addr[18], name[25];
- adapter_get_address(adapter, &sba);
device_get_address(device, &dba, NULL);
ba2str(&dba, addr);
@@ -79,7 +78,7 @@ static ssize_t wii_pincb(struct btd_adapter *adapter, struct btd_device *device,
g_str_equal(name, "Nintendo RVL-WBC-01") ||
(vendor == 0x057e && product == 0x0306)) {
DBG("Forcing fixed pin on detected wiimote %s", addr);
- memcpy(pinbuf, &sba, 6);
+ memcpy(pinbuf, adapter_get_address(adapter), 6);
return 6;
}
diff --git a/profiles/alert/server.c b/profiles/alert/server.c
index 0c17176..b8ea141 100644
--- a/profiles/alert/server.c
+++ b/profiles/alert/server.c
@@ -415,10 +415,8 @@ static void filter_devices_notify(char *key, char *value, void *user_data)
static void create_filename(char *filename, struct btd_adapter *adapter)
{
char srcaddr[18];
- bdaddr_t src;
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ ba2str(adapter_get_address(adapter), srcaddr);
create_name(filename, PATH_MAX, STORAGEDIR, srcaddr, "ccc");
}
diff --git a/profiles/gatt/gas.c b/profiles/gatt/gas.c
index da6d555..f0fcbe7 100644
--- a/profiles/gatt/gas.c
+++ b/profiles/gatt/gas.c
@@ -168,7 +168,7 @@ static void ccc_written_cb(guint8 status, const guint8 *pdu, guint16 plen,
gpointer user_data)
{
struct gas *gas = user_data;
- bdaddr_t sba, dba;
+ bdaddr_t dba;
uint8_t bdaddr_type;
if (status) {
@@ -179,11 +179,11 @@ static void ccc_written_cb(guint8 status, const guint8 *pdu, guint16 plen,
DBG("Service Changed indications enabled");
- adapter_get_address(device_get_adapter(gas->device), &sba);
device_get_address(gas->device, &dba, &bdaddr_type);
- write_ctp_handle(&sba, &dba, bdaddr_type, GATT_CHARAC_SERVICE_CHANGED,
- gas->changed_handle);
+ write_ctp_handle(adapter_get_address(device_get_adapter(gas->device)),
+ &dba, bdaddr_type, GATT_CHARAC_SERVICE_CHANGED,
+ gas->changed_handle);
}
static void write_ccc(GAttrib *attrib, uint16_t handle, gpointer user_data)
@@ -377,7 +377,7 @@ int gas_register(struct btd_device *device, struct att_range *gap,
struct att_range *gatt)
{
struct gas *gas;
- bdaddr_t sba, dba;
+ bdaddr_t dba;
uint8_t bdaddr_type;
gas = g_new0(struct gas, 1);
@@ -394,11 +394,11 @@ int gas_register(struct btd_device *device, struct att_range *gap,
attio_connected_cb,
attio_disconnected_cb, gas);
- adapter_get_address(device_get_adapter(gas->device), &sba);
device_get_address(gas->device, &dba, &bdaddr_type);
- read_ctp_handle(&sba, &dba, bdaddr_type, GATT_CHARAC_SERVICE_CHANGED,
- &gas->changed_handle);
+ read_ctp_handle(adapter_get_address(device_get_adapter(gas->device)),
+ &dba, bdaddr_type, GATT_CHARAC_SERVICE_CHANGED,
+ &gas->changed_handle);
return 0;
}
diff --git a/profiles/health/hdp.c b/profiles/health/hdp.c
index d262a2a..d07462a 100644
--- a/profiles/health/hdp.c
+++ b/profiles/health/hdp.c
@@ -1317,7 +1317,6 @@ static void release_adapter_instance(struct hdp_adapter *hdp_adapter)
static gboolean update_adapter(struct hdp_adapter *hdp_adapter)
{
GError *err = NULL;
- bdaddr_t addr;
if (applications == NULL) {
release_adapter_instance(hdp_adapter);
@@ -1327,12 +1326,13 @@ static gboolean update_adapter(struct hdp_adapter *hdp_adapter)
if (hdp_adapter->mi != NULL)
goto update;
- adapter_get_address(hdp_adapter->btd_adapter, &addr);
- hdp_adapter->mi = mcap_create_instance(&addr, BT_IO_SEC_MEDIUM, 0, 0,
- mcl_connected, mcl_reconnected,
- mcl_disconnected, mcl_uncached,
- NULL, /* CSP is not used by now */
- hdp_adapter, &err);
+ hdp_adapter->mi = mcap_create_instance(
+ adapter_get_address(hdp_adapter->btd_adapter),
+ BT_IO_SEC_MEDIUM, 0, 0,
+ mcl_connected, mcl_reconnected,
+ mcl_disconnected, mcl_uncached,
+ NULL, /* CSP is not used by now */
+ hdp_adapter, &err);
if (hdp_adapter->mi == NULL) {
error("Error creating the MCAP instance: %s", err->message);
diff --git a/profiles/health/hdp_util.c b/profiles/health/hdp_util.c
index 3afd715..931c1dd 100644
--- a/profiles/health/hdp_util.c
+++ b/profiles/health/hdp_util.c
@@ -695,7 +695,6 @@ static gboolean register_mcap_features(sdp_record_t *sdp_record)
gboolean hdp_update_sdp_record(struct hdp_adapter *adapter, GSList *app_list)
{
sdp_record_t *sdp_record;
- bdaddr_t addr;
if (adapter->sdp_handler > 0)
remove_record_from_server(adapter->sdp_handler);
@@ -738,9 +737,8 @@ gboolean hdp_update_sdp_record(struct hdp_adapter *adapter, GSList *app_list)
if (sdp_set_record_state(sdp_record, adapter->record_state++) < 0)
goto fail;
- adapter_get_address(adapter->btd_adapter, &addr);
-
- if (add_record_to_server(&addr, sdp_record) < 0)
+ if (add_record_to_server(adapter_get_address(adapter->btd_adapter),
+ sdp_record) < 0)
goto fail;
adapter->sdp_handler = sdp_record->handle;
return TRUE;
@@ -859,11 +857,11 @@ gboolean hdp_get_mdep(struct hdp_device *device, struct hdp_application *app,
GDestroyNotify destroy, GError **err)
{
struct get_mdep_data *mdep_data;
- bdaddr_t dst, src;
+ bdaddr_t dst, *src;
uuid_t uuid;
device_get_address(device->dev, &dst, NULL);
- adapter_get_address(device_get_adapter(device->dev), &src);
+ src = adapter_get_address(device_get_adapter(device->dev));
mdep_data = g_new0(struct get_mdep_data, 1);
mdep_data->app = hdp_application_ref(app);
@@ -872,7 +870,7 @@ gboolean hdp_get_mdep(struct hdp_device *device, struct hdp_application *app,
mdep_data->destroy = destroy;
bt_string2uuid(&uuid, HDP_UUID);
- if (bt_search_service(&src, &dst, &uuid, get_mdep_cb, mdep_data,
+ if (bt_search_service(src, &dst, &uuid, get_mdep_cb, mdep_data,
free_mdep_data) < 0) {
g_set_error(err, HDP_ERROR, HDP_CONNECTION_ERROR,
"Can't get remote SDP record");
@@ -1088,11 +1086,11 @@ gboolean hdp_establish_mcl(struct hdp_device *device,
GError **err)
{
struct conn_mcl_data *conn_data;
- bdaddr_t dst, src;
+ bdaddr_t dst, *src;
uuid_t uuid;
device_get_address(device->dev, &dst, NULL);
- adapter_get_address(device_get_adapter(device->dev), &src);
+ src = adapter_get_address(device_get_adapter(device->dev));
conn_data = g_new0(struct conn_mcl_data, 1);
conn_data->refs = 1;
@@ -1102,7 +1100,7 @@ gboolean hdp_establish_mcl(struct hdp_device *device,
conn_data->dev = health_device_ref(device);
bt_string2uuid(&uuid, HDP_UUID);
- if (bt_search_service(&src, &dst, &uuid, search_cb, conn_data,
+ if (bt_search_service(src, &dst, &uuid, search_cb, conn_data,
destroy_con_mcl_data) < 0) {
g_set_error(err, HDP_ERROR, HDP_CONNECTION_ERROR,
"Can't get remote SDP record");
@@ -1158,11 +1156,11 @@ gboolean hdp_get_dcpsm(struct hdp_device *device, hdp_continue_dcpsm_f func,
GError **err)
{
struct get_dcpsm_data *dcpsm_data;
- bdaddr_t dst, src;
+ bdaddr_t dst, *src;
uuid_t uuid;
device_get_address(device->dev, &dst, NULL);
- adapter_get_address(device_get_adapter(device->dev), &src);
+ src = adapter_get_address(device_get_adapter(device->dev));
dcpsm_data = g_new0(struct get_dcpsm_data, 1);
dcpsm_data->func = func;
@@ -1170,7 +1168,7 @@ gboolean hdp_get_dcpsm(struct hdp_device *device, hdp_continue_dcpsm_f func,
dcpsm_data->destroy = destroy;
bt_string2uuid(&uuid, HDP_UUID);
- if (bt_search_service(&src, &dst, &uuid, get_dcpsm_cb, dcpsm_data,
+ if (bt_search_service(src, &dst, &uuid, get_dcpsm_cb, dcpsm_data,
free_dcpsm_data) < 0) {
g_set_error(err, HDP_ERROR, HDP_CONNECTION_ERROR,
"Can't get remote SDP record");
diff --git a/profiles/input/device.c b/profiles/input/device.c
index 07c72c0..ed50e3b 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
@@ -785,7 +785,7 @@ static struct input_device *input_device_new(struct btd_device *device,
uint8_t dst_type;
idev = g_new0(struct input_device, 1);
- adapter_get_address(adapter, &idev->src);
+ bacpy(&idev->src, adapter_get_address(adapter));
device_get_address(device, &idev->dst, &dst_type);
idev->device = btd_device_ref(device);
idev->path = g_strdup(path);
diff --git a/profiles/input/manager.c b/profiles/input/manager.c
index 32698aa..3f68620 100644
--- a/profiles/input/manager.c
+++ b/profiles/input/manager.c
@@ -77,12 +77,9 @@ static void hid_device_remove(struct btd_profile *p, struct btd_device *device)
static int hid_server_probe(struct btd_profile *p, struct btd_adapter *adapter)
{
- bdaddr_t src;
int ret;
- adapter_get_address(adapter, &src);
-
- ret = server_start(&src);
+ ret = server_start(adapter_get_address(adapter));
if (ret < 0)
return ret;
@@ -94,11 +91,7 @@ static int hid_server_probe(struct btd_profile *p, struct btd_adapter *adapter)
static void hid_server_remove(struct btd_profile *p,
struct btd_adapter *adapter)
{
- bdaddr_t src;
-
- adapter_get_address(adapter, &src);
-
- server_stop(&src);
+ server_stop(adapter_get_address(adapter));
adapters = g_slist_remove(adapters, adapter);
btd_adapter_unref(adapter);
diff --git a/profiles/network/manager.c b/profiles/network/manager.c
index e1f4164..661181d 100644
--- a/profiles/network/manager.c
+++ b/profiles/network/manager.c
@@ -78,19 +78,19 @@ static int network_probe(struct btd_profile *p, struct btd_device *device,
{
struct btd_adapter *adapter = device_get_adapter(device);
const gchar *path = device_get_path(device);
- bdaddr_t src, dst;
+ bdaddr_t *src, dst;
DBG("path %s", path);
- adapter_get_address(adapter, &src);
+ src = adapter_get_address(adapter);
device_get_address(device, &dst, NULL);
if (g_slist_find_custom(uuids, PANU_UUID, bt_uuid_strcmp))
- connection_register(device, path, &src, &dst, BNEP_SVC_PANU);
+ connection_register(device, path, src, &dst, BNEP_SVC_PANU);
if (g_slist_find_custom(uuids, GN_UUID, bt_uuid_strcmp))
- connection_register(device, path, &src, &dst, BNEP_SVC_GN);
+ connection_register(device, path, src, &dst, BNEP_SVC_GN);
if (g_slist_find_custom(uuids, NAP_UUID, bt_uuid_strcmp))
- connection_register(device, path, &src, &dst, BNEP_SVC_NAP);
+ connection_register(device, path, src, &dst, BNEP_SVC_NAP);
return 0;
}
diff --git a/profiles/network/server.c b/profiles/network/server.c
index 6ee4770..ccf6e69 100644
--- a/profiles/network/server.c
+++ b/profiles/network/server.c
@@ -742,16 +742,14 @@ static struct network_adapter *create_adapter(struct btd_adapter *adapter)
{
struct network_adapter *na;
GError *err = NULL;
- bdaddr_t src;
na = g_new0(struct network_adapter, 1);
na->adapter = btd_adapter_ref(adapter);
- adapter_get_address(adapter, &src);
-
na->io = bt_io_listen(NULL, confirm_event, na,
NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_PSM, BNEP_PSM,
BT_IO_OPT_OMTU, BNEP_MTU,
BT_IO_OPT_IMTU, BNEP_MTU,
@@ -803,7 +801,7 @@ int server_register(struct btd_adapter *adapter)
return -1;
}
- adapter_get_address(adapter, &ns->src);
+ bacpy(&ns->src, adapter_get_address(adapter));
ns->id = BNEP_SVC_NAP;
ns->na = na;
ns->record_id = 0;
diff --git a/profiles/proximity/monitor.c b/profiles/proximity/monitor.c
index 6444a75..477eeea 100644
--- a/profiles/proximity/monitor.c
+++ b/profiles/proximity/monitor.c
@@ -407,7 +407,7 @@ static DBusMessage *set_link_loss_alert(DBusConnection *conn, DBusMessage *msg,
{
struct monitor *monitor = data;
struct btd_device *device = monitor->device;
- bdaddr_t sba, dba;
+ bdaddr_t dba;
if (!level_is_valid(level))
return btd_error_invalid_args(msg);
@@ -418,10 +418,10 @@ static DBusMessage *set_link_loss_alert(DBusConnection *conn, DBusMessage *msg,
g_free(monitor->linklosslevel);
monitor->linklosslevel = g_strdup(level);
- adapter_get_address(device_get_adapter(device), &sba);
device_get_address(device, &dba, NULL);
- write_proximity_config(&sba, &dba, "LinkLossAlertLevel", level);
+ write_proximity_config(adapter_get_address(device_get_adapter(device)),
+ &dba, "LinkLossAlertLevel", level);
if (monitor->attrib)
write_alert_level(monitor);
@@ -593,13 +593,14 @@ int monitor_register(struct btd_device *device,
{
const char *path = device_get_path(device);
struct monitor *monitor;
- bdaddr_t sba, dba;
+ bdaddr_t dba;
char *level;
- adapter_get_address(device_get_adapter(device), &sba);
device_get_address(device, &dba, NULL);
- level = read_proximity_config(&sba, &dba, "LinkLossAlertLevel");
+ level = read_proximity_config(
+ adapter_get_address(device_get_adapter(device)),
+ &dba, "LinkLossAlertLevel");
monitor = g_new0(struct monitor, 1);
monitor->device = btd_device_ref(device);
diff --git a/profiles/sap/manager.c b/profiles/sap/manager.c
index cb47b93..fddd7aa 100644
--- a/profiles/sap/manager.c
+++ b/profiles/sap/manager.c
@@ -35,13 +35,10 @@
static int sap_server_probe(struct btd_profile *p, struct btd_adapter *adapter)
{
const char *path = adapter_get_path(adapter);
- bdaddr_t src;
DBG("path %s", path);
- adapter_get_address(adapter, &src);
-
- return sap_server_register(path, &src);
+ return sap_server_register(path, adapter_get_address(adapter));
}
static void sap_server_remove(struct btd_profile *p,
diff --git a/src/adapter.c b/src/adapter.c
index 056f2a2..6cb6f7c 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1870,7 +1870,6 @@ static void create_stored_device_from_ltks(char *key, char *value,
struct smp_ltk_info *info;
char address[18], srcaddr[18];
uint8_t bdaddr_type;
- bdaddr_t src;
if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) < 2)
return;
@@ -1885,8 +1884,7 @@ static void create_stored_device_from_ltks(char *key, char *value,
(GCompareFunc) device_address_cmp))
return;
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ ba2str(adapter_get_address(adapter), srcaddr);
if (g_strcmp0(srcaddr, address) == 0)
return;
@@ -2670,9 +2668,9 @@ const gchar *adapter_get_path(struct btd_adapter *adapter)
return adapter->path;
}
-void adapter_get_address(struct btd_adapter *adapter, bdaddr_t *bdaddr)
+bdaddr_t *adapter_get_address(struct btd_adapter *adapter)
{
- bacpy(bdaddr, &adapter->bdaddr);
+ return &adapter->bdaddr;
}
void adapter_set_allow_name_changes(struct btd_adapter *adapter,
@@ -3618,7 +3616,7 @@ ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
{
GSList *l;
btd_adapter_pin_cb_t cb;
- bdaddr_t sba, dba;
+ bdaddr_t dba;
ssize_t ret;
for (l = adapter->pin_callbacks; l != NULL; l = g_slist_next(l)) {
@@ -3628,10 +3626,9 @@ ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
return ret;
}
- adapter_get_address(adapter, &sba);
device_get_address(dev, &dba, NULL);
- return read_pin_code(&sba, &dba, pin_buf);
+ return read_pin_code(adapter_get_address(adapter), &dba, pin_buf);
}
void btd_adapter_register_powered_callback(struct btd_adapter *adapter,
diff --git a/src/adapter.h b/src/adapter.h
index 7ca8d95..f3599b5 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -122,7 +122,7 @@ void adapter_set_discovering(struct btd_adapter *adapter,
gboolean discovering);
uint16_t adapter_get_dev_id(struct btd_adapter *adapter);
const gchar *adapter_get_path(struct btd_adapter *adapter);
-void adapter_get_address(struct btd_adapter *adapter, bdaddr_t *bdaddr);
+bdaddr_t *adapter_get_address(struct btd_adapter *adapter);
struct remote_dev_info *adapter_search_found_devices(struct btd_adapter *adapter,
bdaddr_t *bdaddr);
void adapter_update_found_devices(struct btd_adapter *adapter,
diff --git a/src/attrib-server.c b/src/attrib-server.c
index 9b03e54..e7e2531 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
@@ -154,11 +154,8 @@ static gint adapter_cmp_addr(gconstpointer a, gconstpointer b)
{
const struct gatt_server *server = a;
const bdaddr_t *bdaddr = b;
- bdaddr_t src;
-
- adapter_get_address(server->adapter, &src);
- return bacmp(&src, bdaddr);
+ return bacmp(adapter_get_address(server->adapter), bdaddr);
}
static gint adapter_cmp(gconstpointer a, gconstpointer b)
@@ -302,7 +299,6 @@ static uint32_t attrib_create_sdp_new(struct gatt_server *server,
struct attribute *a;
uint16_t end = 0;
uuid_t svc, gap_uuid;
- bdaddr_t addr;
a = find_svc_range(server, handle, &end);
@@ -330,8 +326,8 @@ static uint32_t attrib_create_sdp_new(struct gatt_server *server,
"http://www.bluez.org/");
}
- adapter_get_address(server->adapter, &addr);
- if (add_record_to_server(&addr, record) == 0)
+ if (add_record_to_server(adapter_get_address(server->adapter), record)
+ == 0)
return record->handle;
sdp_record_free(record);
@@ -1241,19 +1237,19 @@ int btd_adapter_gatt_server_start(struct btd_adapter *adapter)
{
struct gatt_server *server;
GError *gerr = NULL;
- bdaddr_t addr;
+ bdaddr_t *addr;
DBG("Start GATT server in hci%d", adapter_get_dev_id(adapter));
server = g_new0(struct gatt_server, 1);
server->adapter = btd_adapter_ref(adapter);
- adapter_get_address(server->adapter, &addr);
+ addr = adapter_get_address(server->adapter);
/* BR/EDR socket */
server->l2cap_io = bt_io_listen(NULL, confirm_event,
NULL, NULL, &gerr,
- BT_IO_OPT_SOURCE_BDADDR, &addr,
+ BT_IO_OPT_SOURCE_BDADDR, addr,
BT_IO_OPT_PSM, ATT_PSM,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
BT_IO_OPT_INVALID);
@@ -1273,7 +1269,7 @@ int btd_adapter_gatt_server_start(struct btd_adapter *adapter)
/* LE socket */
server->le_io = bt_io_listen(NULL, confirm_event,
&server->le_io, NULL, &gerr,
- BT_IO_OPT_SOURCE_BDADDR, &addr,
+ BT_IO_OPT_SOURCE_BDADDR, addr,
BT_IO_OPT_CID, ATT_CID,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
BT_IO_OPT_INVALID);
diff --git a/src/device.c b/src/device.c
index 0339bcf..d5aa8e1 100644
--- a/src/device.c
+++ b/src/device.c
@@ -221,14 +221,11 @@ static void browse_request_cancel(struct browse_req *req)
{
struct btd_device *device = req->device;
struct btd_adapter *adapter = device->adapter;
- bdaddr_t src;
if (device_is_creating(device, NULL))
device_set_temporary(device, TRUE);
- adapter_get_address(adapter, &src);
-
- bt_cancel_discovery(&src, &device->bdaddr);
+ bt_cancel_discovery(adapter_get_address(adapter), &device->bdaddr);
attio_cleanup(device);
@@ -313,7 +310,6 @@ static DBusMessage *get_properties(DBusConnection *conn,
DBusMessage *reply;
DBusMessageIter iter;
DBusMessageIter dict;
- bdaddr_t src;
char name[MAX_NAME_LENGTH + 1], dstaddr[18];
char **str;
const char *ptr, *icon = NULL;
@@ -343,7 +339,6 @@ static DBusMessage *get_properties(DBusConnection *conn,
/* Name */
ptr = NULL;
memset(name, 0, sizeof(name));
- adapter_get_address(adapter, &src);
ptr = device->name;
dict_append_entry(&dict, "Name", DBUS_TYPE_STRING, &ptr);
@@ -359,12 +354,13 @@ static DBusMessage *get_properties(DBusConnection *conn,
dict_append_entry(&dict, "Alias", DBUS_TYPE_STRING, &ptr);
/* Class */
- if (read_remote_class(&src, &device->bdaddr, &class) == 0) {
+ if (read_remote_class(adapter_get_address(adapter),
+ &device->bdaddr, &class) == 0) {
icon = class_to_icon(class);
dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
- } else if (read_remote_appearance(&src, &device->bdaddr,
- device->bdaddr_type, &app) == 0) {
+ } else if (read_remote_appearance(adapter_get_address(adapter),
+ &device->bdaddr, device->bdaddr_type, &app) == 0) {
/* Appearance */
icon = gap_appearance_to_icon(app);
@@ -437,7 +433,6 @@ static DBusMessage *set_alias(DBusMessage *msg, const char *alias, void *data)
struct btd_device *device = data;
struct btd_adapter *adapter = device->adapter;
char srcaddr[18], dstaddr[18];
- bdaddr_t src;
int err;
/* No change */
@@ -445,8 +440,7 @@ static DBusMessage *set_alias(DBusMessage *msg, const char *alias, void *data)
g_strcmp0(device->alias, alias) == 0)
return dbus_message_new_method_return(msg);
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ ba2str(adapter_get_address(adapter), srcaddr);
ba2str(&device->bdaddr, dstaddr);
/* Remove alias if empty string */
@@ -470,14 +464,12 @@ static DBusMessage *set_trust(DBusMessage *msg, gboolean value, void *data)
struct btd_device *device = data;
struct btd_adapter *adapter = device->adapter;
char srcaddr[18], dstaddr[18];
- bdaddr_t src;
int err;
if (device->trusted == value)
return dbus_message_new_method_return(msg);
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ ba2str(adapter_get_address(adapter), srcaddr);
ba2str(&device->bdaddr, dstaddr);
err = write_trust(srcaddr, dstaddr, device->bdaddr_type, value);
@@ -516,7 +508,6 @@ static gboolean do_disconnect(gpointer user_data)
int device_block(struct btd_device *device, gboolean update_only)
{
int err = 0;
- bdaddr_t src;
if (device->blocked)
return 0;
@@ -535,9 +526,8 @@ int device_block(struct btd_device *device, gboolean update_only)
device->blocked = TRUE;
- adapter_get_address(device->adapter, &src);
-
- err = write_blocked(&src, &device->bdaddr, device->bdaddr_type, TRUE);
+ err = write_blocked(adapter_get_address(device->adapter),
+ &device->bdaddr, device->bdaddr_type, TRUE);
if (err < 0)
error("write_blocked(): %s (%d)", strerror(-err), -err);
@@ -554,7 +544,6 @@ int device_unblock(struct btd_device *device, gboolean silent,
gboolean update_only)
{
int err = 0;
- bdaddr_t src;
if (!device->blocked)
return 0;
@@ -568,9 +557,8 @@ int device_unblock(struct btd_device *device, gboolean silent,
device->blocked = FALSE;
- adapter_get_address(device->adapter, &src);
-
- err = write_blocked(&src, &device->bdaddr, device->bdaddr_type, FALSE);
+ err = write_blocked(adapter_get_address(device->adapter),
+ &device->bdaddr, device->bdaddr_type, FALSE);
if (err < 0)
error("write_blocked(): %s (%d)", strerror(-err), -err);
@@ -1128,7 +1116,7 @@ struct btd_device *device_create(struct btd_adapter *adapter,
gchar *address_up;
struct btd_device *device;
const gchar *adapter_path = adapter_get_path(adapter);
- bdaddr_t src;
+ bdaddr_t *src;
char srcaddr[18], alias[MAX_NAME_LENGTH + 1];
uint16_t vendor, product, version;
@@ -1154,25 +1142,25 @@ struct btd_device *device_create(struct btd_adapter *adapter,
str2ba(address, &device->bdaddr);
device->adapter = adapter;
device->bdaddr_type = bdaddr_type;
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ src = adapter_get_address(adapter);
+ ba2str(src, srcaddr);
read_device_name(srcaddr, address, bdaddr_type, device->name);
if (read_device_alias(srcaddr, address, bdaddr_type, alias,
sizeof(alias)) == 0)
device->alias = g_strdup(alias);
- device->trusted = read_trust(&src, address, device->bdaddr_type);
+ device->trusted = read_trust(src, address, device->bdaddr_type);
- if (read_blocked(&src, &device->bdaddr, device->bdaddr_type))
+ if (read_blocked(src, &device->bdaddr, device->bdaddr_type))
device_block(device, FALSE);
- if (read_link_key(&src, &device->bdaddr, device->bdaddr_type, NULL,
+ if (read_link_key(src, &device->bdaddr, device->bdaddr_type, NULL,
NULL) == 0) {
device_set_paired(device, TRUE);
device_set_bonded(device, TRUE);
}
- if (device_is_le(device) && has_longtermkeys(&src, &device->bdaddr,
+ if (device_is_le(device) && has_longtermkeys(src, &device->bdaddr,
device->bdaddr_type)) {
device_set_paired(device, TRUE);
device_set_bonded(device, TRUE);
@@ -1234,27 +1222,27 @@ uint16_t btd_device_get_version(struct btd_device *device)
static void device_remove_stored(struct btd_device *device)
{
- bdaddr_t src, dst;
+ bdaddr_t *src, dst;
uint8_t dst_type;
- adapter_get_address(device->adapter, &src);
+ src = adapter_get_address(device->adapter);
device_get_address(device, &dst, &dst_type);
- delete_entry(&src, "profiles", &dst, dst_type);
- delete_entry(&src, "trusts", &dst, dst_type);
+ delete_entry(src, "profiles", &dst, dst_type);
+ delete_entry(src, "trusts", &dst, dst_type);
if (device_is_bonded(device)) {
- delete_entry(&src, "linkkeys", &dst, dst_type);
- delete_entry(&src, "aliases", &dst, dst_type);
- delete_entry(&src, "longtermkeys", &dst, dst_type);
+ delete_entry(src, "linkkeys", &dst, dst_type);
+ delete_entry(src, "aliases", &dst, dst_type);
+ delete_entry(src, "longtermkeys", &dst, dst_type);
device_set_bonded(device, FALSE);
device->paired = FALSE;
btd_adapter_remove_bonding(device->adapter, &dst, dst_type);
}
- delete_all_records(&src, &dst, dst_type);
- delete_device_service(&src, &dst, dst_type);
+ delete_all_records(src, &dst, dst_type);
+ delete_device_service(src, &dst, dst_type);
if (device->blocked)
device_unblock(device, TRUE, FALSE);
@@ -1467,15 +1455,13 @@ static void device_remove_profiles(struct btd_device *device, GSList *uuids)
{
struct btd_adapter *adapter = device_get_adapter(device);
char srcaddr[18], dstaddr[18];
- bdaddr_t src;
sdp_list_t *records;
GSList *l, *next;
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ ba2str(adapter_get_address(adapter), srcaddr);
ba2str(&device->bdaddr, dstaddr);
- records = read_records(&src, &device->bdaddr);
+ records = read_records(adapter_get_address(adapter), &device->bdaddr);
DBG("Removing profiles for %s", dstaddr);
@@ -1547,10 +1533,8 @@ static void update_bredr_services(struct browse_req *req, sdp_list_t *recs)
sdp_list_t *seq;
char srcaddr[18], dstaddr[18];
uint8_t dst_type;
- bdaddr_t src;
- adapter_get_address(adapter, &src);
- ba2str(&src, srcaddr);
+ ba2str(adapter_get_address(adapter), srcaddr);
ba2str(&device->bdaddr, dstaddr);
for (seq = recs; seq; seq = seq->next) {
@@ -1681,19 +1665,18 @@ static void update_gatt_services(struct browse_req *req, GSList *current,
static void store_profiles(struct btd_device *device)
{
struct btd_adapter *adapter = device->adapter;
- bdaddr_t src;
char *str;
- adapter_get_address(adapter, &src);
-
if (!device->uuids) {
- write_device_profiles(&src, &device->bdaddr,
- device->bdaddr_type, "");
+ write_device_profiles(adapter_get_address(adapter),
+ &device->bdaddr, device->bdaddr_type,
+ "");
return;
}
str = bt_list2string(device->uuids);
- write_device_profiles(&src, &device->bdaddr, device->bdaddr_type, str);
+ write_device_profiles(adapter_get_address(adapter), &device->bdaddr,
+ device->bdaddr_type, str);
g_free(str);
}
@@ -1832,7 +1815,6 @@ static void browse_cb(sdp_list_t *recs, int err, gpointer user_data)
struct browse_req *req = user_data;
struct btd_device *device = req->device;
struct btd_adapter *adapter = device->adapter;
- bdaddr_t src;
uuid_t uuid;
/* If we have a valid response and req->search_uuid == 2, then L2CAP
@@ -1847,12 +1829,11 @@ static void browse_cb(sdp_list_t *recs, int err, gpointer user_data)
update_bredr_services(req, recs);
- adapter_get_address(adapter, &src);
-
/* Search for mandatory uuids */
if (uuid_list[req->search_uuid]) {
sdp_uuid16_create(&uuid, uuid_list[req->search_uuid++]);
- bt_search_service(&src, &device->bdaddr, &uuid,
+ bt_search_service(adapter_get_address(adapter),
+ &device->bdaddr, &uuid,
browse_cb, user_data, NULL);
return;
}
@@ -1902,13 +1883,13 @@ static char *primary_list_to_string(GSList *primary_list)
static void store_services(struct btd_device *device)
{
struct btd_adapter *adapter = device->adapter;
- bdaddr_t dba, sba;
+ bdaddr_t dba;
char *str = primary_list_to_string(device->primaries);
- adapter_get_address(adapter, &sba);
device_get_address(device, &dba, NULL);
- write_device_services(&sba, &dba, device->bdaddr_type, str);
+ write_device_services(adapter_get_address(adapter), &dba,
+ device->bdaddr_type, str);
g_free(str);
}
@@ -2130,9 +2111,7 @@ GIOChannel *device_att_connect(gpointer user_data)
GIOChannel *io;
GError *gerr = NULL;
char addr[18];
- bdaddr_t sba;
- adapter_get_address(adapter, &sba);
ba2str(&device->bdaddr, addr);
DBG("Connection attempt to: %s", addr);
@@ -2145,7 +2124,8 @@ GIOChannel *device_att_connect(gpointer user_data)
if (device_is_bredr(device)) {
io = bt_io_connect(att_connect_cb,
attcb, NULL, &gerr,
- BT_IO_OPT_SOURCE_BDADDR, &sba,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_DEST_BDADDR, &device->bdaddr,
BT_IO_OPT_PSM, ATT_PSM,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_MEDIUM,
@@ -2154,7 +2134,8 @@ GIOChannel *device_att_connect(gpointer user_data)
/* this is a LE device during pairing, using low sec level */
io = bt_io_connect(att_connect_cb,
attcb, NULL, &gerr,
- BT_IO_OPT_SOURCE_BDADDR, &sba,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_DEST_BDADDR, &device->bdaddr,
BT_IO_OPT_DEST_TYPE, device->bdaddr_type,
BT_IO_OPT_CID, ATT_CID,
@@ -2170,7 +2151,8 @@ GIOChannel *device_att_connect(gpointer user_data)
} else {
io = bt_io_connect(att_connect_cb,
attcb, NULL, &gerr,
- BT_IO_OPT_SOURCE_BDADDR, &sba,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_DEST_BDADDR, &device->bdaddr,
BT_IO_OPT_DEST_TYPE, device->bdaddr_type,
BT_IO_OPT_CID, ATT_CID,
@@ -2223,14 +2205,12 @@ int device_browse_primary(struct btd_device *device, DBusMessage *msg,
struct att_callbacks *attcb;
struct browse_req *req;
BtIOSecLevel sec_level;
- bdaddr_t src;
if (device->browse)
return -EBUSY;
req = g_new0(struct browse_req, 1);
req->device = btd_device_ref(device);
- adapter_get_address(adapter, &src);
device->browse = req;
@@ -2248,7 +2228,8 @@ int device_browse_primary(struct btd_device *device, DBusMessage *msg,
device->att_io = bt_io_connect(att_connect_cb,
attcb, NULL, NULL,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_DEST_BDADDR, &device->bdaddr,
BT_IO_OPT_DEST_TYPE, device->bdaddr_type,
BT_IO_OPT_CID, ATT_CID,
@@ -2286,15 +2267,12 @@ int device_browse_sdp(struct btd_device *device, DBusMessage *msg,
struct btd_adapter *adapter = device->adapter;
struct browse_req *req;
bt_callback_t cb;
- bdaddr_t src;
uuid_t uuid;
int err;
if (device->browse)
return -EBUSY;
- adapter_get_address(adapter, &src);
-
req = g_new0(struct browse_req, 1);
req->device = btd_device_ref(device);
if (search) {
@@ -2306,7 +2284,8 @@ int device_browse_sdp(struct btd_device *device, DBusMessage *msg,
cb = browse_cb;
}
- err = bt_search_service(&src, &device->bdaddr, &uuid, cb, req, NULL);
+ err = bt_search_service(adapter_get_address(adapter), &device->bdaddr,
+ &uuid, cb, req, NULL);
if (err < 0) {
browse_request_free(req);
return err;
@@ -2578,6 +2557,7 @@ DBusMessage *device_create_bonding(struct btd_device *device,
if (device_is_bonded(device))
return btd_error_already_exists(msg);
+ adapter_get_address(adapter),
bonding = bonding_request_new(msg, device, agent_path,
capability);
@@ -3128,8 +3108,6 @@ void btd_device_add_uuid(struct btd_device *device, const char *uuid)
const sdp_record_t *btd_device_get_record(struct btd_device *device,
const char *uuid)
{
- bdaddr_t src;
-
if (device->tmp_records) {
const sdp_record_t *record;
@@ -3142,9 +3120,8 @@ const sdp_record_t *btd_device_get_record(struct btd_device *device,
device->tmp_records = NULL;
}
- adapter_get_address(device->adapter, &src);
-
- device->tmp_records = read_records(&src, &device->bdaddr);
+ device->tmp_records = read_records(adapter_get_address(device->adapter),
+ &device->bdaddr);
if (!device->tmp_records)
return NULL;
@@ -3195,14 +3172,12 @@ void device_set_class(struct btd_device *device, uint32_t value)
int device_get_appearance(struct btd_device *device, uint16_t *value)
{
- bdaddr_t src;
uint16_t app;
int err;
- adapter_get_address(device_get_adapter(device), &src);
-
- err = read_remote_appearance(&src, &device->bdaddr,
- device->bdaddr_type, &app);
+ err = read_remote_appearance(adapter_get_address(device->adapter),
+ &device->bdaddr, device->bdaddr_type,
+ &app);
if (err < 0)
return err;
@@ -3215,7 +3190,6 @@ int device_get_appearance(struct btd_device *device, uint16_t *value)
void device_set_appearance(struct btd_device *device, uint16_t value)
{
const char *icon = gap_appearance_to_icon(value);
- bdaddr_t src;
emit_property_changed(device->path,
DEVICE_INTERFACE, "Appearance",
@@ -3226,9 +3200,8 @@ void device_set_appearance(struct btd_device *device, uint16_t value)
DEVICE_INTERFACE, "Icon",
DBUS_TYPE_STRING, &icon);
- adapter_get_address(device_get_adapter(device), &src);
- write_remote_appearance(&src, &device->bdaddr, device->bdaddr_type,
- value);
+ write_remote_appearance(adapter_get_address(device->adapter),
+ &device->bdaddr, device->bdaddr_type, value);
}
static gboolean notify_attios(gpointer user_data)
diff --git a/src/manager.c b/src/manager.c
index 2ceeed1..a96115b 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -280,11 +280,8 @@ static gint adapter_cmp(gconstpointer a, gconstpointer b)
{
struct btd_adapter *adapter = (struct btd_adapter *) a;
const bdaddr_t *bdaddr = b;
- bdaddr_t src;
- adapter_get_address(adapter, &src);
-
- return bacmp(&src, bdaddr);
+ return bacmp(adapter_get_address(adapter), bdaddr);
}
struct btd_adapter *manager_find_adapter(const bdaddr_t *sba)
diff --git a/src/profile.c b/src/profile.c
index 338e903..c10e315 100644
--- a/src/profile.c
+++ b/src/profile.c
@@ -185,12 +185,11 @@ static void ext_io_destroy(gpointer p)
}
if (ext_io->resolving) {
- bdaddr_t src, dst;
+ bdaddr_t dst;
- adapter_get_address(ext_io->adapter, &src);
device_get_address(ext_io->device, &dst, NULL);
- bt_cancel_discovery(&src, &dst);
+ bt_cancel_discovery(adapter_get_address(ext_io->adapter), &dst);
}
if (ext_io->rec_handle)
@@ -501,11 +500,8 @@ static int ext_start_servers(struct ext_profile *ext,
GError *err = NULL;
uint16_t handle;
GIOChannel *io;
- bdaddr_t src;
-
- adapter_get_address(adapter, &src);
- handle = ext_register_record(ext, &src);
+ handle = ext_register_record(ext, adapter_get_address(adapter));
if (ext->authorize) {
confirm = ext_confirm;
@@ -521,7 +517,8 @@ static int ext_start_servers(struct ext_profile *ext,
server->rec_handle = handle;
io = bt_io_listen(connect, confirm, server, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_PSM, ext->psm,
BT_IO_OPT_SEC_LEVEL, ext->sec_level,
BT_IO_OPT_INVALID);
@@ -545,7 +542,8 @@ static int ext_start_servers(struct ext_profile *ext,
server->rec_handle = handle;
io = bt_io_listen(connect, confirm, server, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, &src,
+ BT_IO_OPT_SOURCE_BDADDR,
+ adapter_get_address(adapter),
BT_IO_OPT_CHANNEL, ext->chan,
BT_IO_OPT_SEC_LEVEL, ext->sec_level,
BT_IO_OPT_INVALID);
@@ -720,7 +718,7 @@ static void record_cb(sdp_list_t *recs, int err, gpointer user_data)
{
struct ext_io *conn = user_data;
struct ext_profile *ext = conn->ext;
- bdaddr_t src, dst;
+ bdaddr_t dst;
sdp_list_t *r;
conn->resolving = false;
@@ -772,10 +770,9 @@ static void record_cb(sdp_list_t *recs, int err, gpointer user_data)
goto failed;
}
- adapter_get_address(conn->adapter, &src);
device_get_address(conn->device, &dst, NULL);
- err = connect_io(conn, &src, &dst);
+ err = connect_io(conn, adapter_get_address(conn->adapter), &dst);
if (err < 0) {
error("Connecting %s failed: %s", ext->name, strerror(-err));
goto failed;
@@ -810,7 +807,7 @@ static int ext_connect_dev(struct btd_device *dev, struct btd_profile *profile,
struct btd_adapter *adapter;
struct ext_io *conn;
struct ext_profile *ext;
- bdaddr_t src, dst;
+ bdaddr_t dst;
int err;
ext = find_ext(profile);
@@ -818,16 +815,15 @@ static int ext_connect_dev(struct btd_device *dev, struct btd_profile *profile,
return -ENOENT;
adapter = device_get_adapter(dev);
- adapter_get_address(adapter, &src);
device_get_address(dev, &dst, NULL);
conn = g_new0(struct ext_io, 1);
conn->ext = ext;
if (ext->psm || ext->chan)
- err = connect_io(conn, &src, &dst);
+ err = connect_io(conn, adapter_get_address(adapter), &dst);
else
- err = resolve_service(conn, &src, &dst);
+ err = resolve_service(conn, adapter_get_address(adapter), &dst);
if (err < 0)
goto failed;
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH 4/4] audio: Add check for non-a2dp codec
From: Chan-yeol Park @ 2012-10-05 7:22 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: chanyeol.park, linux-bluetooth
In-Reply-To: <CABBYNZKHzKv+GQhynnGN04O17kwjDobwL-+CeVB9hJqrVEF05A@mail.gmail.com>
Hi Luiz,
On 10/04/2012 11:02 PM, Luiz Augusto von Dentz wrote:
> #define SBC_SAMPLING_FREQ_16000 (1 << 3)
> #define SBC_SAMPLING_FREQ_32000 (1 << 2)
> @@ -114,3 +115,8 @@ typedef struct {
> #else
> #error "Unknown byte order"
> #endif
> +
> +typedef struct {
> + uint8_t vendor_id[4];
> + uint8_t codec_id[2];
> +} __attribute__ ((packed)) non_a2dp_vendor_codec_t;
> We normally don't typedef this type of structs, besides
> a2dp_vendor_codec should be enough so this should be named struct
> a2dp_vendor_codec.
You're right. originally I didn't use typedef.
but in order to achieve harmony in a2dp-codecs.h like sbc,mpeg, I've
changed it.
If you make decision about this, I will raise a second patch.
Regards
Chanyeol
^ permalink raw reply
* Re: [PATCH 4/4] audio: Add check for non-a2dp codec
From: Chan-yeol Park @ 2012-10-05 2:37 UTC (permalink / raw)
To: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth; +Cc: chanyeol.park
In-Reply-To: <1349382629.27233.43.camel@aeonflux>
Hi All,
On 10/05/2012 05:30 AM, Marcel Holtmann wrote:
> Hi Luiz,
>
>>>>> This patch adds checks(vendor ID, vendor specific codec ID) to make sure of
>>>>> non-a2dp codec selection.
>>>>> ---
>>>>> audio/a2dp-codecs.h | 6 +++++
>>>>> audio/a2dp.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-
>>>>> 2 files changed, 73 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/audio/a2dp-codecs.h b/audio/a2dp-codecs.h
>>>>> index 51c796a..e3d2cba 100644
>>>>> --- a/audio/a2dp-codecs.h
>>>>> +++ b/audio/a2dp-codecs.h
>>>>> @@ -26,6 +26,7 @@
>>>>> #define A2DP_CODEC_MPEG12 0x01
>>>>> #define A2DP_CODEC_MPEG24 0x02
>>>>> #define A2DP_CODEC_ATRAC 0x03
>>>>> +#define A2DP_CODEC_NON_A2DP 0xFF
>>>> I prefer A2DP_CODEC_VENDOR
>>> what is the specification calling these? And yes, I would prefer VENDOR
>>> as well.
>> Apparently it comes from the assigned numbers
>> http://www.bluetooth.org/Technical/AssignedNumbers/audio-video.htm:
>>
>> 1 1 1 1 1 1 1 1 non-A2DP n/a A2DP
>>
>> But the spec refer to it as 4.7 Vendor Specific A2DP Codec, IMO the
>> term non-A2DP can be confused with not defined in A2DP spec when in
>> fact it is defined:
>>
>> "4.2.3 Vendor Specific A2DP Codecs
>> The device may support other codecs as Vendor Specific A2DP codecs. A
>> user of a Vendor Specific A2DP codec (hereafter the Vendor) will need
>> to define parameters and other information necessary for use of the
>> codec in A2DP."
>>
>> There is no such a thing as non-A2DP in the spec, so again to avoid
>> confusion I would stick to the terminology vendor or vendor specific.
> lets use "vendor" for these. Otherwise the function and variable naming
> gets too complicated.
As you guided I prefer "vendor" codec rather than "non-a2dp" codec. I
just follow the word in the spec 1.2 because current bluez A2DP version
is 1.2. Actually A2DP spec changes the name of 0xff codec from 1.2 to
1.3 like the below.
1.4 Bluetooth A2DP Profile Change History
1.4.1 Changes from 1.2 to 1.3
1.4.1.1 General Changes
· Non-A2DP codecs from A2DP 1.2 are now referred to as Vendor-Specific
A2DP codecs
Anyway I think "vendor" is more suitable than "non-a2dp".
I will raise a second patch.
Regards
Chanyeol
^ permalink raw reply
* [PATCH] net, bluetooth: don't attempt to free a channel that wasn't created
From: Sasha Levin @ 2012-10-04 23:59 UTC (permalink / raw)
To: marcel, gustavo, johan.hedberg, davem
Cc: levinsasha928, davej, linux-kernel, linux-bluetooth, netdev,
Sasha Levin
We may currently attempt to free a channel which wasn't created due to
an error in the initialization path, this would cause a NULL ptr deref.
Introduced in commit 61d6ef3e ("Bluetooth: Make better use of l2cap_chan
reference counting").
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
---
net/bluetooth/l2cap_sock.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 083f2bf..66c295a 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -1083,7 +1083,8 @@ static void l2cap_sock_destruct(struct sock *sk)
{
BT_DBG("sk %p", sk);
- l2cap_chan_put(l2cap_pi(sk)->chan);
+ if (l2cap_pi(sk)->chan)
+ l2cap_chan_put(l2cap_pi(sk)->chan);
if (l2cap_pi(sk)->rx_busy_skb) {
kfree_skb(l2cap_pi(sk)->rx_busy_skb);
l2cap_pi(sk)->rx_busy_skb = NULL;
--
1.7.12
^ permalink raw reply related
* Re: [PATCH BlueZ] gdbus: Fix invalid memory access while unregistering
From: Luiz Augusto von Dentz @ 2012-10-04 20:57 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: linux-bluetooth
In-Reply-To: <1349383353-16733-1-git-send-email-lucas.demarchi@profusion.mobi>
Hi Lucas,
On Thu, Oct 4, 2012 at 11:42 PM, Lucas De Marchi
<lucas.demarchi@profusion.mobi> wrote:
> If an interface is added and removed on the same mailoop iteration,
> ObjectManager would try to send InterfacesAdded signal while running the
> idler because the interface was added to data->added list.
>
> This is easily reproduced by forcing an error path in a plugin
> registration, like on sap_server_register(), resulting in the following
> error:
>
> ==11795== Invalid read of size 4
> ==11795== at 0x496F592: dbus_message_iter_append_basic (dbus-message.c:2598)
> ==11795== by 0x117B39: append_interface (object.c:554)
> ==11795== by 0x48955E7: g_slist_foreach (gslist.c:840)
> ==11795== by 0x11923B: process_changes (object.c:592)
> ==11795== by 0x11956D: generic_unregister (object.c:980)
> ==11795== by 0x4973BAC: _dbus_object_tree_unregister_and_unlock (dbus-object-tree.c:516)
> ==11795== by 0x4965240: dbus_connection_unregister_object_path (dbus-connection.c:5776)
> ==11795== by 0x1178A5: object_path_unref (object.c:1219)
> ==11795== by 0x118517: g_dbus_unregister_interface (object.c:1344)
> ==11795== by 0x19AF5B: sap_exit (sap.c:385)
> ==11795== by 0x13E9E2: sap_server_register (server.c:1428)
> ==11795== by 0x13C092: sap_server_probe (manager.c:44)
>
> With this patch we don't send the InterfacesAdded signal, removing it
> from data->added while unregistering.
> ---
> gdbus/object.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/gdbus/object.c b/gdbus/object.c
> index c63a26d..444728c 100644
> --- a/gdbus/object.c
> +++ b/gdbus/object.c
> @@ -657,6 +657,17 @@ static gboolean remove_interface(struct generic_data *data, const char *name)
> return TRUE;
> }
>
> + /*
> + * Interface being removed was just added, on the same mainloop
> + * iteration? Don't send any signal
> + */
> + if (g_slist_find(data->added, iface)) {
> + data->added = g_slist_remove(data->added, iface);
> + g_free(iface->name);
> + g_free(iface);
> + return TRUE;
> + }
> +
> data->removed = g_slist_prepend(data->removed, iface->name);
> g_free(iface);
>
> --
> 1.7.12.2
Ack, gonna apply it tomorrow in case of no objections.
--
Luiz Augusto von Dentz
^ permalink raw reply
* Re: [PATCH 1/4] client: Update the file offset to the beginning after writing to the file
From: Luiz Augusto von Dentz @ 2012-10-04 20:55 UTC (permalink / raw)
To: Srinivasa Ragavan; +Cc: linux-bluetooth
In-Reply-To: <1349360560-21631-1-git-send-email-srinivasa.ragavan.venkateswaran@intel.com>
Hi Srinivasa,
On Thu, Oct 4, 2012 at 5:22 PM, Srinivasa Ragavan
<srinivasa.ragavan.venkateswaran@intel.com> wrote:
> When the transfer file is opened in O_RDWR mode, just after the contents are
> written to the file, the file offset has to be set to the beginning of the
> file. If not subsequent read fails. This patch fixes this.
> ---
> client/transfer.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/client/transfer.c b/client/transfer.c
> index fbcafc8..cac3884 100644
> --- a/client/transfer.c
> +++ b/client/transfer.c
> @@ -426,6 +426,7 @@ struct obc_transfer *obc_transfer_put(const char *type, const char *name,
> "Writing all contents to file failed");
> goto fail;
> }
> + lseek(transfer->fd, 0, SEEK_SET);
> } else {
> if (!transfer_open(transfer, O_RDONLY, 0, err))
> goto fail;
> --
> 1.7.10.4
All 4 patches are now upstream, thanks.
--
Luiz Augusto von Dentz
^ permalink raw reply
* [PATCH BlueZ] gdbus: Fix invalid memory access while unregistering
From: Lucas De Marchi @ 2012-10-04 20:42 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Lucas De Marchi
If an interface is added and removed on the same mailoop iteration,
ObjectManager would try to send InterfacesAdded signal while running the
idler because the interface was added to data->added list.
This is easily reproduced by forcing an error path in a plugin
registration, like on sap_server_register(), resulting in the following
error:
==11795== Invalid read of size 4
==11795== at 0x496F592: dbus_message_iter_append_basic (dbus-message.c:2598)
==11795== by 0x117B39: append_interface (object.c:554)
==11795== by 0x48955E7: g_slist_foreach (gslist.c:840)
==11795== by 0x11923B: process_changes (object.c:592)
==11795== by 0x11956D: generic_unregister (object.c:980)
==11795== by 0x4973BAC: _dbus_object_tree_unregister_and_unlock (dbus-object-tree.c:516)
==11795== by 0x4965240: dbus_connection_unregister_object_path (dbus-connection.c:5776)
==11795== by 0x1178A5: object_path_unref (object.c:1219)
==11795== by 0x118517: g_dbus_unregister_interface (object.c:1344)
==11795== by 0x19AF5B: sap_exit (sap.c:385)
==11795== by 0x13E9E2: sap_server_register (server.c:1428)
==11795== by 0x13C092: sap_server_probe (manager.c:44)
With this patch we don't send the InterfacesAdded signal, removing it
from data->added while unregistering.
---
gdbus/object.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/gdbus/object.c b/gdbus/object.c
index c63a26d..444728c 100644
--- a/gdbus/object.c
+++ b/gdbus/object.c
@@ -657,6 +657,17 @@ static gboolean remove_interface(struct generic_data *data, const char *name)
return TRUE;
}
+ /*
+ * Interface being removed was just added, on the same mainloop
+ * iteration? Don't send any signal
+ */
+ if (g_slist_find(data->added, iface)) {
+ data->added = g_slist_remove(data->added, iface);
+ g_free(iface->name);
+ g_free(iface);
+ return TRUE;
+ }
+
data->removed = g_slist_prepend(data->removed, iface->name);
g_free(iface);
--
1.7.12.2
^ permalink raw reply related
* Re: [PATCH 4/4] audio: Add check for non-a2dp codec
From: Marcel Holtmann @ 2012-10-04 20:30 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: chanyeol.park, linux-bluetooth
In-Reply-To: <CABBYNZ+qKN_q9-t1a_i3FayCUxZ2a8M9x6USKVn-Ssy7eBNYzg@mail.gmail.com>
Hi Luiz,
> >> > This patch adds checks(vendor ID, vendor specific codec ID) to make sure of
> >> > non-a2dp codec selection.
> >> > ---
> >> > audio/a2dp-codecs.h | 6 +++++
> >> > audio/a2dp.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-
> >> > 2 files changed, 73 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/audio/a2dp-codecs.h b/audio/a2dp-codecs.h
> >> > index 51c796a..e3d2cba 100644
> >> > --- a/audio/a2dp-codecs.h
> >> > +++ b/audio/a2dp-codecs.h
> >> > @@ -26,6 +26,7 @@
> >> > #define A2DP_CODEC_MPEG12 0x01
> >> > #define A2DP_CODEC_MPEG24 0x02
> >> > #define A2DP_CODEC_ATRAC 0x03
> >> > +#define A2DP_CODEC_NON_A2DP 0xFF
> >>
> >> I prefer A2DP_CODEC_VENDOR
> >
> > what is the specification calling these? And yes, I would prefer VENDOR
> > as well.
>
> Apparently it comes from the assigned numbers
> http://www.bluetooth.org/Technical/AssignedNumbers/audio-video.htm:
>
> 1 1 1 1 1 1 1 1 non-A2DP n/a A2DP
>
> But the spec refer to it as 4.7 Vendor Specific A2DP Codec, IMO the
> term non-A2DP can be confused with not defined in A2DP spec when in
> fact it is defined:
>
> "4.2.3 Vendor Specific A2DP Codecs
> The device may support other codecs as Vendor Specific A2DP codecs. A
> user of a Vendor Specific A2DP codec (hereafter the Vendor) will need
> to define parameters and other information necessary for use of the
> codec in A2DP."
>
> There is no such a thing as non-A2DP in the spec, so again to avoid
> confusion I would stick to the terminology vendor or vendor specific.
lets use "vendor" for these. Otherwise the function and variable naming
gets too complicated.
Regards
Marcel
^ permalink raw reply
* Re: [PATCH 4/4] audio: Add check for non-a2dp codec
From: Luiz Augusto von Dentz @ 2012-10-04 20:22 UTC (permalink / raw)
To: Marcel Holtmann; +Cc: chanyeol.park, linux-bluetooth
In-Reply-To: <1349374107.27233.36.camel@aeonflux>
Hi Marcel,
On Thu, Oct 4, 2012 at 9:08 PM, Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Luiz,
>
>> > This patch adds checks(vendor ID, vendor specific codec ID) to make sure of
>> > non-a2dp codec selection.
>> > ---
>> > audio/a2dp-codecs.h | 6 +++++
>> > audio/a2dp.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-
>> > 2 files changed, 73 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/audio/a2dp-codecs.h b/audio/a2dp-codecs.h
>> > index 51c796a..e3d2cba 100644
>> > --- a/audio/a2dp-codecs.h
>> > +++ b/audio/a2dp-codecs.h
>> > @@ -26,6 +26,7 @@
>> > #define A2DP_CODEC_MPEG12 0x01
>> > #define A2DP_CODEC_MPEG24 0x02
>> > #define A2DP_CODEC_ATRAC 0x03
>> > +#define A2DP_CODEC_NON_A2DP 0xFF
>>
>> I prefer A2DP_CODEC_VENDOR
>
> what is the specification calling these? And yes, I would prefer VENDOR
> as well.
Apparently it comes from the assigned numbers
http://www.bluetooth.org/Technical/AssignedNumbers/audio-video.htm:
1 1 1 1 1 1 1 1 non-A2DP n/a A2DP
But the spec refer to it as 4.7 Vendor Specific A2DP Codec, IMO the
term non-A2DP can be confused with not defined in A2DP spec when in
fact it is defined:
"4.2.3 Vendor Specific A2DP Codecs
The device may support other codecs as Vendor Specific A2DP codecs. A
user of a Vendor Specific A2DP codec (hereafter the Vendor) will need
to define parameters and other information necessary for use of the
codec in A2DP."
There is no such a thing as non-A2DP in the spec, so again to avoid
confusion I would stick to the terminology vendor or vendor specific.
--
Luiz Augusto von Dentz
^ permalink raw reply
* Re: [PATCH BlueZ v4 00/15] Properties + ObjectManager
From: Lucas De Marchi @ 2012-10-04 19:23 UTC (permalink / raw)
To: Marcel Holtmann; +Cc: Lucas De Marchi, linux-bluetooth
In-Reply-To: <1349378148.27233.42.camel@aeonflux>
On Thu, Oct 4, 2012 at 4:15 PM, Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Lucas,
>
>> >> >> Here is a rebased version of the patches. Most notable change is on patch
>> >> >> implementing the Set() method after feedback from Marcel. It doesn't cover the
>> >> >> concerns from Luiz about checking privileges per-property since I think this
>> >> >> could be added in a separate patch. As far as I could see the only user is
>> >> >> MediaTransport interface. The most obvious way would be to add another hook in
>> >> >> GDBusPropertyTable in order to check the privileges. Suggestions?
>> >> >>
>> >> >> First 2 patches could be applied nonetheles. Get and GetAll are well tested,
>> >> >> both now and in the previous version of this patch set. Set() is still a
>> >> >> bit raw - the users implementing it are very big (adapter, device) so
>> >> >> they are not converted yet (previous patch doesn't apply anymore and there's a
>> >> >> change in the API that requires them to be rewritten).
>> >> >>
>> >> >>
>> >> >> Lucas De Marchi (10):
>> >> >> gdbus: Move typedefs up
>> >> >> gdbus: Use macros to add annotations
>> >> >> gdbus: Add skeleton of DBus.Properties interface
>> >> >> gdbus: Implement DBus.Properties.Get method
>> >> >> gdbus: Implement DBus.Properties.GetAll method
>> >> >> gdbus: Implement DBus.Properties.Set method
>> >> >> gdbus: Add properties into Introspectable interface
>> >> >> gdbus: Implement PropertiesChanged signal
>> >> >> Use DBus.Properties on Control interface
>> >> >> Use DBus.Properties on Manager interface
>> >> >>
>> >> >> Luiz Augusto von Dentz (5):
>> >> >> gdbus: Add support for org.freedesktop.DBus.ObjectManager interface
>> >> >> gdbus: Group interface changes to reduce the amount of signals
>> >> >> emitted
>> >> >> gdbus: Only export ObjectManager interface on root path
>> >> >> gdbus: Integrates ObjectManager with Properties interface
>> >> >> gdbus: Simplify code for appending properties
>> >> >>
>> >> >> audio/control.c | 57 ++--
>> >> >> gdbus/gdbus.h | 74 +++--
>> >> >> gdbus/object.c | 867 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
>> >> >> src/manager.c | 81 ++----
>> >> >> 4 files changed, 897 insertions(+), 182 deletions(-)
>> >> >
>> >> > This initial set has been applied. Now let's get testing it and fix any
>> >> > pending issues that are found. Also please remember send the adapter and
>> >> > device conversions when you've got them ready so that we get them stress
>> >> > tested at the UPF next week.
>> >>
>> >> Thanks... I'll submit them soonish.
>> >>
>> >> Should we change the interface names to include a version, too? Or
>> >> change the bus name to something like bluez5?
>> >
>> > I am not in favor of that actually. Since this the reverse domain name.
>> > And we do not own bluez5.org and I am not planning to get a new domain
>> > name for every major release.
>> >
>> > We need to think about the versioning at some point, but maybe we leave
>> > that for BlueZ 6.x then. At some point we need to finish this one first.
>>
>>
>> Then if you are going to support both bluez4 and bluez5, there's no
>> way at runtime to determine which backend to use.
>> We already suffered from that with connman, for example. But it had
>> not hit 1.0 so we couldn't do much.
>>
>> Reverse domain name is just a convention, as is the major version
>> number. I'd prefer breaking the former convention rather than screwing
>> with the users or let them checking at compile time.
>>
>> For example, I have this on my desktop:
>>
>> org.freedesktop.PolicyKit1,
>> org.freedesktop.RealtimeKit1,
>> org.freedesktop.login1
>> org.freedesktop.systemd1
>> fi.w1.wpa_supplicant1
>>
>> Do they all have these domains?
>
> yes, and the first 4 are subdomains.
>
>> Another option is to go with subdomains: org.bluez.v5 ;-)
>
> We could. Let the current code ObjectManager get stable first. It will
> get the first real exposure at the UPF next week. Then we see.
Agreed. Thanks.
Lucas De Marchi
^ permalink raw reply
* Re: [PATCH BlueZ v4 00/15] Properties + ObjectManager
From: Marcel Holtmann @ 2012-10-04 19:15 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: Lucas De Marchi, linux-bluetooth
In-Reply-To: <CAKi4VA+KNR4zD4V4z6PQokDXnHQ15Re-RzoTkL6dC5xDwuKSPA@mail.gmail.com>
Hi Lucas,
> >> >> Here is a rebased version of the patches. Most notable change is on patch
> >> >> implementing the Set() method after feedback from Marcel. It doesn't cover the
> >> >> concerns from Luiz about checking privileges per-property since I think this
> >> >> could be added in a separate patch. As far as I could see the only user is
> >> >> MediaTransport interface. The most obvious way would be to add another hook in
> >> >> GDBusPropertyTable in order to check the privileges. Suggestions?
> >> >>
> >> >> First 2 patches could be applied nonetheles. Get and GetAll are well tested,
> >> >> both now and in the previous version of this patch set. Set() is still a
> >> >> bit raw - the users implementing it are very big (adapter, device) so
> >> >> they are not converted yet (previous patch doesn't apply anymore and there's a
> >> >> change in the API that requires them to be rewritten).
> >> >>
> >> >>
> >> >> Lucas De Marchi (10):
> >> >> gdbus: Move typedefs up
> >> >> gdbus: Use macros to add annotations
> >> >> gdbus: Add skeleton of DBus.Properties interface
> >> >> gdbus: Implement DBus.Properties.Get method
> >> >> gdbus: Implement DBus.Properties.GetAll method
> >> >> gdbus: Implement DBus.Properties.Set method
> >> >> gdbus: Add properties into Introspectable interface
> >> >> gdbus: Implement PropertiesChanged signal
> >> >> Use DBus.Properties on Control interface
> >> >> Use DBus.Properties on Manager interface
> >> >>
> >> >> Luiz Augusto von Dentz (5):
> >> >> gdbus: Add support for org.freedesktop.DBus.ObjectManager interface
> >> >> gdbus: Group interface changes to reduce the amount of signals
> >> >> emitted
> >> >> gdbus: Only export ObjectManager interface on root path
> >> >> gdbus: Integrates ObjectManager with Properties interface
> >> >> gdbus: Simplify code for appending properties
> >> >>
> >> >> audio/control.c | 57 ++--
> >> >> gdbus/gdbus.h | 74 +++--
> >> >> gdbus/object.c | 867 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
> >> >> src/manager.c | 81 ++----
> >> >> 4 files changed, 897 insertions(+), 182 deletions(-)
> >> >
> >> > This initial set has been applied. Now let's get testing it and fix any
> >> > pending issues that are found. Also please remember send the adapter and
> >> > device conversions when you've got them ready so that we get them stress
> >> > tested at the UPF next week.
> >>
> >> Thanks... I'll submit them soonish.
> >>
> >> Should we change the interface names to include a version, too? Or
> >> change the bus name to something like bluez5?
> >
> > I am not in favor of that actually. Since this the reverse domain name.
> > And we do not own bluez5.org and I am not planning to get a new domain
> > name for every major release.
> >
> > We need to think about the versioning at some point, but maybe we leave
> > that for BlueZ 6.x then. At some point we need to finish this one first.
>
>
> Then if you are going to support both bluez4 and bluez5, there's no
> way at runtime to determine which backend to use.
> We already suffered from that with connman, for example. But it had
> not hit 1.0 so we couldn't do much.
>
> Reverse domain name is just a convention, as is the major version
> number. I'd prefer breaking the former convention rather than screwing
> with the users or let them checking at compile time.
>
> For example, I have this on my desktop:
>
> org.freedesktop.PolicyKit1,
> org.freedesktop.RealtimeKit1,
> org.freedesktop.login1
> org.freedesktop.systemd1
> fi.w1.wpa_supplicant1
>
> Do they all have these domains?
yes, and the first 4 are subdomains.
> Another option is to go with subdomains: org.bluez.v5 ;-)
We could. Let the current code ObjectManager get stable first. It will
get the first real exposure at the UPF next week. Then we see.
Regards
Marcel
^ permalink raw reply
* Re: [PATCH BlueZ v4 00/15] Properties + ObjectManager
From: Lucas De Marchi @ 2012-10-04 18:27 UTC (permalink / raw)
To: Marcel Holtmann; +Cc: Lucas De Marchi, linux-bluetooth
In-Reply-To: <1349374268.27233.38.camel@aeonflux>
On Thu, Oct 4, 2012 at 3:11 PM, Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Lucas,
>
>> >> Here is a rebased version of the patches. Most notable change is on patch
>> >> implementing the Set() method after feedback from Marcel. It doesn't cover the
>> >> concerns from Luiz about checking privileges per-property since I think this
>> >> could be added in a separate patch. As far as I could see the only user is
>> >> MediaTransport interface. The most obvious way would be to add another hook in
>> >> GDBusPropertyTable in order to check the privileges. Suggestions?
>> >>
>> >> First 2 patches could be applied nonetheles. Get and GetAll are well tested,
>> >> both now and in the previous version of this patch set. Set() is still a
>> >> bit raw - the users implementing it are very big (adapter, device) so
>> >> they are not converted yet (previous patch doesn't apply anymore and there's a
>> >> change in the API that requires them to be rewritten).
>> >>
>> >>
>> >> Lucas De Marchi (10):
>> >> gdbus: Move typedefs up
>> >> gdbus: Use macros to add annotations
>> >> gdbus: Add skeleton of DBus.Properties interface
>> >> gdbus: Implement DBus.Properties.Get method
>> >> gdbus: Implement DBus.Properties.GetAll method
>> >> gdbus: Implement DBus.Properties.Set method
>> >> gdbus: Add properties into Introspectable interface
>> >> gdbus: Implement PropertiesChanged signal
>> >> Use DBus.Properties on Control interface
>> >> Use DBus.Properties on Manager interface
>> >>
>> >> Luiz Augusto von Dentz (5):
>> >> gdbus: Add support for org.freedesktop.DBus.ObjectManager interface
>> >> gdbus: Group interface changes to reduce the amount of signals
>> >> emitted
>> >> gdbus: Only export ObjectManager interface on root path
>> >> gdbus: Integrates ObjectManager with Properties interface
>> >> gdbus: Simplify code for appending properties
>> >>
>> >> audio/control.c | 57 ++--
>> >> gdbus/gdbus.h | 74 +++--
>> >> gdbus/object.c | 867 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
>> >> src/manager.c | 81 ++----
>> >> 4 files changed, 897 insertions(+), 182 deletions(-)
>> >
>> > This initial set has been applied. Now let's get testing it and fix any
>> > pending issues that are found. Also please remember send the adapter and
>> > device conversions when you've got them ready so that we get them stress
>> > tested at the UPF next week.
>>
>> Thanks... I'll submit them soonish.
>>
>> Should we change the interface names to include a version, too? Or
>> change the bus name to something like bluez5?
>
> I am not in favor of that actually. Since this the reverse domain name.
> And we do not own bluez5.org and I am not planning to get a new domain
> name for every major release.
>
> We need to think about the versioning at some point, but maybe we leave
> that for BlueZ 6.x then. At some point we need to finish this one first.
Then if you are going to support both bluez4 and bluez5, there's no
way at runtime to determine which backend to use.
We already suffered from that with connman, for example. But it had
not hit 1.0 so we couldn't do much.
Reverse domain name is just a convention, as is the major version
number. I'd prefer breaking the former convention rather than screwing
with the users or let them checking at compile time.
For example, I have this on my desktop:
org.freedesktop.PolicyKit1,
org.freedesktop.RealtimeKit1,
org.freedesktop.login1
org.freedesktop.systemd1
fi.w1.wpa_supplicant1
Do they all have these domains?
Another option is to go with subdomains: org.bluez.v5 ;-)
Lucas De Marchi
^ permalink raw reply
* Re: [PATCH BlueZ] core: Fix leaking connection list nodes
From: Johan Hedberg @ 2012-10-04 18:22 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: linux-bluetooth
In-Reply-To: <1349372393-8110-1-git-send-email-lucas.demarchi@profusion.mobi>
Hi Lucas,
On Thu, Oct 04, 2012, Lucas De Marchi wrote:
> ==480== HEAP SUMMARY:
> ==480== in use at exit: 62,418 bytes in 355 blocks
> ==480== total heap usage: 11,134 allocs, 10,779 frees, 5,254,068 bytes allocated
> ==480==
> ==480== 16 bytes in 1 blocks are definitely lost in loss record 70 of 250
> ==480== at 0x4C2C04B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==480== by 0x4E80050: g_malloc (in /usr/lib/libglib-2.0.so.0.3200.4)
> ==480== by 0x4E94442: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.3200.4)
> ==480== by 0x4E95792: g_slist_append (in /usr/lib/libglib-2.0.so.0.3200.4)
> ==480== by 0x17E483: adapter_add_connection (adapter.c:3245)
> ==480== by 0x187FDF: btd_event_conn_complete (event.c:470)
> ==480== by 0x18B72D: mgmt_event.part.36 (mgmt.c:515)
> ==480== by 0x4E7A474: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.3200.4)
> ==480== by 0x4E7A7A7: ??? (in /usr/lib/libglib-2.0.so.0.3200.4)
> ==480== by 0x4E7ABA1: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.3200.4)
> ==480== by 0x1216B1: main (main.c:551)
> ---
> src/adapter.c | 2 ++
> 1 file changed, 2 insertions(+)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [PATCH BlueZ] core: Fix walking the list while removing elements
From: Johan Hedberg @ 2012-10-04 18:22 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: linux-bluetooth, Lucas De Marchi
In-Reply-To: <1349370439-6345-1-git-send-email-lucas.demarchi@profusion.mobi>
Hi Lucas,
On Thu, Oct 04, 2012, Lucas De Marchi wrote:
> If we are walking a GSList and remove the element we are pointing to,
> the next iteration g_slist_next() will access previously freed
> memory.
> ---
> src/device.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [PATCH v2 resend 1/2] Introduced a load_firmware callback to struct hci_dev
From: Marcel Holtmann @ 2012-10-04 18:13 UTC (permalink / raw)
To: Jesse Sung; +Cc: Gustavo Padovan, Johan Hedberg, linux-bluetooth
In-Reply-To: <CAH10aOja5o=HjsLN3qKZey=POpjgMsf+V_RU=iHH+sk1oZOOuw@mail.gmail.com>
Hi Jesse,
> >> >> load_firmware will be called at the end of hci_dev_open() if it
> >> >> is defined.
> >> >>
> >> >> Signed-off-by: Wen-chien Jesse Sung <jesse.sung@canonical.com>
> >> >> ---
> >> >> include/net/bluetooth/hci_core.h | 1 +
> >> >> net/bluetooth/hci_core.c | 2 ++
> >> >> 2 files changed, 3 insertions(+)
> >> >>
> >> >> diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
> >> >> index 593cd1d..40972a3 100644
> >> >> --- a/include/net/bluetooth/hci_core.h
> >> >> +++ b/include/net/bluetooth/hci_core.h
> >> >> @@ -281,6 +281,7 @@ struct hci_dev {
> >> >> int (*send)(struct sk_buff *skb);
> >> >> void (*notify)(struct hci_dev *hdev, unsigned int evt);
> >> >> int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg);
> >> >> + void (*load_firmware)(struct hci_dev *hdev);
> >> >> };
> >> >>
> >> >> struct hci_conn {
> >> >> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
> >> >> index d4de5db..49be87a 100644
> >> >> --- a/net/bluetooth/hci_core.c
> >> >> +++ b/net/bluetooth/hci_core.c
> >> >> @@ -725,6 +725,8 @@ int hci_dev_open(__u16 dev)
> >> >> done:
> >> >> hci_req_unlock(hdev);
> >> >> hci_dev_put(hdev);
> >> >> + if (!ret && hdev->load_firmware)
> >> >> + hdev->load_firmware(hdev);
> >> >> return ret;
> >> >> }
> >> >>
> >> >
> >> > has anybody thought this through actually? Do we need to reload the
> >> > firmware after every HCI_Reset? Since hci_dev_open() is used at least
> >> > twice during normal operation. And for every RFKILL or power down/up
> >> > cycle of the chip.
> >> >
> >> > And there is an internal process of hci_dev_open() trigger on
> >> > registration and others triggered by hciconfig hci0 up. I am pretty much
> >> > against having to wait for all this firmware loading crap during every
> >> > bring up of the device. Especially since it always does a trip via
> >> > request_firmware().
> >>
> >> In the second patch, firmware loading would be done only once per
> >> power cycle of the chip. Since I think it should be the device driver, not hci,
> >> who knows when and how to load firmware, the lock is placed in btusb.c.
> >
> > and how does the driver knows these details? That makes no sense. How
> > does the driver know it got rebooted?
> >
> > The hci_dev_open() will start the transport. And as I explained before,
> > that can happen twice during boot time.
>
> Please take a look at the second part of this patchset, which is in patch 2/2.
> Loading firmware is needed when the chip is rebooted, and a reboot would trigger
> a probe in btusb. So btusb can know a firmware loading is needed whenever
> a new patchram device is probed. And the load_firmware callback in
> btusb would do
> test_and_set_bit to ensure that the loading process would only be done once.
that is horrible hackish. So NAK from my side. Look at what I told the
Intel guys to do on supporting their USB dongle. You have the same
problem and I want it solved in a similar way.
The probe() callback is actually not a good idea either btw. It is for
binding a driver. Binding and unbinding the driver has nothing to do
with reboot of the device.
Regards
Marcel
^ permalink raw reply
* Re: [PATCH BlueZ v4 00/15] Properties + ObjectManager
From: Marcel Holtmann @ 2012-10-04 18:11 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: Lucas De Marchi, linux-bluetooth
In-Reply-To: <CAKi4VALefFdx=omzNhY96-Ha4uPZN7n3m_Pu5NomDD5rNeU9eA@mail.gmail.com>
Hi Lucas,
> >> Here is a rebased version of the patches. Most notable change is on patch
> >> implementing the Set() method after feedback from Marcel. It doesn't cover the
> >> concerns from Luiz about checking privileges per-property since I think this
> >> could be added in a separate patch. As far as I could see the only user is
> >> MediaTransport interface. The most obvious way would be to add another hook in
> >> GDBusPropertyTable in order to check the privileges. Suggestions?
> >>
> >> First 2 patches could be applied nonetheles. Get and GetAll are well tested,
> >> both now and in the previous version of this patch set. Set() is still a
> >> bit raw - the users implementing it are very big (adapter, device) so
> >> they are not converted yet (previous patch doesn't apply anymore and there's a
> >> change in the API that requires them to be rewritten).
> >>
> >>
> >> Lucas De Marchi (10):
> >> gdbus: Move typedefs up
> >> gdbus: Use macros to add annotations
> >> gdbus: Add skeleton of DBus.Properties interface
> >> gdbus: Implement DBus.Properties.Get method
> >> gdbus: Implement DBus.Properties.GetAll method
> >> gdbus: Implement DBus.Properties.Set method
> >> gdbus: Add properties into Introspectable interface
> >> gdbus: Implement PropertiesChanged signal
> >> Use DBus.Properties on Control interface
> >> Use DBus.Properties on Manager interface
> >>
> >> Luiz Augusto von Dentz (5):
> >> gdbus: Add support for org.freedesktop.DBus.ObjectManager interface
> >> gdbus: Group interface changes to reduce the amount of signals
> >> emitted
> >> gdbus: Only export ObjectManager interface on root path
> >> gdbus: Integrates ObjectManager with Properties interface
> >> gdbus: Simplify code for appending properties
> >>
> >> audio/control.c | 57 ++--
> >> gdbus/gdbus.h | 74 +++--
> >> gdbus/object.c | 867 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
> >> src/manager.c | 81 ++----
> >> 4 files changed, 897 insertions(+), 182 deletions(-)
> >
> > This initial set has been applied. Now let's get testing it and fix any
> > pending issues that are found. Also please remember send the adapter and
> > device conversions when you've got them ready so that we get them stress
> > tested at the UPF next week.
>
> Thanks... I'll submit them soonish.
>
> Should we change the interface names to include a version, too? Or
> change the bus name to something like bluez5?
I am not in favor of that actually. Since this the reverse domain name.
And we do not own bluez5.org and I am not planning to get a new domain
name for every major release.
We need to think about the versioning at some point, but maybe we leave
that for BlueZ 6.x then. At some point we need to finish this one first.
Regards
Marcel
^ permalink raw reply
* Re: [PATCH 4/4] audio: Add check for non-a2dp codec
From: Marcel Holtmann @ 2012-10-04 18:08 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: chanyeol.park, linux-bluetooth
In-Reply-To: <CABBYNZKHzKv+GQhynnGN04O17kwjDobwL-+CeVB9hJqrVEF05A@mail.gmail.com>
Hi Luiz,
> > This patch adds checks(vendor ID, vendor specific codec ID) to make sure of
> > non-a2dp codec selection.
> > ---
> > audio/a2dp-codecs.h | 6 +++++
> > audio/a2dp.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-
> > 2 files changed, 73 insertions(+), 1 deletion(-)
> >
> > diff --git a/audio/a2dp-codecs.h b/audio/a2dp-codecs.h
> > index 51c796a..e3d2cba 100644
> > --- a/audio/a2dp-codecs.h
> > +++ b/audio/a2dp-codecs.h
> > @@ -26,6 +26,7 @@
> > #define A2DP_CODEC_MPEG12 0x01
> > #define A2DP_CODEC_MPEG24 0x02
> > #define A2DP_CODEC_ATRAC 0x03
> > +#define A2DP_CODEC_NON_A2DP 0xFF
>
> I prefer A2DP_CODEC_VENDOR
what is the specification calling these? And yes, I would prefer VENDOR
as well.
Regards
Marcel
^ permalink raw reply
* [PATCH BlueZ] core: Fix leaking connection list nodes
From: Lucas De Marchi @ 2012-10-04 17:39 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Lucas De Marchi
==480== HEAP SUMMARY:
==480== in use at exit: 62,418 bytes in 355 blocks
==480== total heap usage: 11,134 allocs, 10,779 frees, 5,254,068 bytes allocated
==480==
==480== 16 bytes in 1 blocks are definitely lost in loss record 70 of 250
==480== at 0x4C2C04B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==480== by 0x4E80050: g_malloc (in /usr/lib/libglib-2.0.so.0.3200.4)
==480== by 0x4E94442: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.3200.4)
==480== by 0x4E95792: g_slist_append (in /usr/lib/libglib-2.0.so.0.3200.4)
==480== by 0x17E483: adapter_add_connection (adapter.c:3245)
==480== by 0x187FDF: btd_event_conn_complete (event.c:470)
==480== by 0x18B72D: mgmt_event.part.36 (mgmt.c:515)
==480== by 0x4E7A474: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.3200.4)
==480== by 0x4E7A7A7: ??? (in /usr/lib/libglib-2.0.so.0.3200.4)
==480== by 0x4E7ABA1: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.3200.4)
==480== by 0x1216B1: main (main.c:551)
---
src/adapter.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/adapter.c b/src/adapter.c
index 073c722..056f2a2 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2534,6 +2534,8 @@ static void adapter_free(gpointer user_data)
g_slist_free(adapter->oor_devices);
+ g_slist_free(adapter->connections);
+
g_free(adapter->path);
g_free(adapter->name);
g_free(adapter);
--
1.7.12.2
^ permalink raw reply related
* Re: [PATCH BlueZ] core: Fix walking the list while removing elements
From: Bastien Nocera @ 2012-10-04 17:30 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: Lucas De Marchi, linux-bluetooth
In-Reply-To: <CAKi4VALw4TTh0z3Yppov71Anf4g1sNPnRYaQPouaaiYcEb79_g@mail.gmail.com>
On Thu, 2012-10-04 at 14:21 -0300, Lucas De Marchi wrote:
> On Thu, Oct 4, 2012 at 2:16 PM, Bastien Nocera <hadess@hadess.net> wrote:
> > On Thu, 2012-10-04 at 14:07 -0300, Lucas De Marchi wrote:
> >> - for (l = device->profiles; l != NULL; l = g_slist_next(l)) {
> >> + for (l = device->profiles; l != NULL; l = next) {
> >
> > + for (l = device->profiles; l != NULL; l = l->next) {
>
> nops. you can't access "l" if it was deleted from the list
Right.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox