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()
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")
(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):
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)
pass
addr0 = dev[0].p2p_dev_addr()
+ assert_dev_addr(p2p, addr0);
+
dev[1].p2p_listen()
class TestDbusP2p(TestDbus):
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,
&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