2011/12/11

[libnfc]DEPできてない

libnfcでpollingができたのでlibnfc-llcpでLLCPしようとしていたのだが、それは早まりすぎだ。
まずはlibnfcでDEPだけがちゃんとできることを確認せねば。

[ターゲット側]
$ nfc-dep-target
Connected to NFC device: PN532 (/dev/ttyUSB0) - PN533 v1.48 (0x07)
NFC device will now act as: D.E.P. (undefined baud rate) target:
       NFCID3: 12  34  56  78  9a  bc  de  ff  00  00 
           BS: 00
           BR: 00
           TO: 00
           PP: 01
General Bytes: 12  34  56  78 
Waiting for initiator request...

[イニシエータ側]
$ nfc-dep-initiator
Connected to NFC device: Sony / RC-S370/P - PN533 v1.48 (0x07)
D.E.P. (212 kbps) target:
       NFCID3: 12  34  56  78  9a  bc  de  ff  00  00 
           BS: 00
           BR: 00
           TO: 0e
           PP: 32
General Bytes: 12  34  56  78 
Sending: Hello World!

・・・反応なし。
P906iを近づけるとLEDが光るので、搬送波はちゃんと出ているようだ。
どのレベルでかはわからないが、DEPできていないようだ。


ログをとりながら調べていこうとしたのだが、PCDの自動検索が邪魔をして、2台接続での確認が難しい。
まずは指定したデバイスを使用するようなlibnfcに仕立てる方が先だ。

nfc_connect()の引数がNULLだと検索し、そうでない場合は引数のデータを使って接続するようだ。
引数の型はnfc_device_desc_t。
めんどくさいので、自動検索した結果を利用することにしよう。

acDevice   : PN532 (/dev/ttyUSB0)
pcDriver    : PN532_UART
acPort     : /dev/ttyUSB0
uiSpeed    : 115200
uiBusIndex : 32767

 

acDevice   : Sony / RC-S370/P
pcDriver    : PN53x USB
acPort     :
uiSpeed    : 0
uiBusIndex : 3

UARTの方はいいのだが、USBはuiBusIndexが挿すところによって変わってくるな・・・。
USBだけは探すようにした方がよさそうだ。


ログを見ていくと、targetはTgInitAsTargetを、initiatorはInJumpForDEPをしている。
initiatorはtargetを212KbpsのDEPだ、と認識しているようだ。これは意図通り。
targetはinitiatorを212KbpsのFeliCaだ、と認識しているようだ。これは意図通りではない。

TgInitAsTargetのModeが、どのデータを参照しているのかがわかっていない。
212Kbps、というのは実際に無線通信した結果なのだろう。
では、DEPビットとかFeliCa/MIFAREビットはどうやってみているのか。
FeliCa/MIFAREは、SYNCコードなんかでわかりそうだ。

しかし、NFC-DEPはNFC-AかNFC-Fのフレームとしてやってくる。
だから無線だけではDEPかどうかわからんと思うのだ。
プロトコル解析が必要になってくると思う。
ATR_REQをパラメータとして受け取っているのだが、それだけではだめということか。

InJumpForDEPがどうやってDEPかどうか見分けているかというと・・・戻り値が来たかどうか。
DEPのためのコマンドだから、それがエラーにならず応答したらDEPだ、という考え方のようだ。

どうしてもちらつくのが「RC-S956ではパラメータのフォーマットが違うのでは」という思いだ。
試しに、TgInitAsTargetの戻りがATR_REQだった場合は、無理矢理DEPとみなすようにした。
そしたら、一応終了した。そらそうだな。

うーん、これからどう進めたものか・・・。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。