nfcpyをtarget、自作SNEPをinitiatorにして、自分からSNEP PUTさせた。
週末の作業はこれでおしまい。
1: $ python snep-test-server.py -d nfc.llcp --mode=initiator 2: enable debug output for module 'nfc.llcp' 3: searching for a usable reader 4: searching for a usb bus reader 5: path match for 'usb' (or no path given) 6: trying usb:bus-0:\\.\libusb0-0001--0x054c-0x02e1 7: import nfc.dev.rcs956_usb 8: chipset is a PN533 version 1.48 9: using Sony RC-S370/P at usb:bus-0:\\.\libusb0-0001--0x054c-0x02e1 10: activated a p2p target in 424 kbps active mode 11: llc cfg {'recv-lto': 2000, 'send-miu': 128, 'send-agf': True, 'send-lto': 1000, 'send-lsc': 2, 'recv-miu': 1024, 'send-wks': 17, 'rcvd-ver': (1, 0)} 12: LLCP Link established, I'm the DEP Initiator 13: Local LLCP Settings 14: LLCP Version: 1.1 15: Link Timeout: 1000 ms 16: Max Inf Unit: 1024 octet 17: Service List: 0000000000010011 18: Remote LLCP Settings 19: LLCP Version: 1.0 20: Link Timeout: 2000 ms 21: Max Inf Unit: 128 octet 22: Service List: 0000000000010001 23: snep server bound to port 4 24: snep server bound to port 1625: SEND 0 -> 0 SYMM
26: RECV 4 -> 1 CONN MIU=128 RW=1 SN=urn:nfc:sn:snep
27: DLC (4,None) LISTEN enqueue CONNECT PDU 28: accepting CONNECT from SAP 4 29: DLC (4,None) LISTEN dequeue CC PDU30: SEND 4 -> 4 CC MIU=128 RW=2
31: new data link connection (4 <=== 4)
32: serving snep client on remote sap 433: RECV 4 -> 4 I N(S)=0 N(R)=0 LEN=17 SDU=10020000000bd101045402656e75656e6f
34: DLC (4,4) ESTABLISHED enqueue I PDU 35: default snep server got put request 36: ndef message length is 11 octets37: DLC (4,4) ESTABLISHED voluntary ack DLC 4 <-> 4 ESTABLISHED RW(R)=1 V(S)=0 V(SA)=0 RW(L)=2 V(R)=1 V(RA)=0
38: type is 'urn:nfc:wkt:T', id is ''39: DLC (4,4) ESTABLISHED send() DLC 4 <-> 4 ESTABLISHED RW(R)=1 V(S)=0 V(SA)=0 RW(L)=2 V(R)=1 V(RA)=1
40: SEND 4 -> 4 RR N(R)=1
41: RECV 4 -> 4 RR N(R)=0
42: DLC (4,4) ESTABLISHED enqueue RR PDU 43: DLC (4,4) ESTABLISHED dequeue I PDU44: SEND 4 -> 4 I N(S)=0 N(R)=1 LEN=6 SDU=108100000000
45: RECV 4 -> 4 DISC
46: DLC (4,4) ESTABLISHED enqueue DISC PDU 47: DLC (4,4) CLOSE_WAIT dequeue DM PDU 48: DLC (4,4) CLOSE_WAIT close()49: SEND 4 -> 4 DM REASON=0
50: DLC (4,4) SHUTDOWN close()51: in exchange => IOError [Errno 10] rf field not activated in time by active mode peer
52: shutdown on link disruption 53: closing service access point 1654: shutdown socket DLC 16 <-> None LISTEN RW(R)=None V(S)=0 V(SA)=0 RW(L)=2 V(R)=0 V(RA)=0
55: DLC (None,None) LISTEN close() 56: closing service access point 4 57: nfc.llcp.Error: [EPIPE] Broken pipe58: shutdown socket DLC 4 <-> None LISTEN RW(R)=None V(S)=0 V(SA)=0 RW(L)=2 V(R)=0 V(RA)=0
59: DLC (None,None) SHUTDOWN close() 60: DLC (None,None) LISTEN close() 61: closing service access point 1 62: nfc.llcp.Error: [EPIPE] Broken pipe 63: closing service access point 0 64: DLC (None,None) SHUTDOWN close() 65: llc run thread terminated 66: shutdown requested 67: I was the Initiatorまあ、ここに至るまでに何度か失敗しているのだけど、それはいいとしよう。
nfcpyが、終わっても搬送波を出しっ放しになるのが気にくわない。
何か処理が足りてないのだろうか?
エラーっぽいのは、L.51で「搬送波が出てないぞ-」っていわれているところくらいだ。
Active communication modeでやってるからだろうか?
1: activated as p2p target in 424 kbps passive mode 2: llc cfg {'recv-lto': 2000, 'send-miu': 128, 'send-agf': True, 'send-lto': 1000, 'send-lsc': 2, 'recv-miu': 1024, 'send-wks': 19, 'rcvd-ver': (1, 0)} 3: LLCP Link established, I'm the DEP Target 4: Local LLCP Settings 5: LLCP Version: 1.1 6: Link Timeout: 1000 ms 7: Max Inf Unit: 1024 octet 8: Service List: 0000000000010011 9: Remote LLCP Settings 10: LLCP Version: 1.0 11: Link Timeout: 2000 ms 12: Max Inf Unit: 128 octet 13: Service List: 0000000000010011 14: snep server bound to port 4 15: snep server bound to port 1616: RECV 4 -> 1 CONN MIU=128 RW=1 SN=urn:nfc:sn:snep
17: DLC (4,None) LISTEN enqueue CONNECT PDU 18: accepting CONNECT from SAP 4 19: DLC (4,None) LISTEN dequeue CC PDU20: new data link connection (4 <=== 4)
21: SEND 4 -> 4 CC MIU=128 RW=2
22: serving snep client on remote sap 423: RECV 4 -> 4 I N(S)=0 N(R)=0 LEN=21 SDU=10020000000fd101085402656e6869726f39396d61
24: DLC (4,4) ESTABLISHED enqueue I PDU 25: default snep server got put request 26: ndef message length is 15 octets27: DLC (4,4) ESTABLISHED voluntary ack DLC 4 <-> 4 ESTABLISHED RW(R)=1 V(S)=0 V(SA)=0 RW(L)=2 V(R)=1 V(RA)=0
28: type is 'urn:nfc:wkt:T', id is ''29: SEND 4 -> 4 RR N(R)=1
30: DLC (4,4) ESTABLISHED send() DLC 4 <-> 4 ESTABLISHED RW(R)=1 V(S)=0 V(SA)=0 RW(L)=2 V(R)=1 V(RA)=1
31: RECV 4 -> 4 RR N(R)=0
32: DLC (4,4) ESTABLISHED enqueue RR PDU 33: DLC (4,4) ESTABLISHED dequeue I PDU34: SEND 4 -> 4 I N(S)=0 N(R)=1 LEN=6 SDU=108100000000
35: RECV 4 -> 4 DISC
36: DLC (4,4) ESTABLISHED enqueue DISC PDU 37: DLC (4,4) CLOSE_WAIT dequeue DM PDU 38: DLC (4,4) CLOSE_WAIT close()39: SEND 4 -> 4 DM REASON=0
40: DLC (4,4) SHUTDOWN close() 41: libusb0-dll:err [_usb_reap_async] timeout error 42: 43: send_response: IOError no response from pn53x 44: shutdown on link disruption 45: closing service access point 1646: shutdown socket DLC 16 <-> None LISTEN RW(R)=None V(S)=0 V(SA)=0 RW(L)=2 V(R)=0 V(RA)=0
47: DLC (None,None) LISTEN close() 48: closing service access point 4 49: nfc.llcp.Error: [EPIPE] Broken pipe50: shutdown socket DLC 4 <-> None LISTEN RW(R)=None V(S)=0 V(SA)=0 RW(L)=2 V(R)=0 V(RA)=0
51: DLC (None,None) SHUTDOWN close() 52: DLC (None,None) LISTEN close() 53: closing service access point 1 54: nfc.llcp.Error: [EPIPE] Broken pipe 55: closing service access point 0 56: DLC (None,None) SHUTDOWN close() 57: llc run thread terminated 58: shutdown requested 59: I was the Targetこれはこれで終わるんだけど、もう1回実行するとR/Wがアプリケーションレベルのエラーを返している。
RC-S956にはResetというコマンドがあって、それを実行すると状態が初期化される。
それを実行してやれば直りそうなんだけどなぁ。
最初のRFConfigurationで怒られてるからその前にResetすればよさそうなのだけど、pn53xのコンストラクタで呼び出して、そのあとrcs956のコンストラクタに戻ってくるようになってるみたい。
Resetコマンドはpn53xには存在しないから投げるようにはできていない。
コンストラクタでこけるから、そのあとに進めない。
でも、見た感じだとrcs956のclose()でResetしてるようだから、それが呼び出せていないだけかもしれん。
ごにょごにょと書いたが、nfcpyを動かそうとしているわけじゃないので、深入りしない。
自作SNEP/LLCPの実装が間違っているという可能性も十分ある。
だから、別の環境でも動かしてみたいのよねぇ。
環境というのは、nfcpyじゃなくて、ということ。
まあ、今度考えよう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。