まあ、それはともかくとして、KitKatことAndroid4.4からはNFCのカードエミュレーションができるらしい。
うひゃっほう。
とりあえず、資料だけ眺めることにした。
http://developer.android.com/guide/topics/connectivity/nfc/hce.html
Host Card Emulation、の略らしい。
だいたい「Host」とつくと、メインCPUとかがからんでくるものだ。
通常の・・・というか、例えばおサイフケータイが実現しているFeliCaでのカードエミュレーションは、「Host」はからまない(データについては)。
相手と、FeliCaチップを介してSecure Elementというものがお話をしている感じだ。
しかしHCEは、例えばPaSoRiがカードのふりをしているのと近いように見える。
SonyのRC-S620/Sリファレンスマニュアルなどを読むとわかる。
わかるというか、ターゲットになる時の処理がいろいろと書かれているのだが、カードエミュレーションのことに触れないように触れないように書かれている。
ISO/IEC-18092とあわせて読むと、理解が深まることであろう。
興味がある方は、フローを見比べるとよかでしょう。
ざっと読んだ感じだと、R/Wモードの時と違い、ロック状態でもHCEの検知くらいまではやってくれるようだ。
Card Emulationするときは、だいたい電力を最小限に抑えたい場合が多い。 おサイフケータイを見たらわかるが、あれは常に動作しているものだ。
それがばんばん電気を使ってたら、すぐに電池がなくなって「いらんよ」となるだろう。
それを避けるため、だいたい「搬送波検知」というしくみがある。
13.56MHzの搬送波を検知すると、ホストマイコンとかに割り込みを通知して「何か来たけん、電力をくれんかね」という信号を出すのだ。
FeliCa Plugなんかもそうなってる(だから、搬送波が出てるようなところにCard Emulationする端末を置いておくと、電池消費が激しくなるはず)。
たぶん、ここもそういうしくみを使ってるんじゃないかな。
ただ、それで勝手に動いてしまわれても困るからか、ダイアログを出してユーザに通知し、許可を求めるようにするみたいだ。
USB Hostも、そうだったような気がする。
なんでもかんでも起こしてしまわないように、AIDを登録しておいて、一致したAIDじゃなかったら無視する、みたいになっているように読んだ。
「じゃあ、そのAIDってなんだ?」となるが、まだ読んでない。
早くもCross Referenceがあったので、使わせていただいた。
http://tools.oesf.biz/android-4.4.0_r1.0/xref/cts/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceUtils.java
15 public static final String PPSE_AID = "325041592E5359532E4444463031"; 16 public static final String MC_AID = "A0000000041010"; 17 18 public static final String TRANSPORT_AID = "F001020304"; 19 public static final String ACCESS_AID = "F005060708";
うーん、よくわからんですな。
まあ、これはまたお楽しみで残しておきましょう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。