Linux bluetooth development
 help / color / mirror / Atom feed
* [PATCH] media: Fix some wrong interface names
From: Mikel Astiz @ 2012-12-06  7:25 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

Trivially fix some wrong interface names introduced by commit
3aa15b56dca27a73f6bc34467ba0ce4c85ee2d9a.
---
 doc/media-api.txt      | 4 ++--
 profiles/audio/media.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/media-api.txt b/doc/media-api.txt
index ce7502a..1865df9 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -128,7 +128,7 @@ MediaPlayer1 hierarchy
 
 Service		unique name (Target role)
 		org.bluez (Controller role)
-Interface	org.bluez.Media1Player1
+Interface	org.bluez.MediaPlayer1
 Object path	freely definable (Target role)
 		[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX
 		(Controller role)
@@ -223,7 +223,7 @@ MediaEndpoint1 hierarchy
 ========================
 
 Service		unique name
-Interface	org.bluez.Media1Endpoint1
+Interface	org.bluez.MediaEndpoint1
 Object path	freely definable
 
 Methods		void SetConfiguration(object transport, dict properties)
diff --git a/profiles/audio/media.c b/profiles/audio/media.c
index 61c1f03..4c5d38b 100644
--- a/profiles/audio/media.c
+++ b/profiles/audio/media.c
@@ -47,7 +47,7 @@
 #include "manager.h"
 
 #define MEDIA_INTERFACE "org.bluez.Media1"
-#define MEDIA_ENDPOINT_INTERFACE "org.bluez.Media1Endpoint1"
+#define MEDIA_ENDPOINT_INTERFACE "org.bluez.MediaEndpoint1"
 #define MEDIA_PLAYER_INTERFACE "org.bluez.MediaPlayer1"
 
 #define REQUEST_TIMEOUT (3 * 1000)		/* 3 seconds */
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH BlueZ] lib: Fix member type on le_read_advertising_channel_tx_power_rp
From: Anderson Lizardo @ 2012-12-06  1:22 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Anderson Lizardo

Transmit power level range is -20 <= N <= 10, thus it should be stored
as int8_t.
---
 lib/hci.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/hci.h b/lib/hci.h
