以降はただのメモ
・Android NFC のコード(@hide とか native 側) とかには felica って名前の付いた定数とか関数とかたくさんある。
・多分 polling して felica を認識してるときのコマンドは
0x00 0xff 0xff 0x01 0x00
・REQ コマンドの 0x00, phHal_eFelicaCmdList の phHal_eFelica_Check じゃないかなぁ
・システムコードがかえってきてるから多分リクエストコードは 0x01 と予想
・システムコードに依存しないで polling してると思うからシステムコードは 0xffff と予想
・多分タイムスロットは 0 だと思うから 0x00 と予想
・リフレクションで transceive を呼び出して felica と通信できないかと試したけど、NFCSTATUS_PENDING が帰ってきてよくわからない
たぶん
・ コマンドが認識できなくて PICC がレスポンスを返していない?
・コマンドが間違い?
・プロトコルが間違い?
・Android NFC の transceive では 0xF0 という Falica Raw コマンド?らしき命名のがつかわれているので、read コマンドがそもそもできない?というか 0xF0 って JISX6319-4 の表10にないんだけど、、、なくはないか任意選択のコマンドってことなのか?
・phHal_eFelicaCmdList
・ IDm が認識できなくて PICC がレスポンスを返していない?
・転送データの形式が間違い?
・プロトコルが間違い?
・基本的には PICC 側にデータを投げて、仕掛けた callback で結果をうけとっている
・CRCは Android 側で付加してくれる?それとも transceive のデータに含む?
・ polling してるんだから、Android 側のような気もしないでもないのだが。。。
--------------------------------------------------------------
参考ページ
・vvacame さんの togatter
・Android 2.3 GingerBread NFCをやってみる - TOPGATE Google関連技術サイト -
・NFC とは?
・NFC Forum
・NFC(Near Field Communication)ってナニ?/株式会社トッパンTDKレーベル -
・Felica -Wikipedia-
・MIFARE -Wikipedia-
・PaSoRi -Wikipedia-
・JISX6319-4
・libnfc
・IDm
・Felica
・IC SFCard Fan
規格 | 採用例 |
---|---|
Mifare® (ISO/IEC 14443 Type A)/td> | ICテレフォンカード、たばこカードのほか、欧州では広く普及 |
ISO/IEC 14443 Type B | 住民基本台帳カード、社員証、学生証など |
FeliCa™ | Suica、Edy、PASMO、ICOCA、おサイフケータイなど、国内では交通系カードや電子マネーとして広く普及 |
ISO/IEC 15693 | 物流、小売などのICタグ |
※ FeliCa™ はソニーの登録商標です。
※MIFARE®はNXPセミコンダクターズの登録商標です。
NFC基本機能
●ISO/IEC18092、FeliCa™、MIFARE® (ISO/IEC 14443 Type-A) 、 そしてISO/IEC14443-4(T=CL) のICカード/タグといった非接触ICカードとして機能する、カードエミュレーション機能
●上記規格に対応するICカード・タグの読み書きができる、リーダ・ライタエミュレーション機能
●NFC対応の機器間で、212kbpsや424kbpsでの通信ができる、端末間通信機能
NFC拡張機能
●NFC対応の機器間で、BluetoothやWiFiのペアリングができる、NFC端末間ペアリング機能
# 大学の学生証(東工大)は Nexus S で反応しませんでした。
# suica, pasumo, edy は反応、felica として認証されてました。
# 武蔵小杉の駐輪場カードは反応したが、RawTarget は other でした。
■ Felica メモ
・ICチップ内部のメモリは16バイト固定長のレコードのみがサポートされている
・変調は ASK10% 、マンチェスタ(Manchester)符号を採用
・暗号処理
・相互認証にトリプルDES
・通信路にDESもしくはトリプルDESを利用
・Dualカードタイプ(接触/非接触)では公開鍵暗号方式の処理が可能なものもある
・FeliCaポート/パソリを使用したソフトウェアを開発するためにはSDK For FeliCaが必要
・SDK For FeliCa のバージョン
・Lite : 平文通信を利用したアプリケーションを開発できる。
・Professional : セキュリティ機能を利用したアプリケーションを開発できる。
・Enterprise : 上記機能に加え、カードの発行(フォーマット)機能を備える。
・SDK For FeliCa の wiki
・SDK For FeliCa は法人向けであり個人では購入することはできない
・個人レベルで FeliCa 対応アプリケーションを開発するものとして felicalib と libpasori が有志により開発されている
・felicalib
・libpafe
--------------------------------------------------------------
ソケット関係
・NFC Forum,機器間の相互運用の促進とピア・ツー・ピア通信を実現する仕様を発表
・NFC Forum Announces Two New Specifications to Foster Device Interoperability and Peer-to-Peer Device Communication
--------------------------------------------------------------
2011/01/25 追記
# Felica じゃなくて FeliCa なんだね。C が大文字。知らなかった。
FeliCa Lite の特徴
・小型化
・セキュリティー機能を簡易化
・FeliCa Liteはサーバーからの片方向認証のみ
・シンプルなファイルシステム
・FeliCa Standardとの下位互換性
・低コスト
・ユーザーメモリー領域は、1ブロック16byteが14ブロック分の224byte
その他リンクメモ
・http://www.mail-archive.com/android-developers@googlegroups.com/msg138446.html
・第481回:iC通信とは - ケータイ Watch -
コードメモ
・com_android_nfc_NativeLlcpServiceSocket.cpp
・NfcService.java
・com_android_nfc_NativeNfcManager.cpp
・com_android_nfc.cpp
・INfcTag.aidl
・NativeNfcManager.java
・phLibNfc_initiator.c
・phLibNfc_SE.c
・phLibNfc_discovery.c
・NativeLlcpConnectionlessSocket.java
・phHal4Nfc_ADD.c
Hi,
返信削除Could you tell me how do you solved the NFCSTATUS_PENDING message? I've got it every time that I try to send an APDU command via the TRANSCEIVE method with reflection. Thanks!