diff options
Diffstat (limited to 'hcid/plugin.c')
| -rw-r--r-- | hcid/plugin.c | 116 | 
1 files changed, 3 insertions, 113 deletions
| diff --git a/hcid/plugin.c b/hcid/plugin.c index 6cc54de1..2a8f4375 100644 --- a/hcid/plugin.c +++ b/hcid/plugin.c @@ -33,18 +33,12 @@  #include <errno.h>  #include <bluetooth/bluetooth.h> -#include <bluetooth/hci.h> -#include <bluetooth/hci_lib.h> -#include <dbus/dbus.h> -#include "dbus-helper.h" +#include "dbus.h" +#include "logging.h" +  #include "dbus-service.h" -#include "adapter.h" -#include "dbus-hci.h" -#include "agent.h"  #include "plugin.h" -#include "device.h" -#include "logging.h"  static GSList *plugins = NULL; @@ -53,11 +47,6 @@ struct bluetooth_plugin {  	struct bluetooth_plugin_desc *desc;  }; -struct plugin_auth { -	plugin_auth_cb cb; -	void *user_data; -}; -  static gboolean add_plugin(GModule *module, struct bluetooth_plugin_desc *desc)  {  	struct bluetooth_plugin *plugin; @@ -162,102 +151,3 @@ void plugin_cleanup(void)  	g_slist_free(plugins);  } - -static struct adapter *ba2adapter(bdaddr_t *src) -{ -	DBusConnection *conn = get_dbus_connection(); -	struct adapter *adapter = NULL; -	char address[18], path[6]; -	int dev_id; - -	ba2str(src, address); -	dev_id = hci_devid(address); -	if (dev_id < 0) -		return NULL; - -	/* FIXME: id2adapter? Create a list of adapters? */ -	snprintf(path, sizeof(path), "/hci%d", dev_id); -	if (dbus_connection_get_object_user_data(conn, -			path, (void *) &adapter) == FALSE) -		return NULL; - -	return adapter; -} - -static void agent_auth_cb(struct agent *agent, DBusError *derr, void *user_data) -{ -	struct plugin_auth *auth = user_data; - -	auth->cb(derr, auth->user_data); - -	g_free(auth); -} - -int plugin_req_auth(bdaddr_t *src, bdaddr_t *dst, -		const char *uuid, plugin_auth_cb cb, void *user_data) -{ -	struct plugin_auth *auth; -	struct adapter *adapter; -	struct device *device; -	struct agent *agent; -	char address[18]; - -	adapter = ba2adapter(src); -	if (!adapter) -		return -EPERM; - -	/* Device connected? */ -	if (!g_slist_find_custom(adapter->active_conn, -				dst, active_conn_find_by_bdaddr)) -		return -ENOTCONN; - -	ba2str(dst, address); -	device = adapter_find_device(adapter, address); -	if (!device) -		return -EPERM; - -	if (!search_service_by_uuid(uuid)) -		return -EPERM; - -	/* FIXME: Missing check trusted file entries */ - -	agent = (device->agent ? : adapter->agent); -	if (!agent) -		return -EPERM; - -	auth = g_try_new0(struct plugin_auth, 1); -	if (!auth) -		return -ENOMEM; - -	auth->cb = cb; -	auth->user_data = user_data; - -	return agent_authorize(agent, device->path, uuid, agent_auth_cb, auth); -} - -int plugin_cancel_auth(bdaddr_t *src) -{ -	struct adapter *adapter = ba2adapter(src); -	struct device *device; -	struct agent *agent; -	char address[18]; - -	if (!adapter) -		return -EPERM; - -	ba2str(src, address); -	device = adapter_find_device(adapter, address); -	if (!device) -		return -EPERM; - -	/* -	 * FIXME: Cancel fails if authorization is requested to adapter's -	 * agent and in the meanwhile CreatePairedDevice is called. -	 */ - -	agent = (device->agent ? : adapter->agent); -	if (!agent) -		return -EPERM; - -	return agent_cancel(agent); -} | 