index 2f18ec8..196b1aa 100644
--- a/lib/hci.h
+++ b/lib/hci.h
@@ -1492,7 +1492,7 @@ typedef struct {
 #define OCF_LE_READ_ADVERTISING_CHANNEL_TX_POWER	0x0007
 typedef struct {
 	uint8_t		status;
-	uint8_t		level;
+	int8_t		level;
 } __attribute__ ((packed)) le_read_advertising_channel_tx_power_rp;
 #define LE_READ_ADVERTISING_CHANNEL_TX_POWER_RP_SIZE 2
 
-- 
1.7.9.5


^ permalink raw reply related

* [PATCH BlueZ] audio: Fix interface names
From: Vinicius Costa Gomes @ 2012-12-05 23:18 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Vinicius Costa Gomes

In some places, the old names of the interfaces were still being used.
So we update them to use the new names.
---
Hi,

This patch is more to confirm the intended names, in this patch I am
supposing that the correct names are 'org.bluez.MediaEndpoint1' and
'org.bluez.MediaPlayer1'. As I think that the double numbering would
cause even more confusion.

Cheers,

 src/bluetooth.conf   |  4 ++--
 test/simple-endpoint | 10 +++++-----
 test/simple-player   | 10 +++++-----
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/bluetooth.conf b/src/bluetooth.conf
index 4d0d504..6111fdb 100644
--- a/src/bluetooth.conf
+++ b/src/bluetooth.conf
@@ -12,8 +12,8 @@
     <allow send_destination="org.bluez"/>
     <allow send_interface="org.bluez.Agent"/>
     <allow send_interface="org.bluez.HandsfreeAgent"/>
-    <allow send_interface="org.bluez.MediaEndpoint"/>
-    <allow send_interface="org.bluez.MediaPlayer"/>
+    <allow send_interface="org.bluez.MediaEndpoint1"/>
+    <allow send_interface="org.bluez.MediaPlayer1"/>
     <allow send_interface="org.bluez.Watcher"/>
     <allow send_interface="org.bluez.ThermometerWatcher"/>
     <allow send_interface="org.bluez.AlertAgent"/>
diff --git a/test/simple-endpoint b/test/simple-endpoint
index b363943..590f83a 100755
--- a/test/simple-endpoint
+++ b/test/simple-endpoint
@@ -55,25 +55,25 @@ class Endpoint(dbus.service.Object):
 	def default_configuration(self, configuration):
 		self.configuration = configuration
 
-	@dbus.service.method("org.bluez.MediaEndpoint",
+	@dbus.service.method("org.bluez.MediaEndpoint1",
 					in_signature="", out_signature="")
 	def Release(self):
 		print("Release")
 		if self.exit_on_release:
 			mainloop.quit()
 
-	@dbus.service.method("org.bluez.MediaEndpoint",
+	@dbus.service.method("org.bluez.MediaEndpoint1",
 					in_signature="", out_signature="")
 	def ClearConfiguration(self):
 		print("ClearConfiguration")
 
-	@dbus.service.method("org.bluez.MediaEndpoint",
+	@dbus.service.method("org.bluez.MediaEndpoint1",
 					in_signature="oay", out_signature="")
 	def SetConfiguration(self, transport, config):
 		print("SetConfiguration (%s, %s)" % (transport, config))
 		return
 
-	@dbus.service.method("org.bluez.MediaEndpoint",
+	@dbus.service.method("org.bluez.MediaEndpoint1",
 					in_signature="ay", out_signature="ay")
 	def SelectConfiguration(self, caps):
 		print("SelectConfiguration (%s)" % (caps))
@@ -90,7 +90,7 @@ if __name__ == '__main__':
 		path = bluezutils.find_adapter().object_path
 
 	media = dbus.Interface(bus.get_object("org.bluez", path),
-						"org.bluez.Media")
+						"org.bluez.Media1")
 
 	path = "/test/endpoint"
 	endpoint = Endpoint(bus, path)
diff --git a/test/simple-player b/test/simple-player
index 7eb7d7e..3bfc485 100755
--- a/test/simple-player
+++ b/test/simple-player
@@ -17,11 +17,11 @@ class Player(dbus.service.Object):
 		if obj != None:
 			bus = dbus.SystemBus()
 			mp = dbus.Interface(bus.get_object("org.bluez", obj),
-						"org.bluez.MediaPlayer")
+						"org.bluez.MediaPlayer1")
 			prop = dbus.Interface(bus.get_object("org.bluez", obj),
 						"org.freedesktop.DBus.Properties")
 
-			self.properties = prop.GetAll("org.bluez.MediaPlayer")
+			self.properties = prop.GetAll("org.bluez.MediaPlayer1")
 			self.metadata = mp.GetTrack()
 
 			bus.add_signal_receiver(self.properties_changed,
@@ -56,7 +56,7 @@ class Player(dbus.service.Object):
 			gobject.io_add_watch(sys.stdin, gobject.IO_IN,
 							handler.handle)
 
-	@dbus.service.method("org.bluez.MediaPlayer",
+	@dbus.service.method("org.bluez.MediaPlayer1",
 					in_signature="", out_signature="")
 	def Release(self):
 		print("Release")
@@ -79,7 +79,7 @@ class Player(dbus.service.Object):
 		"""
 		pass
 
-	@dbus.service.signal("org.bluez.MediaPlayer", signature="a{sv}")
+	@dbus.service.signal("org.bluez.MediaPlayer1", signature="a{sv}")
 	def TrackChanged(self, metadata):
 		"""TrackChanged(metadata)
 
@@ -149,7 +149,7 @@ if __name__ == '__main__':
 		path = bluezutils.find_adapter().object_path
 
 	media = dbus.Interface(bus.get_object("org.bluez", path),
-						"org.bluez.Media")
+						"org.bluez.Media1")
 
 	path = "/test/player"
 	player = Player(bus, path)
-- 
1.8.0.1


^ permalink raw reply related

* 3.6.8: BT USB with rfcomm/pppd crash on dongle pull
From: Michael Büsch @ 2012-12-05 20:45 UTC (permalink / raw)
  To: Marcel Holtmann, Gustavo Padovan, Johan Hedberg; +Cc: linux-bluetooth

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

The following crash happened by pulling a BT USB dongle while
an rfcomm/pppd connection was active over that dongle.

The dongle was connected to a 4-port USB hub. A usb-serial-dongle
was also connected to that hub.
The _hub_ was pulled from the host USB port. (The BT USB dongle remained in the hub).


[427194.250218] usb 1-2: USB disconnect, device number 82
[427194.250243] usb 1-2.1: USB disconnect, device number 89
[427194.250688] cp210x ttyUSB0: cp210x converter now disconnected from ttyUSB0
[427194.250771] cp210x 1-2.1:1.0: device disconnected
[427194.251377] usb 1-2.4: USB disconnect, device number 83
[427194.251845] general protection fault: 0000 [#1] PREEMPT SMP 
[427194.252114] Modules linked in: uvcvideo nfnetlink_log nfnetlink bridge stp llc cp210x nls_utf8 nls_cp437 acpi_cpufreq mperf ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6t_rt ipt_MASQUERADE xt_conntrack ipt_REJECT xt_tcpudp ip6table_mangle ip6table_filter ip6_tables iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack iptable_mangle iptable_filter ip_tables x_tables videobuf2_vmalloc videobuf2_memops videobuf2_core i915 drm_kms_helper video kvm_intel kvm [last unloaded: uvcvideo]
[427194.254255] CPU 0 
[427194.254326] Pid: 30, comm: khubd Not tainted 3.6.8+ #3 ASUSTeK Computer INC. 1011PX/1015PE
[427194.254557] RIP: 0010:[<ffffffff8182e752>]  [<ffffffff8182e752>] l2cap_chan_destroy+0x32/0x80
[427194.254811] RSP: 0018:ffff88007c545b90  EFLAGS: 00010246
[427194.254959] RAX: dead000000200200 RBX: ffff8800263dd800 RCX: 0000000000000000
[427194.255051] RDX: dead000000100100 RSI: dead000000100100 RDI: dead000000200200
[427194.255051] RBP: ffff8800263a8900 R08: ffff88007c544000 R09: 0000000000000000
[427194.255051] R10: 000000000000294c R11: 0000000000000000 R12: 0000000000000067
[427194.255051] R13: ffff8800263a8800 R14: ffff8800263ddad0 R15: ffff8800263a8660
[427194.255051] FS:  0000000000000000(0000) GS:ffff88007f400000(0000) knlGS:0000000000000000
[427194.255051] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[427194.255051] CR2: ffffffffff600400 CR3: 0000000001e0c000 CR4: 00000000000007e0
[427194.255051] DR0: 0000000000000001 DR1: 0000000000000002 DR2: 0000000000000001
[427194.255051] DR3: 000000000000000a DR6: 00000000ffff0ff0 DR7: 0000000000000400
[427194.255051] Process khubd (pid: 30, threadinfo ffff88007c544000, task ffff880000153b10)
[427194.255051] Stack:
[427194.255051]  ffff8800263df800 ffffffff81833530 ffff8800263dd800 ffffffff8182ebba
[427194.255051]  ffff8800263dd000 ffff8800263a8910 ffff8800024de578 ffff8800263dd000
[427194.255051]  ffff8800024de610 ffff8800024de610 ffff880005f12800 0000000000000000
[427194.255051] Call Trace:
[427194.255051]  [<ffffffff81833530>] ? l2cap_sock_kill+0x30/0x50
[427194.255051]  [<ffffffff8182ebba>] ? l2cap_conn_del+0xaa/0x170
[427194.255051]  [<ffffffff818329a7>] ? l2cap_disconn_cfm+0x17/0x20
[427194.255051]  [<ffffffff8181a68d>] ? hci_conn_hash_flush+0x9d/0xb0
[427194.255051]  [<ffffffff818164a4>] ? hci_dev_do_close+0xc4/0x3a0
[427194.255051]  [<ffffffff8181853f>] ? hci_unregister_dev+0x5f/0x170
[427194.255051]  [<ffffffff8163e715>] ? btusb_disconnect+0x55/0xd0
[427194.255051]  [<ffffffff8156abfa>] ? usb_unbind_interface+0x6a/0x1c0
[427194.255051]  [<ffffffff81462f37>] ? __device_release_driver+0x77/0xf0
[427194.255051]  [<ffffffff814631a9>] ? device_release_driver+0x29/0x40
[427194.255051]  [<ffffffff814629f3>] ? bus_remove_device+0xc3/0x100
[427194.255051]  [<ffffffff814602bb>] ? device_del+0x11b/0x1a0
[427194.255051]  [<ffffffff815688b4>] ? usb_disable_device+0x94/0x1e0
[427194.255051]  [<ffffffff81560bbf>] ? usb_disconnect+0x7f/0x110
[427194.255051]  [<ffffffff81560ba9>] ? usb_disconnect+0x69/0x110
[427194.255051]  [<ffffffff81562710>] ? hub_thread+0x420/0x1320
[427194.255051]  [<ffffffff819260d3>] ? __schedule+0x2a3/0x670
[427194.255051]  [<ffffffff810887f0>] ? finish_wait+0xa0/0xa0
[427194.255051]  [<ffffffff815622f0>] ? usb_remote_wakeup+0x40/0x40
[427194.255051]  [<ffffffff81087f77>] ? kthread+0x87/0x90
[427194.255051]  [<ffffffff81929074>] ? kernel_thread_helper+0x4/0x10
[427194.255051]  [<ffffffff81087ef0>] ? kthread_freezable_should_stop+0x50/0x50
[427194.255051]  [<ffffffff81929070>] ? gs_change+0xb/0xb
[427194.255051] Code: 80 cc ea 81 e8 20 8a 0f 00 48 be 00 01 10 00 00 00 ad de 48 bf 00 02 20 00 00 00 ad de 48 8b 83 b8 02 00 00 48 8b 93 b0 02 00 00 <48> 89 42 08 48 89 10 48 89 bb b8 02 00 00 48 89 b3 b0 02 00 00 
[427194.255051] RIP  [<ffffffff8182e752>] l2cap_chan_destroy+0x32/0x80
[427194.255051]  RSP <ffff88007c545b90>
[427194.349290] ---[ end trace 286151bbf87935e3 ]---
[427194.349306] note: khubd[30] exited with preempt_count 1


-- 
Greetings, Michael.

PGP encryption is encouraged / 908D8B0E

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: [PATCH v1 0/6] Remove access rights from MediaTransport
From: Johan Hedberg @ 2012-12-05 17:25 UTC (permalink / raw)
  To: Mikel Astiz; +Cc: linux-bluetooth, Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

Hi Mikel,

On Wed, Dec 05, 2012, Mikel Astiz wrote:
> v1 proposes TryAcquire() instead of Acquire(TRUE), as suggested by
> Johan.
> 
> From original cover-letter:
> 
> The accessrights used in the Acquire() method are not very useful and
> can thus be removed. This simplifies both the D-Bus API and the
> internal implementation significantly.
> 
> Mikel Astiz (6):
>   media: Remove transport access type from D-Bus API
>   media: Remove internal transport locks
>   media: Remove transport owner list
>   media: Add MediaTransport.TryAcquire()
>   media: Trivial style fix
>   media: Add version suffix to all media interfaces
> 
>  doc/audio-telephony-design.txt |   4 +-
>  doc/media-api.txt              |  46 +++----
>  profiles/audio/media.c         |   8 +-
>  profiles/audio/player.c        |   2 +-
>  profiles/audio/transport.c     | 264 ++++++++++++-----------------------------
>  test/mpris-player.c            |  14 +--
>  6 files changed, 108 insertions(+), 230 deletions(-)

All patches in this set have been applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH BlueZ v2] l2test: Add support to test auto select PSM
From: Johan Hedberg @ 2012-12-05 17:22 UTC (permalink / raw)
  To: Syam Sidhardhan; +Cc: linux-bluetooth
In-Reply-To: <1354724501-5368-1-git-send-email-s.syam@samsung.com>

Hi Syam,

On Wed, Dec 05, 2012, Syam Sidhardhan wrote:
> This patch enable us to test the auto select PSM by passing
> PSM value as 0.
> 
> Ex: l2test -d -P 0
> l2test[2585]: Waiting for connection on psm 4099 ...
> ---
> v2 -> Retain the interoperability issue mentioned by Gustavo.

Applied. Thanks.

Johan

^ permalink raw reply

* [PATCH BlueZ v2] l2test: Add support to test auto select PSM
From: Syam Sidhardhan @ 2012-12-05 16:21 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Syam Sidhardhan

This patch enable us to test the auto select PSM by passing
PSM value as 0.

Ex: l2test -d -P 0
l2test[2585]: Waiting for connection on psm 4099 ...
---
v2 -> Retain the interoperability issue mentioned by Gustavo.
 
 test/l2test.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/test/l2test.c b/test/l2test.c
index 7f9f007..c88116d 100644
--- a/test/l2test.c
+++ b/test/l2test.c
@@ -454,8 +454,6 @@ static void do_listen(void (*handler)(int sk))
 		addr.l2_cid = htobs(cid);
 	else if (psm)
 		addr.l2_psm = htobs(psm);
-	else
-		goto error;
 
 	if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
 		syslog(LOG_ERR, "Can't bind socket: %s (%d)",
-- 
1.7.9.5


^ permalink raw reply related

* [PATCH v1 6/6] media: Add version suffix to all media interfaces
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

Append the version number to all D-Bus interface names in the Media API.
---
 doc/audio-telephony-design.txt |  4 ++--
 doc/media-api.txt              | 20 ++++++++++----------
 profiles/audio/media.c         |  8 ++++----
 profiles/audio/player.c        |  2 +-
 profiles/audio/transport.c     |  2 +-
 test/mpris-player.c            | 14 +++++++-------
 6 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/doc/audio-telephony-design.txt b/doc/audio-telephony-design.txt
index ec575f2..308986b 100644
--- a/doc/audio-telephony-design.txt
+++ b/doc/audio-telephony-design.txt
@@ -35,9 +35,9 @@ When a new device is connected, NewConnection method of Profile1 agent
 is called with informations related to connecting profile (like RFCOMM
 client file descriptor, version, features, media end point path, ...).
 
-The telephony application is in charge to implement a MediaTransport for
+The telephony application is in charge to implement a MediaTransport1 for
 its audio connection with remote device and interact with the
-MediaTransport of the audio component (i.e. PulseAudio).
+MediaTransport1 of the audio component (i.e. PulseAudio).
 
 Flow charts
 ===========
diff --git a/doc/media-api.txt b/doc/media-api.txt
index 5e052b4..ce7502a 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -5,7 +5,7 @@ Media hierarchy
 ===============
 
 Service		org.bluez
-Interface	org.bluez.Media
+Interface	org.bluez.Media1
 Object path	[variable prefix]/{hci0,hci1,...}
 
 Methods		void RegisterEndpoint(object endpoint, dict properties)
@@ -123,12 +123,12 @@ Methods		void RegisterEndpoint(object endpoint, dict properties)
 
 			Unregister sender media player.
 
-MediaPlayer hierarchy
-=====================
+MediaPlayer1 hierarchy
+======================
 
 Service		unique name (Target role)
 		org.bluez (Controller role)
-Interface	org.bluez.MediaPlayer
+Interface	org.bluez.Media1Player1
 Object path	freely definable (Target role)
 		[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX
 		(Controller role)
@@ -219,11 +219,11 @@ Properties	string Equalizer [readwrite]
 			possible to signal its end by setting position to the
 			maximum uint32 value.
 
-MediaEndpoint hierarchy
-=======================
+MediaEndpoint1 hierarchy
+========================
 
 Service		unique name
-Interface	org.bluez.MediaEndpoint
+Interface	org.bluez.Media1Endpoint1
 Object path	freely definable
 
 Methods		void SetConfiguration(object transport, dict properties)
@@ -254,11 +254,11 @@ Methods		void SetConfiguration(object transport, dict properties)
 			endpoint, because when this method gets called it has
 			already been unregistered.
 
-MediaTransport hierarchy
-========================
+MediaTransport1 hierarchy
+=========================
 
 Service		org.bluez
-Interface	org.bluez.MediaTransport
+Interface	org.bluez.MediaTransport1
 Object path	[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/fdX
 
 Methods		fd, uint16, uint16 Acquire()
diff --git a/profiles/audio/media.c b/profiles/audio/media.c
index 2041d23..7c0bc0a 100644
--- a/profiles/audio/media.c
+++ b/profiles/audio/media.c
@@ -50,9 +50,9 @@
 #include "avrcp.h"
 #include "manager.h"
 
-#define MEDIA_INTERFACE "org.bluez.Media"
-#define MEDIA_ENDPOINT_INTERFACE "org.bluez.MediaEndpoint"
-#define MEDIA_PLAYER_INTERFACE "org.bluez.MediaPlayer"
+#define MEDIA_INTERFACE "org.bluez.Media1"
+#define MEDIA_ENDPOINT_INTERFACE "org.bluez.Media1Endpoint1"
+#define MEDIA_PLAYER_INTERFACE "org.bluez.MediaPlayer1"
 
 #define REQUEST_TIMEOUT (3 * 1000)		/* 3 seconds */
 
@@ -402,7 +402,7 @@ static gboolean set_configuration(struct media_endpoint *endpoint,
 	path = media_transport_get_path(transport);
 	dbus_message_iter_append_basic(&iter, DBUS_TYPE_OBJECT_PATH, &path);
 
-	g_dbus_get_properties(conn, path, "org.bluez.MediaTransport", &iter);
+	g_dbus_get_properties(conn, path, "org.bluez.MediaTransport1", &iter);
 
 	return media_endpoint_async_call(msg, endpoint, cb, user_data, destroy);
 }
diff --git a/profiles/audio/player.c b/profiles/audio/player.c
index 34b1f20..368bfa8 100644
--- a/profiles/audio/player.c
+++ b/profiles/audio/player.c
@@ -42,7 +42,7 @@
 #include "dbus-common.h"
 #include "error.h"
 
-#define MEDIA_PLAYER_INTERFACE "org.bluez.MediaPlayer"
+#define MEDIA_PLAYER_INTERFACE "org.bluez.MediaPlayer1"
 
 struct player_callback {
 	const struct media_player_callback *cbs;
diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 666f68a..165ebd3 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -48,7 +48,7 @@
 #include "source.h"
 #include "avrcp.h"
 
-#define MEDIA_TRANSPORT_INTERFACE "org.bluez.MediaTransport"
+#define MEDIA_TRANSPORT_INTERFACE "org.bluez.MediaTransport1"
 
 typedef enum {
 	TRANSPORT_STATE_IDLE,		/* Not acquired and suspended */
diff --git a/test/mpris-player.c b/test/mpris-player.c
index 7985cdd..90c87aa 100644
--- a/test/mpris-player.c
+++ b/test/mpris-player.c
@@ -186,7 +186,7 @@ static int parse_property(DBusConnection *conn, const char *path,
 						DBUS_TYPE_STRING, &value);
 		else
 			emit_properties_changed(sys, path,
-					"org.bluez.MediaPlayer", "Status",
+					"org.bluez.MediaPlayer1", "Status",
 					DBUS_TYPE_STRING, &value);
 	} else if (strcasecmp(key, "Position") == 0) {
 		int64_t usec, msec;
@@ -203,7 +203,7 @@ static int parse_property(DBusConnection *conn, const char *path,
 						DBUS_TYPE_UINT32, &msec);
 		else
 			emit_properties_changed(sys, path,
-					"org.bluez.MediaPlayer", "Position",
+					"org.bluez.MediaPlayer1", "Position",
 					DBUS_TYPE_UINT32, &msec);
 	} else if (strcasecmp(key, "Shuffle") == 0) {
 		dbus_bool_t value;
@@ -221,7 +221,7 @@ static int parse_property(DBusConnection *conn, const char *path,
 						DBUS_TYPE_STRING, &str);
 		else
 			emit_properties_changed(sys, path,
-					"org.bluez.MediaPlayer", "Shuffle",
+					"org.bluez.MediaPlayer1", "Shuffle",
 					DBUS_TYPE_STRING, &str);
 	}
 
@@ -446,7 +446,7 @@ static char *sender2path(const char *sender)
 static DBusHandlerResult player_message(DBusConnection *conn,
 						DBusMessage *msg, void *data)
 {
-	if (dbus_message_is_method_call(msg, "org.bluez.MediaPlayer",
+	if (dbus_message_is_method_call(msg, "org.bluez.MediaPlayer1",
 								"Release")) {
 		printf("Release\n");
 		exit(1);
@@ -472,7 +472,7 @@ static void add_player(DBusConnection *conn, const char *name,
 		return;
 
 	msg = dbus_message_new_method_call("org.bluez", adapter,
-					"org.bluez.Media",
+					"org.bluez.Media1",
 					"RegisterPlayer");
 	if (!msg) {
 		fprintf(stderr, "Can't allocate new method call\n");
@@ -539,7 +539,7 @@ static void remove_player(DBusConnection *conn, const char *sender)
 	char *path;
 
 	msg = dbus_message_new_method_call("org.bluez", adapter,
-					"org.bluez.Media",
+					"org.bluez.Media1",
 					"UnregisterPlayer");
 	if (!msg) {
 		fprintf(stderr, "Can't allocate new method call\n");
@@ -578,7 +578,7 @@ static DBusHandlerResult properties_changed(DBusConnection *conn,
 	path = sender2path(dbus_message_get_sender(msg));
 	parse_properties(conn, path, &iter, NULL);
 
-	signal = dbus_message_new_signal(path, "org.bluez.MediaPlayer",
+	signal = dbus_message_new_signal(path, "org.bluez.MediaPlayer1",
 							"TrackChanged");
 	if (!signal) {
 		fprintf(stderr, "Unable to allocate new PropertyChanged"
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v1 5/6] media: Trivial style fix
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

No whitespace should exist before parenthesis close.
---
 profiles/audio/transport.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 0fd2469..666f68a 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -663,7 +663,7 @@ static const GDBusMethodTable transport_methods[] = {
 	{ GDBUS_ASYNC_METHOD("Acquire",
 			NULL,
 			GDBUS_ARGS({ "fd", "h" }, { "mtu_r", "q" },
-							{ "mtu_w", "q" } ),
+							{ "mtu_w", "q" }),
 			acquire) },
 	{ GDBUS_ASYNC_METHOD("TryAcquire",
 			NULL,
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v1 4/6] media: Add MediaTransport.TryAcquire()
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

Split the Acquire() method in two parts so that the optional acquires,
formerly represented as a "?" flag in the accesstype parameter of
Acquire(), are now implemented in TryAcquire().
---
 doc/media-api.txt          |  7 +++++++
 profiles/audio/transport.c | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/doc/media-api.txt b/doc/media-api.txt
index b15ad61..5e052b4 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -266,6 +266,13 @@ Methods		fd, uint16, uint16 Acquire()
 			Acquire transport file descriptor and the MTU for read
 			and write respectively.
 
+		fd, uint16, uint16 TryAcquire()
+
+			Acquire transport file descriptor only if the transport
+			is in "pending" state at the time the message is
+			received by BlueZ. Otherwise no request will be sent
+			to the remote device and the function will just fail.
+
 		void Release()
 
 			Releases file descriptor.
diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 1064098..0fd2469 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -463,6 +463,37 @@ static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 	return NULL;
 }
 
+static DBusMessage *try_acquire(DBusConnection *conn, DBusMessage *msg,
+								void *data)
+{
+	struct media_transport *transport = data;
+	struct media_owner *owner;
+	struct media_request *req;
+	guint id;
+
+	if (transport->owner != NULL)
+		return btd_error_not_authorized(msg);
+
+	if (transport->state >= TRANSPORT_STATE_REQUESTING)
+		return btd_error_not_authorized(msg);
+
+	if (transport->state != TRANSPORT_STATE_PENDING)
+		return btd_error_failed(msg, "Transport not playing");
+
+	owner = media_owner_create(msg);
+	id = transport->resume(transport, owner);
+	if (id == 0) {
+		media_owner_free(owner);
+		return btd_error_not_authorized(msg);
+	}
+
+	req = media_request_create(msg, id);
+	media_owner_add(owner, req);
+	media_transport_set_owner(transport, owner);
+
+	return NULL;
+}
+
 static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 					void *data)
 {
@@ -634,6 +665,11 @@ static const GDBusMethodTable transport_methods[] = {
 			GDBUS_ARGS({ "fd", "h" }, { "mtu_r", "q" },
 							{ "mtu_w", "q" } ),
 			acquire) },
+	{ GDBUS_ASYNC_METHOD("TryAcquire",
+			NULL,
+			GDBUS_ARGS({ "fd", "h" }, { "mtu_r", "q" },
+							{ "mtu_w", "q" }),
+			try_acquire) },
 	{ GDBUS_ASYNC_METHOD("Release", NULL, NULL, release) },
 	{ },
 };
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v1 3/6] media: Remove transport owner list
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

Transports now have zero or one owners, so there is no need to maintain
a list any more.
---
 profiles/audio/transport.c | 79 ++++++++++++----------------------------------
 1 file changed, 21 insertions(+), 58 deletions(-)

diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 4bb54f6..1064098 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -88,7 +88,7 @@ struct media_transport {
 	char			*path;		/* Transport object path */
 	struct audio_device	*device;	/* Transport device */
 	struct media_endpoint	*endpoint;	/* Transport endpoint */
-	GSList			*owners;	/* Transport owners */
+	struct media_owner	*owner;		/* Transport owner */
 	uint8_t			*configuration; /* Transport configuration */
 	int			size;		/* Transport configuration size */
 	int			fd;		/* Transport file descriptor */
@@ -241,24 +241,24 @@ static void media_owner_free(struct media_owner *owner)
 	g_free(owner);
 }
 
-static void media_transport_remove(struct media_transport *transport,
-						struct media_owner *owner)
+static void media_transport_remove_owner(struct media_transport *transport)
 {
+	struct media_owner *owner = transport->owner;
+
 	DBG("Transport %s Owner %s", transport->path, owner->name);
 
 	/* Reply if owner has a pending request */
 	if (owner->pending)
 		media_request_reply(owner->pending, EIO);
 
-	transport->owners = g_slist_remove(transport->owners, owner);
+	transport->owner = NULL;
 
 	if (owner->watch)
 		g_dbus_remove_watch(btd_get_dbus_connection(), owner->watch);
 
 	media_owner_free(owner);
 
-	/* Suspend if there is no longer any owner */
-	if (transport->owners == NULL && state_in_use(transport->state))
+	if (state_in_use(transport->state))
 		transport->suspend(transport, NULL);
 }
 
@@ -319,7 +319,7 @@ static void a2dp_resume_complete(struct avdtp *session,
 	return;
 
 fail:
-	media_transport_remove(transport, owner);
+	media_transport_remove_owner(transport);
 }
 
 static guint resume_a2dp(struct media_transport *transport,
@@ -366,7 +366,7 @@ static void a2dp_suspend_complete(struct avdtp *session,
 
 	a2dp_sep_unlock(sep, a2dp->session);
 	transport_set_state(transport, TRANSPORT_STATE_IDLE);
-	media_transport_remove(transport, owner);
+	media_transport_remove_owner(transport);
 }
 
 static guint suspend_a2dp(struct media_transport *transport,
@@ -399,14 +399,14 @@ static void media_owner_exit(DBusConnection *connection, void *user_data)
 
 	media_owner_remove(owner);
 
-	media_transport_remove(owner->transport, owner);
+	media_transport_remove_owner(owner->transport);
 }
 
-static void media_transport_add(struct media_transport *transport,
+static void media_transport_set_owner(struct media_transport *transport,
 					struct media_owner *owner)
 {
 	DBG("Transport %s Owner %s", transport->path, owner->name);
-	transport->owners = g_slist_append(transport->owners, owner);
+	transport->owner = owner;
 	owner->transport = transport;
 	owner->watch = g_dbus_add_disconnect_watch(btd_get_dbus_connection(),
 							owner->name,
@@ -435,35 +435,15 @@ static void media_owner_add(struct media_owner *owner,
 	owner->pending = req;
 }
 
-static struct media_owner *media_transport_find_owner(
-					struct media_transport *transport,
-					const char *name)
-{
-	GSList *l;
-
-	for (l = transport->owners; l; l = l->next) {
-		struct media_owner *owner = l->data;
-
-		if (g_strcmp0(owner->name, name) == 0)
-			return owner;
-	}
-
-	return NULL;
-}
-
 static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 					void *data)
 {
 	struct media_transport *transport = data;
 	struct media_owner *owner;
 	struct media_request *req;
-	const char *sender;
 	guint id;
 
-	sender = dbus_message_get_sender(msg);
-
-	owner = media_transport_find_owner(transport, sender);
-	if (owner != NULL)
+	if (transport->owner != NULL)
 		return btd_error_not_authorized(msg);
 
 	if (transport->state >= TRANSPORT_STATE_REQUESTING)
@@ -478,7 +458,7 @@ static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 
 	req = media_request_create(msg, id);
 	media_owner_add(owner, req);
-	media_transport_add(transport, owner);
+	media_transport_set_owner(transport, owner);
 
 	return NULL;
 }
@@ -487,23 +467,16 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 					void *data)
 {
 	struct media_transport *transport = data;
-	struct media_owner *owner;
+	struct media_owner *owner = transport->owner;
 	const char *sender;
 	struct media_request *req;
 	guint id;
 
 	sender = dbus_message_get_sender(msg);
 
-	owner = media_transport_find_owner(transport, sender);
-	if (owner == NULL)
+	if (owner == NULL || g_strcmp0(owner->name, sender) != 0)
 		return btd_error_not_authorized(msg);
 
-	/* Not the last owner, no need to suspend */
-	if (g_slist_length(transport->owners) != 1) {
-		media_transport_remove(transport, owner);
-		return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-	}
-
 	if (owner->pending) {
 		const char *member;
 
@@ -519,7 +492,7 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 
 	id = transport->suspend(transport, owner);
 	if (id == 0) {
-		media_transport_remove(transport, owner);
+		media_transport_remove_owner(transport);
 		return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 	}
 
@@ -689,15 +662,9 @@ static void destroy_a2dp(void *data)
 static void media_transport_free(void *data)
 {
 	struct media_transport *transport = data;
-	GSList *l = transport->owners;
 
-	while (l) {
-		struct media_owner *owner = l->data;
-		l = l->next;
-		media_transport_remove(transport, owner);
-	}
-
-	g_slist_free(transport->owners);
+	if (transport->owner)
+		media_transport_remove_owner(transport);
 
 	if (transport->destroy != NULL)
 		transport->destroy(transport->data);
@@ -717,13 +684,9 @@ static void transport_update_playing(struct media_transport *transport,
 		if (transport->state == TRANSPORT_STATE_PENDING)
 			transport_set_state(transport, TRANSPORT_STATE_IDLE);
 		else if (transport->state == TRANSPORT_STATE_ACTIVE) {
-			/* Remove all owners */
-			while (transport->owners != NULL) {
-				struct media_owner *owner;
-
-				owner = transport->owners->data;
-				media_transport_remove(transport, owner);
-			}
+			/* Remove owner */
+			if (transport->owner != NULL)
+				media_transport_remove_owner(transport);
 		}
 	} else if (transport->state == TRANSPORT_STATE_IDLE)
 		transport_set_state(transport, TRANSPORT_STATE_PENDING);
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v1 2/6] media: Remove internal transport locks
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

The internal transport_lock_t is not needed any more since transports
are now always acquired with read and write permissions.
---
 profiles/audio/transport.c | 130 ++++++++++-----------------------------------
 1 file changed, 28 insertions(+), 102 deletions(-)

diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index a76481c..4bb54f6 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -51,11 +51,6 @@
 #define MEDIA_TRANSPORT_INTERFACE "org.bluez.MediaTransport"
 
 typedef enum {
-	TRANSPORT_LOCK_READ = 1,
-	TRANSPORT_LOCK_WRITE = 1 << 1,
-} transport_lock_t;
-
-typedef enum {
 	TRANSPORT_STATE_IDLE,		/* Not acquired and suspended */
 	TRANSPORT_STATE_PENDING,	/* Playing but not acquired */
 	TRANSPORT_STATE_REQUESTING,	/* Acquire in progress */
@@ -80,7 +75,6 @@ struct media_owner {
 	struct media_transport	*transport;
 	struct media_request	*pending;
 	char			*name;
-	transport_lock_t	lock;
 	guint			watch;
 };
 
@@ -100,7 +94,6 @@ struct media_transport {
 	int			fd;		/* Transport file descriptor */
 	uint16_t		imtu;		/* Transport input mtu */
 	uint16_t		omtu;		/* Transport output mtu */
-	transport_lock_t	lock;
 	transport_state_t	state;
 	guint			hs_watch;
 	guint			source_watch;
@@ -115,18 +108,6 @@ struct media_transport {
 	void			*data;
 };
 
-static const char *lock2str(transport_lock_t lock)
-{
-	if (lock == 0)
-		return "";
-	else if (lock == TRANSPORT_LOCK_READ)
-		return "r";
-	else if (lock == TRANSPORT_LOCK_WRITE)
-		return "w";
-	else
-		return "rw";
-}
-
 static const char *state2str(transport_state_t state)
 {
 	switch (state) {
@@ -229,20 +210,6 @@ static void media_request_reply(struct media_request *req, int err)
 	g_dbus_send_message(btd_get_dbus_connection(), reply);
 }
 
-static gboolean media_transport_release(struct media_transport *transport,
-							transport_lock_t lock)
-{
-	transport->lock &= ~lock;
-
-	if (lock & TRANSPORT_LOCK_READ)
-		DBG("Transport %s: read lock released", transport->path);
-
-	if (lock & TRANSPORT_LOCK_WRITE)
-		DBG("Transport %s: write lock released", transport->path);
-
-	return TRUE;
-}
-
 static void media_owner_remove(struct media_owner *owner)
 {
 	struct media_transport *transport = owner->transport;
@@ -279,8 +246,6 @@ static void media_transport_remove(struct media_transport *transport,
 {
 	DBG("Transport %s Owner %s", transport->path, owner->name);
 
-	media_transport_release(transport, owner->lock);
-
 	/* Reply if owner has a pending request */
 	if (owner->pending)
 		media_request_reply(owner->pending, EIO);
@@ -339,12 +304,6 @@ static void a2dp_resume_complete(struct avdtp *session,
 
 	media_transport_set_fd(transport, fd, imtu, omtu);
 
-	if ((owner->lock & TRANSPORT_LOCK_READ) == 0)
-		imtu = 0;
-
-	if ((owner->lock & TRANSPORT_LOCK_WRITE) == 0)
-		omtu = 0;
-
 	ret = g_dbus_send_reply(btd_get_dbus_connection(), req->msg,
 						DBUS_TYPE_UNIX_FD, &fd,
 						DBUS_TYPE_UINT16, &imtu,
@@ -443,24 +402,6 @@ static void media_owner_exit(DBusConnection *connection, void *user_data)
 	media_transport_remove(owner->transport, owner);
 }
 
-static gboolean media_transport_acquire(struct media_transport *transport,
-							transport_lock_t lock)
-{
-	if (transport->lock & lock)
-		return FALSE;
-
-	transport->lock |= lock;
-
-	if (lock & TRANSPORT_LOCK_READ)
-		DBG("Transport %s: read lock acquired", transport->path);
-
-	if (lock & TRANSPORT_LOCK_WRITE)
-		DBG("Transport %s: write lock acquired", transport->path);
-
-
-	return TRUE;
-}
-
 static void media_transport_add(struct media_transport *transport,
 					struct media_owner *owner)
 {
@@ -473,17 +414,14 @@ static void media_transport_add(struct media_transport *transport,
 							owner, NULL);
 }
 
-static struct media_owner *media_owner_create(DBusMessage *msg,
-						transport_lock_t lock)
+static struct media_owner *media_owner_create(DBusMessage *msg)
 {
 	struct media_owner *owner;
 
 	owner = g_new0(struct media_owner, 1);
 	owner->name = g_strdup(dbus_message_get_sender(msg));
-	owner->lock = lock;
 
-	DBG("Owner created: sender=%s accesstype=%s", owner->name,
-							lock2str(lock));
+	DBG("Owner created: sender=%s", owner->name);
 
 	return owner;
 }
@@ -521,7 +459,6 @@ static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 	struct media_request *req;
 	const char *sender;
 	guint id;
-	transport_lock_t lock = TRANSPORT_LOCK_READ | TRANSPORT_LOCK_WRITE;
 
 	sender = dbus_message_get_sender(msg);
 
@@ -529,13 +466,12 @@ static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 	if (owner != NULL)
 		return btd_error_not_authorized(msg);
 
-	if (media_transport_acquire(transport, lock) == FALSE)
+	if (transport->state >= TRANSPORT_STATE_REQUESTING)
 		return btd_error_not_authorized(msg);
 
-	owner = media_owner_create(msg, lock);
+	owner = media_owner_create(msg);
 	id = transport->resume(transport, owner);
 	if (id == 0) {
-		media_transport_release(transport, lock);
 		media_owner_free(owner);
 		return btd_error_not_authorized(msg);
 	}
@@ -554,7 +490,7 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 	struct media_owner *owner;
 	const char *sender;
 	struct media_request *req;
-	transport_lock_t lock = TRANSPORT_LOCK_READ | TRANSPORT_LOCK_WRITE;
+	guint id;
 
 	sender = dbus_message_get_sender(msg);
 
@@ -562,45 +498,35 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 	if (owner == NULL)
 		return btd_error_not_authorized(msg);
 
-	if (owner->lock == lock) {
-		guint id;
-
-		/* Not the last owner, no need to suspend */
-		if (g_slist_length(transport->owners) != 1) {
-			media_transport_remove(transport, owner);
-			return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-		}
-
-		if (owner->pending) {
-			const char *member;
+	/* Not the last owner, no need to suspend */
+	if (g_slist_length(transport->owners) != 1) {
+		media_transport_remove(transport, owner);
+		return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+	}
 
-			member = dbus_message_get_member(owner->pending->msg);
-			/* Cancel Acquire request if that exist */
-			if (g_str_equal(member, "Acquire"))
-				media_owner_remove(owner);
-			else
-				return btd_error_in_progress(msg);
-		}
+	if (owner->pending) {
+		const char *member;
 
-		transport_set_state(transport, TRANSPORT_STATE_SUSPENDING);
+		member = dbus_message_get_member(owner->pending->msg);
+		/* Cancel Acquire request if that exist */
+		if (g_str_equal(member, "Acquire"))
+			media_owner_remove(owner);
+		else
+			return btd_error_in_progress(msg);
+	}
 
-		id = transport->suspend(transport, owner);
-		if (id == 0) {
-			media_transport_remove(transport, owner);
-			return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-		}
+	transport_set_state(transport, TRANSPORT_STATE_SUSPENDING);
 
-		req = media_request_create(msg, id);
-		media_owner_add(owner, req);
+	id = transport->suspend(transport, owner);
+	if (id == 0) {
+		media_transport_remove(transport, owner);
+		return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+	}
 
-		return NULL;
-	} else if ((owner->lock & lock) == lock) {
-		media_transport_release(transport, lock);
-		owner->lock &= ~lock;
-	} else
-		return btd_error_not_authorized(msg);
+	req = media_request_create(msg, id);
+	media_owner_add(owner, req);
 
-	return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+	return NULL;
 }
 
 static gboolean get_device(const GDBusPropertyTable *property,
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v1 1/6] media: Remove transport access type from D-Bus API
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354724134-7354-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

There is no known use-case making use of these access types and
therefore the Media API can be simplified.

>From now on, the transport will always be acquired with read and write
access rights.
---
 doc/media-api.txt          | 23 ++---------------------
 profiles/audio/transport.c | 47 ++++++----------------------------------------
 2 files changed, 8 insertions(+), 62 deletions(-)

diff --git a/doc/media-api.txt b/doc/media-api.txt
index cf69efa..b15ad61 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -261,31 +261,12 @@ Service		org.bluez
 Interface	org.bluez.MediaTransport
 Object path	[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/fdX
 
-Methods		fd, uint16, uint16 Acquire(string accesstype)
+Methods		fd, uint16, uint16 Acquire()
 
 			Acquire transport file descriptor and the MTU for read
 			and write respectively.
 
-			possible accesstype:
-
-				"r" : Read only access
-
-				"w" : Write only access
-
-				"rw": Read and write access
-
-			The accesstype string can also be combined with a "?"
-			suffix, which will make the request optional. This
-			typically means the transport will only be acquired if
-			it is already available (remote-initiated), but
-			otherwise no request will be sent to the remote side.
-			In this last case the function will fail. Note that,
-			due to compatibility issues with older versions of
-			BlueZ, clients are encouraged to use exactly the same
-			accesstype for Release(), matching the string provided
-			to Acquire().
-
-		void Release(string accesstype)
+		void Release()
 
 			Releases file descriptor.
 
diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 610aca3..a76481c 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -127,19 +127,6 @@ static const char *lock2str(transport_lock_t lock)
 		return "rw";
 }
 
-static transport_lock_t str2lock(const char *str)
-{
-	transport_lock_t lock = 0;
-
-	if (g_strstr_len(str, -1, "r") != NULL)
-		lock |= TRANSPORT_LOCK_READ;
-
-	if (g_strstr_len(str, -1, "w") != NULL)
-		lock |= TRANSPORT_LOCK_WRITE;
-
-	return lock;
-}
-
 static const char *state2str(transport_state_t state)
 {
 	switch (state) {
@@ -532,14 +519,9 @@ static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 	struct media_transport *transport = data;
 	struct media_owner *owner;
 	struct media_request *req;
-	const char *accesstype, *sender;
-	transport_lock_t lock;
+	const char *sender;
 	guint id;
-
-	if (!dbus_message_get_args(msg, NULL,
-				DBUS_TYPE_STRING, &accesstype,
-				DBUS_TYPE_INVALID))
-		return btd_error_invalid_args(msg);
+	transport_lock_t lock = TRANSPORT_LOCK_READ | TRANSPORT_LOCK_WRITE;
 
 	sender = dbus_message_get_sender(msg);
 
@@ -547,14 +529,6 @@ static DBusMessage *acquire(DBusConnection *conn, DBusMessage *msg,
 	if (owner != NULL)
 		return btd_error_not_authorized(msg);
 
-	lock = str2lock(accesstype);
-	if (lock == 0)
-		return btd_error_invalid_args(msg);
-
-	if (transport->state != TRANSPORT_STATE_PENDING &&
-				g_strstr_len(accesstype, -1, "?") != NULL)
-		return btd_error_failed(msg, "Transport not playing");
-
 	if (media_transport_acquire(transport, lock) == FALSE)
 		return btd_error_not_authorized(msg);
 
@@ -578,14 +552,9 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 {
 	struct media_transport *transport = data;
 	struct media_owner *owner;
-	const char *accesstype, *sender;
-	transport_lock_t lock;
+	const char *sender;
 	struct media_request *req;
-
-	if (!dbus_message_get_args(msg, NULL,
-				DBUS_TYPE_STRING, &accesstype,
-				DBUS_TYPE_INVALID))
-		return btd_error_invalid_args(msg);
+	transport_lock_t lock = TRANSPORT_LOCK_READ | TRANSPORT_LOCK_WRITE;
 
 	sender = dbus_message_get_sender(msg);
 
@@ -593,8 +562,6 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
 	if (owner == NULL)
 		return btd_error_not_authorized(msg);
 
-	lock = str2lock(accesstype);
-
 	if (owner->lock == lock) {
 		guint id;
 
@@ -764,13 +731,11 @@ static void set_volume(const GDBusPropertyTable *property,
 
 static const GDBusMethodTable transport_methods[] = {
 	{ GDBUS_ASYNC_METHOD("Acquire",
-			GDBUS_ARGS({ "access_type", "s" }),
+			NULL,
 			GDBUS_ARGS({ "fd", "h" }, { "mtu_r", "q" },
 							{ "mtu_w", "q" } ),
 			acquire) },
-	{ GDBUS_ASYNC_METHOD("Release",
-			GDBUS_ARGS({ "access_type", "s" }), NULL,
-			release ) },
+	{ GDBUS_ASYNC_METHOD("Release", NULL, NULL, release) },
 	{ },
 };
 
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v1 0/6] Remove access rights from MediaTransport
From: Mikel Astiz @ 2012-12-05 16:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

v1 proposes TryAcquire() instead of Acquire(TRUE), as suggested by Johan.

>From original cover-letter:

The accessrights used in the Acquire() method are not very useful and can thus be removed. This simplifies both the D-Bus API and the internal implementation significantly.

Mikel Astiz (6):
  media: Remove transport access type from D-Bus API
  media: Remove internal transport locks
  media: Remove transport owner list
  media: Add MediaTransport.TryAcquire()
  media: Trivial style fix
  media: Add version suffix to all media interfaces

 doc/audio-telephony-design.txt |   4 +-
 doc/media-api.txt              |  46 +++----
 profiles/audio/media.c         |   8 +-
 profiles/audio/player.c        |   2 +-
 profiles/audio/transport.c     | 264 ++++++++++++-----------------------------
 test/mpris-player.c            |  14 +--
 6 files changed, 108 insertions(+), 230 deletions(-)

-- 
1.7.11.7


^ permalink raw reply

* Re: [PATCH v3] hciconfig: Remove putkey command
From: Johan Hedberg @ 2012-12-05 15:25 UTC (permalink / raw)
  To: Frédéric Danis; +Cc: linux-bluetooth
In-Reply-To: <1354707834-30972-1-git-send-email-frederic.danis@linux.intel.com>

Hi Frederic,

On Wed, Dec 05, 2012, Frédéric Danis wrote:
> With new storage architecture legacy storage "linkkeys"
> file doesn't exist anymore.
> ---
>  tools/hciconfig.8 |    5 -----
>  tools/hciconfig.c |   64 -----------------------------------------------------
>  2 files changed, 69 deletions(-)

Applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH BlueZ 1/7] build-sys: Define _GNU_SOURCE in config.h
From: Johan Hedberg @ 2012-12-05 15:24 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: linux-bluetooth, Lucas De Marchi
In-Reply-To: <1354706575-4718-1-git-send-email-lucas.demarchi@profusion.mobi>

Hi Lucas,

On Wed, Dec 05, 2012, Lucas De Marchi wrote:
> Instead of defining _GNU_SOURCE in each source file (and potentially
> forgetting in some), tell the build system we use extensions and let it
> define _GNU_SOURCE in config.h.
> ---
>  configure.ac                | 1 +
>  monitor/btsnoop.c           | 1 -
>  monitor/sdp.c               | 1 -
>  profiles/input/hog_device.c | 1 -
>  src/adapter.c               | 1 -
>  src/mgmt.c                  | 1 -
>  src/sdp-xml.c               | 1 -
>  src/textfile.c              | 1 -
>  tools/btsnoop.c             | 1 -
>  tools/ciptool.c             | 1 -
>  tools/hciattach.c           | 1 -
>  tools/rfcomm.c              | 1 -
>  12 files changed, 1 insertion(+), 11 deletions(-)

All patches in this set have been applied. Thanks!

Johan

^ permalink raw reply

* Re: [PATCH v3 00/15] Manager/Adapter transition to ObjectManager
From: Johan Hedberg @ 2012-12-05 14:44 UTC (permalink / raw)
  To: Mikel Astiz; +Cc: linux-bluetooth, Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

Hi Mikel,

On Wed, Dec 05, 2012, Mikel Astiz wrote:
> Main changes from v2 include the suggestions from Lizardo:
> - Python style improved.
> - Utility library renamed to bluezutils.py to avoid collisions in distros.
> - Recently added test-cyclingspeed also considered in the patchset.
> 
> From previous cover-letter:
> 
> This proposal completely removes org.bluez.Manager, with two main consequences:
> 1. Clients have a harder time to find adapters. Therefore, some helper
> function have been added to be used by test scripts.
> 2. The concept of "default adapter" disappears.
> 
> All test scripts have been updated here but not all of them were
> tested, so apoligies if this breaks your script (some of them are
> already broken, by the way).
> 
> Regarding the testing code written in C, they haven't been updated.
> The idea is to address these once the python part has been agreed.
> 
> Mikel Astiz (15):
>   cups: Remove unnecessary code
>   test: Add utility library for python scripts
>   test: Avoid using DefaultAdapter()
>   test: Update monitor script to ObjectManager
>   test: Update test-manager script to ObjectManager
>   test: Use ObjectManager instead of Adapters property
>   dbus: Remove org.bluez.Manager
>   test: Use ObjectManager instead of Devices property
>   test: Add helper function to find devices
>   adapter: Remove DeviceCreated/DeviceRemoved signals
>   adapter: Remove redundant Devices property
>   test: Avoid using Adapter.FindDevice()
>   adapter: Remove FindDevice method from D-Bus API
>   dbus: Rename to org.bluez.Device1
>   dbus: Rename to org.bluez.Adapter1

All patches in this set have been applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH] adapter: Always write address type when converting to new storage
From: Johan Hedberg @ 2012-12-05 14:28 UTC (permalink / raw)
  To: Szymon Janc; +Cc: linux-bluetooth
In-Reply-To: <1354710775-2670-1-git-send-email-szymon.janc@tieto.com>

Hi Szymon,

On Wed, Dec 05, 2012, Szymon Janc wrote:
> When address type is not present in legacy storage assume BDADDR_BREDR
> type and store it.
> 
> This also fix following compilation error on ARM:
> 
>   CC     src/bluetoothd-adapter.o
> src/adapter.c: In function ‘convert_entry’:
> src/adapter.c:2710:2: error: comparison is always true due to limited
> 	range of data type [-Werror=type-limits]
> cc1: all warnings being treated as errors
> make[1]: *** [src/bluetoothd-adapter.o] Error 1
> ---
>  src/adapter.c |    7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)

Applied. Thanks.

Johan

^ permalink raw reply

* Re: Cybertan MM230-M issue
From: Yegor Yefremov @ 2012-12-05 13:36 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <CAGm1_kva5xN1K0aDwvhaLBqW0qNCtdpQxp-ipzVRpLUD7XBVYw@mail.gmail.com>

On Fri, Nov 2, 2012 at 10:55 AM, Yegor Yefremov
<yegorslists@googlemail.com> wrote:
> I'm using this WLAN-BT-combo card with linux 3.2 and TI am335x based
> board. WLAN (88W8686/B1 (Marvell) ) is working, but Bluetooth
> (BC4ROM/21e (CSR)) only partly.
>
> I can connect to the card via hciattach ttyO5 bcsp and then I can
> bring it up and enable pscan. But hcitool scan delivers nothing.
>
> I get following values via bccmd:
>
> Chip revision: 0x0030 (BC4-ROM)
> Build name: odj_4hci_rom_bt2.0_21e_0604241634_encr128 2006-04-24
>
> bccmd -t BCSP -d /dev/ttyO5 -b 115200 enabletx returns with error:
> Can't execute command: No such device or address (6)
>
> Any idea how to get the card working?

When I execute hciattach I get following message:

root@arm:~# hciattach /dev/ttyO5 bcsp
Device setup complete
Bluetooth: Out-of-order packet arrived, got 1 expected 0

Is there any real tutorial for this chip? I found some related
threads, but would like to see the picture in whole or to get some
tips on how to debug my issue.

http://projects.goldelico.com/p/gta04-kernel/page/Wireless/
http://gumstix.8.n6.nabble.com/Bluetooth-on-2-6-39-pm-kernel-td4641950.html
http://permalink.gmane.org/gmane.linux.bluez.user/13460

Yegor

^ permalink raw reply

* [PATCH v3 15/15] dbus: Rename to org.bluez.Adapter1
From: Mikel Astiz @ 2012-12-05 12:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

Trivially add the numbering suffix to org.bluez.Adapter according to
the proposal for BlueZ 5.
---
 doc/adapter-api.txt    |  2 +-
 doc/oob-api.txt        |  2 +-
 profiles/cups/main.c   | 20 ++++++++++----------
 src/adapter.h          |  2 +-
 test/agent.c           |  7 ++++---
 test/bluezutils.py     |  2 +-
 test/list-devices      |  4 ++--
 test/monitor-bluetooth |  2 +-
 test/test-adapter      | 32 ++++++++++++++++----------------
 test/test-discovery    |  4 ++--
 test/test-health       |  4 ++--
 test/test-health-sink  |  4 ++--
 test/test-manager      |  4 ++--
 13 files changed, 45 insertions(+), 44 deletions(-)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index cf8374d..5d2ea65 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -11,7 +11,7 @@ Adapter hierarchy
 =================
 
 Service		org.bluez
-Interface	org.bluez.Adapter
+Interface	org.bluez.Adapter1
 Object path	[variable prefix]/{hci0,hci1,...}
 
 Methods		void RequestSession()
diff --git a/doc/oob-api.txt b/doc/oob-api.txt
index 7f73db4..d54f612 100644
--- a/doc/oob-api.txt
+++ b/doc/oob-api.txt
@@ -28,7 +28,7 @@ Methods		dict ReadLocalData()
 					16 bytes randomizer blob.
 
 			Other data that can be transmitted via OOB mechanism
-			can be obtained from org.bluez.Adapter interface.
+			can be obtained from org.bluez.Adapter1 interface.
 
 			Note: This method will generate and return new data
 			every time it is called. Data received in previous
diff --git a/profiles/cups/main.c b/profiles/cups/main.c
index ae0cc6a..ef3a176 100644
--- a/profiles/cups/main.c
+++ b/profiles/cups/main.c
@@ -342,7 +342,7 @@ static void remote_device_found(const char *adapter, const char *bdaddr,
 	assert(adapter != NULL);
 
 	message = dbus_message_new_method_call("org.bluez", adapter,
-							"org.bluez.Adapter",
+							"org.bluez.Adapter1",
 							"FindDevice");
 	dbus_message_iter_init_append(message, &iter);
 	dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &bdaddr);
@@ -357,7 +357,7 @@ static void remote_device_found(const char *adapter, const char *bdaddr,
 
 	if (!reply) {
 		message = dbus_message_new_method_call("org.bluez", adapter,
-							"org.bluez.Adapter",
+							"org.bluez.Adapter1",
 							"CreateDevice");
 		dbus_message_iter_init_append(message, &iter);
 		dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &bdaddr);
@@ -417,7 +417,7 @@ static gboolean list_known_printers(const char *adapter)
 	DBusMessage *message, *reply;
 
 	message = dbus_message_new_method_call("org.bluez", adapter,
-						"org.bluez.Adapter",
+						"org.bluez.Adapter1",
 						"ListDevices");
 	if (message == NULL)
 		return FALSE;
@@ -467,7 +467,7 @@ static gboolean list_known_printers(const char *adapter)
 static DBusHandlerResult filter_func(DBusConnection *connection,
 					DBusMessage *message, void *user_data)
 {
-	if (dbus_message_is_signal(message, "org.bluez.Adapter",
+	if (dbus_message_is_signal(message, "org.bluez.Adapter1",
 						"DeviceFound")) {
 		const char *adapter, *bdaddr;
 		char *name;
@@ -481,7 +481,7 @@ static DBusHandlerResult filter_func(DBusConnection *connection,
 		if (parse_device_properties(&iter, &name, NULL))
 			remote_device_found(adapter, bdaddr, name);
 		g_free (name);
-	} else if (dbus_message_is_signal(message, "org.bluez.Adapter",
+	} else if (dbus_message_is_signal(message, "org.bluez.Adapter1",
 						"DeviceDisappeared")) {
 		const char *bdaddr;
 
@@ -489,7 +489,7 @@ static DBusHandlerResult filter_func(DBusConnection *connection,
 					DBUS_TYPE_STRING, &bdaddr,
 					DBUS_TYPE_INVALID);
 		remote_device_disappeared(bdaddr);
-	} else if (dbus_message_is_signal(message, "org.bluez.Adapter",
+	} else if (dbus_message_is_signal(message, "org.bluez.Adapter1",
 						"PropertyChanged")) {
 		DBusMessageIter iter, value_iter;
 		const char *name;
@@ -582,7 +582,7 @@ static gboolean list_printers(void)
 
 #define MATCH_FORMAT				\
 	"type='signal',"			\
-	"interface='org.bluez.Adapter',"	\
+	"interface='org.bluez.Adapter1',"	\
 	"sender='org.bluez',"			\
 	"path='%s'"
 
@@ -595,7 +595,7 @@ static gboolean list_printers(void)
 
 	doing_disco = TRUE;
 	message = dbus_message_new_method_call("org.bluez", adapter,
-					"org.bluez.Adapter",
+					"org.bluez.Adapter1",
 					"StartDiscovery");
 
 	if (!dbus_connection_send_with_reply(conn, message, NULL, -1)) {
@@ -649,7 +649,7 @@ static gboolean print_ieee1284(const char *bdaddr)
 	}
 
 	message = dbus_message_new_method_call("org.bluez", adapter,
-			"org.bluez.Adapter",
+			"org.bluez.Adapter1",
 			"FindDevice");
 	dbus_message_iter_init_append(message, &iter);
 	dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &bdaddr);
@@ -664,7 +664,7 @@ static gboolean print_ieee1284(const char *bdaddr)
 
 	if (!reply) {
 		message = dbus_message_new_method_call("org.bluez", adapter,
-				"org.bluez.Adapter",
+				"org.bluez.Adapter1",
 				"CreateDevice");
 		dbus_message_iter_init_append(message, &iter);
 		dbus_message_iter_append_basic(&iter,
diff --git a/src/adapter.h b/src/adapter.h
index e131e6d..0ec0b8f 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -30,7 +30,7 @@
 #include <glib.h>
 #include <stdbool.h>
 
-#define ADAPTER_INTERFACE	"org.bluez.Adapter"
+#define ADAPTER_INTERFACE	"org.bluez.Adapter1"
 
 #define MODE_OFF		0x00
 #define MODE_CONNECTABLE	0x01
diff --git a/test/agent.c b/test/agent.c
index 1713ec3..85dfb22 100644
--- a/test/agent.c
+++ b/test/agent.c
@@ -346,7 +346,7 @@ static int register_agent(DBusConnection *conn, const char *adapter_path,
 	DBusError err;
 
 	msg = dbus_message_new_method_call("org.bluez", adapter_path,
-					"org.bluez.Adapter", "RegisterAgent");
+					"org.bluez.Adapter1", "RegisterAgent");
 	if (!msg) {
 		fprintf(stderr, "Can't allocate new method call\n");
 		return -1;
@@ -385,7 +385,8 @@ static int unregister_agent(DBusConnection *conn, const char *adapter_path,
 	DBusError err;
 
 	msg = dbus_message_new_method_call("org.bluez", adapter_path,
-					"org.bluez.Adapter", "UnregisterAgent");
+							"org.bluez.Adapter1",
+							"UnregisterAgent");
 	if (!msg) {
 		fprintf(stderr, "Can't allocate new method call\n");
 		return -1;
@@ -435,7 +436,7 @@ static int create_paired_device(DBusConnection *conn, const char *adapter_path,
 	DBusPendingCall *pending;
 
 	msg = dbus_message_new_method_call("org.bluez", adapter_path,
-						"org.bluez.Adapter",
+						"org.bluez.Adapter1",
 						"CreatePairedDevice");
 	if (!msg) {
 		fprintf(stderr, "Can't allocate new method call\n");
diff --git a/test/bluezutils.py b/test/bluezutils.py
index 803805b..d0c4773 100644
--- a/test/bluezutils.py
+++ b/test/bluezutils.py
@@ -1,7 +1,7 @@
 import dbus
 
 SERVICE_NAME = "org.bluez"
-ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter"
+ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter1"
 DEVICE_INTERFACE = SERVICE_NAME + ".Device1"
 
 def get_managed_objects():
diff --git a/test/list-devices b/test/list-devices
index 7e56239..0aac217 100755
--- a/test/list-devices
+++ b/test/list-devices
@@ -35,12 +35,12 @@ all_devices = (str(path) for path, interfaces in objects.iteritems() if
 					"org.bluez.Device1" in interfaces.keys())
 
 for path, interfaces in objects.iteritems():
-	if "org.bluez.Adapter" not in interfaces.keys():
+	if "org.bluez.Adapter1" not in interfaces.keys():
 		continue
 
 	print("[ " + path + " ]")
 
-	properties = interfaces["org.bluez.Adapter"]
+	properties = interfaces["org.bluez.Adapter1"]
 	for key in properties.keys():
 		value = properties[key]
 		if (key == "UUIDs"):
diff --git a/test/monitor-bluetooth b/test/monitor-bluetooth
index cfda322..bc5ddaf 100755
--- a/test/monitor-bluetooth
+++ b/test/monitor-bluetooth
@@ -7,7 +7,7 @@ import gobject
 import dbus
 import dbus.mainloop.glib
 
-relevant_ifaces = [ "org.bluez.Adapter", "org.bluez.Device1" ]
+relevant_ifaces = [ "org.bluez.Adapter1", "org.bluez.Device1" ]
 
 def property_changed(interface, changed, invalidated, path):
 	iface = interface[interface.rfind(".") + 1:]
diff --git a/test/test-adapter b/test/test-adapter
index dc66aa6..95e6662 100755
--- a/test/test-adapter
+++ b/test/test-adapter
@@ -37,16 +37,16 @@ if (len(args) < 1):
 	sys.exit(1)
 
 if (args[0] == "address"):
-	addr = adapter.Get("org.bluez.Adapter", "Address")
+	addr = adapter.Get("org.bluez.Adapter1", "Address")
 	print(addr)
 	sys.exit(0)
 
 if (args[0] == "name"):
 	if (len(args) < 2):
-		name = adapter.Get("org.bluez.Adapter", "Name")
+		name = adapter.Get("org.bluez.Adapter1", "Name")
 		print(name)
 	else:
-		adapter.Set("org.bluez.Adapter", "Name", args[1])
+		adapter.Set("org.bluez.Adapter1", "Name", args[1])
 	sys.exit(0)
 
 if (args[0] == "list"):
@@ -55,12 +55,12 @@ if (args[0] == "list"):
 					"org.freedesktop.DBus.ObjectManager")
 		objects = om.GetManagedObjects()
 		for path, interfaces in objects.iteritems():
-			if "org.bluez.Adapter" not in interfaces:
+			if "org.bluez.Adapter1" not in interfaces:
 				continue
 
 			print(" [ %s ]" % (path))
 
-			props = interfaces["org.bluez.Adapter"]
+			props = interfaces["org.bluez.Adapter1"]
 
 			for (key, value) in props.items():
 				if (key == "Class"):
@@ -72,7 +72,7 @@ if (args[0] == "list"):
 
 if (args[0] == "powered"):
 	if (len(args) < 2):
-		powered = adapter.Get("org.bluez.Adapter", "Powered")
+		powered = adapter.Get("org.bluez.Adapter1", "Powered")
 		print(powered)
 	else:
 		if (args[1] == "on"):
@@ -81,12 +81,12 @@ if (args[0] == "powered"):
 			value = dbus.Boolean(0)
 		else:
 			value = dbus.Boolean(args[1])
-		adapter.Set("org.bluez.Adapter", "Powered", value)
+		adapter.Set("org.bluez.Adapter1", "Powered", value)
 	sys.exit(0)
 
 if (args[0] == "pairable"):
 	if (len(args) < 2):
-		pairable = adapter.Get("org.bluez.Adapter", "Pairable")
+		pairable = adapter.Get("org.bluez.Adapter1", "Pairable")
 		print(pairable)
 	else:
 		if (args[1] == "on"):
@@ -95,21 +95,21 @@ if (args[0] == "pairable"):
 			value = dbus.Boolean(0)
 		else:
 			value = dbus.Boolean(args[1])
-		adapter.Set("org.bluez.Adapter", "Pairable", value)
+		adapter.Set("org.bluez.Adapter1", "Pairable", value)
 	sys.exit(0)
 
 if (args[0] == "pairabletimeout"):
 	if (len(args) < 2):
-		pt = adapter.Get("org.bluez.Adapter", "PairableTimeout")
+		pt = adapter.Get("org.bluez.Adapter1", "PairableTimeout")
 		print(pt)
 	else:
 		timeout = dbus.UInt32(args[1])
-		adapter.Set("org.bluez.Adapter", "PairableTimeout", timeout)
+		adapter.Set("org.bluez.Adapter1", "PairableTimeout", timeout)
 	sys.exit(0)
 
 if (args[0] == "discoverable"):
 	if (len(args) < 2):
-		discoverable = adapter.Get("org.bluez.Adapter", "Discoverable")
+		discoverable = adapter.Get("org.bluez.Adapter1", "Discoverable")
 		print(discoverable)
 	else:
 		if (args[1] == "on"):
@@ -118,20 +118,20 @@ if (args[0] == "discoverable"):
 			value = dbus.Boolean(0)
 		else:
 			value = dbus.Boolean(args[1])
-		adapter.Set("org.bluez.Adapter", "Discoverable", value)
+		adapter.Set("org.bluez.Adapter1", "Discoverable", value)
 	sys.exit(0)
 
 if (args[0] == "discoverabletimeout"):
 	if (len(args) < 2):
-		dt = adapter.Get("org.bluez.Adapter", "DiscoverableTimeout")
+		dt = adapter.Get("org.bluez.Adapter1", "DiscoverableTimeout")
 		print(dt)
 	else:
 		to = dbus.UInt32(args[1])
-		adapter.Set("org.bluez.Adapter", "DiscoverableTimeout", to)
+		adapter.Set("org.bluez.Adapter1", "DiscoverableTimeout", to)
 	sys.exit(0)
 
 if (args[0] == "discovering"):
-	discovering = adapter.Get("org.bluez.Adapter", "Discovering")
+	discovering = adapter.Get("org.bluez.Adapter1", "Discovering")
 	print(discovering)
 	sys.exit(0)
 
diff --git a/test/test-discovery b/test/test-discovery
index 0f73fe4..0004f52 100755
--- a/test/test-discovery
+++ b/test/test-discovery
@@ -106,11 +106,11 @@ if __name__ == '__main__':
 		compact = True;
 
 	bus.add_signal_receiver(devices_found,
-					dbus_interface = "org.bluez.Adapter",
+					dbus_interface = "org.bluez.Adapter1",
 					signal_name = "DevicesFound")
 
 	bus.add_signal_receiver(property_changed,
-					dbus_interface = "org.bluez.Adapter",
+					dbus_interface = "org.bluez.Adapter1",
 					signal_name = "PropertyChanged")
 
 	adapter.StartDiscovery()
diff --git a/test/test-health b/test/test-health
index 9d2f62f..e0f95a6 100755
--- a/test/test-health
+++ b/test/test-health
@@ -138,7 +138,7 @@ objects = manager.GetManagedObjects()
 adapters = []
 
 for path, ifaces in objects.iteritems():
-	if ifaces.has_key("org.bluez.Adapter"):
+	if ifaces.has_key("org.bluez.Adapter1"):
 		adapters.append(path)
 
 i = 1
@@ -160,7 +160,7 @@ while select == None:
 		sys.exit()
 
 adapter =  dbus.Interface(bus.get_object("org.bluez", select),
-						"org.bluez.Adapter")
+						"org.bluez.Adapter1")
 
 devices = adapter.GetProperties()["Devices"]
 
diff --git a/test/test-health-sink b/test/test-health-sink
index a886d85..a14f16b 100755
--- a/test/test-health-sink
+++ b/test/test-health-sink
@@ -28,7 +28,7 @@ objects = manager.GetManagedObjects()
 adapters = []
 
 for path, ifaces in objects.iteritems():
-	if ifaces.has_key("org.bluez.Adapter"):
+	if ifaces.has_key("org.bluez.Adapter1"):
 		adapters.append(path)
 
 i = 1
@@ -50,7 +50,7 @@ while select == None:
 		sys.exit()
 
 adapter =  dbus.Interface(bus.get_object("org.bluez", select),
-						"org.bluez.Adapter")
+						"org.bluez.Adapter1")
 
 devices = adapter.GetProperties()["Devices"]
 
diff --git a/test/test-manager b/test/test-manager
index c5e8007..1e3882f 100755
--- a/test/test-manager
+++ b/test/test-manager
@@ -9,11 +9,11 @@ import dbus.mainloop.glib
 import bluezutils
 
 def interfaces_added(path, interfaces):
-	if interfaces.get("org.bluez.Adapter") != None:
+	if interfaces.get("org.bluez.Adapter1") != None:
 		print("Adapter with path %s added" % (path))
 
 def interfaces_removed(path, interfaces):
-	if "org.bluez.Adapter" in interfaces:
+	if "org.bluez.Adapter1" in interfaces:
 		print("Adapter with path %s removed" % (path))
 
 if __name__ == "__main__":
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v3 14/15] dbus: Rename to org.bluez.Device1
From: Mikel Astiz @ 2012-12-05 12:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

Trivially add the numbering suffix to org.bluez.Device according to
the proposal for BlueZ 5.
---
 doc/adapter-api.txt    |  2 +-
 doc/device-api.txt     |  2 +-
 profiles/cups/main.c   |  4 ++--
 src/device.h           |  2 +-
 test/bluezutils.py     |  2 +-
 test/list-devices      |  4 ++--
 test/monitor-bluetooth |  2 +-
 test/simple-agent      |  4 ++--
 test/test-attrib       |  2 +-
 test/test-device       | 22 +++++++++++-----------
 10 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index 983a20d..cf8374d 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -107,7 +107,7 @@ Signals		DevicesFound(array{object path, dict values})
 			device discovery.
 
 			The dictionary contains the properties from the
-			org.bluez.Device interface.
+			org.bluez.Device1 interface.
 
 Properties	string Address [readonly]
 
diff --git a/doc/device-api.txt b/doc/device-api.txt
index c1f2361..36ea1d9 100644
--- a/doc/device-api.txt
+++ b/doc/device-api.txt
@@ -11,7 +11,7 @@ Device hierarchy
 ================
 
 Service		org.bluez
-Interface	org.bluez.Device
+Interface	org.bluez.Device1
 Object path	[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX
 
 Methods		dict DiscoverServices(string pattern)
diff --git a/profiles/cups/main.c b/profiles/cups/main.c
index 977c057..ae0cc6a 100644
--- a/profiles/cups/main.c
+++ b/profiles/cups/main.c
@@ -133,7 +133,7 @@ static char *device_get_ieee1284_id(const char *adapter, const char *device)
 
 	/* Look for the service handle of the HCRP service */
 	message = dbus_message_new_method_call("org.bluez", device,
-						"org.bluez.Device",
+						"org.bluez.Device1",
 						"DiscoverServices");
 	dbus_message_iter_init_append(message, &iter);
 	dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &hcr_print);
@@ -309,7 +309,7 @@ static gboolean device_is_printer(const char *adapter, const char *device_path,
 	gboolean retval;
 
 	message = dbus_message_new_method_call("org.bluez", device_path,
-							"org.bluez.Device",
+							"org.bluez.Device1",
 							"GetProperties");
 
 	reply = dbus_connection_send_with_reply_and_block(conn,
diff --git a/src/device.h b/src/device.h
index 1d7f54f..cb0bb50 100644
--- a/src/device.h
+++ b/src/device.h
@@ -22,7 +22,7 @@
  *
  */
 
-#define DEVICE_INTERFACE	"org.bluez.Device"
+#define DEVICE_INTERFACE	"org.bluez.Device1"
 
 struct btd_device;
 
diff --git a/test/bluezutils.py b/test/bluezutils.py
index 70fe01b..803805b 100644
--- a/test/bluezutils.py
+++ b/test/bluezutils.py
@@ -2,7 +2,7 @@ import dbus
 
 SERVICE_NAME = "org.bluez"
 ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter"
-DEVICE_INTERFACE = SERVICE_NAME + ".Device"
+DEVICE_INTERFACE = SERVICE_NAME + ".Device1"
 
 def get_managed_objects():
 	bus = dbus.SystemBus()
diff --git a/test/list-devices b/test/list-devices
index e8f3f24..7e56239 100755
--- a/test/list-devices
+++ b/test/list-devices
@@ -32,7 +32,7 @@ def extract_uuids(uuid_list):
 objects = manager.GetManagedObjects()
 
 all_devices = (str(path) for path, interfaces in objects.iteritems() if
-					"org.bluez.Device" in interfaces.keys())
+					"org.bluez.Device1" in interfaces.keys())
 
 for path, interfaces in objects.iteritems():
 	if "org.bluez.Adapter" not in interfaces.keys():
@@ -55,7 +55,7 @@ for path, interfaces in objects.iteritems():
 		print("    [ " + dev_path + " ]")
 
 		dev = objects[dev_path]
-		properties = dev["org.bluez.Device"]
+		properties = dev["org.bluez.Device1"]
 
 		for key in properties.keys():
 			value = properties[key]
diff --git a/test/monitor-bluetooth b/test/monitor-bluetooth
index 45cc910..cfda322 100755
--- a/test/monitor-bluetooth
+++ b/test/monitor-bluetooth
@@ -7,7 +7,7 @@ import gobject
 import dbus
 import dbus.mainloop.glib
 
-relevant_ifaces = [ "org.bluez.Adapter", "org.bluez.Device" ]
+relevant_ifaces = [ "org.bluez.Adapter", "org.bluez.Device1" ]
 
 def property_changed(interface, changed, invalidated, path):
 	iface = interface[interface.rfind(".") + 1:]
diff --git a/test/simple-agent b/test/simple-agent
index 3c51530..15f2a32 100755
--- a/test/simple-agent
+++ b/test/simple-agent
@@ -24,11 +24,11 @@ def ask(prompt):
 def set_trusted(path):
 	props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
-	props.Set("org.bluez.Device", "Trusted", True)
+	props.Set("org.bluez.Device1", "Trusted", True)
 
 def dev_connect(path):
 	dev = dbus.Interface(bus.get_object("org.bluez", path),
-							"org.bluez.Device")
+							"org.bluez.Device1")
 	dev.Connect()
 
 class Rejected(dbus.DBusException):
diff --git a/test/test-attrib b/test/test-attrib
index 2b0b010..aadffaa 100755
--- a/test/test-attrib
+++ b/test/test-attrib
@@ -40,7 +40,7 @@ if (args[0] == "list"):
 	adapter = bluezutils.find_adapter(options.dev_id)
 	for path in adapter.GetProperties()["Devices"]:
 		device = dbus.Interface(bus.get_object("org.bluez", path),
-							"org.bluez.Device")
+							"org.bluez.Device1")
 		devprop = device.GetProperties()
 		print("[ %s ]" % devprop["Address"])
 		for path in devprop["Services"]:
diff --git a/test/test-device b/test/test-device
index d40d656..655eeae 100755
--- a/test/test-device
+++ b/test/test-device
@@ -49,9 +49,9 @@ if (args[0] == "list"):
 	objects = om.GetManagedObjects()
 
 	for path, interfaces in objects.iteritems():
-		if "org.bluez.Device" not in interfaces:
+		if "org.bluez.Device1" not in interfaces:
 			continue
-		properties = interfaces["org.bluez.Device"]
+		properties = interfaces["org.bluez.Device1"]
 		if properties["Adapter"] != adapter_path:
 			continue;
 		print("%s %s" % (properties["Address"], properties["Alias"]))
@@ -142,7 +142,7 @@ if (args[0] == "class"):
 		device = bluezutils.find_device(args[1], options.dev_id)
 		device = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
-		cls = device.Get("org.bluez.Device", "Class")
+		cls = device.Get("org.bluez.Device1", "Class")
 		print("0x%06x" % cls)
 	sys.exit(0)
 
@@ -154,7 +154,7 @@ if (args[0] == "name"):
 		path = device.object_path
 		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
-		name = props.Get("org.bluez.Device", "Name")
+		name = props.Get("org.bluez.Device1", "Name")
 		print(name)
 	sys.exit(0)
 
@@ -167,10 +167,10 @@ if (args[0] == "alias"):
 		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		if (len(args) < 3):
-			alias = device.Get("org.bluez.Device", "Alias")
+			alias = device.Get("org.bluez.Device1", "Alias")
 			print(alias)
 		else:
-			device.Set("org.bluez.Device", "Alias", args[2])
+			device.Set("org.bluez.Device1", "Alias", args[2])
 	sys.exit(0)
 
 if (args[0] == "trusted"):
@@ -182,7 +182,7 @@ if (args[0] == "trusted"):
 		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		if (len(args) < 3):
-			trusted = device.Get("org.bluez.Device", "Trusted")
+			trusted = device.Get("org.bluez.Device1", "Trusted")
 			print(trusted)
 		else:
 			if (args[2] == "yes"):
@@ -191,7 +191,7 @@ if (args[0] == "trusted"):
 				value = dbus.Boolean(0)
 			else:
 				value = dbus.Boolean(args[2])
-			device.Set("org.bluez.Device", "Trusted", value)
+			device.Set("org.bluez.Device1", "Trusted", value)
 	sys.exit(0)
 
 if (args[0] == "blocked"):
@@ -203,7 +203,7 @@ if (args[0] == "blocked"):
 		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		if (len(args) < 3):
-			blocked = device.Get("org.bluez.Device", "Blocked")
+			blocked = device.Get("org.bluez.Device1", "Blocked")
 			print(blocked)
 		else:
 			if (args[2] == "yes"):
@@ -212,7 +212,7 @@ if (args[0] == "blocked"):
 				value = dbus.Boolean(0)
 			else:
 				value = dbus.Boolean(args[2])
-			device.Set("org.bluez.Device", "Blocked", value)
+			device.Set("org.bluez.Device1", "Blocked", value)
 	sys.exit(0)
 
 if (args[0] == "services"):
@@ -223,7 +223,7 @@ if (args[0] == "services"):
 		path = device.object_path
 		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
-		services = device.Get("org.bluez.Device", "Services")
+		services = device.Get("org.bluez.Device1", "Services")
 		for path in services:
 			print(path)
 	sys.exit(0)
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v3 13/15] adapter: Remove FindDevice method from D-Bus API
From: Mikel Astiz @ 2012-12-05 12:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

ObjectManager.GetManagedObjects() returns all devices and their
corresponding properties to any interested client. The device address is
included in the property dictionary and therefore having such a
FindDevice method is an unnecessary duplication.
---
 doc/adapter-api.txt |  7 -------
 src/adapter.c       | 38 --------------------------------------
 2 files changed, 45 deletions(-)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index 3582793..983a20d 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -64,13 +64,6 @@ Methods		void RequestSession()
 					 org.bluez.Error.Failed
 					 org.bluez.Error.NotAuthorized
 
-		object FindDevice(string address)
-
-			Returns the object path of device for given address.
-
-			Possible Errors: org.bluez.Error.DoesNotExist
-					 org.bluez.Error.InvalidArguments
-
 		void RemoveDevice(object device)
 
 			This removes the remote device object at the given
diff --git a/src/adapter.c b/src/adapter.c
index 0c37ba4..a1c7170 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1521,40 +1521,6 @@ static DBusMessage *remove_device(DBusConnection *conn, DBusMessage *msg,
 	return NULL;
 }
 
-static DBusMessage *find_device(DBusConnection *conn, DBusMessage *msg,
-								void *data)
-{
-	struct btd_adapter *adapter = data;
-	struct btd_device *device;
-	DBusMessage *reply;
-	const gchar *address;
-	GSList *l;
-	const gchar *dev_path;
-
-	if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &address,
-						DBUS_TYPE_INVALID))
-		return btd_error_invalid_args(msg);
-
-	l = g_slist_find_custom(adapter->devices,
-			address, (GCompareFunc) device_address_cmp);
-	if (!l)
-		return btd_error_does_not_exist(msg);
-
-	device = l->data;
-
-	reply = dbus_message_new_method_return(msg);
-	if (!reply)
-		return NULL;
-
-	dev_path = device_get_path(device);
-
-	dbus_message_append_args(reply,
-				DBUS_TYPE_OBJECT_PATH, &dev_path,
-				DBUS_TYPE_INVALID);
-
-	return reply;
-}
-
 static void agent_removed(struct agent *agent, struct btd_adapter *adapter)
 {
 	mgmt_set_io_capability(adapter->dev_id, IO_CAPABILITY_NOINPUTNOOUTPUT);
@@ -1626,10 +1592,6 @@ static const GDBusMethodTable adapter_methods[] = {
 	{ GDBUS_ASYNC_METHOD("RemoveDevice",
 			GDBUS_ARGS({ "device", "o" }), NULL,
 			remove_device) },
-	{ GDBUS_METHOD("FindDevice",
-			GDBUS_ARGS({ "address", "s" }),
-			GDBUS_ARGS({ "device", "o" }),
-			find_device) },
 	{ GDBUS_METHOD("RegisterAgent",
 			GDBUS_ARGS({ "agent", "o" },
 					{ "capability", "s" }), NULL,
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v3 12/15] test: Avoid using Adapter.FindDevice()
From: Mikel Astiz @ 2012-12-05 12:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

The method is now deprecated and thus the replacement utility library
should be used in the test scripts.
---
 test/simple-agent      | 12 +++++------
 test/test-attrib       |  7 ++-----
 test/test-cyclingspeed |  9 ++++++--
 test/test-device       | 57 +++++++++++++++++++++++++++-----------------------
 test/test-heartrate    | 13 +++++++-----
 test/test-oob          | 12 +++++++----
 test/test-proximity    |  7 ++-----
 test/test-thermometer  | 10 +++++++--
 8 files changed, 71 insertions(+), 56 deletions(-)

diff --git a/test/simple-agent b/test/simple-agent
index 13c3ce7..3c51530 100755
--- a/test/simple-agent
+++ b/test/simple-agent
@@ -149,10 +149,9 @@ if __name__ == '__main__':
 	if options.capability:
 		capability  = options.capability
 
+	adapter_pattern = None
 	if len(args) > 0:
-		adapter = bluezutils.find_adapter(args[0])
-	else:
-		adapter = bluezutils.find_adapter()
+		adapter_pattern = args[0]
 
 	path = "/test/agent"
 	agent = Agent(bus, path)
@@ -160,16 +159,15 @@ if __name__ == '__main__':
 	mainloop = GObject.MainLoop()
 
 	if len(args) > 1:
-		dev_path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", dev_path),
-						"org.bluez.Device")
-
+		device = bluezutils.find_device(args[1], adapter_pattern)
+		dev_path = device.object_path
 		agent.set_exit_on_release(False)
 		device.Pair(path, capability, timeout=options.timeout,
 					reply_handler=pair_reply,
 					error_handler=pair_error)
 		device_obj = device
 	else:
+		adapter = bluezutils.find_adapter(adapter_pattern)
 		adapter.RegisterAgent(path, capability)
 		print("Agent registered")
 
diff --git a/test/test-attrib b/test/test-attrib
index f75a566..2b0b010 100755
--- a/test/test-attrib
+++ b/test/test-attrib
@@ -27,8 +27,6 @@ parser = OptionParser(option_list=option_list)
 
 (options, args) = parser.parse_args()
 
-adapter = bluezutils.find_adapter(options.dev_id)
-
 if (len(args) < 1):
 	print("Usage: %s <command>" % (sys.argv[0]))
 	print("")
@@ -39,6 +37,7 @@ if (len(args) < 1):
 	sys.exit(1)
 
 if (args[0] == "list"):
+	adapter = bluezutils.find_adapter(options.dev_id)
 	for path in adapter.GetProperties()["Devices"]:
 		device = dbus.Interface(bus.get_object("org.bluez", path),
 							"org.bluez.Device")
@@ -63,9 +62,7 @@ if (args[0] == "services"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
-							"org.bluez.Device")
+		device = bluezutils.find_device(args[1], options.dev_id)
 		properties = device.GetProperties()
 		for path in properties["Services"]:
 			print(path)
diff --git a/test/test-cyclingspeed b/test/test-cyclingspeed
index 2bfea36..10a16aa 100755
--- a/test/test-cyclingspeed
+++ b/test/test-cyclingspeed
@@ -125,10 +125,15 @@ if __name__ == "__main__":
 		print("\tSetCumulativeWheelRevolutions <value>")
 		sys.exit(1)
 
-	adapter = bluezutils.find_adapter(options.adapter)
+	managed_objects = bluezutils.get_managed_objects()
+	adapter = bluezutils.find_adapter_in_objects(managed_objects,
+								options.adapter)
 	adapter_path = adapter.object_path
 
-	device_path = adapter.FindDevice(options.address)
+	device = bluezutils.find_device_in_objects(managed_objects,
+								options.address,
+								options.adapter)
+	device_path = device.object_path
 
 	cscmanager = dbus.Interface(bus.get_object("org.bluez", adapter_path),
 						"org.bluez.CyclingSpeedManager")
diff --git a/test/test-device b/test/test-device
index f4a40c4..d40d656 100755
--- a/test/test-device
+++ b/test/test-device
@@ -23,10 +23,6 @@ parser = OptionParser(option_list=option_list)
 
 (options, args) = parser.parse_args()
 
-adapter = bluezutils.find_adapter(options.dev_id)
-
-adapter_path = adapter.object_path
-
 if (len(args) < 1):
 	print("Usage: %s <command>" % (sys.argv[0]))
 	print("")
@@ -45,6 +41,9 @@ if (len(args) < 1):
 	sys.exit(1)
 
 if (args[0] == "list"):
+	adapter = bluezutils.find_adapter(options.dev_id)
+	adapter_path = adapter.object_path
+
 	om = dbus.Interface(bus.get_object("org.bluez", "/"),
 					"org.freedesktop.DBus.ObjectManager")
 	objects = om.GetManagedObjects()
@@ -73,6 +72,7 @@ if (args[0] == "create"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
+		adapter = bluezutils.find_adapter(options.dev_id)
 		adapter.CreateDevice(args[1],
 				reply_handler=create_device_reply,
 				error_handler=create_device_error)
@@ -82,8 +82,14 @@ if (args[0] == "remove"):
 	if (len(args) < 2):
 		print("Need address or object path parameter")
 	else:
+		managed_objects = bluezutils.get_managed_objects()
+		adapter = bluezutils.find_adapter_in_objects(managed_objects,
+								options.dev_id)
 		try:
-			path = adapter.FindDevice(args[1])
+			dev = bluezutils.find_device_in_objects(managed_objects,
+								args[1],
+								options.dev_id)
+			path = dev.object_path
 		except:
 			path = args[1]
 		adapter.RemoveDevice(path)
@@ -93,9 +99,7 @@ if (args[0] == "connect"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
-							"org.bluez.Device")
+		device = bluezutils.find_device(args[1], options.dev_id)
 		if (len(args) > 2):
 			device.ConnectProfile(args[2])
 		else:
@@ -106,9 +110,7 @@ if (args[0] == "disconnect"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
-							"org.bluez.Device")
+		device = bluezutils.find_device(args[1], options.dev_id)
 		if (len(args) > 2):
 			device.DisconnectProfile(args[2])
 		else:
@@ -119,9 +121,7 @@ if (args[0] == "discover"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
-							"org.bluez.Device")
+		device = bluezutils.find_device(args[1], options.dev_id)
 		if (len(args) < 3):
 			pattern = ""
 		else:
@@ -139,7 +139,7 @@ if (args[0] == "class"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
+		device = bluezutils.find_device(args[1], options.dev_id)
 		device = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		cls = device.Get("org.bluez.Device", "Class")
@@ -150,10 +150,11 @@ if (args[0] == "name"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
+		device = bluezutils.find_device(args[1], options.dev_id)
+		path = device.object_path
+		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
-		name = device.Get("org.bluez.Device", "Name")
+		name = props.Get("org.bluez.Device", "Name")
 		print(name)
 	sys.exit(0)
 
@@ -161,8 +162,9 @@ if (args[0] == "alias"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
+		device = bluezutils.find_device(args[1], options.dev_id)
+		path = device.object_path
+		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		if (len(args) < 3):
 			alias = device.Get("org.bluez.Device", "Alias")
@@ -175,8 +177,9 @@ if (args[0] == "trusted"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
+		device = bluezutils.find_device(args[1], options.dev_id)
+		path = device.object_path
+		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		if (len(args) < 3):
 			trusted = device.Get("org.bluez.Device", "Trusted")
@@ -195,8 +198,9 @@ if (args[0] == "blocked"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
+		device = bluezutils.find_device(args[1], options.dev_id)
+		path = device.object_path
+		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		if (len(args) < 3):
 			blocked = device.Get("org.bluez.Device", "Blocked")
@@ -215,8 +219,9 @@ if (args[0] == "services"):
 	if (len(args) < 2):
 		print("Need address parameter")
 	else:
-		path = adapter.FindDevice(args[1])
-		device = dbus.Interface(bus.get_object("org.bluez", path),
+		device = bluezutils.find_device(args[1], options.dev_id)
+		path = device.object_path
+		props = dbus.Interface(bus.get_object("org.bluez", path),
 					"org.freedesktop.DBus.Properties")
 		services = device.Get("org.bluez.Device", "Services")
 		for path in services:
diff --git a/test/test-heartrate b/test/test-heartrate
index a08e8df..47dd012 100755
--- a/test/test-heartrate
+++ b/test/test-heartrate
@@ -54,18 +54,21 @@ if __name__ == "__main__":
 		print("\tReset")
 		sys.exit(1)
 
-	adapter = bluezutils.find_adapter(options.adapter)
+	managed_objects = bluezutils.get_managed_objects()
+	adapter = bluezutils.find_adapter_in_objects(managed_objects,
+								options.adapter)
 	adapter_path = adapter.object_path
+
 	heartrateManager = dbus.Interface(bus.get_object("org.bluez",
 				adapter_path), "org.bluez.HeartRateManager")
 
 	path = "/test/watcher"
 	heartrateManager.RegisterWatcher(path)
 
-	device_path = adapter.FindDevice(options.address)
-
-	device = dbus.Interface(bus.get_object("org.bluez", device_path),
-							"org.bluez.Device")
+	device = bluezutils.find_device_in_objects(managed_objects,
+								options.address,
+								options.adapter)
+	device_path = device.object_path
 
 	heartrate = dbus.Interface(bus.get_object("org.bluez",
 					device_path), "org.bluez.HeartRate")
diff --git a/test/test-oob b/test/test-oob
index 34e042d..87c558f 100755
--- a/test/test-oob
+++ b/test/test-oob
@@ -42,14 +42,18 @@ if __name__ == '__main__':
 	print("Removing any existing bond...")
 
 	try:
-		device = adapter0.FindDevice(adapter1_address)
-		adapter0.RemoveDevice(device)
+		dev = bluezutils.find_device_in_objects(managed_objects,
+							adapter1_address,
+							adapter0_address)
+		adapter0.RemoveDevice(dev.object_path)
 	except:
 		pass
 
 	try:
-		device = adapter1.FindDevice(adapter0_address)
-		adapter1.RemoveDevice(device)
+		dev = bluezutils.find_device_in_objects(managed_objects,
+							adapter0_address,
+							adapter1_address)
+		adapter1.RemoveDevice(dev.object_path)
 	except:
 		pass
 
diff --git a/test/test-proximity b/test/test-proximity
index afde3fb..d6862de 100755
--- a/test/test-proximity
+++ b/test/test-proximity
@@ -35,10 +35,6 @@ if __name__ == "__main__":
 		]
 	parser = OptionParser(option_list=option_list)
 
-	(options, args) = parser.parse_args()
-
-	adapter = bluezutils.find_adapter(options.dev_id)
-
 	if (len(args) < 1):
 		print("Usage: %s <command>" % (sys.argv[0]))
 		print("")
@@ -46,7 +42,8 @@ if __name__ == "__main__":
 		print("  -b MAC ImmediateAlertLevel <none|mild|high>")
 		sys.exit(1)
 
-	device_path = adapter.FindDevice(options.address)
+	device = bluezutils.find_device(options.address, options.dev_id)
+	device_path = device.object_path
 
 	bus.add_signal_receiver(properties_changed, bus_name="org.bluez",
 			path=device_path,
diff --git a/test/test-thermometer b/test/test-thermometer
index 5a884a3..fdb772f 100755
--- a/test/test-thermometer
+++ b/test/test-thermometer
@@ -58,12 +58,18 @@ if __name__ == "__main__":
 		print("\tEnableIntermediateMeasurement")
 		sys.exit(1)
 
-	adapter = bluezutils.find_adapter(options.adapter)
+	managed_objects = bluezutils.get_managed_objects()
+	adapter = bluezutils.find_adapter_in_objects(managed_objects,
+								options.adapter)
 	adapter_path = adapter.object_path
+
 	thermometer_manager = dbus.Interface(bus.get_object("org.bluez",
 				adapter_path), "org.bluez.ThermometerManager")
 
-	device_path = adapter.FindDevice(options.address)
+	device = bluezutils.find_device_in_objects(managed_objects,
+								options.address,
+								options.adapter)
+	device_path = device.object_path
 
 	bus.add_signal_receiver(properties_changed, bus_name="org.bluez",
 			path=device_path,
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v3 11/15] adapter: Remove redundant Devices property
From: Mikel Astiz @ 2012-12-05 12:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

The ObjectManager interface already reports the list of devices, so the
the property can be entirely removed.
---
 doc/adapter-api.txt |  4 ----
 src/adapter.c       | 30 ------------------------------
 2 files changed, 34 deletions(-)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index 132e60f..3582793 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -180,10 +180,6 @@ Properties	string Address [readonly]
 
 			Indicates that a device discovery procedure is active.
 
-		array{object} Devices [readonly]
-
-			List of device object paths.
-
 		array{string} UUIDs [readonly]
 
 			List of 128-bit UUIDs that represents the available
diff --git a/src/adapter.c b/src/adapter.c
index a816ae3..0c37ba4 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1021,9 +1021,6 @@ static struct btd_device *adapter_create_device(struct btd_adapter *adapter,
 
 	adapter->devices = g_slist_append(adapter->devices, device);
 
-	g_dbus_emit_property_changed(btd_get_dbus_connection(),
-				adapter->path, ADAPTER_INTERFACE, "Devices");
-
 	return device;
 }
 
@@ -1076,9 +1073,6 @@ void adapter_remove_device(struct btd_adapter *adapter,
 		service_auth_cancel(auth);
 	}
 
-	g_dbus_emit_property_changed(btd_get_dbus_connection(),
-				adapter->path, ADAPTER_INTERFACE, "Devices");
-
 	device_remove(dev, remove_storage);
 }
 
@@ -1384,29 +1378,6 @@ static gboolean adapter_property_get_discovering(
 	return TRUE;
 }
 
-static gboolean adapter_property_get_devices(
-					const GDBusPropertyTable *property,
-					DBusMessageIter *iter, void *data)
-{
-	struct btd_adapter *adapter = data;
-	DBusMessageIter entry;
-	GSList *l;
-
-	dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
-				DBUS_TYPE_OBJECT_PATH_AS_STRING, &entry);
-
-	for (l = adapter->devices; l != NULL; l = l->next) {
-		const char *path = device_get_path(l->data);
-
-		dbus_message_iter_append_basic(&entry, DBUS_TYPE_OBJECT_PATH,
-								&path);
-	}
-
-	dbus_message_iter_close_container(iter, &entry);
-
-	return TRUE;
-}
-
 static gboolean adapter_property_get_uuids(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *data)
 {
@@ -1691,7 +1662,6 @@ static const GDBusPropertyTable adapter_properties[] = {
 	{ "PairableTimeout", "u", adapter_property_get_pairable_timeout,
 				adapter_property_set_pairable_timeout },
 	{ "Discovering", "b", adapter_property_get_discovering },
-	{ "Devices", "ao", adapter_property_get_devices },
 	{ "UUIDs", "as", adapter_property_get_uuids },
 	{ }
 };
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH v3 10/15] adapter: Remove DeviceCreated/DeviceRemoved signals
From: Mikel Astiz @ 2012-12-05 12:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Mikel Astiz
In-Reply-To: <1354711902-16390-1-git-send-email-mikel.astiz.oss@gmail.com>

From: Mikel Astiz <mikel.astiz@bmw-carit.de>

The Adapter interface already reports changes in the device list in form
of property changes, so there is no need to keep these two signals.
---
 doc/adapter-api.txt |  8 --------
 src/adapter.c       | 17 -----------------
 2 files changed, 25 deletions(-)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index b638586..132e60f 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -116,14 +116,6 @@ Signals		DevicesFound(array{object path, dict values})
 			The dictionary contains the properties from the
 			org.bluez.Device interface.
 
-		DeviceCreated(object device)
-
-			Parameter is object path of created device.
-
-		DeviceRemoved(object device)
-
-			Parameter is object path of removed device.
-
 Properties	string Address [readonly]
 
 			The Bluetooth device address.
diff --git a/src/adapter.c b/src/adapter.c
index ea0394f..a816ae3 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1010,7 +1010,6 @@ static struct btd_device *adapter_create_device(struct btd_adapter *adapter,
 						uint8_t bdaddr_type)
 {
 	struct btd_device *device;
-	const char *path;
 
 	DBG("%s", address);
 
@@ -1022,12 +1021,6 @@ static struct btd_device *adapter_create_device(struct btd_adapter *adapter,
 
 	adapter->devices = g_slist_append(adapter->devices, device);
 
-	path = device_get_path(device);
-	g_dbus_emit_signal(btd_get_dbus_connection(), adapter->path,
-			ADAPTER_INTERFACE, "DeviceCreated",
-			DBUS_TYPE_OBJECT_PATH, &path,
-			DBUS_TYPE_INVALID);
-
 	g_dbus_emit_property_changed(btd_get_dbus_connection(),
 				adapter->path, ADAPTER_INTERFACE, "Devices");
 
@@ -1055,7 +1048,6 @@ void adapter_remove_device(struct btd_adapter *adapter,
 						struct btd_device *dev,
 						gboolean remove_storage)
 {
-	const gchar *dev_path = device_get_path(dev);
 	struct discovery *discovery = adapter->discovery;
 	GList *l;
 
@@ -1087,11 +1079,6 @@ void adapter_remove_device(struct btd_adapter *adapter,
 	g_dbus_emit_property_changed(btd_get_dbus_connection(),
 				adapter->path, ADAPTER_INTERFACE, "Devices");
 
-	g_dbus_emit_signal(btd_get_dbus_connection(), adapter->path,
-			ADAPTER_INTERFACE, "DeviceRemoved",
-			DBUS_TYPE_OBJECT_PATH, &dev_path,
-			DBUS_TYPE_INVALID);
-
 	device_remove(dev, remove_storage);
 }
 
@@ -1683,10 +1670,6 @@ static const GDBusMethodTable adapter_methods[] = {
 };
 
 static const GDBusSignalTable adapter_signals[] = {
-	{ GDBUS_SIGNAL("DeviceCreated",
-			GDBUS_ARGS({ "device", "o" })) },
-	{ GDBUS_SIGNAL("DeviceRemoved",
-			GDBUS_ARGS({ "device", "o" })) },
 	{ GDBUS_SIGNAL("DevicesFound",
 			GDBUS_ARGS({ "devices", "a{oa{sv}}" })) },
 	{ }
-- 
1.7.11.7


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox