OSDN Git Service

Add Broadcaster property in DeviceFound signal
authorSheldon Demario <sheldon.demario@openbossa.org>
Thu, 23 Dec 2010 21:33:07 +0000 (16:33 -0500)
committerJohan Hedberg <johan.hedberg@nokia.com>
Thu, 23 Dec 2010 22:38:27 +0000 (00:38 +0200)
Broadcaster property is required to distinguish the device role. If the
remote is sending an advertising event, two possible roles are possible:
Peripheral or Broadcaster.

This change is required to pass on qualification tests which require
filtering Broadcasting devices during General Discovery Procedure.

doc/adapter-api.txt
src/adapter.c

index f287f29..5272d74 100644 (file)
@@ -185,7 +185,8 @@ Signals             PropertyChanged(string name, variant value)
                        The dictionary can contain basically the same values
                        that are returned by the GetProperties method
                        from the org.bluez.Device interface. In addition there
-                       can be values for the RSSI and the TX power level.
+                       can be values for the RSSI, the TX power level and
+                       Broadcaster role.
 
                DeviceDisappeared(string address)
 
index bf92211..fddf0ad 100644 (file)
@@ -2829,12 +2829,20 @@ void adapter_emit_device_found(struct btd_adapter *adapter,
        }
 
        if (dev->le) {
+               gboolean broadcaster;
+
+               if (dev->flags & (EIR_LIM_DISC | EIR_GEN_DISC))
+                       broadcaster = FALSE;
+               else
+                       broadcaster = TRUE;
+
                emit_device_found(adapter->path, paddr,
                                "Address", DBUS_TYPE_STRING, &paddr,
                                "RSSI", DBUS_TYPE_INT16, &rssi,
                                "Name", DBUS_TYPE_STRING, &dev->name,
                                "Paired", DBUS_TYPE_BOOLEAN, &paired,
                                "UUIDs", DBUS_TYPE_ARRAY, &dev->uuids,
+                               "Broadcaster", DBUS_TYPE_BOOLEAN, &broadcaster,
                                dev->uuid_count, NULL);
                return;
        }