RC-S620/Sのコマンドリファレンスマニュアルによると、ターゲットになるコマンドTgInitTargetで動作が可能なのは、以下の6パターンと書かれている。
- Passive communication mode ISO/IEC 18092 106kbps - DEP
- Passive communication mode ISO/IEC 18092 212kbps - DEP
- Passive communication mode ISO/IEC 18092 424kbps - DEP
- Active communication mode ISO/IEC 18092 106kbps - DEP
- Active communication mode ISO/IEC 18092 212kbps - DEP
- Active communication mode ISO/IEC 18092 424kbps - DEP
まだDEPの実装は終わってないが、動作確認だけすることにした。
結果として、全部動作することが確認できた。
って、ハードの単体テストかよ。。。
いやいや、各動作でのログを残しておきたかったのだ。
NFCのデバッグをするとき、ログしか追えるものがないからだ。
つまずいたのが1箇所。
106kbpsのPassiveが、最初はうまくできなかったのだ。
コマンドリファレンスマニュアルをよく読むと、「9 留意事項」にいろいろと重要なことが書かれていた。
いや、書かれていたのは知っていたのだが、気にしてなかったのだ。
- まず、ターゲットになる前に、通信性能向上のための呪文を唱える。
- そのあとでTgInitTargetコマンドを発行して、イニシエータを待つ。
- イニシエータがATR_REQを投げると、TgInitTargetから戻ってくる。
- このとき、通信速度とActive/Passiveが渡されるので確認
- 106kbpsなら、通信性能向上解除の呪文を唱える
- 106kbps Passiveなら、さらに呪文を唱える
この4番をやってなかったのだ。
理由は、めんどくさいから。。
だって、これをやるためには、
- fAutomaticATR_RES=0にする→SetParametersコマンドの処理がいる
- 呪文の処理がいる→WriteParameterコマンドの処理がいる
- ATR_RESを手動で返す→TgSetGeneralBytesコマンドの処理がいる
と、3つも増えるのだ。
ああ、しゃーらしい!
けど、全部やると、ちゃんと動いた。
やらんと動かんから書いてあるのだから、ドキュメントはちゃんと読め、と思った。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。