diff options
| author | Alok Barsode <alok.barsode@azingo.com> | 2008-09-03 12:49:59 +0530 | 
|---|---|---|
| committer | Alok Barsode <alok.barsode@azingo.com> | 2008-09-03 12:49:59 +0530 | 
| commit | bcb5f7e4d5e570c1acfd5364547d36e970408394 (patch) | |
| tree | 11c1b2400ba1150dfc302744b7ad091ca58c2cda /src/adapter.c | |
| parent | 26c84ba158a898984d8678f6493a7d3b00717198 (diff) | |
Adding adapter_search_active_conn_by_bdaddr and
adapter_search_active_conn_by_handle.
Diffstat (limited to 'src/adapter.c')
| -rw-r--r-- | src/adapter.c | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/src/adapter.c b/src/adapter.c index b58ba49a..db310d19 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -168,6 +168,25 @@ static DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn,  			err > 0 ? strerror(err) : "Connection attempt failed");  } +static int active_conn_find_by_bdaddr(const void *data, const void *user_data) +{ +	const struct active_conn_info *con = data; +	const bdaddr_t *bdaddr = user_data; + +	return bacmp(&con->bdaddr, bdaddr); +} + +static int active_conn_find_by_handle(const void *data, const void *user_data) +{ +	const struct active_conn_info *dev = data; +	const uint16_t *handle = user_data; + +	if (dev->handle == *handle) +		return 0; + +	return -1; +} +  static void send_out_of_range(const char *path, GSList *l)  {  	while (l) { @@ -2928,6 +2947,38 @@ void adapter_remove_active_conn(struct adapter *adapter,  	g_free(dev);  } +struct active_conn_info *adapter_search_active_conn_by_bdaddr(struct adapter *adapter, +						    bdaddr_t *bda) +{ +	GSList *l; + +	if (!adapter || !adapter->active_conn) +		return NULL; + +	l = g_slist_find_custom(adapter->active_conn, &bda, +					active_conn_find_by_bdaddr); +	if (l) +		return l->data; + +	return NULL; +} + +struct active_conn_info *adapter_search_active_conn_by_handle(struct adapter *adapter, +						    uint16_t handle) +{ +	GSList *l; + +	if (!adapter || !adapter->active_conn) +		return NULL; + +	l = g_slist_find_custom(adapter->active_conn, &handle, +					active_conn_find_by_handle); +	if (l) +		return l->data; + +	return NULL; +} +  int btd_register_adapter_driver(struct btd_adapter_driver *driver)  {  	adapter_drivers = g_slist_append(adapter_drivers, driver);  | 
