summaryrefslogtreecommitdiff
path: root/src/service.c
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 /src/service.c
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 'src/service.c')
-rw-r--r--src/service.c4
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;
}