2011/12/16

[libnfc]Diagnoseは実行されていなかった

DEPがうまくいかんので、まずは素の状態でInJumpForDEPとTgInitAsTargetを実行させて確認しようと考えた。
libnfcを読んでいって、どこに何があるかを調べていくよりも、RC-S956コマンドを実行させて確認した方がシンプルでわかりやすい。

 

そんなわけで、久々に自作ライブラリを動かした。
Android版はFeliCa Liteの片側認証などの発行を重視した作りになっているが、Linux版はR/Wコマンドを重視している。
DEP関係のI/Fも実装して動いた記憶はあるのだが、当時は「DEPコマンドでやりとりできる」ということしか考慮していなかったので、DEPモードになっていたような覚えはない。
そのI/Fをいじくって、DEP確認をしよう。


と思ったが、ライブラリの使い方を忘れたので、libnfcに出ているコマンドをいくつか実装しようと思った。
まずは、R/W自動認識で使っているように見えるDiagnoseコマンドだ。
このコマンドは、PN533によるといくつかのサブコマンドが使えて、それによってテストができるようなのだ。
自動認識では、エコーバックする0x00コマンドが使われているようだった。

libnfcでRC-S370を動かしたとき、この戻り値がPN533と違っていたのだ。
PN533では、戻り値はサブコマンドとエコーバックなのだが、RC-S370はエコーバックのみだったのだ。
気になるので、試しておきたい。

しかし・・・実装して送信しても、ACKは返ってくるがアプリケーションエラーが返ってくる。
シンタックスエラーらしいが、コマンド仕様がないので何が悪いかわからん。

いろいろ試したが、戻ってこない。
では、libnfcで返ってきているのは何なのだ・・・。

 

と、libnfc時代のログを見てみると、いつもの「0x00 0xff・・・」みたいな出力ではなく、なんか「0x55 0x55・・・」のような出力になっている。
なんだこのデータは?

ソースを見ると、PN533のUARTで相手を起こすときのプリアンブルらしい。
当然、RC-S956はそんなの知らないから無応答。
追ってないけど、そこでエラーにはならずに、送信バッファの文字列がうまいこと見えるんだか重なるんだかして、エコーバックしたように見えたのではなかろうか。

ともかく、RC-S956のDiagnoseコマンドはPN533とはフォーマットが異なりそうだ、というくらいにしておこう。

0 件のコメント:

コメントを投稿

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