2012-11-29 12:47:21

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 00/15] Manager/Adapter transition to ObjectManager

From: Mikel Astiz <[email protected]>

Note that this patchset requires the gdbus fix affecting were the ObjectManager gets registered, as submitted by Luiz.

This third 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.

Cheers,
Mikel

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

Makefile.am | 3 +-
Makefile.tools | 3 +-
doc/adapter-api.txt | 23 +------
doc/bluez-docs.xml | 7 ---
doc/device-api.txt | 2 +-
doc/manager-api.txt | 51 ----------------
doc/oob-api.txt | 2 +-
profiles/cups/main.c | 46 +++++---------
src/adapter.c | 89 +--------------------------
src/adapter.h | 2 +-
src/device.h | 2 +-
src/manager.c | 163 -------------------------------------------------
src/manager.h | 3 -
test/agent.c | 7 ++-
test/dbusdef.py | 5 +-
test/list-devices | 20 +++---
test/monitor-bluetooth | 68 ++++++++++-----------
test/simple-agent | 22 +++----
test/simple-endpoint | 7 +--
test/simple-player | 7 +--
test/simple-service | 7 +--
test/test-adapter | 41 ++++++-------
test/test-attrib | 18 ++----
test/test-device | 84 ++++++++++++-------------
test/test-discovery | 15 ++---
test/test-health | 11 +++-
test/test-health-sink | 12 +++-
test/test-heartrate | 23 +++----
test/test-manager | 33 +++++-----
test/test-nap | 10 +--
test/test-oob | 33 +++++-----
test/test-proximity | 17 +-----
test/test-service | 8 +--
test/test-thermometer | 20 +++---
test/testutils.py | 47 ++++++++++++++
35 files changed, 279 insertions(+), 632 deletions(-)
delete mode 100644 doc/manager-api.txt
create mode 100644 test/testutils.py

--
1.7.11.7



2012-11-30 12:28:00

by Anderson Lizardo

[permalink] [raw]
Subject: Re: [RFC v2 02/15] test: Add utility library for python scripts

Hi Mikel,

On Thu, Nov 29, 2012 at 8:47 AM, Mikel Astiz <[email protected]> wrote:
> +def find_adapter_in_objects(objects, pattern=None):
> + bus = dbus.SystemBus()
> + for path, ifaces in objects.iteritems():
> + adapter = ifaces.get(ADAPTER_INTERFACE)
> + if adapter == None:
> + continue

It is usually considered bad to use "== None" in Python. Either use
"adapter is None" or just "not adapter" (which is broader, but is
probably okay in this context).

> + if (pattern == None or pattern == adapter["Address"] or
> + path.endswith(pattern)):

Same here, better use "pattern is None" or "not pattern" (which will
also match empty strings, which will always match due to the
"endswith()" usage).

> + obj = bus.get_object(SERVICE_NAME, path)
> + return dbus.Interface(obj, ADAPTER_INTERFACE)
> + raise Exception("Bluetooth adapter not found")

Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil

2012-11-30 11:38:51

by Mikel Astiz

[permalink] [raw]
Subject: Re: [RFC v2 00/15] Manager/Adapter transition to ObjectManager

Hi Lucas,

On Thu, Nov 29, 2012 at 7:12 PM, Lucas De Marchi
<[email protected]> wrote:
> On Thu, Nov 29, 2012 at 10:47 AM, Mikel Astiz <[email protected]> wrote:
>> From: Mikel Astiz <[email protected]>
>>
>> Note that this patchset requires the gdbus fix affecting were the ObjectManager gets registered, as submitted by Luiz.
>
> Those were replaced with my patches today. Do my patches do what you need?

Yes, the patches (which are now pushed) do the job.

So at this point there is no other dependency and thus these patches
can be applied and tested with upstream master.

Cheers,
Mikel

2012-11-29 18:12:37

by Lucas De Marchi

[permalink] [raw]
Subject: Re: [RFC v2 00/15] Manager/Adapter transition to ObjectManager

On Thu, Nov 29, 2012 at 10:47 AM, Mikel Astiz <[email protected]> wrote:
> From: Mikel Astiz <[email protected]>
>
> Note that this patchset requires the gdbus fix affecting were the ObjectManager gets registered, as submitted by Luiz.

Those were replaced with my patches today. Do my patches do what you need?

Lucas De Marchi

2012-11-29 12:47:32

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 11/15] adapter: Remove redundant Devices property

From: Mikel Astiz <[email protected]>

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 683833d..1516a1d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1019,9 +1019,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;
}

@@ -1074,9 +1071,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);
}

@@ -1382,29 +1376,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)
{
@@ -1689,7 +1660,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


2012-11-29 12:47:31

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 10/15] adapter: Remove DeviceCreated/DeviceRemoved signals

From: Mikel Astiz <[email protected]>

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 89ba34d..683833d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1008,7 +1008,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);

@@ -1020,12 +1019,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");

@@ -1053,7 +1046,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;

@@ -1085,11 +1077,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);
}

@@ -1681,10 +1668,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


2012-11-29 12:47:36

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 15/15] dbus: Rename to org.bluez.Adapter1

From: Mikel Astiz <[email protected]>

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/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 ++--
test/testutils.py | 2 +-
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 54f9ea7..6fb7e3d 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 5cdeeb4..be83ee9 100644
--- a/test/agent.c
+++ b/test/agent.c
@@ -344,7 +344,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;
@@ -383,7 +383,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;
@@ -433,7 +434,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/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 94249e9..5b4fa9a 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 0468009..21652da 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 e5d23d0..8db8dce 100755
--- a/test/test-manager
+++ b/test/test-manager
@@ -9,11 +9,11 @@ import dbus.mainloop.glib
import testutils

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__":
diff --git a/test/testutils.py b/test/testutils.py
index 77f2f07..844ae8b 100644
--- a/test/testutils.py
+++ b/test/testutils.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():
--
1.7.11.7


2012-11-29 12:47:34

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 13/15] adapter: Remove FindDevice method from D-Bus API

From: Mikel Astiz <[email protected]>

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 1516a1d..41bdfb9 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1519,40 +1519,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);
@@ -1624,10 +1590,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


2012-11-29 12:47:35

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 14/15] dbus: Rename to org.bluez.Device1

