summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlok Barsode <alok.barsode@azingo.com>2008-07-09 12:52:59 +0530
committerLuiz Augusto von Dentz <luiz.dentz@indt.org.br>2008-07-28 10:34:05 -0300
commitaec749f0732638f182c4b50fb59d6c905a80d42d (patch)
tree57ad0e42a5bb1e5cff4e93994bbc005c2675525a
parentdcf5298e8173e946e3ac2ef6150ad78d030b15d0 (diff)
Adding device_get_address.
Signed-off-by: Alok Barsode <alok.barsode@azingo.com>
-rw-r--r--hcid/adapter.c13
-rw-r--r--hcid/dbus-hci.c13
-rw-r--r--hcid/device.c8
-rw-r--r--hcid/device.h1
4 files changed, 27 insertions, 8 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c
index 63414390..45791734 100644
--- a/hcid/adapter.c
+++ b/hcid/adapter.c
@@ -278,6 +278,7 @@ static struct bonding_request_info *bonding_request_new(DBusConnection *conn,
struct bonding_request_info *bonding;
struct device *device;
const char *name = dbus_message_get_sender(msg);
+ const gchar *destination;
debug("bonding_request_new(%s)", address);
@@ -285,10 +286,13 @@ static struct bonding_request_info *bonding_request_new(DBusConnection *conn,
if (!device)
return NULL;
+ destination = device_get_address(device);
device->agent = agent_create(adapter, name, agent_path,
- capability, device_agent_removed, device);
+ capability,
+ device_agent_removed,
+ device);
debug("Temporary agent registered for hci%d/%s at %s:%s",
- adapter->dev_id, device->address, name,
+ adapter->dev_id, destination, name,
agent_path);
bonding = g_new0(struct bonding_request_info, 1);
@@ -737,11 +741,12 @@ void adapter_remove_device(DBusConnection *conn, struct adapter *adapter,
struct device *device)
{
bdaddr_t src;
+ const gchar *destination = device_get_address(device);
str2ba(adapter->address, &src);
- delete_entry(&src, "profiles", device->address);
+ delete_entry(&src, "profiles", destination);
- remove_bonding(conn, NULL, device->address, adapter);
+ remove_bonding(conn, NULL, destination, adapter);
if (!device->temporary) {
g_dbus_emit_signal(conn, adapter->path,
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c
index 0b527610..583d2ed7 100644
--- a/hcid/dbus-hci.c
+++ b/hcid/dbus-hci.c
@@ -726,6 +726,7 @@ static void pincode_cb(struct agent *agent, DBusError *err, const char *pincode,
size_t len;
int dev;
struct pending_auth_info *auth;
+ const gchar *destination = device_get_address(device);
/* No need to reply anything if the authentication already failed */
if (adapter->bonding && adapter->bonding->hci_status)
@@ -739,7 +740,7 @@ static void pincode_cb(struct agent *agent, DBusError *err, const char *pincode,
}
str2ba(adapter->address, &sba);
- str2ba(device->address, &dba);
+ str2ba(destination, &dba);
auth = adapter_find_auth_request(adapter, &dba);
@@ -814,6 +815,7 @@ static void confirm_cb(struct agent *agent, DBusError *err, void *user_data)
user_confirm_reply_cp cp;
int dd;
struct pending_auth_info *auth;
+ const gchar *destination = device_get_address(device);
/* No need to reply anything if the authentication already failed */
if (adapter->bonding && adapter->bonding->hci_status)
@@ -826,7 +828,7 @@ static void confirm_cb(struct agent *agent, DBusError *err, void *user_data)
}
memset(&cp, 0, sizeof(cp));
- str2ba(device->address, &cp.bdaddr);
+ str2ba(destination, &cp.bdaddr);
auth = adapter_find_auth_request(adapter, &cp.bdaddr);
@@ -854,6 +856,7 @@ static void passkey_cb(struct agent *agent, DBusError *err, uint32_t passkey,
bdaddr_t dba;
int dd;
struct pending_auth_info *auth;
+ const gchar *destination = device_get_address(device);
/* No need to reply anything if the authentication already failed */
if (adapter->bonding && adapter->bonding->hci_status)
@@ -865,7 +868,7 @@ static void passkey_cb(struct agent *agent, DBusError *err, uint32_t passkey,
return;
}
- str2ba(device->address, &dba);
+ str2ba(destination, &dba);
memset(&cp, 0, sizeof(cp));
bacpy(&cp.bdaddr, &dba);
@@ -1805,6 +1808,7 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status,
GSList *l;
gboolean connected = FALSE;
struct pending_auth_info *auth;
+ const gchar *destination;
if (status) {
error("Disconnection failed: 0x%02x", status);
@@ -1866,12 +1870,13 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status,
device = adapter_find_device(adapter, paddr);
if (device) {
+ destination = device_get_address(device);
dbus_connection_emit_property_changed(connection,
device->path, DEVICE_INTERFACE,
"Connected", DBUS_TYPE_BOOLEAN,
&connected);
if (device->temporary) {
- debug("Removing temporary device %s", device->address);
+ debug("Removing temporary device %s", destination);
adapter_remove_device(connection, adapter, device);
}
}
diff --git a/hcid/device.c b/hcid/device.c
index 18248267..dffbdcde 100644
--- a/hcid/device.c
+++ b/hcid/device.c
@@ -936,6 +936,14 @@ struct adapter *device_get_adapter(struct device *device)
return device->adapter;
}
+const gchar *device_get_address(struct device *device)
+{
+ if (!device)
+ return NULL;
+
+ return device->address;
+}
+
int btd_register_device_driver(struct btd_device_driver *driver)
{
const char **uuid;
diff --git a/hcid/device.h b/hcid/device.h
index c9a5cbc6..f83308dc 100644
--- a/hcid/device.h
+++ b/hcid/device.h
@@ -57,6 +57,7 @@ int device_browse(struct device *device, DBusConnection *conn,
DBusMessage *msg, uuid_t *search);
void device_probe_drivers(struct device *device, GSList *uuids);
struct adapter *device_get_adapter(struct device *device);
+const gchar *device_get_address(struct device *device);
#define BTD_UUIDS(args...) ((const char *[]) { args, NULL } )