summaryrefslogtreecommitdiffstats
path: root/hcid/dbus-hci.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2007-08-22 01:50:41 +0000
committerMarcel Holtmann <marcel@holtmann.org>2007-08-22 01:50:41 +0000
commitb22d297c0c679b400d7825367e31fed46c552a49 (patch)
tree48f403d960004356af7ce70bedfc4f2490231945 /hcid/dbus-hci.c
parent145dfdd4b2e09f6b5b9e0be03d134c0242261b81 (diff)
First attempt for automatic setting of service classes value
Diffstat (limited to 'hcid/dbus-hci.c')
-rw-r--r--hcid/dbus-hci.c24
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;
}