From: Mikel Astiz <[email protected]>

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/list-devices | 4 ++--
test/monitor-bluetooth | 2 +-
test/simple-agent | 4 ++--
test/test-attrib | 2 +-
test/test-device | 22 +++++++++++-----------
test/testutils.py | 2 +-
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 703dfcf..bc251b6 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/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 ee4c6bf..f1c0a04 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 92e7393..63b869b 100755
--- a/test/test-attrib
+++ b/test/test-attrib
@@ -40,7 +40,7 @@ if (args[0] == "list"):
adapter = testutils.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 e2d1355..84d34f7 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 = testutils.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)
diff --git a/test/testutils.py b/test/testutils.py
index 45ef381..77f2f07 100644
--- a/test/testutils.py
+++ b/test/testutils.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()
--
1.7.11.7


2012-11-29 12:47:29

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 08/15] test: Use ObjectManager instead of Devices property

From: Mikel Astiz <[email protected]>

Use the objects and interfaces reported by the ObjectManager in order
to list the available devices per adapter.
---
test/list-devices | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/test/list-devices b/test/list-devices
index fcff3e7..e8f3f24 100755
--- a/test/list-devices
+++ b/test/list-devices
@@ -30,6 +30,10 @@ def extract_uuids(uuid_list):
return list

objects = manager.GetManagedObjects()
+
+all_devices = (str(path) for path, interfaces in objects.iteritems() if
+ "org.bluez.Device" in interfaces.keys())
+
for path, interfaces in objects.iteritems():
if "org.bluez.Adapter" not in interfaces.keys():
continue
@@ -39,19 +43,13 @@ for path, interfaces in objects.iteritems():
properties = interfaces["org.bluez.Adapter"]
for key in properties.keys():
value = properties[key]
- if (key == "Devices"):
- list = extract_objects(value)
- print(" %s = %s" % (key, list))
- elif (key == "UUIDs"):
+ if (key == "UUIDs"):
list = extract_uuids(value)
print(" %s = %s" % (key, list))
else:
print(" %s = %s" % (key, value))

- try:
- device_list = properties["Devices"]
- except:
- device_list = []
+ device_list = [d for d in all_devices if d.startswith(path + "/")]

for dev_path in device_list:
print(" [ " + dev_path + " ]")
--
1.7.11.7


2012-11-29 12:47:33

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 12/15] test: Avoid using Adapter.FindDevice()

From: Mikel Astiz <[email protected]>

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-device | 57 ++++++++++++++++++++++++++++-----------------------
test/test-heartrate | 13 +++++++-----
test/test-oob | 12 +++++++----
test/test-proximity | 7 ++-----
test/test-thermometer | 10 +++++++--
7 files changed, 64 insertions(+), 54 deletions(-)

diff --git a/test/simple-agent b/test/simple-agent
index 94996ad..ee4c6bf 100755
--- a/test/simple-agent
+++ b/test/simple-agent
@@ -140,10 +140,9 @@ if __name__ == '__main__':
if options.capability:
capability = options.capability

+ adapter_pattern = None
if len(args) > 0:
- adapter = testutils.find_adapter(args[0])
- else:
- adapter = testutils.find_adapter()
+ adapter_pattern = args[0]

path = "/test/agent"
agent = Agent(bus, path)
@@ -151,16 +150,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 = testutils.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 = testutils.find_adapter(adapter_pattern)
adapter.RegisterAgent(path, capability)
print("Agent registered")

diff --git a/test/test-attrib b/test/test-attrib
index b67b58e..92e7393 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 = testutils.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 = testutils.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 = testutils.find_device(args[1], options.dev_id)
properties = device.GetProperties()
for path in properties["Services"]:
print(path)
diff --git a/test/test-device b/test/test-device
index c0747a7..e2d1355 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 = testutils.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 = testutils.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 = testutils.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 = testutils.get_managed_objects()
+ adapter = testutils.find_adapter_in_objects(managed_objects,
+ options.dev_id)
try:
- path = adapter.FindDevice(args[1])
+ dev = testutils.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 = testutils.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 = testutils.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 = testutils.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 = testutils.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 = testutils.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 = testutils.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 = testutils.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 = testutils.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 = testutils.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 b50b169..4fc2576 100755
--- a/test/test-heartrate
+++ b/test/test-heartrate
@@ -54,18 +54,21 @@ if __name__ == "__main__":
print("\tReset")
sys.exit(1)

- adapter = testutils.find_adapter(options.adapter)
+ managed_objects = testutils.get_managed_objects()
+ adapter = testutils.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 = testutils.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 1359bdd..74dd351 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 = testutils.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 = testutils.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 a1e9460..fdb23af 100755
--- a/test/test-proximity
+++ b/test/test-proximity
@@ -33,10 +33,6 @@ if __name__ == "__main__":
]
parser = OptionParser(option_list=option_list)

- (options, args) = parser.parse_args()
-
- adapter = testutils.find_adapter(options.dev_id)
-
if (len(args) < 1):
print("Usage: %s <command>" % (sys.argv[0]))
print("")
@@ -44,7 +40,8 @@ if __name__ == "__main__":
print(" -b MAC ImmediateAlertLevel <none|mild|high>")
sys.exit(1)

- device_path = adapter.FindDevice(options.address)
+ device = testutils.find_device(options.address, options.dev_id)
+ device_path = device.object_path

