@@ -2069,6 +2069,10 @@ Interface for performing P2P (Wi-Fi Peer-to-Peer) P2P Device operations.
<li>
<h3>PersistentGroups - ao - (read)</h3>
</li>
+
+ <li>
+ <h3>DeviceAddress - ay - (read)</h3>
+ </li>
</ul>
\subsection dbus_p2pdevice_signals Signals
@@ -62,6 +62,18 @@ def prepare_dbus(dev):
except Exception as e:
raise HwsimSkip("Could not connect to D-Bus: %s" % e)
+def assert_dev_addr(p2p, expected):
+ property = p2p.Get(WPAS_DBUS_IFACE_P2PDEVICE, "DeviceAddress",
+ dbus_interface=dbus.PROPERTIES_IFACE)
+ dev_addr_str = ''
+ for item in property:
+ if len(dev_addr_str) > 0:
+ dev_addr_str += ':'
+ dev_addr_str += '%02x' % item
+
+ if expected != dev_addr_str:
+ raise Exception("Expected device addr to be %s, got %s" % (expected, dev_addr_str))
+
class TestDbus(object):
def __init__(self, bus):
self.loop = gobject.MainLoop()
@@ -3195,6 +3207,7 @@ def run_dbus_p2p_discovery(dev, apdev):
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
+ assert_dev_addr(p2p, addr0);
dev[1].request("SET sec_device_type 1-0050F204-2")
dev[1].request("VENDOR_ELEM_ADD 1 dd0c0050f2041049000411223344")
@@ -5075,6 +5088,7 @@ def test_dbus_p2p_wps_failure(dev, apdev):
(bus, wpas_obj, path, if_obj) = prepare_dbus(dev[0])
p2p = dbus.Interface(if_obj, WPAS_DBUS_IFACE_P2PDEVICE)
addr0 = dev[0].p2p_dev_addr()
+ assert_dev_addr(p2p, addr0);
class TestDbusP2p(TestDbus):
def __init__(self, bus):
@@ -5156,6 +5170,8 @@ def test_dbus_p2p_two_groups(dev, apdev):
addr2 = dev[2].p2p_dev_addr()
dev[1].p2p_start_go(freq=2412)
+ assert_dev_addr(p2p, addr0);
+
class TestDbusP2p(TestDbus):
def __init__(self, bus):
TestDbus.__init__(self, bus)
@@ -5341,6 +5357,8 @@ def test_dbus_p2p_cancel(dev, apdev):
pass
addr0 = dev[0].p2p_dev_addr()
+ assert_dev_addr(p2p, addr0);
+
dev[1].p2p_listen()
class TestDbusP2p(TestDbus):
@@ -4055,6 +4055,11 @@ static const struct wpa_dbus_property_desc wpas_dbus_interface_properties[] = {
wpas_dbus_setter_p2p_device_config,
NULL
},
+ { "DeviceAddress", WPAS_DBUS_NEW_IFACE_P2PDEVICE, "ay",
+ wpas_dbus_getter_p2p_device_address,
+ NULL,
+ NULL
+ },
{ "Peers", WPAS_DBUS_NEW_IFACE_P2PDEVICE, "ao",
wpas_dbus_getter_p2p_peers,
NULL,
@@ -1455,6 +1455,21 @@ dbus_bool_t wpas_dbus_getter_p2p_peergo(
&path, error);
}
+dbus_bool_t wpas_dbus_getter_p2p_device_address(
+ const struct wpa_dbus_property_desc *property_desc,
+ DBusMessageIter *iter, DBusError *error, void *user_data)
+{
+ struct wpa_supplicant *wpa_s = user_data;
+
+ if (!wpa_dbus_p2p_check_enabled(wpa_s, NULL, NULL, error))
+ return FALSE;
+
+ wpa_s = wpa_s->global->p2p_init_wpa_s;
+
+ return wpas_dbus_simple_array_property_getter(
+ iter, DBUS_TYPE_BYTE, (char *) wpa_s->own_addr,
+ ETH_ALEN, error);
+}
/*
* Peer object properties accessor methods
@@ -95,6 +95,7 @@ DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peers);
DECLARE_ACCESSOR(wpas_dbus_getter_p2p_role);
DECLARE_ACCESSOR(wpas_dbus_getter_p2p_group);
DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peergo);
+DECLARE_ACCESSOR(wpas_dbus_getter_p2p_device_address);
/*
* P2P Peer properties.