diff options
author | Mikel Astiz <mikel.astiz@bmw-carit.de> | 2013-04-26 08:17:15 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-04-26 10:29:36 +0300 |
commit | d6254b41132baa8797f79e55446939495dc3f514 (patch) | |
tree | 93313b8d587613cfa70ee53473f6535de2701bdf /profiles/scanparam | |
parent | 266635500b47329d5365b8f84565e1ea9324972c (diff) | |
download | bluez-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.c | 8 |
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); } |