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 /src/service.c | |
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 'src/service.c')
-rw-r--r-- | src/service.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/service.c b/src/service.c index 298d6006b..a10138dbf 100644 --- a/src/service.c +++ b/src/service.c @@ -138,7 +138,7 @@ int service_probe(struct btd_service *service) assert(service->state == BTD_SERVICE_STATE_UNAVAILABLE); - err = service->profile->device_probe(service->profile, service->device); + err = service->profile->device_probe(service); if (err == 0) { change_state(service, BTD_SERVICE_STATE_DISCONNECTED, 0); return 0; @@ -153,7 +153,7 @@ int service_probe(struct btd_service *service) void service_shutdown(struct btd_service *service) { change_state(service, BTD_SERVICE_STATE_UNAVAILABLE, 0); - service->profile->device_remove(service->profile, service->device); + service->profile->device_remove(service); service->device = NULL; service->profile = NULL; } |