diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2007-08-22 01:50:41 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2007-08-22 01:50:41 +0000 |
commit | b22d297c0c679b400d7825367e31fed46c552a49 (patch) | |
tree | 48f403d960004356af7ce70bedfc4f2490231945 /hcid/dbus-hci.c | |
parent | 145dfdd4b2e09f6b5b9e0be03d134c0242261b81 (diff) |
First attempt for automatic setting of service classes value
Diffstat (limited to 'hcid/dbus-hci.c')
-rw-r--r-- | hcid/dbus-hci.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index a8ae676c..77a93421 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -1666,8 +1666,28 @@ int set_limited_discoverable(int dd, const uint8_t *cls, gboolean limited) if (hci_write_class_of_dev(dd, dev_class, 1000) < 0) { err = errno; - error("Can't write class of device: %s(%d)", - strerror(err), err); + error("Can't write class of device: %s (%d)", + strerror(err), err); + return -err; + } + + return 0; +} + +int set_service_classes(int dd, const uint8_t *cls, uint8_t value) +{ + uint32_t dev_class; + int err; + + if (cls[2] == value) + return 0; /* Already set */ + + dev_class = (value << 16) | (cls[1] << 8) | cls[0]; + + if (hci_write_class_of_dev(dd, dev_class, 1000) < 0) { + err = errno; + error("Can't write class of device: %s (%d)", + strerror(err), err); return -err; } |