ずっと悩んでいた、カードの捕捉状態を知ることができるか?という問題。
無線の気持ちになって考えてみた。
R/Wがポーリングコマンド(POL_REQ)を投げる。ATQとかでもいいや。
相手がいれば、POL_RESが返ってくるはず。
返ってくるので、InListPassiveTargetの戻り値が返ってくる。
さて、ここでしばらくカードが捕捉されたままとしよう。
R/Wは何かコマンドを送っているか?
送っていない。搬送波を出すだけだ。
本来の無線通信としては、送信が終わったら搬送波を出す必要はない(はず)。
ただNFCの場合、ターゲットに電源供給をしないといけないので、搬送波だけは出し続けなくてはならない。
搬送波って、川の流れのようなものだと思っている。
昔話「桃太郎」でおばあさんが川に洗濯しに行くが、洗濯しに行こうと行くまいと川は流れているのだ。
搬送波が川で、おばあさんの洗濯が送信データだろう。
川が流れなくなるのは、「桃太郎」のお話が終わったときだ。
つまり、川が流れているのは、物語が始まってから終わるまで。
NFCで搬送波が出続けるのも、ターゲットを捕捉してからリリースするまで。
搬送波というのは、常に流れているので、物語の進行とはあまり関係がない。
桃太郎が鬼退治している間も流れているのだ。
おばあさんの洗濯くらいで変わるものではない。
そう考えると、R/Wはカードがいなくなったことを知らないはずだ。
もちろん、コマンドを発行してレスポンスが返ってこない、ということになれば別だが、何もしていないのであればわからないだろう。
だから、GetGeneralStatusを使ってもカードが取り除かれたかどうかがわからないのだな。
組込開発であっても、お客さんの気持ちになって考えるということに変わりがない。
ただ、相手が人間だったりハードだったりするだけのことだ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。