summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlok Barsode <alok.barsode@azingo.com>2008-09-03 12:47:20 +0530
committerAlok Barsode <alok.barsode@azingo.com>2008-09-03 12:47:20 +0530
commit3692b8262294723c1fcfc75e759e59570557f949 (patch)
tree90add043b900e2a6969c036558ba36e20edaccb4
parent96adaa7ebd6e83db29df644f7952370dbea4ac85 (diff)
Adding adapter_get_agent.
-rw-r--r--src/adapter.c8
-rw-r--r--src/adapter.h1
-rw-r--r--src/agent.c14
-rw-r--r--src/dbus-hci.c10
4 files changed, 22 insertions, 11 deletions
diff --git a/src/adapter.c b/src/adapter.c
index fe9aaef0..5f11b853 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2894,6 +2894,14 @@ void adapter_mode_changed(struct adapter *adapter, uint8_t scan_mode)
DBUS_TYPE_STRING, &mode);
}
+struct agent *adapter_get_agent(struct adapter *adapter)
+{
+ if (!adapter || !adapter->agent)
+ return NULL;
+
+ return adapter->agent;
+}
+
int btd_register_adapter_driver(struct btd_adapter_driver *driver)
{
adapter_drivers = g_slist_append(adapter_drivers, driver);
diff --git a/src/adapter.h b/src/adapter.h
index 5c6e5558..1fdf2684 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -174,6 +174,7 @@ int adapter_remove_found_device(struct adapter *adapter, bdaddr_t *bdaddr);
void adapter_update_oor_devices(struct adapter *adapter);
void adapter_remove_oor_device(struct adapter *adapter, char *peer_addr);
void adapter_mode_changed(struct adapter *adapter, uint8_t scan_mode);
+struct agent *adapter_get_agent(struct adapter *adapter);
struct btd_adapter_driver {
const char *name;
diff --git a/src/agent.c b/src/agent.c
index c35b2500..ae530f98 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -194,9 +194,10 @@ struct agent *agent_create(struct adapter *adapter, const char *name,
const char *path, uint8_t capability,
agent_remove_cb cb, void *remove_cb_data)
{
- struct agent *agent;
+ struct agent *agent, *adapter_agent;
- if (adapter->agent && g_str_equal(adapter->agent->name, name))
+ adapter_agent = adapter_get_agent(adapter);
+ if (adapter_agent && g_str_equal(adapter_agent->name, name))
return NULL;
agent = g_new0(struct agent, 1);
@@ -700,17 +701,18 @@ static int request_fallback(struct agent_request *req,
DBusPendingCallNotifyFunction function)
{
struct adapter *adapter = req->agent->adapter;
+ struct agent *adapter_agent = adapter_get_agent(adapter);
DBusMessage *msg;
- if (req->agent == adapter->agent || adapter->agent == NULL)
+ if (req->agent == adapter_agent || adapter_agent == NULL)
return -EINVAL;
dbus_pending_call_cancel(req->call);
msg = dbus_message_copy(req->msg);
- dbus_message_set_destination(msg, adapter->agent->name);
- dbus_message_set_path(msg, adapter->agent->path);
+ dbus_message_set_destination(msg, adapter_agent->name);
+ dbus_message_set_path(msg, adapter_agent->path);
if (dbus_connection_send_with_reply(connection, msg,
&req->call, REQUEST_TIMEOUT) == FALSE) {
@@ -720,7 +722,7 @@ static int request_fallback(struct agent_request *req,
}
req->agent->request = NULL;
- req->agent = adapter->agent;
+ req->agent = adapter_agent;
req->agent->request = req;
dbus_message_unref(req->msg);
diff --git a/src/dbus-hci.c b/src/dbus-hci.c
index d0348522..604011f0 100644
--- a/src/dbus-hci.c
+++ b/src/dbus-hci.c
@@ -254,7 +254,7 @@ int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci)
agent = device_get_agent(device);
if (!agent)
- agent = adapter->agent;
+ agent = adapter_get_agent(adapter);
if (!agent)
return -EPERM;
@@ -463,7 +463,7 @@ int hcid_dbus_user_confirm(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey)
agent = device_get_agent(device);
if (!agent)
- agent = adapter->agent;
+ agent = adapter_get_agent(adapter);
if (!agent) {
error("No agent available for user confirm request");
@@ -504,7 +504,7 @@ int hcid_dbus_user_passkey(bdaddr_t *sba, bdaddr_t *dba)
agent = device_get_agent(device);
if (!agent)
- agent = adapter->agent;
+ agent = adapter_get_agent(adapter);
if (!agent) {
error("No agent available for user confirm request");
@@ -543,7 +543,7 @@ int hcid_dbus_user_notify(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey)
agent = device_get_agent(device);
if (!agent)
- agent = adapter->agent;
+ agent = adapter_get_agent(adapter);
if (!agent) {
error("No agent available for user confirm request");
@@ -1479,7 +1479,7 @@ int hcid_dbus_get_io_cap(bdaddr_t *local, bdaddr_t *remote,
*auth = 0x03;
}
if (!agent)
- agent = adapter->agent;
+ agent = adapter_get_agent(adapter);
if (!agent) {
/* This is the non bondable mode case */