bus.add_signal_receiver(property_changed, bus_name="org.bluez",
dbus_interface="org.bluez.ProximityMonitor",
diff --git a/test/test-thermometer b/test/test-thermometer
index b82c55a..497c876 100755
--- a/test/test-thermometer
+++ b/test/test-thermometer
@@ -56,12 +56,18 @@ if __name__ == "__main__":
print("\tEnableIntermediateMeasurement")
sys.exit(1)

- adapter = testutils.find_adapter(options.adapter)
+ managed_objects = testutils.get_managed_objects()
+ adapter = testutils.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 = testutils.find_device_in_objects(managed_objects,
+ options.address,
+ options.adapter)
+ device_path = device.object_path

bus.add_signal_receiver(property_changed, bus_name="org.bluez",
dbus_interface="org.bluez.Thermometer",
--
1.7.11.7


2012-11-29 12:47:28

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 07/15] dbus: Remove org.bluez.Manager

From: Mikel Astiz <[email protected]>

After the decision to drop the "default-adapter" feature in the D-Bus
API, the org.bluez.Manager interface can be entirely dropped since it
has been replaced by the ObjectManager.
---
Makefile.am | 3 +-
doc/bluez-docs.xml | 7 ---
doc/manager-api.txt | 51 ----------------
src/adapter.c | 4 +-
src/manager.c | 163 ----------------------------------------------------
src/manager.h | 3 -
6 files changed, 3 insertions(+), 228 deletions(-)
delete mode 100644 doc/manager-api.txt

diff --git a/Makefile.am b/Makefile.am
index 18522f0..fb1d888 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -334,8 +334,7 @@ CLEANFILES += $(rules_DATA)

EXTRA_DIST += scripts/bluetooth-hid2hci.rules scripts/bluetooth-serial.rules

-EXTRA_DIST += doc/manager-api.txt \
- doc/adapter-api.txt doc/device-api.txt doc/profile-api.txt \
+EXTRA_DIST += doc/adapter-api.txt doc/device-api.txt doc/profile-api.txt \
doc/service-api.txt doc/agent-api.txt doc/attribute-api.txt \
doc/network-api.txt doc/control-api.txt doc/health-api.txt \
doc/sap-api.txt doc/media-api.txt doc/assigned-numbers.txt \
diff --git a/doc/bluez-docs.xml b/doc/bluez-docs.xml
index a90dde7..814ce00 100644
--- a/doc/bluez-docs.xml
+++ b/doc/bluez-docs.xml
@@ -47,13 +47,6 @@
</legalnotice>
</bookinfo>

- <reference id="manager">
- <title>Manager interface</title>
- <para>
-<programlisting><xi:include href="manager-api.txt" parse="text" /></programlisting>
- </para>
- </reference>
-
<reference id="adapter">
<title>Adapter interface</title>
<para>
diff --git a/doc/manager-api.txt b/doc/manager-api.txt
deleted file mode 100644
index 3add587..0000000
--- a/doc/manager-api.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-BlueZ D-Bus Manager API description
-***********************************
-
-Copyright (C) 2004-2010 Marcel Holtmann <[email protected]>
-Copyright (C) 2005-2006 Johan Hedberg <[email protected]>
-Copyright (C) 2005-2006 Claudio Takahasi <[email protected]>
-Copyright (C) 2006-2007 Luiz von Dentz <[email protected]>
-
-
-Manager hierarchy
-=================
-
-Service org.bluez
-Interface org.bluez.Manager
-Object path /
-
- object DefaultAdapter()
-
- Returns object path for the default adapter.
-
- Possible errors: org.bluez.Error.InvalidArguments
- org.bluez.Error.NoSuchAdapter
-
- object FindAdapter(string pattern)
-
- Returns object path for the specified adapter. Valid
- patterns are "hci0" or "00:11:22:33:44:55".
-
- Possible errors: org.bluez.Error.InvalidArguments
- org.bluez.Error.NoSuchAdapter
-
-Signals AdapterAdded(object adapter)
-
- Parameter is object path of added adapter.
-
- AdapterRemoved(object adapter)
-
- Parameter is object path of removed adapter.
-
- DefaultAdapterChanged(object adapter)
-
- Parameter is object path of the new default adapter.
-
- In case all adapters are removed this signal will not
- be emitted. The AdapterRemoved signal has to be used
- to detect that no default adapter is selected or
- available anymore.
-
-Properties array{object} Adapters [readonly]
-
- List of adapter object paths.
diff --git a/src/adapter.c b/src/adapter.c
index f134dfe..89ba34d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -84,6 +84,7 @@
#define REMOVE_TEMP_TIMEOUT (3 * 60)
#define PENDING_FOUND_MAX 5

+static const char *base_path = "/org/bluez";
static GSList *adapter_drivers = NULL;

enum session_req_type {
@@ -2859,7 +2860,6 @@ struct btd_adapter *adapter_create(int id)
{
char path[MAX_PATH_LENGTH];
struct btd_adapter *adapter;
- const char *base_path = manager_get_base_path();

adapter = g_try_new0(struct btd_adapter, 1);
if (!adapter) {
@@ -3489,7 +3489,7 @@ const char *btd_adapter_any_request_path(void)
if (adapter_any_refcount++ > 0)
return adapter_any_path;

- adapter_any_path = g_strdup_printf("%s/any", manager_get_base_path());
+ adapter_any_path = g_strdup_printf("%s/any", base_path);

return adapter_any_path;
}
diff --git a/src/manager.c b/src/manager.c
index 3088dd9..3c415db 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -54,141 +54,11 @@
#include "error.h"
#include "manager.h"

-static const char *base_path = "/org/bluez";
-
static int default_adapter_id = -1;
static GSList *adapters = NULL;

-const char *manager_get_base_path(void)
-{
- return base_path;
-}
-
-static DBusMessage *default_adapter(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- DBusMessage *reply;
- struct btd_adapter *adapter;
- const gchar *path;
-
- adapter = manager_find_adapter_by_id(default_adapter_id);
- if (!adapter)
- return btd_error_no_such_adapter(msg);
-
- reply = dbus_message_new_method_return(msg);
- if (!reply)
- return NULL;
-
- path = adapter_get_path(adapter);
-
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID);
-
- return reply;
-}
-
-static DBusMessage *find_adapter(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- DBusMessage *reply;
- struct btd_adapter *adapter;
- const char *pattern;
- int dev_id;
- const gchar *path;
-
- if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &pattern,
- DBUS_TYPE_INVALID))
- return btd_error_invalid_args(msg);
-
- /* hci_devid() would make sense to use here, except it is
- * restricted to devices which are up */
- if (!strcmp(pattern, "any") || !strcmp(pattern, "00:00:00:00:00:00")) {
- path = adapter_any_get_path();
- if (path != NULL)
- goto done;
- return btd_error_no_such_adapter(msg);
- } else if (!strncmp(pattern, "hci", 3) && strlen(pattern) >= 4) {
- dev_id = atoi(pattern + 3);
- adapter = manager_find_adapter_by_id(dev_id);
- } else {
- bdaddr_t bdaddr;
- str2ba(pattern, &bdaddr);
- adapter = manager_find_adapter(&bdaddr);
- }
-
- if (!adapter)
- return btd_error_no_such_adapter(msg);
-
- path = adapter_get_path(adapter);
-
-done:
- reply = dbus_message_new_method_return(msg);
- if (!reply)
- return NULL;
-
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID);
-
- return reply;
-}
-
-static gboolean manager_property_get_adapters(
- const GDBusPropertyTable *property,
- DBusMessageIter *iter, void *data)
-{
- DBusMessageIter entry;
- GSList *l;
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
- DBUS_TYPE_OBJECT_PATH_AS_STRING, &entry);
-
- for (l = adapters; l != NULL; l = l->next) {
- struct btd_adapter *adapter = l->data;
- const char *path = adapter_get_path(adapter);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_OBJECT_PATH,
- &path);
- }
-
- dbus_message_iter_close_container(iter, &entry);
-
- return TRUE;
-}
-
-static const GDBusMethodTable manager_methods[] = {
- { GDBUS_METHOD("DefaultAdapter",
- NULL, GDBUS_ARGS({ "adapter", "o" }),
- default_adapter) },
- { GDBUS_METHOD("FindAdapter",
- GDBUS_ARGS({ "pattern", "s" }),
- GDBUS_ARGS({ "adapter", "o" }),
- find_adapter) },
- { }
-};
-
-static const GDBusSignalTable manager_signals[] = {
- { GDBUS_SIGNAL("AdapterAdded",
- GDBUS_ARGS({ "adapter", "o" })) },
- { GDBUS_SIGNAL("AdapterRemoved",
- GDBUS_ARGS({ "adapter", "o" })) },
- { GDBUS_SIGNAL("DefaultAdapterChanged",
- GDBUS_ARGS({ "adapter", "o" })) },
- { }
-};
-
-static const GDBusPropertyTable manager_properties[] = {
- { "Adapters", "ao", manager_property_get_adapters },
- { }
-};
-
bool manager_init(const char *path)
{
- if (!g_dbus_register_interface(btd_get_dbus_connection(),
- "/", MANAGER_INTERFACE,
- manager_methods, manager_signals,
- manager_properties, NULL, NULL))
- return false;
-
btd_profile_init();

return true;
@@ -196,21 +66,7 @@ bool manager_init(const char *path)

static void manager_set_default_adapter(int id)
{
- struct btd_adapter *adapter;
- const gchar *path;
-
default_adapter_id = id;
-
- adapter = manager_find_adapter_by_id(id);
- if (!adapter)
- return;
-
- path = adapter_get_path(adapter);
-
- g_dbus_emit_signal(btd_get_dbus_connection(), "/",
- MANAGER_INTERFACE, "DefaultAdapterChanged",
- DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID);
}

struct btd_adapter *manager_get_default_adapter(void)
@@ -221,24 +77,15 @@ struct btd_adapter *manager_get_default_adapter(void)
static void manager_remove_adapter(struct btd_adapter *adapter)
{
uint16_t dev_id = adapter_get_dev_id(adapter);
- const gchar *path = adapter_get_path(adapter);

adapters = g_slist_remove(adapters, adapter);

- g_dbus_emit_property_changed(btd_get_dbus_connection(), "/",
- MANAGER_INTERFACE, "Adapters");
-
if (default_adapter_id == dev_id || default_adapter_id < 0) {
int new_default = hci_get_route(NULL);

manager_set_default_adapter(new_default);
}

- g_dbus_emit_signal(btd_get_dbus_connection(), "/",
- MANAGER_INTERFACE, "AdapterRemoved",
- DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID);
-
adapter_remove(adapter);
btd_adapter_unref(adapter);

@@ -259,9 +106,6 @@ void manager_cleanup(const char *path)
}

btd_start_exit_timer();
-
- g_dbus_unregister_interface(btd_get_dbus_connection(),
- "/", MANAGER_INTERFACE);
}

