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/health | |
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/health')
-rw-r--r-- | profiles/health/hdp_manager.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/profiles/health/hdp_manager.c b/profiles/health/hdp_manager.c index 3777fd4dd..1bb60071c 100644 --- a/profiles/health/hdp_manager.c +++ b/profiles/health/hdp_manager.c @@ -34,6 +34,7 @@ #include <adapter.h> #include <device.h> #include <profile.h> +#include <service.h> #include <glib-helper.h> #include <log.h> @@ -54,13 +55,17 @@ static void hdp_adapter_remove(struct btd_profile *p, hdp_adapter_unregister(adapter); } -static int hdp_driver_probe(struct btd_profile *p, struct btd_device *device) +static int hdp_driver_probe(struct btd_service *service) { + struct btd_device *device = btd_service_get_device(service); + return hdp_device_register(device); } -static void hdp_driver_remove(struct btd_profile *p, struct btd_device *device) +static void hdp_driver_remove(struct btd_service *service) { + struct btd_device *device = btd_service_get_device(service); + hdp_device_unregister(device); } |