2013/03/14

[android]NdefFormatable

android.nfc.tech.Ndefandroid.nfc.tech.NdefFormatableがある。
自分で試してないけど、こちらによるとNDEFを書き込む前はNdefFormatableで、NDEFを書き込んだらNdefになるそうだ。
つまり、NdefFormatableに反応するということは、NDEFが書き込まれていないということだろう。
そしてNdefFormatableの場合には、formatすることができるそうだ。
それはいいのだが、どこかで「FeliCa LiteはNdefFormatableにならない」ということを聞いたような気がする。
私も以前調べたことがあるが、もう一度調べ直そう。

最初にNFC-FとType 3 Tagについて簡単に書こう。
私が知っている範囲でだが、NFC-FのタグはFeliCaしかないと思っている。

FeliCaのタグ製品としては、FeliCa StandardとFeliCa Lite / Lite-Sがある。
これらは、どちらもNFC-Fと考えてよいと思う。
 
しかしType 3 Tagとなると、これはFeliCa Lite / Lite-Sしかないと思われる。
それも、条件付きでの対応になる。
FeliCa Standardはなぜ除外するかというと、これは「私が知らないから」というだけだ。
一般に使われているFeliCa Standardのタグは、nimocaやSuicaのようなものだ。
FeliCaには「システム」という考え方があり、普通のタグは1枚1システムだ(ったと思う)。
Type 3 Tagは「0x12FC」という番号のシステム(以下、システムコード)を使うようになっているが、
そういうタグが作れるのかどうか知らない、というところである。
まあ、作ることができてもおかしくはないがね。
FeliCa Liteが条件付きなのも、そのシステムのせいである。
作られたばかりのFeliCa Lite(0次発行、という)のシステムコードは「0x88B4」である。
0x12FCではないので、Type 3 Tagではないのだ。
じゃあ、FeliCa LiteがType 3 Tagとして使えるのはどうしてかというと、FeliCa Liteの設定によって
0x12FCというシステムコードにも応答するようにできるからだ(設定して状態を確定させることを、1次発行、という)。
このシステム設定は、NFC Forumなどとは関係が無い、FeliCa Lite製品の動作である。
そういった個別製品の動作を製品に組み込みたいかというと、あんまり入れたくはないだろうな。
AndroidでFeliCa LiteのNDEFフォーマットができないのは、たぶんそういう事情からだろう。
もし純粋なType 3 Tagの製品があるならばNdefFormatableになるかもしれんね。

では、さっさとNdefFormatableの決め方を調べておこう。
ソースしか追わないので、間違ってたら済まん。
最近のAndroidソース一式を持ってきた。たぶん4.2.2くらいだろう。
4.0.3くらいのときは、NXPのNFCチップを使うようになっていた。
今では、NCI(NFC Control Interface)へも対応ができているようだ。
NXPのソースも共存しているのは、まだNXPの部分はNCI対応していないからだろう。
AndroidにNFCが搭載されていた頃はPN544が、Nexus7ではPN65が載っていたと思うが、最近はNXPではなく
Broadcomのチップを使っているという話を読んだことがある。
BroadcomのチップはNCI対応しているのだろうし、今後は全部NCIで統一するのだろうね。
そんなわけで、NXPとNCIで多少動きが異なる。
NXPの場合、NativeNfcTag#isNdefFormatable()でやっている。
  • MIFARE Classic : OK
  • MIFARE Ultralight : OK
  • NFC-V : UID依存でOK
  • ISO-DEP : NFC-AならOK?
  • それ以外 : NG
libnfc-nxpが対応しているかどうかで決めているように見える。
 
NCI版も同じ関数はあるのだが、呼びだすのはJNIの方になっている。
  • Type 1 Tag : OK
  • ISO-15693(NFC-Vね) : OK
  • Type 2 Tag : MIFARE UltralightならOK
  • それ以外 : NG

MIFARE Classicが除外されてたのは、もともとMIFARE ClassicはNFC Forumの対象外だからだろう。
NXP自社だから優遇されていたのだろうな(Androidのクラスには残ってるけど)。

今度はType 1 Tagが優遇されたように見えるが、これはBroadcomがTopaz/Jewelを持っているからだろう。
こういうのを見ると、SONYさんにがんばってもらわんとな、と思ってしまいますな。


FeliCa LiteをNDEF Formattableにするなら、まずこの辺をいじることになるんだろうね。
もちろん、実際にformatするところも作らないかんだろう。
NCIがその辺をどうサポートしているのかは、まだ全然見ていない。。。

0 件のコメント:

コメントを投稿

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