static gint adapter_id_cmp(gconstpointer a, gconstpointer b)
@@ -338,13 +182,6 @@ struct btd_adapter *btd_manager_register_adapter(int id, gboolean up)
}

path = adapter_get_path(adapter);
- g_dbus_emit_signal(btd_get_dbus_connection(), "/",
- MANAGER_INTERFACE, "AdapterAdded",
- DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID);
-
- g_dbus_emit_property_changed(btd_get_dbus_connection(), "/",
- MANAGER_INTERFACE, "Adapters");

btd_stop_exit_timer();

diff --git a/src/manager.h b/src/manager.h
index 4d094b6..fdaabfd 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -25,14 +25,11 @@
#include <bluetooth/bluetooth.h>
#include <dbus/dbus.h>

-#define MANAGER_INTERFACE "org.bluez.Manager"
-
typedef void (*adapter_cb) (struct btd_adapter *adapter, gpointer user_data);

bool manager_init(const char *path);
void manager_cleanup(const char *path);

-const char *manager_get_base_path(void);
struct btd_adapter *manager_find_adapter(const bdaddr_t *sba);
struct btd_adapter *manager_find_adapter_by_id(int id);
struct btd_adapter *manager_get_default_adapter(void);
--
1.7.11.7


2012-11-29 12:47:30

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 09/15] test: Add helper function to find devices

From: Mikel Astiz <[email protected]>

Add a helper function to the utility library as an alternative to the
convenience method Adapter.FindDevice() in the D-Bus API.
---
test/testutils.py | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/test/testutils.py b/test/testutils.py
index a74ef35..45ef381 100644
--- a/test/testutils.py
+++ b/test/testutils.py
@@ -2,6 +2,7 @@ import dbus

SERVICE_NAME = "org.bluez"
ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter"
+DEVICE_INTERFACE = SERVICE_NAME + ".Device"

def get_managed_objects():
bus = dbus.SystemBus()
@@ -23,3 +24,24 @@ def find_adapter_in_objects(objects, pattern=None):
obj = bus.get_object(SERVICE_NAME, path)
return dbus.Interface(obj, ADAPTER_INTERFACE)
raise Exception("Bluetooth adapter not found")
+
+def find_device(device_address, adapter_pattern=None):
+ return find_device_in_objects(get_managed_objects(), device_address,
+ adapter_pattern)
+
+def find_device_in_objects(objects, device_address, adapter_pattern=None):
+ bus = dbus.SystemBus()
+ path_prefix = ""
+ if adapter_pattern != None:
+ adapter = find_adapter_in_objects(objects, adapter_pattern)
+ path_prefix = adapter.object_path
+ for path, ifaces in objects.iteritems():
+ device = ifaces.get(DEVICE_INTERFACE)
+ if device == None:
+ continue
+ if (device["Address"] == device_address and
+ path.startswith(path_prefix)):
+ obj = bus.get_object(SERVICE_NAME, path)
+ return dbus.Interface(obj, DEVICE_INTERFACE)
+
+ raise Exception("Bluetooth device not found")
--
1.7.11.7


2012-11-29 12:47:27

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 06/15] test: Use ObjectManager instead of Adapters property

From: Mikel Astiz <[email protected]>

Use the objects and interfaces reported by the ObjectManager in order
to list the available adapters.
---
test/test-health | 9 +++++++--
test/test-health-sink | 10 ++++++++--
2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/test/test-health b/test/test-health
index a7df679..9d2f62f 100755
--- a/test/test-health
+++ b/test/test-health
@@ -132,9 +132,14 @@ if not con:
sys.exit()

manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")
+ "org.freedesktop.DBus.ObjectManager")

