diff options
| -rw-r--r-- | hcid/device.c | 20 | ||||
| -rw-r--r-- | hcid/device.h | 12 | ||||
| -rw-r--r-- | serial/main.c | 25 | 
3 files changed, 57 insertions, 0 deletions
| diff --git a/hcid/device.c b/hcid/device.c index 850ce1af..f8550b4a 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -1163,3 +1163,23 @@ int device_browse(struct device *device, DBusConnection *conn,  	str2ba(device->address, &dst);  	return bt_discover_services(&src, &dst, browse_cb, req, NULL);  } + +static GSList *drivers = NULL; + +int btd_register_device_driver(struct btd_device_driver *driver) +{ +	const char **uuid; + +	drivers = g_slist_append(drivers, driver); + +	for (uuid = driver->uuids; *uuid; uuid++) { +		debug("name %s uuid %s", driver->name, *uuid); +	} + +	return 0; +} + +void btd_unregister_device_driver(struct btd_device_driver *driver) +{ +	drivers = g_slist_remove(drivers, driver); +} diff --git a/hcid/device.h b/hcid/device.h index 4bfa9feb..5ef524df 100644 --- a/hcid/device.h +++ b/hcid/device.h @@ -39,3 +39,15 @@ void device_remove(struct device *device, DBusConnection *conn);  gint device_address_cmp(struct device *device, const gchar *address);  int device_browse(struct device *device, DBusConnection *conn,  			DBusMessage *msg); + +#define BTD_UUIDS(args...) ((const char *[]) { args, NULL } ) + +struct btd_device_driver { +	const char *name; +	const char **uuids; +	int (*probe) (const char *path); +	void (*remove) (const char *path); +}; + +int btd_register_device_driver(struct btd_device_driver *driver); +void btd_unregister_device_driver(struct btd_device_driver *driver); diff --git a/serial/main.c b/serial/main.c index b4533a01..24de70a5 100644 --- a/serial/main.c +++ b/serial/main.c @@ -35,11 +35,32 @@  #include <dbus/dbus.h>  #include "plugin.h" +#include "device.h" +#include "logging.h"  #include "dbus-service.h"  #include "manager.h"  static DBusConnection *conn; +static int serial_probe(const char *path) +{ +	debug("path %s", path); + +	return 0; +} + +static void serial_remove(const char *path) +{ +	debug("path %s", path); +} + +static struct btd_device_driver serial_driver = { +	.name	= "serial", +	.uuids	= BTD_UUIDS("spp", "dun"), +	.probe	= serial_probe, +	.remove	= serial_remove, +}; +  static int serial_init(void)  {  	conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); @@ -53,11 +74,15 @@ static int serial_init(void)  	register_service("serial", NULL); +	btd_register_device_driver(&serial_driver); +  	return 0;  }  static void serial_exit(void)  { +	btd_unregister_device_driver(&serial_driver); +  	unregister_service("serial");  	serial_manager_exit(); | 
