2012/08/03

[nfc]ログ解析はなかなか楽しい

「今日のパントは『ログ解析』! 面白そう!」
というわけで、NFCでなんか実装したときの動作確認は、ログ解析になる。
実装するときは、まずPC上でプロトコルの流れがちゃんとできているかどうかを確認し、最後に実機へ移植するような手順にしている。
いきなり実機で試すのは、準備運動無しで海に飛び込むようなものだ。

問題1:
次のログ解析をしなさい(RC-S620/S)。
[W]はRC-S620/Sが送信するログ、[R]は受信したログ。
また、受信ログはACKを省略し、実データのみを表示させている。
------------
[W]00
[W]00
[W]ff
[W]03
[W]fd
[W]d4
[W]18
[W]01
[W]13
[W]00
------------
------------
[R]d5
[R]19
------------


回答:
初級問題です。
送信データから解析してもいいですが、受信データを先に見た方が早いでしょう。
「d5 19」ということは、送信データは「d4 18」になります。
それをキーワードにして送信データを見ると、「d4 18」が出てくるのがわかります。
送信データサイズは、通常d4の2つ前に載っているので、ここでは3byte。
つまり「d4 18 01」を送信していることになります。
0x18はResetコマンド。0x01はよくわからんけど、コマンドリファレンスマニュアルで指定された値、ということがわかります。

問題2:
------------
[W]00
[W]00
[W]ff
[W]35
[W]cb
[W]d4
[W]8c
[W]02
[W]00
[W]04
[W]2d
[W]cf
[W]46
[W]40
[W]01
[W]fe
[W]29
[W]04
[W]b4
[W]78
[W]d8
[W]68
[W]ff
[W]ff
[W]ff
[W]ff
[W]ff
[W]ff
[W]ff
[W]ff
[W]ff
[W]ff
[W]01
[W]fe
[W]29
[W]04
[W]b4
[W]78
[W]d8
[W]68
[W]00
[W]00
[W]46
[W]66
[W]6d
[W]01
[W]01
[W]10
[W]03
[W]02
[W]00
[W]11
[W]04
[W]01
[W]c8
[W]07
[W]01
[W]02
[W]da
[W]00
------------
------------
[R]d5
[R]8d
[R]21
[R]25
[R]d4
[R]00
[R]01
[R]fe
[R]33
[R]6a
[R]3e
[R]f0
[R]f5
[R]50
[R]ac
[R]10
[R]00
[R]00
[R]00
[R]32
[R]46
[R]66
[R]6d
[R]01
[R]01
[R]11
[R]02
[R]02
[R]03
[R]80
[R]03
[R]02
[R]00
[R]13
[R]04
[R]01
[R]64
[R]07
[R]01
[R]03
------------


回答:
長いですね。
長いのは、CommunicateThruEXか、TgInitTargetかのどっちかであることが多いです。
送信データの最初から「d4」を探していくと「d4 8c」が見つかります。
0x8Cといえば、TgInitTargetですね。
よく使うコマンドは、いちいち調べるのがめんどくさくなるので、覚えておくとよいでしょう(18, 32, 4a, 8c, a0くらい?)。

さて、これはLLCPの開始ログです。
ここにある受信データから読み取ることができるのは、こんな情報です。
  • 424kbps Active communication mode
  • LLCP VERSION : 1.1
  • LLCP MIUX指定あり
  • LLCP WKS : SNEPあり
  • LLCP LTO : 1000msec
  • LLCP OPT(LSC) : Class 3(Contactless / Connection-oriented)
これを読み取るには、RC-S620/Sのコマンドリファレンスマニュアルだけでなく、NFC ForumのLLCPドキュメントに目を通す必要があります。
また、NFC-DEPでもあるので、DigitalProtocolも読んだ方がいいでしょう。

おまけ:
SNEPでNDEFをPUTするのは、こんなデータ。
RTD-Textで「ueno」って送ってます。
------------
[W]00
[W]00
[W]ff
[W]16
[W]ea
[W]d4
[W]8e    //TgSetDEPData
[W]13    //DSAP=4, SSAP=4, I
[W]04
[W]00    //N(S)=0, N(R)=0
[W]10        //SNEP 1.0
[W]02        //PUT
[W]00        //0x0000000b=11byte
[W]00
[W]00
[W]0b
[W]d1        //[0]MB=1, ME=1, SR=1, TNF=Well-Known
[W]01        //[1]
[W]04        //[2]len=4
[W]54        //[3]'T'
[W]02        //[4]UTF-8
[W]65        //[5]'en'
[W]6e        //[6]
[W]75        //[7]    u
[W]65        //[8]    e
[W]6e        //[9]    n
[W]6f        //[10]   o
[W]b4
[W]00
------------


こういうのをやってるから、胃潰瘍の疑いをかけられて胃カメラを飲まされたのでは?という気がしてくるが、そういうのは忘れておこう。


0 件のコメント:

コメントを投稿

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