-adapters = manager.GetProperties()["Adapters"]
+objects = manager.GetManagedObjects()
+adapters = []
+
+for path, ifaces in objects.iteritems():
+ if ifaces.has_key("org.bluez.Adapter"):
+ adapters.append(path)

i = 1
for ad in adapters:
diff --git a/test/test-health-sink b/test/test-health-sink
index 333b2fb..a886d85 100755
--- a/test/test-health-sink
+++ b/test/test-health-sink
@@ -22,9 +22,15 @@ app_path = hdp_manager.CreateApplication({"DataType": dbus.types.UInt16(4103),
print(app_path)

manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")
+ "org.freedesktop.DBus.ObjectManager")
+
+objects = manager.GetManagedObjects()
+adapters = []
+
+for path, ifaces in objects.iteritems():
+ if ifaces.has_key("org.bluez.Adapter"):
+ adapters.append(path)

-adapters = manager.GetProperties()["Adapters"]
i = 1
for ad in adapters:
print("%d. %s" % (i, ad))
--
1.7.11.7


2012-11-29 12:47:26

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 05/15] test: Update test-manager script to ObjectManager

From: Mikel Astiz <[email protected]>

Make the script compatible with the new API provided by the
ObjectManager interface.
---
test/test-manager | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)

diff --git a/test/test-manager b/test/test-manager
index b3ecc6d..e5d23d0 100755
--- a/test/test-manager
+++ b/test/test-manager
@@ -8,34 +8,32 @@ import dbus
import dbus.mainloop.glib
import testutils

-def adapter_added(path):
- print("Adapter with path %s added" % (path))
+def interfaces_added(path, interfaces):
+ if interfaces.get("org.bluez.Adapter") != None:
+ print("Adapter with path %s added" % (path))

-def adapter_removed(path):
- print("Adapter with path %s removed" % (path))
-
-def default_changed(path):
- print("Default adapter is now at path %s" % (path))
+def interfaces_removed(path, interfaces):
+ if "org.bluez.Adapter" in interfaces:
+ print("Adapter with path %s removed" % (path))

if __name__ == "__main__":
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()

- manager = dbus.Interface(bus.get_object('org.bluez', '/'),
- 'org.bluez.Manager')
-
- manager.connect_to_signal("AdapterAdded", adapter_added)
-
- manager.connect_to_signal("AdapterRemoved", adapter_removed)
+ bus.add_signal_receiver(interfaces_added, bus_name="org.bluez",
+ dbus_interface="org.freedesktop.DBus.ObjectManager",
+ signal_name="InterfacesAdded")

- manager.connect_to_signal("DefaultAdapterChanged", default_changed)
+ bus.add_signal_receiver(interfaces_removed, bus_name="org.bluez",
+ dbus_interface="org.freedesktop.DBus.ObjectManager",
+ signal_name="InterfacesRemoved")

try:
path = testutils.find_adapter().object_path
- default_changed(path)
+ print("Adapter found at path %s" % (path))
except:
- pass
+ print("No adapter found")

mainloop = GObject.MainLoop()
mainloop.run()
--
1.7.11.7


2012-11-29 12:47:24

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 03/15] test: Avoid using DefaultAdapter()

From: Mikel Astiz <[email protected]>

Call the utility library -which uses ObjectManager API- to avoid using
Manager.FindAdapter() and Manager.DefaultAdapter().
---
test/dbusdef.py | 5 ++---
test/simple-agent | 10 +++-------
test/simple-endpoint | 7 +++----
test/simple-player | 7 +++----
test/simple-service | 7 +++----
test/test-adapter | 9 ++-------
test/test-attrib | 11 ++---------
test/test-device | 11 +++--------
test/test-discovery | 11 ++---------
test/test-heartrate | 14 +++-----------
test/test-manager | 3 ++-
test/test-nap | 10 ++--------
test/test-oob | 21 +++++++++++----------
test/test-proximity | 12 ++----------
test/test-service | 8 ++------
test/test-thermometer | 14 +++-----------
16 files changed, 48 insertions(+), 112 deletions(-)

diff --git a/test/dbusdef.py b/test/dbusdef.py
index 5af6153..74664f3 100644
--- a/test/dbusdef.py
+++ b/test/dbusdef.py
@@ -1,4 +1,5 @@
import dbus
+import testutils

bus = dbus.SystemBus()

