All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add "Class" property to org.bluez.Adapter
@ 2009-03-04  1:09 Bea Lam
  2009-03-04 21:04 ` Marcel Holtmann
  0 siblings, 1 reply; 6+ messages in thread
From: Bea Lam @ 2009-03-04  1:09 UTC (permalink / raw)
  To: linux-bluetooth

[-- Attachment #1: Type: text/plain, Size: 209 bytes --]

Hi Marcel,

I mentioned on IRC a while back that a "Class" property for the Adapter
interface might be useful. I've attached a patch to this effect. Please
let me know if there are any issues.

cheers,

Bea



[-- Attachment #2: adapter-class-property.patch --]
[-- Type: text/x-patch, Size: 1964 bytes --]

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index eb973ec..1e03b4e 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -210,6 +210,10 @@ Properties	string Address [readonly]
 			The Bluetooth friendly name. This value can be
 			changed and a PropertyChanged signal will be emitted.
 
+		uint32 Class [readonly]
+
+			The Bluetooth class of device.
+
 		boolean Powered [readwrite]
 
 			Switch an adapter on or off. This will also set the
diff --git a/src/adapter.c b/src/adapter.c
index 52b58c4..c48ec68 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1192,6 +1192,7 @@ static DBusMessage *get_properties(DBusConnection *conn,
 	DBusMessageIter iter;
 	DBusMessageIter dict;
 	char str[249], srcaddr[18];
+	uint32_t class;
 	gboolean value;
 	char **devices;
 	int i;
@@ -1224,6 +1225,12 @@ static DBusMessage *get_properties(DBusConnection *conn,
 
 	dict_append_entry(&dict, "Name", DBUS_TYPE_STRING, &property);
 
+	/* Class */
+	class = adapter->dev.class[0]
+		| (adapter->dev.class[1] << 8)
+		| (adapter->dev.class[2] << 16);
+	dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
+
 	/* Powered */
 	value = adapter->up ? TRUE : FALSE;
 	dict_append_entry(&dict, "Powered", DBUS_TYPE_BOOLEAN, &value);
@@ -2326,6 +2333,8 @@ int adapter_get_class(struct btd_adapter *adapter, uint8_t *cls)
 int adapter_set_class(struct btd_adapter *adapter, uint8_t *cls)
 {
 	struct hci_dev *dev = &adapter->dev;
+	int dd;
+	uint32_t class;
 
 	if (memcmp(dev->class, cls, 3) == 0)
 		return 0;
@@ -2334,6 +2343,17 @@ int adapter_set_class(struct btd_adapter *adapter, uint8_t *cls)
 
 	write_local_class(&adapter->bdaddr, cls);
 
+	dd = hci_open_dev(adapter->dev_id);
+	if (dd >= 0) {
+		update_ext_inquiry_response(dd, dev);
+		hci_close_dev(dd);
+	}
+
+	class = cls[0] | (cls[1] << 8) | (cls[2] << 16);
+
+	emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE,
+				"Class", DBUS_TYPE_UINT32, &class);
+
 	return 0;
 }
 

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] Add "Class" property to org.bluez.Adapter
  2009-03-04  1:09 [PATCH] Add "Class" property to org.bluez.Adapter Bea Lam
@ 2009-03-04 21:04 ` Marcel Holtmann
  2009-03-05  0:24   ` Bea Lam
  0 siblings, 1 reply; 6+ messages in thread
From: Marcel Holtmann @ 2009-03-04 21:04 UTC (permalink / raw)
  To: Bea Lam; +Cc: linux-bluetooth

Hi Bea,

> I mentioned on IRC a while back that a "Class" property for the Adapter
> interface might be useful. I've attached a patch to this effect. Please
> let me know if there are any issues.

+       /* Class */
+       class = adapter->dev.class[0]
+               | (adapter->dev.class[1] << 8)
+               | (adapter->dev.class[2] << 16);
+       dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
+

This should more like this:

	class = adapter->dev.class[0] |
			adapter->dev.class[1] << 8 | ...

Regards

Marcel



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Add "Class" property to org.bluez.Adapter
  2009-03-04 21:04 ` Marcel Holtmann
@ 2009-03-05  0:24   ` Bea Lam
  2009-03-12 15:09     ` Johan Hedberg
  0 siblings, 1 reply; 6+ messages in thread
From: Bea Lam @ 2009-03-05  0:24 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: linux-bluetooth

