From dab710c4d0cb4bd1865fed5545ce2fa64fe924fb Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sun, 4 Nov 2012 15:56:46 +0200 Subject: [PATCH] WPS: Move NFC tag processing into a separate function This makes it cleaner to add processing of other NFC operations to the python script. Signed-hostap: Jouni Malinen --- wpa_supplicant/examples/wps-nfc.py | 51 +++++++++++++++++------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/wpa_supplicant/examples/wps-nfc.py b/wpa_supplicant/examples/wps-nfc.py index 39c206f18..634ea6b49 100755 --- a/wpa_supplicant/examples/wps-nfc.py +++ b/wpa_supplicant/examples/wps-nfc.py @@ -46,6 +46,26 @@ def wpas_tag_read(message): return print wpas.request("WPS_NFC_TAG_READ " + message.encode("hex")) + +def wps_tag_read(tag): + if len(tag.ndef.message): + message = nfc.ndef.Message(tag.ndef.message) + print "message type " + message.type + + for record in message: + print "record type " + record.type + if record.type == "application/vnd.wfa.wsc": + print "WPS tag - send to wpa_supplicant" + wpas_tag_read(tag.ndef.message) + break + else: + print "Empty tag" + + print "Remove tag" + while tag.is_present: + time.sleep(0.1) + + def main(): clf = nfc.ContactlessFrontend() @@ -55,31 +75,18 @@ def main(): while True: tag = clf.poll() - if tag and tag.ndef: + if tag == None: + continue + + if tag.ndef: + wps_tag_read(tag) break + if tag: - print "Not an NDEF tag" + print "Not an NDEF tag - remove tag" while tag.is_present: - time.sleep(0.2) - - if len(tag.ndef.message): - message = nfc.ndef.Message(tag.ndef.message) - print "message type " + message.type - - for record in message: - print "record type " + record.type - if record.type == "application/vnd.wfa.wsc": - print "WPS tag - send to wpa_supplicant" - wpas_tag_read(tag.ndef.message) - break - else: - print "Empty tag" - - print "Remove tag" - while tag.is_present: - time.sleep(0.2) - - print "Ok" + time.sleep(0.1) + break except KeyboardInterrupt: raise SystemExit