summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-02-08 14:37:20 +0200
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2014-04-10 14:15:10 +0000
commit69880aca14a6e58a9c9dbccd3bd7393ed2de0b23 (patch)
tree7b4b14e349b6a13cb0965dc208cab6d6f5635eb3
parent8271c42bdb81b10277cd86bc4244d06d401c69e9 (diff)
downloadbluez-69880aca14a6e58a9c9dbccd3bd7393ed2de0b23.tar.gz
core/device: Add device_is_service_blocked
This adds device_is_service_blocked which can be used to check if a service is currently blocked.
-rw-r--r--src/device.c22
-rw-r--r--src/device.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/src/device.c b/src/device.c
index b7121a8d0..3d8c8e03b 100644
--- a/src/device.c
+++ b/src/device.c
@@ -576,6 +576,28 @@ gboolean device_is_trusted(struct btd_device *device)
return device->trusted;
}
+bool device_is_service_blocked(struct btd_device *device, const char *uuid)
+{
+ GSList *l;
+
+ for (l = device->services; l; l = g_slist_next(l)) {
+ struct btd_service *service = l->data;
+ struct btd_profile *p = btd_service_get_profile(service);
+
+ if ((!p->auth_uuid || strcasecmp(uuid, p->auth_uuid)) &&
+ strcasecmp(uuid, p->remote_uuid))
+ continue;
+
+ if (!btd_service_is_blocked(service))
+ return false;
+ }
+
+ /* Either every service matching is blocked or no service could be
+ * found.
+ */
+ return true;
+}
+
static gboolean dev_property_get_address(const GDBusPropertyTable *property,
DBusMessageIter *iter, void *data)
{
diff --git a/src/device.h b/src/device.h
index 859e9e5ab..5640f85a0 100644
--- a/src/device.h
+++ b/src/device.h
@@ -83,6 +83,7 @@ bool device_is_paired(struct btd_device *device, uint8_t bdaddr_type);
bool device_is_bonded(struct btd_device *device, uint8_t bdaddr_type);
gboolean device_is_trusted(struct btd_device *device);
void device_set_paired(struct btd_device *dev, uint8_t bdaddr_type);
+bool device_is_service_blocked(struct btd_device *device, const char *uuid);
void btd_device_set_temporary(struct btd_device *device, gboolean temporary);
void btd_device_set_trusted(struct btd_device *device, gboolean trusted);
void device_set_bonded(struct btd_device *device, uint8_t bdaddr_type);