@@ -8,9 +9,7 @@ dummy = dbus.Interface(bus.get_object('org.bluez', '/'), 'org.freedesktop.DBus.I
#print dummy.Introspect()


-manager = dbus.Interface(bus.get_object('org.bluez', '/'), 'org.bluez.Manager')
-
try:
- adapter = dbus.Interface(bus.get_object('org.bluez', manager.DefaultAdapter()), 'org.bluez.Adapter')
+ adapter = testutils.find_adapter()
except:
pass
diff --git a/test/simple-agent b/test/simple-agent
index 465857b..94996ad 100755
--- a/test/simple-agent
+++ b/test/simple-agent
@@ -9,6 +9,7 @@ import dbus
import dbus.service
import dbus.mainloop.glib
from optparse import OptionParser
+import testutils

bus = None
device_obj = None
@@ -126,8 +127,6 @@ if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()
- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")

capability = "KeyboardDisplay"

@@ -142,12 +141,9 @@ if __name__ == '__main__':
capability = options.capability

if len(args) > 0:
- path = manager.FindAdapter(args[0])
+ adapter = testutils.find_adapter(args[0])
else:
- path = manager.DefaultAdapter()
-
- adapter = dbus.Interface(bus.get_object("org.bluez", path),
- "org.bluez.Adapter")
+ adapter = testutils.find_adapter()

path = "/test/agent"
agent = Agent(bus, path)
diff --git a/test/simple-endpoint b/test/simple-endpoint
index 20c8159..25c170e 100755
--- a/test/simple-endpoint
+++ b/test/simple-endpoint
@@ -7,6 +7,7 @@ import dbus
import dbus.service
import dbus.mainloop.glib
import gobject
+import testutils

A2DP_SOURCE_UUID = "0000110A-0000-1000-8000-00805F9B34FB"
A2DP_SINK_UUID = "0000110B-0000-1000-8000-00805F9B34FB"
@@ -79,13 +80,11 @@ if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()
- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")

if len(sys.argv) > 1:
- path = manager.FindAdapter(sys.argv[1])
+ path = testutils.find_adapter(sys.argv[1]).object_path
else:
- path = manager.DefaultAdapter()
+ path = testutils.find_adapter().object_path

media = dbus.Interface(bus.get_object("org.bluez", path),
"org.bluez.Media")
diff --git a/test/simple-player b/test/simple-player
index 9e72f3e..a41ab60 100755
--- a/test/simple-player
+++ b/test/simple-player
@@ -7,6 +7,7 @@ import dbus
import dbus.service
import dbus.mainloop.glib
import gobject
+import testutils

class Player(dbus.service.Object):
properties = None
@@ -137,13 +138,11 @@ if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()
- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")

if len(sys.argv) > 1:
- path = manager.FindAdapter(sys.argv[1])
+ path = testutils.find_adapter(sys.argv[1]).object_path
else:
- path = manager.DefaultAdapter()
+ path = testutils.find_adapter().object_path

media = dbus.Interface(bus.get_object("org.bluez", path),
"org.bluez.Media")
diff --git a/test/simple-service b/test/simple-service
index ed27d0c..3b7c008 100755
--- a/test/simple-service
+++ b/test/simple-service
@@ -5,6 +5,7 @@ from __future__ import absolute_import, print_function, unicode_literals
import sys
import time
import dbus
+import testutils

xml = ' \
<?xml version="1.0" encoding="UTF-8" ?> \
@@ -103,13 +104,11 @@ xml = ' \
'

bus = dbus.SystemBus()
-manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")

if len(sys.argv) > 1:
- path = manager.FindAdapter(sys.argv[1])
+ path = testutils.find_adapter(sys.argv[1]).object_path
else:
- path = manager.DefaultAdapter()
+ path = testutils.find_adapter().object_path

service = dbus.Interface(bus.get_object("org.bluez", path),
"org.bluez.Service")
diff --git a/test/test-adapter b/test/test-adapter
index a37dd30..94249e9 100755
--- a/test/test-adapter
+++ b/test/test-adapter
@@ -6,11 +6,10 @@ import sys
import dbus
import time
from optparse import OptionParser, make_option
+import testutils

bus = dbus.SystemBus()

-manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager")
-
option_list = [
make_option("-i", "--device", action="store",
type="string", dest="dev_id"),
@@ -19,11 +18,7 @@ parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

-if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
-else:
- adapter_path = manager.DefaultAdapter()
-
+adapter_path = testutils.find_adapter(options.dev_id).object_path
adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
"org.freedesktop.DBus.Properties")

diff --git a/test/test-attrib b/test/test-attrib
index f83859d..b67b58e 100755
--- a/test/test-attrib
+++ b/test/test-attrib
@@ -13,13 +13,12 @@ import sys
import dbus
import dbus.mainloop.glib
from optparse import OptionParser, make_option
+import testutils

dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
mainloop = gobject.MainLoop()

-manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager")
-
option_list = [
make_option("-i", "--device", action="store",
type="string", dest="dev_id"),
@@ -28,13 +27,7 @@ parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

-if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
-else:
- adapter_path = manager.DefaultAdapter()
-
-adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
- "org.bluez.Adapter")
+adapter = testutils.find_adapter(options.dev_id)

if (len(args) < 1):
print("Usage: %s <command>" % (sys.argv[0]))
diff --git a/test/test-device b/test/test-device
index c26d7f6..c0747a7 100755
--- a/test/test-device
+++ b/test/test-device
@@ -9,13 +9,12 @@ import dbus
import dbus.mainloop.glib
import re
from optparse import OptionParser, make_option
+import testutils

dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
mainloop = GObject.MainLoop()

-manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager")
-
option_list = [
make_option("-i", "--device", action="store",
type="string", dest="dev_id"),
@@ -24,13 +23,9 @@ parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

-if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
-else:
- adapter_path = manager.DefaultAdapter()
+adapter = testutils.find_adapter(options.dev_id)

-adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
- "org.bluez.Adapter")
+adapter_path = adapter.object_path

if (len(args) < 1):
print("Usage: %s <command>" % (sys.argv[0]))
diff --git a/test/test-discovery b/test/test-discovery
index e85ab60..0468009 100755
--- a/test/test-discovery
+++ b/test/test-discovery
@@ -7,6 +7,7 @@ from gi.repository import GObject
import dbus
import dbus.mainloop.glib
from optparse import OptionParser, make_option
+import testutils

compact = False
devices = {}
@@ -88,8 +89,6 @@ if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()
- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")

option_list = [
make_option("-i", "--device", action="store",
@@ -101,17 +100,11 @@ if __name__ == '__main__':

(options, args) = parser.parse_args()

- if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
- else:
- adapter_path = manager.DefaultAdapter()
+ adapter = testutils.find_adapter(options.dev_id)

if options.compact:
compact = True;

- adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
- "org.bluez.Adapter")
-
bus.add_signal_receiver(devices_found,
dbus_interface = "org.bluez.Adapter",
signal_name = "DevicesFound")
diff --git a/test/test-heartrate b/test/test-heartrate
index a7d05b4..b50b169 100755
--- a/test/test-heartrate
+++ b/test/test-heartrate
@@ -13,6 +13,7 @@ import dbus
import dbus.service
import dbus.mainloop.glib
from optparse import OptionParser, make_option
+import testutils

class Watcher(dbus.service.Object):
@dbus.service.method("org.bluez.HeartRateWatcher",
@@ -36,9 +37,6 @@ if __name__ == "__main__":

bus = dbus.SystemBus()

- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")
-
option_list = [
make_option("-i", "--adapter", action="store",
type="string", dest="adapter"),
@@ -56,14 +54,8 @@ if __name__ == "__main__":
print("\tReset")
sys.exit(1)

- if options.adapter:
- adapter_path = manager.FindAdapter(options.adapter)
- else:
- adapter_path = manager.DefaultAdapter()
-
- adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
- "org.bluez.Adapter")
-
+ adapter = testutils.find_adapter(options.adapter)
+ adapter_path = adapter.object_path
heartrateManager = dbus.Interface(bus.get_object("org.bluez",
adapter_path), "org.bluez.HeartRateManager")

diff --git a/test/test-manager b/test/test-manager
index 8a7e2f6..b3ecc6d 100755
--- a/test/test-manager
+++ b/test/test-manager
@@ -6,6 +6,7 @@ from gi.repository import GObject

import dbus
import dbus.mainloop.glib
+import testutils

def adapter_added(path):
print("Adapter with path %s added" % (path))
@@ -31,7 +32,7 @@ if __name__ == "__main__":
manager.connect_to_signal("DefaultAdapterChanged", default_changed)

try:
- path = manager.DefaultAdapter()
+ path = testutils.find_adapter().object_path
default_changed(path)
except:
pass
diff --git a/test/test-nap b/test/test-nap
index dc779ad..dd1c0b5 100755
--- a/test/test-nap
+++ b/test/test-nap
@@ -6,12 +6,10 @@ import sys
import time
import dbus
from optparse import OptionParser, make_option
+import testutils

bus = dbus.SystemBus()

-manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")
-
option_list = [
make_option("-i", "--device", action="store",
type="string", dest="dev_id"),
@@ -20,11 +18,7 @@ parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

-if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
-else:
- adapter_path = manager.DefaultAdapter()
-
+adapter_path = testutils.find_adapter(options.dev_id).object_path
server = dbus.Interface(bus.get_object("org.bluez", adapter_path),
"org.bluez.NetworkServer")

diff --git a/test/test-oob b/test/test-oob
index d44215f..1359bdd 100755
--- a/test/test-oob
+++ b/test/test-oob
@@ -5,6 +5,7 @@ from __future__ import absolute_import, print_function, unicode_literals
import gobject

import dbus.mainloop.glib
+import testutils

def create_device_reply(device):
print("Pairing succeed!")
@@ -20,19 +21,19 @@ if __name__ == '__main__':
mainloop = gobject.MainLoop()

bus = dbus.SystemBus()
- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")

- adapter0_path = manager.FindAdapter("hci0")
- adapter1_path = manager.FindAdapter("hci1")
+ managed_objects = testutils.get_managed_objects()
+ adapter0 = testutils.find_adapter_in_objects(managed_objects, "hci0")
+ adapter1 = testutils.find_adapter_in_objects(managed_objects, "hci1")

- adapter0 = dbus.Interface(bus.get_object("org.bluez", adapter0_path),
- "org.bluez.Adapter")
- adapter1 = dbus.Interface(bus.get_object("org.bluez", adapter1_path),
- "org.bluez.Adapter")
+ adapter0_path = adapter0.object_path
+ adapter1_path = adapter1.object_path
+
+ adapter0_address = managed_objects[adapter0_path][
+ testutils.ADAPTER_INTERFACE]["Address"]
+ adapter1_address = managed_objects[adapter1_path][
+ testutils.ADAPTER_INTERFACE]["Address"]

- adapter0_address = adapter0.GetProperties()["Address"]
- adapter1_address = adapter1.GetProperties()["Address"]
print("Adapters:")
print(" hci0: " + adapter0_address)
print(" hci1: " + adapter1_address)
diff --git a/test/test-proximity b/test/test-proximity
index b08a62a..a1e9460 100755
--- a/test/test-proximity
+++ b/test/test-proximity
@@ -12,6 +12,7 @@ import sys
import dbus
import dbus.mainloop.glib
from optparse import OptionParser, make_option
+import testutils

def property_changed(name, value):

@@ -23,9 +24,6 @@ if __name__ == "__main__":

bus = dbus.SystemBus()

- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")
-
option_list = [
make_option("-i", "--adapter", action="store",
type="string", dest="dev_id"),
@@ -37,13 +35,7 @@ if __name__ == "__main__":

(options, args) = parser.parse_args()

- if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
- else:
- adapter_path = manager.DefaultAdapter()
-
- adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
- "org.bluez.Adapter")
+ adapter = testutils.find_adapter(options.dev_id)

if (len(args) < 1):
print("Usage: %s <command>" % (sys.argv[0]))
diff --git a/test/test-service b/test/test-service
index 8eea9e2..16cfe5c 100755
--- a/test/test-service
+++ b/test/test-service
@@ -6,11 +6,10 @@ import sys
import dbus
import time
from optparse import OptionParser, make_option
+import testutils

bus = dbus.SystemBus()

-manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager")
-
option_list = [
make_option("-i", "--device", action="store",
type="string", dest="dev_id"),
@@ -19,10 +18,7 @@ parser = OptionParser(option_list=option_list)

(options, args) = parser.parse_args()

-if options.dev_id:
- adapter_path = manager.FindAdapter(options.dev_id)
-else:
- adapter_path = manager.DefaultAdapter()
+adapter_path = testutils.find_adapter(options.dev_id).object_path

service = dbus.Interface(bus.get_object("org.bluez", adapter_path),
"org.bluez.Service")
diff --git a/test/test-thermometer b/test/test-thermometer
index 2ca260f..b82c55a 100755
--- a/test/test-thermometer
+++ b/test/test-thermometer
@@ -13,6 +13,7 @@ import dbus
import dbus.service
import dbus.mainloop.glib
from optparse import OptionParser, make_option
+import testutils

class Watcher(dbus.service.Object):
@dbus.service.method("org.bluez.ThermometerWatcher",
@@ -38,9 +39,6 @@ if __name__ == "__main__":

bus = dbus.SystemBus()

- manager = dbus.Interface(bus.get_object("org.bluez", "/"),
- "org.bluez.Manager")
-
option_list = [
make_option("-i", "--adapter", action="store",
type="string", dest="adapter"),
@@ -58,14 +56,8 @@ if __name__ == "__main__":
print("\tEnableIntermediateMeasurement")
sys.exit(1)

- if options.adapter:
- adapter_path = manager.FindAdapter(options.adapter)
- else:
- adapter_path = manager.DefaultAdapter()
-
- adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
- "org.bluez.Adapter")
-
+ adapter = testutils.find_adapter(options.adapter)
+ adapter_path = adapter.object_path
thermometer_manager = dbus.Interface(bus.get_object("org.bluez",
adapter_path), "org.bluez.ThermometerManager")

--
1.7.11.7


2012-11-29 12:47:25

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 04/15] test: Update monitor script to ObjectManager

From: Mikel Astiz <[email protected]>

Make the script compatible with the new API provided by the
ObjectManager and Properties interfaces.
---
test/monitor-bluetooth | 68 +++++++++++++++++++++++---------------------------
1 file changed, 31 insertions(+), 37 deletions(-)

diff --git a/test/monitor-bluetooth b/test/monitor-bluetooth
index 4a598e1..45cc910 100755
--- a/test/monitor-bluetooth
+++ b/test/monitor-bluetooth
@@ -7,15 +7,28 @@ import gobject
import dbus
import dbus.mainloop.glib

-def property_changed(name, value, path, interface):
- iface = interface[interface.rfind(".") + 1:]
- val = str(value)
- print("{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val))
+relevant_ifaces = [ "org.bluez.Adapter", "org.bluez.Device" ]

-def object_signal(value, path, interface, member):
+def property_changed(interface, changed, invalidated, path):
iface = interface[interface.rfind(".") + 1:]
- val = str(value)
- print("{%s.%s} [%s] Path = %s" % (iface, member, path, val))
+ for name, value in changed.iteritems():
+ val = str(value)
+ print("{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name,
+ val))
+
+def interfaces_added(path, interfaces):
+ for iface, props in interfaces.iteritems():
+ if not(iface in relevant_ifaces):
+ continue
+ print("{Added %s} [%s]" % (iface, path))
+ for name, value in props.iteritems():
+ print(" %s = %s" % (name, value))
+
+def interfaces_removed(path, interfaces):
+ for iface in interfaces:
+ if not(iface in relevant_ifaces):
+ continue
+ print("{Removed %s} [%s]" % (iface, path))

if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
@@ -23,36 +36,17 @@ if __name__ == '__main__':
bus = dbus.SystemBus()

bus.add_signal_receiver(property_changed, bus_name="org.bluez",
- signal_name = "PropertyChanged",
- path_keyword="path",
- interface_keyword="interface")
-
- bus.add_signal_receiver(object_signal, bus_name="org.bluez",
- signal_name = "AdapterAdded",
- path_keyword="path",
- member_keyword="member",
- interface_keyword="interface")
- bus.add_signal_receiver(object_signal, bus_name="org.bluez",
- signal_name = "AdapterRemoved",
- path_keyword="path",
- member_keyword="member",
- interface_keyword="interface")
- bus.add_signal_receiver(object_signal, bus_name="org.bluez",
- signal_name = "DefaultAdapterChanged",
- path_keyword="path",
- member_keyword="member",
- interface_keyword="interface")
-
- bus.add_signal_receiver(object_signal, bus_name="org.bluez",
- signal_name = "DeviceCreated",
- path_keyword="path",
- member_keyword="member",
- interface_keyword="interface")
- bus.add_signal_receiver(object_signal, bus_name="org.bluez",
- signal_name = "DeviceRemoved",
- path_keyword="path",
- member_keyword="member",
- interface_keyword="interface")
+ dbus_interface="org.freedesktop.DBus.Properties",
+ signal_name="PropertiesChanged",
+ path_keyword="path")
+
+ bus.add_signal_receiver(interfaces_added, bus_name="org.bluez",
+ dbus_interface="org.freedesktop.DBus.ObjectManager",
+ signal_name="InterfacesAdded")
+
+ bus.add_signal_receiver(interfaces_removed, bus_name="org.bluez",
+ dbus_interface="org.freedesktop.DBus.ObjectManager",
+ signal_name="InterfacesRemoved")

mainloop = gobject.MainLoop()
mainloop.run()
--
1.7.11.7


2012-11-29 12:47:23

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 02/15] test: Add utility library for python scripts

From: Mikel Astiz <[email protected]>

Several convenience functions/features will be removed from BlueZ's
D-Bus API, and therefore a utility library is required to avoid
boilerplate code in the test scripts.
---
Makefile.tools | 3 +--
test/testutils.py | 25 +++++++++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)
create mode 100644 test/testutils.py

diff --git a/Makefile.tools b/Makefile.tools
index 689b4d2..5409432 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -1,4 +1,3 @@
-
if TOOLS
bin_PROGRAMS += tools/rfcomm tools/l2ping \
tools/hcitool tools/sdptool tools/ciptool
@@ -199,7 +198,7 @@ else
EXTRA_DIST += test/rctest.1 test/hciemu.1 test/bdaddr.8
endif

-EXTRA_DIST += test/sap_client.py test/hsplay test/hsmicro \
+EXTRA_DIST += test/sap_client.py test/hsplay test/hsmicro test/testutils.py \
test/dbusdef.py test/monitor-bluetooth test/list-devices \
test/test-discovery test/test-manager test/test-adapter \
test/test-device test/test-service test/simple-agent \
diff --git a/test/testutils.py b/test/testutils.py
new file mode 100644
index 0000000..a74ef35
--- /dev/null
+++ b/test/testutils.py
@@ -0,0 +1,25 @@
+import dbus
+
+SERVICE_NAME = "org.bluez"
+ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter"
+
+def get_managed_objects():
+ bus = dbus.SystemBus()
+ manager = dbus.Interface(bus.get_object("org.bluez", "/"),
+ "org.freedesktop.DBus.ObjectManager")
+ return manager.GetManagedObjects()
+
+def find_adapter(pattern=None):
+ return find_adapter_in_objects(get_managed_objects(), pattern)
+
+def find_adapter_in_objects(objects, pattern=None):
+ bus = dbus.SystemBus()
+ for path, ifaces in objects.iteritems():
+ adapter = ifaces.get(ADAPTER_INTERFACE)
+ if adapter == None:
+ continue
+ if (pattern == None or pattern == adapter["Address"] or
+ path.endswith(pattern)):
+ obj = bus.get_object(SERVICE_NAME, path)
+ return dbus.Interface(obj, ADAPTER_INTERFACE)
+ raise Exception("Bluetooth adapter not found")
--
1.7.11.7


2012-11-29 12:47:22

by Mikel Astiz

[permalink] [raw]
Subject: [RFC v2 01/15] cups: Remove unnecessary code

From: Mikel Astiz <[email protected]>

The adapter is always known so the code to handle the NULL case is not
needed.
---
profiles/cups/main.c | 22 ++--------------------
1 file changed, 2 insertions(+), 20 deletions(-)

diff --git a/profiles/cups/main.c b/profiles/cups/main.c
index 5aa927f..977c057 100644
--- a/profiles/cups/main.c
+++ b/profiles/cups/main.c
@@ -31,6 +31,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
+#include <assert.h>
#include <signal.h>
#include <sys/socket.h>
#include <glib.h>
@@ -338,26 +339,7 @@ static void remote_device_found(const char *adapter, const char *bdaddr,

adapter_reply = NULL;

- if (adapter == NULL) {
- message = dbus_message_new_method_call("org.bluez", "/",
- "org.bluez.Manager",
- "DefaultAdapter");
-
- adapter_reply = dbus_connection_send_with_reply_and_block(conn,
- message, -1, NULL);
-
- dbus_message_unref(message);
-
- if (!adapter_reply)
- return;
-
- if (dbus_message_get_args(adapter_reply, NULL,
- DBUS_TYPE_OBJECT_PATH, &adapter,
- DBUS_TYPE_INVALID) == FALSE) {
- dbus_message_unref(adapter_reply);
- return;
- }
- }
+ assert(adapter != NULL);

message = dbus_message_new_method_call("org.bluez", adapter,
"org.bluez.Adapter",
--
1.7.11.7