[本発明を適用した通信システムの構成例]
図1は、本発明を適用した通信システムの一実施の形態の構成例を示している。
図1の通信システムは、NFCデバイス1とNFCデバイス11−1乃至11−3により構成される。
NFCデバイス1及びNFCデバイス11−1乃至11−3は、ISO/IEC 18092及びISO/IEC 14443の両方または一方による近距離無線通信を行う通信装置である。NFCデバイス1及びNFCデバイス11−1乃至11−3は、ポーリングデバイス(Polling device)、リスニングデバイス(Listening device)のいずれとしても動作することができる。
ポーリングデバイスは、電磁波を発生することにより、いわゆるRF(Radio Frequency)フィールド(磁界)を形成し、リモートターゲットとしてのリスニングデバイスを検出するためにポーリングコマンドを送信し、リスニングデバイスからのレスポンスを待つ。換言すれば、ポーリングデバイスは、ISO/IEC 14443のPCD(Proximity Coupling Device)の動作、または、ISO/IEC 18092のパッシブモードのイニシエータの動作を行う。
リスニングデバイスは、ポーリングデバイスがRFフィールドを形成して送信するポーリングコマンドを受信すると、ポーリングレスポンスで応答する。換言すれば、リスニングデバイスは、ISO/IEC 14443のPICCの動作、または、ISO/IEC 18092のターゲットの動作を行う。
従って、NFCデバイス1とNFCデバイス11−1乃至11−3それぞれは、同一のハードウエア構成とすることができる。
なお、以下では、NFCデバイス1とNFCデバイス11−1乃至11−3の区別を容易にするため、NFCデバイス11−1乃至11−3それぞれを、リモートターゲット11−1乃至11−3と称する。また、リモートターゲット11−1乃至11−3を特に区別する必要がない場合、単にリモートターゲット11(またはNFCデバイス11)と称する。
NFCデバイス1は、1個のDH(Device Host)21、1個のNFCC(NFC Controller)22、及び、0個以上のNFCEE(NFC Execution Environment)23を備える。NFCEE23については0個以上であるから0個でもよい(省略されていてもよい)。
DH21は、NFCデバイス1全体の制御を行うとともに、NFCC22を制御するためのコマンド(CMD)を生成し、コマンドに対する実行結果を解釈する。DH21は、NCI(NFC Controller Interface)に従い、NFCC22とメッセージを交換する。また、DH21は、リモートターゲット11とデータ交換を行うアプリケーションを実行する。アプリケーションには、例えば、P2P(Peer-to-Peer)通信において名刺やアドレス帳のデータ交換処理、リーダライタ/ICカード間において電子マネー決済処理などを行うアプリケーションなどがある。なお、DH21は、データ交換を行うアプリケーションとして、NFCC22のインターフェイスのレベル(インターフェイスレベル)に応じて、レベルの異なる3個のアプリケーションApp(H),App(M)及びApp(L)を内部に記憶している。
NFCC22は、DH21とリモートターゲット11との中間に配置され、DH21とリモートターゲット11とを仲介するインターフェイスであり、DH21やNFCEE23がリモートターゲット11とデータ交換できるように経路制御を行う。NFCC22は、DH21とリモートターゲット11とを仲介するインターフェイスのレベルとして、複数のインターフェイスレベルを有する。本実施の形態では、NFCC22は、低レベル、中レベル、高レベルの3段階のインターフェイスレベルを有しているものとする。NFCC22は、NCIに従いDH21とメッセージを交換し、DH21からのコマンド(CMD)に基づいて、アンテナ24を介してRFデータの送受信を行う。
NCIは、DH21とNFCC22との間のロジカルインターフェイスであり、NCIでは、後述する所定のフォーマットのコマンド(CMD)や通知(NTF)などが定義されている。
NFCEE23は、NFCデバイス1がリモートターゲット11とデータ交換を行うのに必要な処理のうち、セキュアなデータの処理及び保持を行う。図1の例では、NFCデバイス1内に3個のNFCEE23−1乃至23−3が設けられている。NFCEE23−1と23−2は、NFCC22と接続され、NFCC22が扱うセキュアなデータの保持及び処理を行い、NFCEE23−3は、DH21と接続され、DH21が扱うセキュアなデータの保持及び処理を行う。NFCEE23は、NFCデバイス1内に必要な数だけ設けることができ、また不要であれば省略することもできる。
アンテナ24は、閉ループのコイルを構成しており、このコイルに流れる電流が変化することで、電磁波(RFデータ)を出力する。
以上のように構成されるNFCデバイス1は、次の3つのRFテクノロジーのうち、1つ以上をサポートする。
<RFテクノロジー>
(1)NFC-A ・・・ISO/IEC 14443のType A通信方式
(2)NFC-B ・・・ISO/IEC 14443のType B通信方式
(3)NFC-F ・・・ISO/IEC 18092における212 kbps及び424kbpsの通信方式
NFC-Aは、本明細書におけるISO/IEC 14443のType Aの略称であり、NFC-BはISO/IEC 14443のType Bの略称であり、NFC-Fは、ISO/IEC 18092における212 kbps及び424kbpsの通信方式の略称である。
また、NFCデバイス1は、次の6個のRFプロトコルのうち、1つ以上をサポートする。<RFプロトコル>
(1)T1T・・・TYPE 1 TAG PLATFORM Protocol (based on Type NFC-A)
(2)T2T・・・TYPE 2 TAG PLATFORM Protocol (based on Type NFC-A)
(3)T3T・・・TYPE 3 TAG PLATFORM Protocol (based on Type NFC-F)
(4)ISO-DEP・・・ISO-DEP Protocol (ISO/IEC 14443-4 based on Type NFC-A or NFC-B) / TYPE 4 TAG PLATFORM Protocol (based on Type NFC-A or NFC-B)
(5)NFC-DEP・・・NFC-DEP Protocol (ISO/IEC 18092 transport protocol based on NFC-A or NFC-F)
(6)Prop・・・独自定義のプロトコル(Proprietary Protocol)
T1Tは、本明細書におけるTYPE 1 TAG PLATFORM Protocol (based on NFC-A)の略称であり、T2Tは、TYPE 2 TAG PLATFORM Protocol (based on NFC-A)の略称である。T3T、ISO-DEP、NFC-DEP、及びPropについても同様である。
[インターフェイスレベルについて]
NFCデバイス1では、リモートターゲット11とデータ交換を行う際、そのための処理を、DH21とNFCC22とで分担することができる。換言すれば、DH21がリモートターゲット11とデータ交換を行うために必要な処理を、中間のNFCC22に肩代わりさせることができる。このとき、NFCC22が、データ交換を行うために必要な処理をどのレベルまで肩代わりするかは、DH21からNFCC22に対して指定(通知)されるインターフェイスレベルによって決定される。
NFCC22が有する、低レベル、中レベル、高レベルの3段階のインターフェイスレベルのうち、高レベルは、インターフェイスとしてのNFCC22が受け持つ処理が最も多く、低レベルは、インターフェイスとしてのNFCC22が受け持つ処理が最も少ない。インターフェイスレベルは、RFプロトコルごとに設定することが必要であり、また、NFCC22では、RFプロトコルによって、設定可能なインターフェイスレベルが決められている。
図2は、NFCC22がRFプロトコルに対して設定可能なインターフェイスレベルを示している。
T1T,T2T,T3Tの各RFプロトコルに対しては、低レベルのインターフェイルレベルのみが設定可能である。なお、RFプロトコルがT1T及びT2Tである場合のRFテクノロジーはNFC-Aであり、RFプロトコルがT3Tである場合のRFテクノロジーはNFC-Fである。
ISO-DEP, NFC-DEPの各RFプロトコルに対しては、低レベル、中レベル、高レベルのいずれのインターフェイルレベルも設定可能である。RFプロトコルがISO-DEPである場合のRFテクノロジーはNFC-AまたはNFC-Bであり、RFプロトコルがNFC-DEPである場合のRFテクノロジーはNFC-AまたはNFC-Fである。
PropのRFプロトコルに対しては、低レベルのインターフェイルレベルのみが設定可能である。
図3は、NFCデバイス間のP2P通信のための通信レイヤーの場合のインターフェイスレベルによる処理の違いを示した図である。
低レベルのインターフェイスレベルでは、NFCC22は、ISO/IEC 18092のFrame format,Anticollision, Bit coding, Modulation/Load modulationの機能を持つ。中レベルのインターフェイスレベルでは、NFCC22は,さらに、ISO/IEC 18092 transport protocolまでの機能を持つ。即ち、NFCC22は、低レベルの機能に加え、Protocol activation/deactivation, Segmentation and reassembly, Retransmissionの機能をさらに持つ。高レベルのインターフェイスレベルでは,NFCC22は,ISO/IEC 18092 transport protocolの上位レイヤープロトコルであるLLCP (NFC Forum Logical Link Control Protocol)までの機能を持つ。
NFCC22のインターフェイスレベルは、これらの3段階のなかから、NFCC22が想定するアプリケーションの要件やICチップのコストなどに応じて、RFプロトコルごとに適宜決定して実装することができる。
初期処理において、NFCC22は、自身がどこまでのインターフェイスレベルをサポートしているかについての情報をDH21に通知する。DH21は、NFCC22がサポートするインターフェイスレベルを把握し、NFCC22がサポートするインターフェイスレベルのなかから、DH21が想定するアプリケーションの要件に応じて最適なインターフェイスレベルを選択して、NFCC22に指定する。NFCC22が全てのインターフェイスレベルをサポートしている場合、DH21は、アプリケーションがサポートする処理に応じて、最適なインターフェイスレベルを選択することができる。例えば、DH21が少ない処理でアプリケーションを実行したい場合には、DH21は、高レベルのインターフェイスレベルを選択して、NFCC22に指定すればよい。
[メッセージフォーマット]
次に、図4乃至図9を参照して、NCIとして定義されているメッセージの詳細について説明する。
メッセージには、DH21からNFCC22に対するCMD(コマンド)と、それに対するNFCC22からDH21へのRSP(レスポンス)、及び、NFCC22からDH21へのNTF(通知)の3種類がある。
図4は、初期化コマンド「INIT_CMD」と初期化レスポンス「INIT_RSP」のフォーマットを示している。
初期化コマンド「INIT_CMD」は、NCIの初期化、及び、NFCC22とDH21の能力交換を行うメッセージである。初期化コマンド「INIT_CMD」には、パラメータとして、DH21のNCIバージョン(バージョン番号)を表す”Version”と、DH21の能力を表す”NCI Features”が含まれる。”NCI Features”には、DH21がサポートする通信制御機能について情報、例えば、フローコントロール機能、カードエミュレーション機能、別メッセージ作成機能などの有無についての情報が入力されている。
初期化レスポンス「INIT_RSP」は、初期化コマンドに応答するメッセージである。初期化レスポンス「INIT_RSP」には、パラメータとして、初期化コマンド「INIT_CMD」の応答結果を表す”Status”、NFCC22のNCIバージョンを表す”Version”、NFCC22の能力を表す”NCI Features”、及びNFCC22のインターフェイス能力を表す”NCI Interfaces”が含まれる。”NCI Features”には、NFCC22がサポートする通信制御機能についての情報、例えば、フローコントロール機能、バッテリOFFモード機能、カードエミュレーションのアプリケーション識別子を使ったルーティング機能などの有無についての情報が入力されている。”NCI Interfaces”には、NFCC22がサポートしているRFプロトコルごとのインターフェイスレベルが入力されている。
DH21とNFCC22が、初期化コマンド「INIT_CMD」と初期化レスポンス「INIT_RSP」によってお互いのバージョンを確認し、DH21のバージョンがNFCC22のバージョンと同等か、またはそれ以上である場合、NCIに従ったメッセージのやりとりが可能である。一方、DH21のバージョンがNFCC22のバージョンより低い場合、DH21は、例えば、エラーメッセージを出力する等のエラー処理を行う。
図5は、インターフェイスレベル設定コマンド「DISCOVER_MAP_CMD」とインターフェイスレベル設定レスポンス「DISCOVER_MAP_RSP」のフォーマットを示している。
インターフェイスレベル設定コマンド「DISCOVER_MAP_CMD」は、RFプロトコルとインターフェイスレベルの対応付けを行うメッセージである。インターフェイスレベル設定コマンド「DISCOVER_MAP_CMD」には、パラメータとして、インターフェイスレベル設定データ数[n]、n個のインターフェイスレベル設定データが含まれる。
1つのRFプロトコルに対するインターフェイスレベル設定データには、リモートターゲット11のモード(Poll Mode/Listen Mode)を表す”Mode”、使用するRFプロトコルを表す”Protocol”、及び使用するインターフェイスレベルを表す”Interface level”が含まれる。即ち、1つのRFプロトコル(”Protocol”)に対して、Poll ModeとListen Modeのそれぞれのモードごとに、インターフェイスレベル(”Interface level”)を設定することができる。例えば、RFプロトコルがISO-DEPでPoll Modeの場合は、中レベルのインターフェイスレベルで、RFプロトコルがISO-DEPでListen Modeの場合は、高レベルのインターフェイスレベル、というように設定することができる。従って、インターフェイスレベル設定データの個数nは、最大で、RFプロトコル数の2倍となる。
インターフェイスレベル設定レスポンス「DISCOVER_MAP_RSP」は、インターフェイスレベル設定コマンドに応答するメッセージである。インターフェイスレベル設定レスポンス「DISCOVER_MAP_RSP」には、応答結果を表すOK=1またはNG=0がパラメータとして含まれる。
図6は、ディスカバリ開始コマンド「DISCOVER_START_CMD」、ディスカバリ開始レスポンス「DISCOVER_START_RSP」、ディスカバリ停止コマンド「DISCOVER_STOP_CMD」、及びディスカバリ停止レスポンス「DISCOVER_STOP_RSP」のフォーマットを示している。
ディスカバリ開始コマンド「DISCOVER_START_CMD」は、リモートターゲット11の検出開始を要求するメッセージである。ディスカバリ開始コマンド「DISCOVER_START_CMD」のパラメータには、検出対象のRFテクノロジーを表す「Discovery Type」が、検出を所望するRFテクノロジーの数だけ含まれる。
ディスカバリ開始レスポンス「DISCOVER_START_RSP」は、ディスカバリ開始コマンドに応答するメッセージである。ディスカバリ開始レスポンス「DISCOVER_START_RSP」には、応答結果を表すOK=1またはNG=0がパラメータとして含まれる。
ディスカバリ停止コマンド「DISCOVER_STOP_CMD」は、リモートターゲット11の検出停止を要求するメッセージである。ディスカバリ停止コマンド「DISCOVER_STOP_CMD」には、パラメータはない。
ディスカバリ停止レスポンス「DISCOVER_STOP_RSP」は、ディスカバリ停止コマンドに応答するメッセージである。ディスカバリ停止レスポンス「DISCOVER_STOP_RSP」には、応答結果を表すOK=1またはNG=0がパラメータとして含まれる。
図7は、ディスカバリ選択コマンド「DISCOVER_SELECT_CMD」、ディスカバリ選択レスポンス「DHISCOVER_SELECT_RSP」、ディアクティベーションコマンド「DEACTIVATE_CMD」、及びディアクティベーションレスポンス「DEACTIVATE_RSP」のフォーマットを示している。
ディスカバリ選択コマンド「DISCOVER_SELECT_CMD」は、RFテクノロジー(リモートターゲット11)とRFプロトコルを選択するメッセージである。ディスカバリ選択コマンド「DISCOVER_SELECT_CMD」のパラメータの”Target Handle”には、選択されたRFテクノロジー(リモートターゲット11)が、パラメータ”Target Port”には、選択されたRFプロトコルが入力される。
ディスカバリ選択レスポンス「DHISCOVER_SELECT_RSP」は、ディスカバリ選択コマンドに応答するメッセージである。ディスカバリ選択レスポンス「DHISCOVER_SELECT_RSP」には、応答結果を表すOK=1またはNG=0がパラメータとして含まれる。
ディアクティベーションコマンド「DEACTIVATE_CMD」は、リモートターゲット11とのデータ交換終了を要求するメッセージである。ディアクティベーションコマンド「DEACTIVATE_CMD」には、パラメータとして、RFテクノロジーに対応する”Target Handle”、RFプロトコルに対応する”Target Port”、及び、リモートターゲットへ送信するコマンドである”Deactivation Type”が含まれる。
ディアクティベーションレスポンス「DEACTIVATE_RSP」は、ディアクティベーションコマンド「DEACTIVATE_CMD」に応答するメッセージである。ディアクティベーションレスポンス「DEACTIVATE_RSP」には、応答結果を表すOK=1またはNG=0がパラメータとして含まれる。
図8は、ディスカバリ通知「DISCOVER_NTF」、アクティベーション通知「ACTIVATE_NTF」、及び、ディアクティベーション通知「DEACTIVATE_NTF」のフォーマットを示している。
ディスカバリ通知「DISCOVER_NTF」は、リモートターゲットと、そのRFテクノロジー及びRFプロトコルを通知するメッセージである。リモートターゲット、RFテクノロジー、及びRFプロトコルの組み合わせは、上述したディスカバリ選択コマンド「DISCOVER_SELECT_CMD」と同様に複数存在する場合がある。
ディスカバリ通知「DISCOVER_NTF」には、パラメータとして、NFCC22がRFテクノロジーに割り当てた番号である”Target Handle”、NFCC22がRFプロトコルに割り当てた番号である”Target Port”、検出されたRFテクノロジーを表す”Discovery Type”、リモートターゲット11のRFプロトコルを表す”RF Protocol”、RFテクノロジー固有パラメータを表す”Technology Specific Parameters”、次のディスカバリ通知DISCOVER_NTFの有無を表す”More”が含まれる。
アクティベーション通知「ACTIVATE_NTF」は、特定のインターフェイスレベルのアクティベーション(活性化,起動)を通知するメッセージである。アクティベーション通知「ACTIVATE_NTF」には、パラメータとして、上述した”Target Handle”、”Target Port”、”Discovery Type”、及び”RF Protocol”と、アクティベーションパラメータを表す”Activation Parameters”、及び、アクティベートされたインターフェイスレベルを表す”Interface Type”が含まれる。
ディアクティベーション通知「DEACTIVATE_NTF」は、特定のインターフェイスレベルのディアクティベーション(非活性化)を通知するメッセージである。ディアクティベーション通知「DEACTIVATE_NTF」には、パラメータとして、上述の”Target Handle”及び”Target Port”と、ディアクティベーションパラメータを表す”Deactivation Parameters”が含まれる。
図9は、図4乃至図8を参照して説明したメッセージの一覧を示している。
[シーケンスの概要]
次に、図10を参照して、DH21がリモートターゲット11とデータ交換を行う場合の、DH21とNFCC22との間で行われるシーケンスの概要について説明する。
DH21がリモートターゲット11とデータ交換を行う場合、DH21とNFCC22で行われるシーケンスは、大きく次の5つのステップから構成される。
(1)RFプロトコルに対するインターフェイスレベル設定を行う初期化処理
(2)リモートターゲット11のディスカバリ処理
(3)インターフェイスのアクティベーション処理
(4)データ交換処理
(5)インターフェイスのディアクティベーション処理
DH21が複数のリモートターゲット11とデータ交換を行う場合、複数のリモートターゲット11それぞれに対して(3)乃至(5)のステップが順次実行される。
(1)RFプロトコルに対するインターフェイスレベル設定を行う初期化処理
初期化処理では、DH21が、NFCC22のインターフェイス能力を確認した後、インターフェイスレベル設定コマンド「DISCOVER_MAP_CMD」を送信することにより、NFCC22のインターフェイスレベルを指定(通知)する。初期化処理は、図10では、DH21のステップS11の処理と、NFCC22のステップS21の処理に対応する。
(2)リモートターゲット11のディスカバリ処理
ディスカバリ処理は、リモートターゲット11を検出する処理である。DH21が、ステップS12において、リモートターゲット11の検出開始を要求するディスカバリ開始コマンド「DISCOVER_START_CMD」をNFCC22に送信すると、NFCC22は、ステップS22において、リモートターゲット11を検出する処理を開始する。
リモートターゲット11の検出では,NFCC22は、Poll ModeとListen Modeを交互に繰り返す。即ち、NFCC22は、自分からポーリングコマンドを送信して相手からのレスポンスを待ち(Poll Mode),その後,相手からのポーリングコマンドを待つ(Listen Mode)ことを繰り返す。
Poll Modeでは、NFCC22が、送信したポーリングコマンドに対してレスポンスを受信した場合、リモートターゲット11との通信リンクが確立したと見なし、そのときのモード(Poll Mode)を維持する。Poll Modeでは、NFCC22は、自分がPCDまたはInitiatorとして振る舞い、コマンドを送信することができる。
一方、Listen Modeでは、NFCC22が、相手からのポーリングコマンドに対してレスポンスを送信した場合、リモートターゲット11との通信リンクが確立したと見なし、そのときのモード(Listen Mode)を維持する。Listen Modeでは、NFCC22は、自分がPICCまたはTargetとして振る舞い、受信したコマンドに対して応答する(レスポンスを送信する)ことができる。
NFCC22は、ステップS23において、検出したリモートターゲット11をディスカバリ通知「DISCOVER_NTF」によって、DH21に通知する。NFCC22が、複数のリモートターゲット11を検出した場合には、検出した全てのリモートターゲット11について、リモートターゲット11ごとにディスカバリ通知「DISCOVER_NTF」を送信する。
(3)インターフェイスのアクティベーション処理
ディスカバリ通知「DISCOVER_NTF」を受信したDH21は、ステップS13において、受信したもののなかから、所定の1つのリモートターゲット11を選択し、ディスカバリ選択コマンド「DISCOVER_SELECT_CMD」をNFCC22に送信する。
NFCC22は、ステップS24において、ディスカバリ選択コマンド「DISCOVER_SELECT_CMD」を受信し、それに基づいて、選択された1つのリモートターゲット11のインターフェイスをアクティベートする。そして、NFCC22は、ディスカバリ選択コマンド「DISCOVER_SELECT_CMD」で選択されたリモートターゲット11のインターフェイスがアクティベートされたことを、アクティベーション通知「ACTIVATE_NTF」によってDH21に通知する。
なお、この処理はモードがPoll Modeでの処理であり、Listen Modeの場合には、DH21がリモートターゲット11を選択することはできないので、処理が異なる。即ち、Listen Modeでは、NFCC22が複数のRFテクノロジーについてステートマシンを保持する場合、NFCC22は、複数のRFテクノロジーで応答する。NFCC22が1つのRFテクノロジーについてステートマシンを保持する場合、NFCC22は、最初に検出したRFテクノロジーで応答する。NFCC22は、応答したリモートターゲット11のインターフェイスをアクティベートし、その旨をアクティベーション通知「ACTIVATE_NTF」によってDH21に通知する。Listen Modeでは、リモートターゲット11がコマンドを送信するので、NFCC22は、受信したコマンドに応じた処理を行う。
(4)データ交換処理
DH21は、NFCC22からアクティベーション通知「ACTIVATE_NTF」を受信すると、ステップS14において、アプリケーションを起動する。このとき、DH21は、NFCC22のインターフェイスレベルに応じて、アプリケーションApp(H),App(M),App(L)のいずれかを選択する。
DH21は、ステップS15において、起動したアプリケーションにより、NFCC22を介してリモートターゲット11とデータ交換を行う。NFCC22は、ステップS25において、DH21とリモートターゲット11との間でデータ交換を行う。
(5)インターフェイスのディアクティベーション処理
Poll Modeでは、DH21で起動されたアプリケーションが、アプリケーション終了時に、ディアクティベーションコマンド「DEACTIVATE_CMD」をNFCC22に送信する。NFCC22は、ステップS26において、ディアクティベーションコマンド「DEACTIVATE_CMD」を受信し、通信中のリモートターゲット11のインターフェイスをディアクティベートし、リモートターゲット11との通信リンクを切断する。
一方、Listen Modeでは、NFCC22が、通信中のリモートターゲット11との通信リンク切断後、ディアクティベーション通知「DEACTIVATE_NTF」をDH21に送信する。ステップS16において、DH21は、ディアクティベーション通知「DEACTIVATE_NTF」を受信したとき、アプリケーションを終了する。
以上では、1つのリモートターゲット11と通信する例について大まかなシーケンスの流れを説明した。
[シーケンスの詳細例(Poll Modeの場合)]
次に、図11乃至図13を参照して、DH21が複数のリモートターゲット11とデータ交換を行う場合の、DH21とNFCC22で行われるシーケンスの詳細について説明する。
図11は、リモートターゲット11−1乃至11−3それぞれが、サポートしているRFテクノロジーとRFプロトコルを示している。
リモートターゲット11−1は、RFテクノロジーとしてはNFC-Aをサポートし、RFプロトコルとしてはISO-DEPとNFC-DEPの2つをサポートしている。リモートターゲット11−2は、RFテクノロジーとしてはNFC-Bをサポートし、RFプロトコルとしてはISO-DEPをサポートしている。リモートターゲット11−3は、RFテクノロジーとしてはNFC-Fをサポートし、RFプロトコルとしてはT3Tをサポートしている。
図11において、RFプロトコルの欄の右側に記載した”Target Handle”と”Target Port”は、図12と図13に示す一連のシーケンスにおいて、検出したリモートターゲット11に対してNFCC22が割り当てた識別子を示している。
[Poll Modeのシーケンス例]
図12及び図13は、NFCデバイス1(NFCC22)がPoll Modeで動作し、RFテクノロジーの異なる3つのリモートターゲット11−1乃至11−3と通信を行うシーケンスを示すフローチャートである。
初めに、ステップS41において、DH21は、初期化コマンドINIT_CMDを送信し、NFCC22は、その返答として、ステップS42において、初期化レスポンスINIT_RSPをDH21に送信する。初期化レスポンスINIT_RSPには、上述したように、NFCC22がサポートするRFプロトコルごとのインターフェイスレベルが含まれている。
ステップS43において、DH21は、NFCC22のサポートするRFプロトコルごとのインターフェイスレベルに基づいて、RFプロトコルとインターフェイスレベルの対応付けを行うインターフェイスレベル設定コマンドDISCOVER_MAP_CMDをNFCC22に送信する。ステップS43では、DISCOVER_MAP_CMD(5,Poll,ISO-DEP Protocol, Mid I/F Level, Poll, NFC-DEP Protocol, High I/F Level, Poll,T1T Protocol, Low I/F Level,Poll,T2T Protocol, Low I/F Level, Poll, T3T Protocol, Low I/F Level)が送信されている。これにより、Poll Modeで、RFプロトコルがISO-DEPのときには中レベル、NFC-DEPのときには高レベル、T1T,T2T、及びT3Tのときには低レベルのインターフェイスレベルがNFCC22において設定される。
なお、この例では、T1T,T2T、及びT3TのRFプロトコルについても設定するようになされているが、T1T,T2T、及びT3TのRFプロトコルは低レベルのインターフェイスレベルしか設定することができないので、低レベル固定とし、コマンドの送信及び設定を省略することができる。
また、図12のシーケンスは、NFCデバイス1(NFCC22)がPoll Modeで動作する例の説明であるので、ステップS43のインターフェイスレベル設定コマンドDISCOVER_MAP_CMDでは、Listen Modeのときの各インターフェイスレベルの指定は省略されている。
NFCC22は、ステップS44において、DH21からのインターフェイスレベル設定コマンドDISCOVER_MAP_CMDを了解した旨のインターフェイスレベル設定レスポンスDISCOVER_MAP_RSPを送信する。
そして、ステップS45において、DH21は、検出対象のRFテクノロジーとして、NFC-A、NFC-B、及びNFC-Fを指定して、ディスカバリ開始コマンドDISCOVER_START_CMDをNFCC22に送信する。NFCC22は、ステップS46において、ディスカバリ開始コマンドDISCOVER_START_CMDを了解した旨のディスカバリ開始レスポンスDISCOVER_START_RSPをDH21に送信する。
そして、NFCC22は、検出対象のRFテクノロジーとして指定されたNFC-A、NFC-B、及びNFC-Fについて、リモートターゲット11を検出するためのコマンドを送信する。具体的には、ステップS47において、DH21は、NFC-A のコマンドSENS_REQを送信し、ステップS48において、RFフィールド内に存在するリモートターゲット11−1から送信されてくる、コマンドSENS_REQに対するレスポンスSENS_RESを受信する。レスポンスSENS_RESの受信時では、リモートターゲット11−1のRFプロトコルはまだ不明である。
また、DH21は、ステップS49において、NFC-BのコマンドSENSB_REQを送信し、ステップS50において、RFフィールド内に存在するリモートターゲット11−2から送信されてくる、コマンドSENSB_REQに対するレスポンスSENSB_RESを受信する。レスポンスSENSB_RESの受信により、リモートターゲット11−2のRFプロトコルがISO-DEPであることも把握される。
また、DH21は、ステップS51において、NFC-FのコマンドSENSF_REQを送信し、ステップS52において、RFフィールド内に存在するリモートターゲット11−3から送信されてくる、コマンドSENSF_REQに対するレスポンスSENSF_RESを受信する。レスポンスSENSF_RESの受信により、リモートターゲット11−3のRFプロトコルがT3Tであることも把握される。
NFCC22は、何らリモートターゲット11が検出されなければ、Poll ModeとListen Modeを交互に繰り返すが、Poll Modeでリモートターゲット11−1乃至11−3が検出されたので、Listen Modeの動作は行わない。
NFCC22は、ステップS53乃至S55において、検出したリモートターゲット11−1乃至11−3を通知する3個のディスカバリ通知DISCOVER_NTFをDH21に送信する。具体的には、ステップS53では、NFCC22は、検出されたNFC-Aのリモートターゲット11−1についてTarget Handleとして「TH1」、Target Portとして「TP1」を割り当て、ディスカバリ通知DISCOVER_NTFをDH21に送信する。
ステップS54では、NFCC22は、検出されたNFC-Bのリモートターゲット11−1についてTarget Handleとして「TH2」、Target Portとして「TP2」を割り当て、ディスカバリ通知DISCOVER_NTFをDH21に送信する。ステップS55では、NFCC22は、検出されたNFC-Fのターゲット11−1についてTarget Handleとして「TH3」、Target Portとして「TP3」を割り当て、ディスカバリ通知DISCOVER_NTFをDH21に送信する。
ここで、ステップS53とS54で送信するディスカバリ通知DISCOVER_NTFでは、次もディスカバリ通知DISCOVER_NTFを送信するので、ディスカバリ通知DISCOVER_NTFの最後のパラメータ”More”が「1」となっている。一方、ステップS55のディスカバリ通知DISCOVER_NTFでは、次に送信されるディスカバリ通知DISCOVER_NTFがないので、最後のパラメータ”More”が「0」となっている。
なお、これ以降のシーケンスでは、DH21とNFCC22との間では、NFCC22で割り当てられたTarget HandleとTarget Portによりリモートターゲット11が特定されて、メッセージがやりとりされる。
DH21は、ステップS56において、検出されたリモートターゲット11−1乃至11−3のうち、リモートターゲット11−2との通信を選択し、”Target Handle”=TH2、”Target Port”=TP2をパラメータとするディスカバリ選択コマンドDISCOVER_SELECT_CMDを送信する。
NFCC22は、ステップS57において、ディスカバリ選択コマンドDISCOVER_SELECT_CMDを受信し、そのコマンドを了解した旨のディスカバリ選択レスポンスDHISCOVER_SELECT_RSPをDH21に送信する。
ディスカバリ選択コマンドDISCOVER_SELECT_CMDに含まれる”Target Port”=TP2が表すISO-DEPのRFプロトコルに対しては、上述したインターフェイスレベル設定コマンドDISCOVER_MAP_CMDで、中レベルのインターフェイスレベルが指定されている。中レベルのインターフェイスレベルでは、図3を参照して説明したように、プロトコルアクティベーションはNFCC22が行う処理となっている。
そこで、NFCC22は、ステップS58において、プロトコルアクティベーションを行う。即ち、NFCC22は、自身の属性(仕様)を知らせるとともに、リモートターゲット11−2の属性を要求するATTRIBコマンドをリモートターゲット11−2に送信する。NFCC22は、ステップS59において、ATTRIBコマンドの返答として、ATTAレスポンスをリモートターゲット11−2から受信する。
ATTAレスポンスを受信すると、NFCC22は、ステップS60において、中レベルのインターフェイスレベルでのインターフェイスのアクティベーションが完了した旨のアクティベーション通知ACTIVATE_NTFをDH21に送信する。アクティベーション通知ACTIVATE_NTFのパラメータには、”Activation Parameters”として、受信したレスポンス「ATTA」や、”Interface Type”として、アクティベートされたインターフェイスレベルを表す「Mid I/F Level activated」が含まれる。
インターフェイスのアクティベーション完了後は、ステップS61において、DH21内の中レベルのインターフェイスレベルに対応するアプリケーションApp(M)が起動し、DH21とリモートターゲット11−2(TH2)との間で、ISO-DEP(TP2)のRFプロトコルを用いたデータ交換が行われる。
所定のデータ交換が行われ、アプリケーションApp(M)が終了するとき、DH21は、ステップS62において、ディアクティベーションコマンドDEACTIVATE_CMDをNFCC22に送信する。ディアクティベーションコマンドDEACTIVATE_CMDのパラメータ”Deactivation Type”には、リモートターゲット11−2へ送信するコマンドである「DESELECT」が含まれる。
NFCC22は、ステップS63において、ディアクティベーションコマンドDEACTIVATE_CMDを了解した旨のディアクティベーションレスポンスDEACTIVATE_RSPをDH21に送信する。
そして、NFCC22は、ステップS64において、ディアクティベーションコマンドDEACTIVATE_CMDに含まれるパラメータ”Deactivation Type”に基づいて、DESELECTコマンドをリモートターゲット11−2に送信する。ステップS65において、NFCC22は、リモートターゲット11−2から、DESELECTレスポンスを受信し、インターフェイスをディアクティベーションする。インターフェイスのディアクティベーションにより、リモートターゲット11−2(TH2)とISO-DEP(TP2)に関連するパラメータは開放される。
図13のステップS66以降では、リモートターゲット11−1(TH1)が通信相手として選択され、DH21とリモートターゲット11−1(TH1)との間で通信が行われる。
即ち、ステップS66において、DH21は、”Target Handle”=TH1、”Target Port”=TP1をパラメータとするディスカバリ選択コマンドDISCOVER_SELECT_CMDをNFCC22に送信する。
NFCC22は、ステップS67において、ディスカバリ選択コマンドDISCOVER_SELECT_CMDを受信し、そのコマンドを了解した旨のディスカバリ選択レスポンスDHISCOVER_SELECT_RSPをDH21に送信する。
そして、ステップS68において、NFCC22は、パラメータTH1及びTP1に対応するリモートターゲット11−1との間で、PICC(ICカード)が複数存在する場合でも所定のPICCを認識し、通信を行うためのアンチコリジョン(Anticollision)処理を行う。
ステップS69において、NFCC22は、RFプロトコルとしてISO−DEPとISO-DEPをサポートしている旨のSEL_RES(ISO−DEP|ISO-DEP) レスポンスを、リモートターゲット11−1から受信する。
NFCC22は、ISO−DEPのRFプロトコルにはTarget Portとして「TP4」を割り当て、ISO-DEPのRFプロトコルにはTarget Portとして「TP5」を割り当てて、ステップS70とステップS71として、ディスカバリ通知DISCOVER_NTFをDH21に送信する。即ち、ステップS70において、NFCC22は、ディスカバリ通知DISCOVER_NTF(TH1,TP4,NFC-A,PROTOCOL_ISO_DEP,SEL_RES,More=1)をDH21に送信し、ステップS71において、ディスカバリ通知DISCOVER_NTF(TH1,TP5,NFC-A,PROTOCOL_NFC_DEP,SEL_RES,More=0)をDH21に送信する。
DH21は、ステップS72において、2つのRFプロトコルのうちのNFC-DEPを選択して、”Target Handle”=TH1、”Target Port”=TP5をパラメータとするディスカバリ選択コマンドDISCOVER_SELECT_CMDを送信する。
ステップS73において、NFCC22は、ディスカバリ選択コマンドDISCOVER_SELECT_CMDを受信し、そのコマンドを了解した旨のディスカバリ選択レスポンスDHISCOVER_SELECT_RSPをDH21に送信する。
NFC-DEPのRFプロトコルに対しては、上述したステップS43のインターフェイスレベル設定において、高レベルのインターフェイスレベルが指定されている。そこで、NFCC22は、ステップS74において、プロトコルアクティベーション(属性を要求するATR_REQコマンド)とLLCPのアクティベーションを行う。
ステップS75において、NFCC22は、ATR_REQコマンドの返答としてATR_RESレスポンスとLLCPのアクティベーションの結果を、リモートターゲット11−1から受信する。そして、ステップS76において、NFCC22は、高レベルでのインターフェイスのアクティベーションが完了した旨のアクティベーション通知ACTIVATE_NTFをDH21に送信する。アクティベーション通知ACTIVATE_NTFのパラメータには、”Activation Parameters”として、受信したレスポンス「ATR_RES」や、”Interface Type”として、アクティベートされたインターフェイスレベルを表す「High I/F Level activated」が含まれる。
インターフェイスのアクティベーション完了後は、ステップS77において、DH21内の高レベルのインターフェイスレベルに対応するアプリケーションApp(H)が起動し、DH21とリモートターゲット11−1(TH1)との間で、NFC-DEP(TP5)のRFプロトコルを用いたデータ交換が行われる。
所定のデータ交換が行われ、アプリケーションApp(H)が終了するとき、DH21は、ステップS78において、ディアクティベーションコマンドDEACTIVATE_CMDをNFCC22に送信する。ディアクティベーションコマンドDEACTIVATE_CMDのパラメータ”Deactivation Type”には、リモートターゲット11−1へ送信するコマンドである「DSL_REQ」が含まれる。
NFCC22は、ステップS79において、ディアクティベーションコマンドDEACTIVATE_CMDを了解した旨のディアクティベーションレスポンスDEACTIVATE_RSPをDH21に送信する。
そして、NFCC22は、ステップS80において、ディアクティベーションコマンドDEACTIVATE_CMDに含まれるパラメータ”Deactivation Type”に基づいて、DSL_REQコマンドをリモートターゲット11−1に送信する。ステップS81において、NFCC22は、リモートターゲット11−1から、DSL_RESレスポンスを受信し、インターフェイスをディアクティベーションする。インターフェイスのディアクティベーションにより、リモートターゲット11−1(TH1)とNFC-DEP(TP5)に関連するパラメータは開放される。
ステップS82以降では、リモートターゲット11−3(TH3)が通信相手として選択され、DH21とリモートターゲット11−3(TH3)との間で通信が行われる。
具体的には、ステップS82において、DH21は、”Target Handle”=TH3(NFC-F)、”Target Port”=TP3(T3T)をパラメータとするディスカバリ選択コマンドDISCOVER_SELECT_CMDをNFCC22に送信する。
NFCC22は、ステップS83において、ディスカバリ選択コマンドDISCOVER_SELECT_CMDを受信し、そのコマンドを了解した旨のディスカバリ選択レスポンスDHISCOVER_SELECT_RSPをDH21に送信する。
T3TのRFプロトコルに対しては、上述したステップS43のインターフェイスレベル設定において、低レベルのインターフェイスレベルが指定されている。低レベルのインターフェイスレベルでは、プロトコルアクティベーションは行われない。そのため、NFCC22は、ステップS84において、即座に、”Activation Parameters”のパラメータを「NULL」として、低レベルでのインターフェイスのアクティベーションが完了した旨のアクティベーション通知ACTIVATE_NTFをDH21に送信する。
インターフェイスのアクティベーション完了後は、ステップS85において、DH21内の低レベルのインターフェイスレベルに対応するアプリケーションApp(L)が起動し、DH21とリモートターゲット11−3(TH3)との間で、T3T(TP3)のRFプロトコルを用いたデータ交換が行われる。
所定のデータ交換が行われ、アプリケーションApp(L)が終了するとき、DH21は、ステップS86において、ディアクティベーションコマンドDEACTIVATE_CMDをNFCC22に送信する。低レベルのインターフェイスレベルでは、プロトコルアクティベーションと同様、プロトコルディアクティベーションは行われないため、ディアクティベーションコマンドDEACTIVATE_CMDのパラメータ”Deactivation Type”は、「NULL」となっている。
NFCC22は、ステップS87において、ディアクティベーションコマンドDEACTIVATE_CMDを了解した旨のディアクティベーションレスポンスDEACTIVATE_RSPをDH21に送信する。その後、NFCC22は、インターフェイスのディアクティベーションを行い、リモートターゲット11−3(TH3)とT3T(TP3)に関連するパラメータを開放する。
以上のように、NFCデバイス1(DH21とNFCC22)は、ポーリングデバイスとして動作し、RFプロトコルが異なる複数のリモートターゲット11を検出することができる。そして、NFCデバイス1は、検出された複数のリモートターゲット11と順次データ交換を行うことができる。
[シーケンスの詳細例(Listen Modeの場合)]
次に、図14と図15を参照して、NFCデバイス1がListen Modeで動作する場合のシーケンスについて説明する。
なお、図14と図15の例では、リモートターゲット11−3がサポートしているRFプロトコルは、図11と異なり、NFC-DEPであるとする。
初めに、ステップS101において、DH21は、初期化コマンドINIT_CMDを送信し、NFCC22は、その返答として、ステップS102において、初期化レスポンスINIT_RSPをDH21に送信する。初期化レスポンスINIT_RSPには、上述したように、NFCC22がサポートするRFプロトコルごとのインターフェイスレベルが含まれている。
ステップS103において、DH21は、NFCC22がサポートするRFプロトコルごとのインターフェイスレベルに基づいて、RFプロトコルとインターフェイスレベルの対応付けを行うインターフェイスレベル設定コマンドDISCOVER_MAP_CMDをNFCC22に送信する。図12の例では、DISCOVER_MAP_CMD(2,Listen,ISO-DEP Protocol, Mid I/F Level, Listen, NFC-DEP Protocol, High I/F Level)が送信され、Listen Modeで、RFプロトコルがISO-DEPのときには中レベル、NFC-DEPのときには高レベルが指定されている。T1T,T2T、及びT3TのRFプロトコルについては低レベル固定であるので省略されている。また、Poll Modeのときの各インターフェイスレベルも省略されている。
ステップS104において、NFCC22は、DH21からのインターフェイスレベル設定コマンドDISCOVER_MAP_CMDを了解した旨のインターフェイスレベル設定レスポンスDISCOVER_MAP_RSPをDH21に送信する。
ステップS105において、DH21は、検出対象のRFテクノロジーとして、NFC-A、NFC-B、及びNFC-Fを指定して、ディスカバリ開始コマンドDISCOVER_START_CMDをNFCC22に送信する。NFCC22は、ステップS106において、ディスカバリ開始コマンドDISCOVER_START_CMDを了解した旨のディスカバリ開始レスポンスDISCOVER_START_RSPをDH21に送信する。
そして、NFCC22は、検出対象のRFテクノロジーとして指定されたNFC-A、NFC-B、及びNFC-Fについて、最初に、NFCデバイス1がPoll Modeとして動作するためのポーリングコマンドを送信する。具体的には、NFCC22は、ステップS107乃至S109として、NFCデバイス1がPoll Modeとして動作するためのコマンドSENS_REQ、SENSB_REQ、SENSF_REQを、順次送信する。
コマンドSENS_REQ、SENSB_REQ、SENSF_REQに対するレスポンスを受信できなかったので、次に、NFCC22は、NFCデバイス1がListen Modeとして動作するためのポーリングコマンドを検出して、応答する。
具体的には、NFCC22は、ステップS110において、リモートターゲット11−1から送信されてきたSENS_REQコマンドを受信して、ステップS111において、SENS_RESレスポンスをリモートターゲット11−1に送信する。
また、NFCC22は、ステップS112において、リモートターゲット11−2から送信されてきたSENSB_REQコマンドを受信して、ステップS113において、SENSB_RESレスポンスをリモートターゲット11−2に送信する。
さらに、NFCC22は、ステップS114において、リモートターゲット11−3から送信されてきたSENSF_REQコマンドを受信して、ステップS115において、SENSF_RESレスポンスをリモートターゲット11−3に送信する。
NFCC22は、ステップS116において、RFプロトコルとしてISO-DEPとNFC-DEPをサポートしている旨のレスポンスSRL_RES(ISO-DEP&NFC-DEP)を、最初に検出したリモートターゲット11−1に送信する。
リモートターゲット11−1のRFプロトコルであるISO-DEPとNFC-DEPに対しては、中レベル以上のインターフェイスレベルが指定されているので、NFCC22は、リモートターゲット11−1からのプロトコルアクティベーションを待つ。そして、ステップS117において、NFCC22は、リモートターゲット11−1から、ATSを要求するRATS(Request for Answer To Select)コマンドを受信し、それに対し、ステップS118において、ATSレスポンスをリモートターゲット11−1に送信する。これにより、ISO-DEPのRFプロトコルによるプロトコルアクティベーションが完了する。
RATSコマンド受信後、NFCC22は、ステップS119において、インターフェイスのアクティベーションが完了した旨のアクティベーション通知ACTIVATE_NTF (TH1,TP1,NFC-A,PROTOCOL_ISO_DEP,ATS, Mid I/F Level activated)をDH21に送信する。
ステップS120において、DH21内の中レベルのインターフェイスレベルに対応するアプリケーションApp(M)が起動し、DH21とリモートターゲット11−1(TH1)との間で、ISO-DEP(TP1)のRFプロトコルを用いたデータ交換が行われる。
所定のデータ交換が行われた後、ステップS121において、NFCC22は、PCD(リーダライタ)としてのリモートターゲット11−1からDESELECTコマンドを受信し、ステップS122において、DESELECTレスポンスをリモートターゲット11−1に送信する。これにより、NFCC22において、ISO-DEPのRFプロトコルを用いたインターフェイスがディアクティベートされる。
そして、ステップS123において、NFCC22は、”Target Handle”=TH1、”Target Port”=TP1、”Deactivation Parameters”=DESELECTをパラメータとして、ディアクティベーション通知DEACTIVATE_NTFをDH21に送信する。ディアクティベーション通知DEACTIVATE_NTFを受信したDH21は、アプリケーションApp(M)を終了する。
次に、2番目に検出され、NFCC22において”Target Handle”=TH2、”Target Port”=TP2と割り当てられたリモートターゲット11−2との間で、データ交換が行われるが、その処理については省略する。
次に、3番目に検出され、NFCC22において”Target Handle”=TH3、”Target Port”=TP3と割り当てられたリモートターゲット11−3との間で、データ交換が行われる。
図15のステップS124において、NFCC22は、属性を要求するATR_REQコマンドを、リモートターゲット11−3から受信する。NFC-DEPのRFプロトコルに対しては、上述したステップS103において、高レベルのインターフェイスレベルが指定されている。そこで、NFCC22は、ステップS125において、ATR_REQコマンドの返答としてATR_RESレスポンスを送信するとともに、LLCPのアクティベーションも行う。
プロトコルアクティベーション及びLLCPのアクティベーション終了後、ステップS126において、NFCC22は、アクティベーション通知ACTIVATE_NTFをDH21に送信する。アクティベーション通知ACTIVATE_NTFのパラメータには、”Activation Parameters”として、受信したレスポンス「ATR_RES」や、”Interface Type”として、アクティベートされたインターフェイスレベルを表す「High I/F Level activated」が含まれる。
ステップS127において、DH21内の高レベルのインターフェイスレベルに対応するアプリケーションApp(H)が起動し、DH21とリモートターゲット11−3(TH3)との間で、NFC-DEP(TP3)のRFプロトコルを用いたデータ交換が行われる。
所定のデータ交換が行われた後、ステップS128において、NFCC22は、イニシエータ(リーダライタ)としてのリモートターゲット11−3からDSL_REQコマンドを受信し、ステップS129において、DSL_RESレスポンスをリモートターゲット11−3に送信する。これにより、NFCC22において、NFC-DEPのRFプロトコルを用いたインターフェイスがディアクティベートされる。
そして、ステップS130において、NFCC22は、ディアクティベーション通知DEACTIVATE_NTFをDH21に送信する。具体的には、NFCC22は、”Target Handle”=TH3、”Target Port”=TP3、”Deactivation Parameters”=DSL_REQをパラメータとして、ディアクティベーション通知DEACTIVATE_NTFを送信する。ディアクティベーション通知DEACTIVATE_NTFを受信したDH21は、アプリケーションApp(H)を終了する。
以上のように、NFCデバイス1(DH21とNFCC22)は、リスニングデバイスとして動作し、RFプロトコルが異なる複数のリモートターゲット11を検出することができる。そして、NFCデバイス1は、検出された複数のリモートターゲット11と順次データ交換を行うことができる。
ISO/IEC 18092またはISO/IEC 14443による近距離無線通信を行うNFCデバイス1は、DH21とNFCC22に機能的に分離されて動作する。DH21は、主にアプリケーションの実行とNFCデバイス1全体の制御を行う。NFCC22は、DH21とリモートターゲット11の中間に配置され、アンテナ24を介してリモートターゲット11(ISO/IEC 14443のPICC(ICカード)やISO/IEC 18092のターゲット)とのRFデータの送受信を主に行う。
DH21は、各RFプロトコルについて、NFCC22がサポートする複数のインターフェイスレベルのなかから、1つのインターフェイスレベルを選択し、NFCC22に通知(指定)する。複数のインターフェイスレベルは、NFCデバイス1がリモートターゲット11とデータ交換を行う際に、中間に位置するNFCC22に、どのレベルまでの処理を負担させるかに応じて分類されている。具体的には、インターフェイスレベルが低レベル、中レベル、高レベルの3段階に分類されているとき、高レベルはNFCC22が受け持つ処理が最も多く、低レベルはNFCC22受け持つ処理が最も少ない。DH21は、NFCC22がサポートしているインターフェイスレベルについての情報を取得し、NFCC22に対して、RFプロトコルごとに所定のインターフェイスレベルを指定する。そして、DH21は、指定したインターフェイスレベルに対応するレベルのアプリケーションAppを起動して実行する。これにより、DH21は、NFCC22が実行可能な処理については分担させることで、アプリケーション処理の実行に専念することができる。また、NFCC22がより高度のインターフェイスレベルをサポートしている場合には、できるだけ高度のインターフェイスレベルに設定することで、NFCC22とDH21が、より高度のインターフェイスレベルによるデータ交換(DH21のアプリケーションにとって処理のしやすい単位でのデータ交換)ができるようになる。これにより、リモートターゲット11とNFCデバイス1が、効率よくデータ交換を行うことができる。
NFCC22は、ポーリングデバイスとして動作する場合、ポーリングコマンドを送信して複数のリモートターゲット11を検出する(ディスカバリする)と、検出された全てのリモートターゲット11をDH21に通知(ディスカバリ通知DISCOVER_NTF)する。そして、検出された複数のリモートターゲット11のなかから、通信を行うリモートターゲット11が1つずつ順にDH21によって選択され、通信(アプリケーションによるデータ交換)が実行される。選択された各リモートターゲット11に対しては、インターフェイスのアクティベーション、インターフェイスレベルに応じたアプリケーションの実行(起動と終了を含む)、インターフェイスのディアクティベーションの動作が行われる。これにより、RFテクノロジーまたはRFプロトコルが異なる、複数のリモートターゲット11と効率よくデータ交換を行うことができる。
一方、NFCC22は、リスニングデバイスとして動作する場合、通信リンクを確立した複数のリモートターゲット11に対して、検出した順で順番に、通信相手としてリモートターゲット11を選択する。NFCC22は、選択したリモートターゲット11のRFプロトコルに対応するインターフェイスをアクティベートし、DH21に通知(アクティベーション通知ACTIVATE_NTF)する。DH21は、アクティベーション通知されたリモートターゲット11のインターフェイスレベルに応じて、アプリケーションを実行する(起動と終了を含む)。従って、通信リンクを確立した複数のリモートターゲット11と、順次、通信(アプリケーションによるデータ交換)が実行される。これにより、RFテクノロジーまたはRFプロトコルが異なる、複数のリモートターゲット11と効率よくデータ交換を行うことができる。
上述した例では、リモートターゲット11とDH21がデータ交換を行うために必要な処理を、NFCC22が、所定のRFプロトコルに対して指定されたインターフェイスレベルに応じて代行する例について説明した。
しかし、リモートターゲット11とDH21とのデータ交換処理においても、NFCC22が、所定のRFプロトコルに対して指定されたインターフェイスレベルに応じて、DH21が行うべき処理を代行する場合がある。
例えば、NFCデバイス1がReader/Writer modeで、NFCC22がアクティベートしたインターフェイスのレベルが高レベルである場合、NFCC22は、NDEFデータへアクセスできるようにするための処理を、DH21に代わって実行する。ここで、NDEFデータは、アプリケーションが利用する共通のデータフォーマットであるNDEF(NFC Data Exchange Format)のデータである。
NDEFデータへアクセスできるようにするためのコマンドを規定するTag Operationのなかの、Type3についての仕様であるNFC FORUM Type 3 Tag Operationの例で具体的に説明する。NFC FORUM Type 3 Tag Operationでは、NDEFデータを読み出す場合、Polling Command/ResponseとCheck Command/Responseが、リモートターゲット11とNFCデバイス1との間でやりとりされる。このCheck Command/Responseの交換は、NDEFデータのサイズに応じて複数回行われることがある。複数回のCheck Command/Responseの交換が行われた場合、複数回のCheck Command/Responseにより取得されたデータを結合したデータがNDEFデータとなる。
NFCC22のインターフェイスレベルが高レベルであるとき、NFCC22は、Polling Command/Responseと1回以上のCheck Command/Responseを主体的に実行する。そして、複数回のCheck Command/Responseの交換が行われた場合、NFCC22は、その複数回のCheck Command/Responseにより取得されたデータを結合し、NDEFデータを生成する。一方、NFCC22のインターフェイスレベルが中レベルまたは低レベルである場合には、NFCC22は、DH21から供給されるPolling Command/Responseや1回以上のCheck Command/Responseの中継だけを行う。複数回のCheck Command/Responseにより取得されたデータからNDEFデータを生成する処理もDH21が行う。
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる場合はもちろん、必ずしも時系列的に処理されなくとも、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで実行されてもよい。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。