2012/04/01

R/WはTargetがいなくなったことがわからないはずだ

ずっと悩んでいた、カードの捕捉状態を知ることができるか?という問題。

無線の気持ちになって考えてみた。


R/Wがポーリングコマンド(POL_REQ)を投げる。ATQとかでもいいや。
相手がいれば、POL_RESが返ってくるはず。
返ってくるので、InListPassiveTargetの戻り値が返ってくる。

 

さて、ここでしばらくカードが捕捉されたままとしよう。
R/Wは何かコマンドを送っているか?
送っていない。搬送波を出すだけだ。

本来の無線通信としては、送信が終わったら搬送波を出す必要はない(はず)。
ただNFCの場合、ターゲットに電源供給をしないといけないので、搬送波だけは出し続けなくてはならない。

搬送波って、川の流れのようなものだと思っている。
昔話「桃太郎」でおばあさんが川に洗濯しに行くが、洗濯しに行こうと行くまいと川は流れているのだ。
搬送波が川で、おばあさんの洗濯が送信データだろう。

川が流れなくなるのは、「桃太郎」のお話が終わったときだ。
つまり、川が流れているのは、物語が始まってから終わるまで。
NFCで搬送波が出続けるのも、ターゲットを捕捉してからリリースするまで。


搬送波というのは、常に流れているので、物語の進行とはあまり関係がない。
桃太郎が鬼退治している間も流れているのだ。
おばあさんの洗濯くらいで変わるものではない。

そう考えると、R/Wはカードがいなくなったことを知らないはずだ。
もちろん、コマンドを発行してレスポンスが返ってこない、ということになれば別だが、何もしていないのであればわからないだろう。

だから、GetGeneralStatusを使ってもカードが取り除かれたかどうかがわからないのだな。


組込開発であっても、お客さんの気持ちになって考えるということに変わりがない。
ただ、相手が人間だったりハードだったりするだけのことだ。

0 件のコメント:

コメントを投稿

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