1252190Srpaulo#!/usr/bin/python
2252190Srpaulo
3346981Scyfrom __future__ import print_function
4252190Srpauloimport dbus
5252190Srpauloimport sys
6252190Srpauloimport time
7252190Srpauloimport gobject
8252190Srpaulofrom dbus.mainloop.glib import DBusGMainLoop
9252190Srpaulo
10252190SrpauloWPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
11252190SrpauloWPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
12252190SrpauloWPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
13252190SrpauloWPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
14252190Srpaulo
15252190Srpaulodef usage():
16346981Scy	print("Usage: %s <ifname>" % sys.argv[0])
17346981Scy	print("Press Ctrl-C to stop")
18252190Srpaulo
19252190Srpaulodef ProbeRequest(args):
20252190Srpaulo	if 'addr' in args:
21346981Scy		print('%.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['addr']),
22346981Scy                      end=' ')
23252190Srpaulo	if 'dst' in args:
24346981Scy		print('-> %.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['dst']),
25346981Scy                      end=' ')
26252190Srpaulo	if 'bssid' in args:
27346981Scy		print('(bssid %.2x:%.2x:%.2x:%.2x:%.2x:%.2x)' % tuple(args['dst']),
28346981Scy                      end=' ')
29252190Srpaulo	if 'signal' in args:
30346981Scy		print('signal:%d' % args['signal'], end=' ')
31252190Srpaulo	if 'ies' in args:
32346981Scy		print('have IEs (%d bytes)' % len(args['ies']), end=' ')
33346981Scy        print('')
34252190Srpaulo
35252190Srpauloif __name__ == "__main__":
36252190Srpaulo	global bus
37252190Srpaulo	global wpas_obj
38252190Srpaulo	global if_obj
39252190Srpaulo	global p2p_iface
40252190Srpaulo
41252190Srpaulo	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
42252190Srpaulo
43252190Srpaulo	bus = dbus.SystemBus()
44252190Srpaulo	wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
45252190Srpaulo
46252190Srpaulo	# Print list of i/f if no one is specified
47252190Srpaulo	if (len(sys.argv) < 2)  :
48252190Srpaulo		usage()
49252190Srpaulo		sys.exit(0)
50252190Srpaulo
51252190Srpaulo	wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
52252190Srpaulo
53252190Srpaulo	ifname = sys.argv[1]
54252190Srpaulo
55252190Srpaulo	path = wpas.GetInterface(ifname)
56252190Srpaulo
57252190Srpaulo	if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
58252190Srpaulo	iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
59252190Srpaulo
60252190Srpaulo	bus.add_signal_receiver(ProbeRequest,
61252190Srpaulo				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
62252190Srpaulo				signal_name="ProbeRequest")
63252190Srpaulo
64252190Srpaulo	iface.SubscribeProbeReq()
65252190Srpaulo
66252190Srpaulo	gobject.MainLoop().run()
67