[-- Attachment #1: Type: text/plain, Size: 467 bytes --]

Hi Marcel,
> +       /* Class */
> +       class = adapter->dev.class[0]
> +               | (adapter->dev.class[1] << 8)
> +               | (adapter->dev.class[2] << 16);
> +       dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
> +
>
> This should more like this:
>
> 	class = adapter->dev.class[0] |
> 			adapter->dev.class[1] << 8 | ...
>   
The revised patch is attached. The original format was based on similar
code in security.c.

Thanks

Bea



[-- Attachment #2: adapter-class-property.patch --]
[-- Type: text/x-patch, Size: 1962 bytes --]

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index eb973ec..1e03b4e 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -210,6 +210,10 @@ Properties	string Address [readonly]
 			The Bluetooth friendly name. This value can be
 			changed and a PropertyChanged signal will be emitted.
 
+		uint32 Class [readonly]
+
+			The Bluetooth class of device.
+
 		boolean Powered [readwrite]
 
 			Switch an adapter on or off. This will also set the
diff --git a/src/adapter.c b/src/adapter.c
index 52b58c4..276253d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1192,6 +1192,7 @@ static DBusMessage *get_properties(DBusConnection *conn,
 	DBusMessageIter iter;
 	DBusMessageIter dict;
 	char str[249], srcaddr[18];
+	uint32_t class;
 	gboolean value;
 	char **devices;
 	int i;
@@ -1224,6 +1225,12 @@ static DBusMessage *get_properties(DBusConnection *conn,
 
 	dict_append_entry(&dict, "Name", DBUS_TYPE_STRING, &property);
 
+	/* Class */
+	class = adapter->dev.class[0] |
+			adapter->dev.class[1] << 8 |
+			adapter->dev.class[2] << 16;
+	dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
+
 	/* Powered */
 	value = adapter->up ? TRUE : FALSE;
 	dict_append_entry(&dict, "Powered", DBUS_TYPE_BOOLEAN, &value);
@@ -2326,6 +2333,8 @@ int adapter_get_class(struct btd_adapter *adapter, uint8_t *cls)
 int adapter_set_class(struct btd_adapter *adapter, uint8_t *cls)
 {
 	struct hci_dev *dev = &adapter->dev;
+	int dd;
+	uint32_t class;
 
 	if (memcmp(dev->class, cls, 3) == 0)
 		return 0;
@@ -2334,6 +2343,17 @@ int adapter_set_class(struct btd_adapter *adapter, uint8_t *cls)
 
 	write_local_class(&adapter->bdaddr, cls);
 
+	dd = hci_open_dev(adapter->dev_id);
+	if (dd >= 0) {
+		update_ext_inquiry_response(dd, dev);
+		hci_close_dev(dd);
+	}
+
+	class = cls[0] | (cls[1] << 8) | (cls[2] << 16);
+
+	emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE,
+				"Class", DBUS_TYPE_UINT32, &class);
+
 	return 0;
 }
 

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] Add "Class" property to org.bluez.Adapter
  2009-03-05  0:24   ` Bea Lam
@ 2009-03-12 15:09     ` Johan Hedberg
  2009-03-16  1:38       ` Bea Lam
  0 siblings, 1 reply; 6+ messages in thread
From: Johan Hedberg @ 2009-03-12 15:09 UTC (permalink / raw)
  To: Bea Lam; +Cc: Marcel Holtmann, linux-bluetooth

Hi Bea,

On Thu, Mar 05, 2009, Bea Lam wrote:
> The revised patch is attached. The original format was based on
> similar code in security.c.

I can apply the patch but could you first create a proper version of it
with git format-patch so that I don't have to start manipulating
GIT_AUTHOR_NAME etc. myself. (I realize this isn't much work for myself
either but it'd be good to get everyone submitting patches into this
habit since otherwise the workload on our (me & Marcel) side starts
accumulating pretty quickly.) Thanks.

Johan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Add "Class" property to org.bluez.Adapter
  2009-03-12 15:09     ` Johan Hedberg
@ 2009-03-16  1:38       ` Bea Lam
  2009-03-16  2:20         ` Johan Hedberg
  0 siblings, 1 reply; 6+ messages in thread
From: Bea Lam @ 2009-03-16  1:38 UTC (permalink / raw)
  To: Johan Hedberg; +Cc: linux-bluetooth

[-- Attachment #1: Type: text/plain, Size: 511 bytes --]

Hi Johan,

> I can apply the patch but could you first create a proper version of it
> with git format-patch so that I don't have to start manipulating
> GIT_AUTHOR_NAME etc. myself. (I realize this isn't much work for myself
> either but it'd be good to get everyone submitting patches into this
> habit since otherwise the workload on our (me & Marcel) side starts
> accumulating pretty quickly.) Thanks.
Here's the formatted patch, without the unnecessary
update_ext_inquiry_response() call.

Thanks,

Bea
 

[-- Attachment #2: 0001-Add-Class-property-to-org.bluez.Adapter-interface.patch --]
[-- Type: text/x-patch, Size: 2185 bytes --]

>From 6d1e1d52effae8ac1e2d9210267b6e85b86a7dbd Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Mon, 16 Mar 2009 11:32:06 +1000
Subject: [PATCH] Add "Class" property to org.bluez.Adapter interface.

---
 doc/adapter-api.txt |    4 ++++
 src/adapter.c       |   13 +++++++++++++
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index eb973ec..1e03b4e 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -210,6 +210,10 @@ Properties	string Address [readonly]
 			The Bluetooth friendly name. This value can be
 			changed and a PropertyChanged signal will be emitted.
 
+		uint32 Class [readonly]
+
+			The Bluetooth class of device.
+
 		boolean Powered [readwrite]
 
 			Switch an adapter on or off. This will also set the
diff --git a/src/adapter.c b/src/adapter.c
index 52b58c4..821fd2b 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1192,6 +1192,7 @@ static DBusMessage *get_properties(DBusConnection *conn,
 	DBusMessageIter iter;
 	DBusMessageIter dict;
 	char str[249], srcaddr[18];
+	uint32_t class;
 	gboolean value;
 	char **devices;
 	int i;
@@ -1224,6 +1225,12 @@ static DBusMessage *get_properties(DBusConnection *conn,
 
 	dict_append_entry(&dict, "Name", DBUS_TYPE_STRING, &property);
 
+	/* Class */
+	class = adapter->dev.class[0] |
+			adapter->dev.class[1] << 8 |
+			adapter->dev.class[2] << 16;
+	dict_append_entry(&dict, "Class", DBUS_TYPE_UINT32, &class);
+
 	/* Powered */
 	value = adapter->up ? TRUE : FALSE;
 	dict_append_entry(&dict, "Powered", DBUS_TYPE_BOOLEAN, &value);
@@ -2326,6 +2333,7 @@ int adapter_get_class(struct btd_adapter *adapter, uint8_t *cls)
 int adapter_set_class(struct btd_adapter *adapter, uint8_t *cls)
 {
 	struct hci_dev *dev = &adapter->dev;
+	uint32_t class;
 
 	if (memcmp(dev->class, cls, 3) == 0)
 		return 0;
@@ -2334,6 +2342,11 @@ int adapter_set_class(struct btd_adapter *adapter, uint8_t *cls)
 
 	write_local_class(&adapter->bdaddr, cls);
 
+	class = cls[0] | (cls[1] << 8) | (cls[2] << 16);
+
+	emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE,
+				"Class", DBUS_TYPE_UINT32, &class);
+
 	return 0;
 }
 
-- 
1.6.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] Add "Class" property to org.bluez.Adapter
  2009-03-16  1:38       ` Bea Lam
@ 2009-03-16  2:20         ` Johan Hedberg
  0 siblings, 0 replies; 6+ messages in thread
From: Johan Hedberg @ 2009-03-16  2:20 UTC (permalink / raw)
  To: Bea Lam; +Cc: linux-bluetooth

Hi Bea,

On Mon, Mar 16, 2009, Bea Lam wrote:
> Here's the formatted patch, without the unnecessary
> update_ext_inquiry_response() call.

Thanks! The patch is now pushed upstream. Unfortunately you just missed
the 4.33 release (Marcel already tagged it) so your patch will go into
4.34.

Johan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-03-16  2:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-04  1:09 [PATCH] Add "Class" property to org.bluez.Adapter Bea Lam
2009-03-04 21:04 ` Marcel Holtmann
2009-03-05  0:24   ` Bea Lam
2009-03-12 15:09     ` Johan Hedberg
2009-03-16  1:38       ` Bea Lam
2009-03-16  2:20         ` Johan Hedberg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.