summaryrefslogtreecommitdiffstats
path: root/hcid/manager.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/manager.c
parent145dfdd4b2e09f6b5b9e0be03d134c0242261b81 (diff)
First attempt for automatic setting of service classes value
Diffstat (limited to 'hcid/manager.c')
-rw-r--r--hcid/manager.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/hcid/manager.c b/hcid/manager.c
index 50cd698e..c03cdc3f 100644
--- a/hcid/manager.c
+++ b/hcid/manager.c
@@ -42,6 +42,7 @@
#include <dbus/dbus.h>
#include "hcid.h"
+#include "sdpd.h"
#include "adapter.h"
#include "dbus.h"
#include "dbus-helper.h"
@@ -328,3 +329,28 @@ void set_default_adapter(int new_default)
{
default_adapter_id = new_default;
}
+
+void update_class_of_device(void)
+{
+ uint8_t value = get_service_classes();
+ uint8_t cls[3];
+ int dd, dev_id = default_adapter_id;
+
+ if (dev_id < 0)
+ return;
+
+ dd = hci_open_dev(dev_id);
+ if (dd < 0)
+ return;
+
+ if (hci_read_class_of_dev(dd, cls, 1000) < 0) {
+ error("Can't read class of device on hci%d: %s (%d)",
+ dev_id, strerror(errno), errno);
+ hci_close_dev(dd);
+ return;
+ }
+
+ set_service_classes(dd, cls, value);
+
+ hci_close_dev(dd);
+}