summaryrefslogtreecommitdiff
path: root/profiles/deviceinfo
diff options
context:
space:
mode:
authorMikel Astiz <mikel.astiz@bmw-carit.de>2013-04-26 08:17:15 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2013-04-26 10:29:36 +0300
commitd6254b41132baa8797f79e55446939495dc3f514 (patch)
tree93313b8d587613cfa70ee53473f6535de2701bdf /profiles/deviceinfo
parent266635500b47329d5365b8f84565e1ea9324972c (diff)
downloadbluez-d6254b41132baa8797f79e55446939495dc3f514.tar.gz
profile: Use btd_service for probing profiles
Change the profile probe mechanism in order to pass the btd_service instance representing the remote service. This object is bound to a btd_profile and a btd_device, thus replacing the previous parameters. The probe callback is allowed to hold a reference to the btd_service by means of btd_service_ref(), which should be unreferenced during removal. Keeping such a reference of the btd_service allows supporting multiple instances of the same UUID, since the reference can serve as a handle during the interactions between the profile implementation and the core.
Diffstat (limited to 'profiles/deviceinfo')
-rw-r--r--profiles/deviceinfo/deviceinfo.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/profiles/deviceinfo/deviceinfo.c b/profiles/deviceinfo/deviceinfo.c
index 08f53b312..fc8babd44 100644
--- a/profiles/deviceinfo/deviceinfo.c
+++ b/profiles/deviceinfo/deviceinfo.c
@@ -34,6 +34,7 @@
#include "adapter.h"
#include "device.h"
#include "profile.h"
+#include "service.h"
#include "attrib/gattrib.h"
#include "attio.h"
#include "attrib/att.h"
@@ -198,9 +199,9 @@ static void deviceinfo_unregister(struct btd_device *device)
deviceinfo_free(d);
}
-static int deviceinfo_driver_probe(struct btd_profile *p,
- struct btd_device *device)
+static int deviceinfo_driver_probe(struct btd_service *service)
{
+ struct btd_device *device = btd_service_get_device(service);
struct gatt_primary *prim;
prim = btd_device_get_primary(device, DEVICE_INFORMATION_UUID);
@@ -210,9 +211,10 @@ static int deviceinfo_driver_probe(struct btd_profile *p,
return deviceinfo_register(device, prim);
}
-static void deviceinfo_driver_remove(struct btd_profile *p,
- struct btd_device *device)
+static void deviceinfo_driver_remove(struct btd_service *service)
{
+ struct btd_device *device = btd_service_get_device(service);
+
deviceinfo_unregister(device);
}