2013/11/03

[android]4.4からはCardEmulationができるそうな (1)

久々に風邪ひいてるみたいで、意識が遠のいてます。。。

まあ、それはともかくとして、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 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。