2011/12/03

[llcp]llcp_test_client

nfc-tools/libnfc-llcp/toolsの下に、llcp_test_clientというものがある。
READMEを見ると、テスト用っぽい。

何が動くのかわからんが、やってみよう。


$ tools/llcp-test-client/llcp-test-client -T
Available tests:
  1 - Link activation, symmetry and desactivation
  2 - Connectionless information transfer
  3 - Connected information transfer
  4 - Connected information transfer (using SN)

$ tools/llcp-test-client/llcp-test-client -t1
[stderr] 20111203 01:24:03.810 ALERT    libnfc-llcp.mac.link- mac_link_activate() will behave inconsistently
[stderr] 20111203 01:24:03.810 INFO     libnfc-llcp.mac.link- (Sony / RC-S370/P - PN533 v1.48 (0x07)) Attempting to activate LLCP Link as initiator
[stderr] 20111203 01:24:03.834 DEBUG    libnfc-llcp.mac.link- (Sony / RC-S370/P - PN533 v1.48 (0x07)) nfc_initiator_init() succeeded
[stderr] 20111203 01:24:04.185 INFO     libnfc-llcp.mac.link- (Sony / RC-S370/P - PN533 v1.48 (0x07)) nfc_initiator_select_dep_target() failed
REASON: Timeout
lt-llcp-test-client: Cannot activate link


最初のALERTは、動作モードがinitiatorなのかtargetなのかを指定していないので出ている。
その場合、initiatorで初期化してみて、だめだったらtargetで初期化している。
ここではinitiatorでの初期化に成功したので「as initiator」となっている。
<訂正>
違った。
initiatorで初期化して失敗したらエラーを返す。
成功したらtargetで初期化して、失敗したらエラーを返す。
成功したら、エラーを返す。
って、エラーにしかならんやん。。。
なんか意図が違っているように思えるので、ソースを変更した。
コマンドの引数で、--mode=initiator、みたいにするのが正しいのだろうな。

 

次に失敗しているのは、携帯電話を載せたからだ。
initiatorなのでPoll Modeになって無線を出し始めているのだが、それにはInJumpForDEPを使っている。
携帯電話を載せると、その応答コードとして0x01が返ってくるので、エラーにして終了しているのだ。

という部分は、このログを見ただけではわからない。
libnfcのログまで出さなくては。


このテストプログラムはちょっと今ひとつで、

  • UTF-8に一部なってる
  • setUpとtearDownがない(うまく動いてない?)ので、途中で失敗すると搬送波が出っぱなしになる

などがある。
まあ、テストだからねえ。

とはいえ、搬送波を出しっぱなしというのも困るので、修正。
これは、libnfcのpn53x_idle()に手を加えた。
InReleaseなどに失敗してもエラー終了させず、とにかく一連の流れを終わらせるようにしたのだ。
これは自作のドライバでも迷ったところであるが、アイドル状態にどうしても戻したいのであればエラーを無視するしかないと思う。

0 件のコメント:

コメントを投稿

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