diff options
| author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-02-08 14:37:20 +0200 |
|---|---|---|
| committer | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2014-04-10 14:15:10 +0000 |
| commit | 69880aca14a6e58a9c9dbccd3bd7393ed2de0b23 (patch) | |
| tree | 7b4b14e349b6a13cb0965dc208cab6d6f5635eb3 | |
| parent | 8271c42bdb81b10277cd86bc4244d06d401c69e9 (diff) | |
| download | bluez-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.c | 22 | ||||
| -rw-r--r-- | src/device.h | 1 |
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); |
