summaryrefslogtreecommitdiff
path: root/profiles/scanparam
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/scanparam
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/scanparam')
-rw-r--r--profiles/scanparam/scan.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/profiles/scanparam/scan.c b/profiles/scanparam/scan.c
index deb065336..dbbb4eaf4 100644
--- a/profiles/scanparam/scan.c
+++ b/profiles/scanparam/scan.c
@@ -37,6 +37,7 @@
#include "adapter.h"
#include "device.h"
#include "profile.h"
+#include "service.h"
#include "attrib/att.h"
#include "attrib/gattrib.h"
#include "attrib/gatt.h"
@@ -266,8 +267,9 @@ static void scan_unregister(struct btd_device *device)
g_free(scan);
}
-static int scan_param_probe(struct btd_profile *p, struct btd_device *device)
+static int scan_param_probe(struct btd_service *service)
{
+ struct btd_device *device = btd_service_get_device(service);
struct gatt_primary *prim;
DBG("Probing Scan Parameters");
@@ -279,8 +281,10 @@ static int scan_param_probe(struct btd_profile *p, struct btd_device *device)
return scan_register(device, prim);
}
-static void scan_param_remove(struct btd_profile *p, struct btd_device *device)
+static void scan_param_remove(struct btd_service *service)
{
+ struct btd_device *device = btd_service_get_device(service);
+
scan_unregister(device);
}