以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の第1の側面の通信システム(例えば、図1の通信システム11)は、情報処理装置(例えば、図3のリーダライタ22)と、複数のファイルシステム(例えば、図2のファイルシステム51とファイルシステム52)を有する情報端末装置(例えば、図2の非接触ICカード21)とが通信を行う通信システムであって、前記情報処理装置は、前記情報端末装置が有する複数のファイルシステムのうち、送信先として1つのファイルシステムを特定するファイルシステムID(例えば、図2のファイルシステムID#1)を含む指令(例えば、図4のコマンド120)を送信する第1の送信手段(例えば、図3の送信部91)と、前記第1の送信手段により送信した前記指令に対する前記情報端末装置からの応答を受信する第1の受信手段(例えば、図3の受信部92)とを備え、前記情報端末装置は、前記第1の送信手段により送信されてきた前記指令を受信する第2の受信手段(例えば、図2の受信部62)と、前記第2の受信手段により受信された前記指令を記憶する受信記憶手段(例えば、図2の受信バッファ44)と、複数のファイルシステムのうちの1つのファイルシステムに対応するとともに、前記受信記憶手段により記憶された前記指令を取得し、取得した前記指令に含まれる前記ファイルシステムIDが、自分自身に対応する前記ファイルシステムを特定するファイルシステムIDと一致する場合に、前記指令に対応する処理を実行する実行手段(例えば、図2のICカードOS45またはICカードOS46)と、前記実行手段により実行された処理の結果である実行結果を、前記情報処理装置に送信するために記憶するとともに、前記実行結果を、前記受信記憶手段に供給する送信記憶手段(例えば、図2の送信バッファ47)と、前記送信記憶手段に記憶された前記実行結果を、前記情報処理装置に送信する第2の送信手段(例えば、図2の送信部61)とを備え、前記実行手段は、前記指令に対応する処理を実行した結果、前記情報端末装置が有する複数のファイルシステムのうちの他のファイルシステムにより実行される処理がある場合、前記実行結果に、送信先として前記他のファイルシステムを特定する他のファイルシステムIDを含め(例えば、図9のステップS256または図10のステップS306)、前記送信記憶手段は、前記実行手段により実行された処理の結果である前記実行結果を記憶するとともに(例えば、図8のステップS202)、前記実行結果を前記受信記憶手段に供給し(例えば、図8のステップS203)、前記第2の送信手段は、前記送信記憶手段に記憶された前記実行結果を、前記情報処理装置に対する応答として送信し(例えば、図8のステップS204)、前記受信記憶手段は、前記送信記憶手段から供給された前記実行結果をさらに記憶し(例えば、図7のステップS152)、前記実行手段は、前記受信記憶手段に記憶された前記実行結果を取得し、取得した前記実行結果に含まれる送信先のファイルシステムIDが、自分自身に対応する前記ファイルシステムを特定するファイルシステムIDと一致する場合に、前記実行結果に対応する処理をさらに実行する(例えば、図9のステップS254または図10のステップS304)。
この通信システムの前記情報処理装置は、前記第1の送信手段により送信した前記指令に対応する応答が送信されてくるまでの待機時間を設定する待機時間設定手段(例えば、図3のタイマ95)をさらに備え、前記待機時間設定手段は、前記第1の受信手段により受信された前記情報端末装置からの前記応答が自分自身への応答でない場合、前記待機時間を延長する(例えば、図6のステップS119)。
本発明の第2の側面の情報端末装置(例えば、図2の非接触ICカード21)は、複数のファイルシステムを有し、情報処理装置と通信を行う情報端末装置であって、前記情報処理装置から送信されてきた指令(例えば、図4のコマンド120)であって、自分自身が有する複数のファイルシステムのうち、送信先として1つのファイルシステムを特定するファイルシステムID(例えば、図2のファイルシステムID#1)を含む指令を受信する受信手段(例えば、図2の受信部62)と、前記受信手段により受信された前記指令を記憶する受信記憶手段(例えば、図2の受信バッファ44)と、複数のファイルシステムのうちの1つのファイルシステムに対応するとともに、前記受信記憶手段により記憶された前記指令を取得し、取得した前記指令に含まれる前記ファイルシステムIDが、自分自身に対応する前記ファイルシステムを特定するファイルシステムIDと一致する場合に、前記指令に対応する処理を実行する実行手段(例えば、図2のICカードOS45またはICカードOS46)と、前記実行手段により実行された処理の結果である実行結果を、前記情報処理装置に送信するために記憶するとともに、前記実行結果を、前記受信記憶手段に供給する送信記憶手段と、前記送信記憶手段に記憶された前記実行結果を、前記情報処理装置に送信する送信手段(例えば、図2の送信バッファ47)とを備え、前記実行手段は、前記指令に対応する処理を実行した結果、前記情報端末装置が有する複数のファイルシステムのうちの他のファイルシステムにより実行される処理がある場合、前記実行結果に、送信先として前記他のファイルシステムを特定する他のファイルシステムIDを含め(例えば、図9のステップS256または図10のステップS306)、前記送信記憶手段は、前記実行手段により実行された処理の結果である前記実行結果を記憶するとともに(例えば、図8のステップS202)、前記実行結果を前記受信記憶手段に供給し(例えば、図8のステップS203)、前記送信手段は、前記送信記憶手段に記憶された前記実行結果を、前記情報処理装置に対する応答として送信し(例えば、図8のステップS204)、前記受信記憶手段は、前記送信記憶手段から供給された前記実行結果をさらに記憶し(例えば、図7のステップS152)、前記実行手段は、前記受信記憶手段に記憶された前記実行結果を取得し、取得した前記実行結果に含まれる送信先のファイルシステムIDが、自分自身に対応する前記ファイルシステムを特定するファイルシステムIDと一致する場合に、前記実行結果に対応する処理をさらに実行する(例えば、図9のステップS254または図10のステップS304)。
この情報端末装置の前記実行手段は、前記指令に対応する処理を実行した結果、前記情報端末装置が有する複数のファイルシステムのうちの他のファイルシステムにより実行される処理がある場合、前記実行結果に、送信先として前記他のファイルシステムを特定する他のファイルシステムID(例えば、図2のファイルシステムID#2)とともに(例えば、図9のステップS256または図10のステップS306)、前記情報処理装置に前記指令に対する応答を送信するまでの待機時間を延長するための延長時間をさらに含め(例えば、図9のステップS257または図10のステップS307)、前記送信記憶手段は、前記実行結果を記憶するとともに(例えば、図8のステップS202)、前記実行結果を前記受信記憶手段に供給し(例えば、図8のステップS203)、前記送信手段は、前記送信記憶手段に記憶された前記実行結果を、前記情報処理装置に対する応答として送信し、前記受信記憶手段は、前記送信記憶手段から供給された前記実行結果をさらに記憶し(例えば、図7のステップS152)、前記実行手段は、前記受信記憶手段に記憶された前記実行結果を取得し、取得した前記実行結果に含まれる送信先のファイルシステムIDが、自分自身に対応する前記ファイルシステムを特定するファイルシステムIDと一致する場合に、前記実行結果に対応する処理をさらに実行する(例えば、図9のステップS254または図10のステップS304)。
本発明の第2の側面の情報処理方法は、複数のファイルシステムを有し、情報処理装置と通信を行う情報端末装置が、前記情報処理装置から送信されてきた指令(例えば、図4のコマンド120)であって、自分自身が有する複数のファイルシステムのうち、送信先として1つのファイルシステムを特定するファイルシステムID(例えば、図2のファイルシステムID#1)を含む指令を受信し(例えば、図2の受信部62が実行する処理)、受信された前記指令を受信記憶手段(例えば、図2の受信バッファ44)に記憶させ(例えば、図7のステップS152)、複数のファイルシステムのうちの1つのファイルシステムに対応するとともに、前記受信記憶手段に記憶された前記指令を取得し、取得した前記指令に含まれる前記ファイルシステムIDが、自分自身に対応する前記ファイルシステムを特定するファイルシステムIDと一致する場合に、前記指令に対応する処理を実行し(例えば、図9のステップS254または図10のステップS304)、その結果、前記情報端末装置が有する複数のファイルシステムのうちの他のファイルシステムにより実行される処理がある場合、前記実行結果に、送信先として前記他のファイルシステムを特定する他のファイルシステムIDを含め(例えば、図9のステップS256または図10のステップS306)、実行された処理の結果である実行結果を、前記情報処理装置に送信するために送信記憶手段(例えば、図2の送信バッファ47)に記憶させるとともに(例えば、図8のステップS202)、前記実行結果を、前記受信記憶手段に供給し(例えば、図8のステップS203)、前記送信記憶手段に記憶された前記実行結果を、前記情報処理装置に送信するステップを含む情報処理方法である。
以下、図を参照して、本発明を適用した一実施の形態について説明する。
図1は、本発明を適用した通信システム11の一実施の形態の構成例を示している。
図1において、通信システム11は、非接触ICカード(情報端末装置)21、リーダライタ(非接触リーダライタ)22、および非接触ICカード(情報端末装置)23により構成されている。
非接触ICカード21および非接触ICカード23は、耐タンパ性を備えたセキュアなメモリ(後述する受信バッファと送信バッファ)を内部に有している。リーダライタ22は、耐タンパ性を備えており、非接触ICカード21または非接触ICカード23に対してコマンドを送信したり、非接触ICカード21または非接触ICカード23からのレスポンスを受信する。
非接触ICカード21、リーダライタ22、および非接触ICカード23のそれぞれは、無線通信を行う機能を有するものとし、複数の通信プロトコルには、NFC(Near Field Communication)が含まれるものとする。
NFCは、他の機器との間で、単一の周波数の搬送波を使用した、電磁誘導による近接通信の通信プロトコルで、搬送波の周波数としては、例えば、ISM(Industrial Scientific Medical)バンドの13.56MHzなどが採用される。
ここで、近接通信とは、通信する装置同士の距離が、数10cm以内となって可能となる通信を意味し、通信する装置同士(の筐体)が接触して行う通信も含まれる。
また、非接触ICカード21(非接触ICカード23)は、例えば、ISO/IEC (International Organization for Standardization / International Electrotechnical Commission)15693の規格に準拠した非接触の通信をリーダライタ22との間で行う。すなわち、非接触ICカード21(非接触ICカード23)は、リーダライタ22が発する電磁波(電波)から所定以上の電力を検出した(所定以上の電力が得られた)場合に動作可能となり、非接触ICカード23(非接触ICカード21)またはリーダライタ22と、電磁波により通信する。
図2は、図1の非接触ICカード21の構成例を示すブロック図である。
非接触ICカード21には、アンテナ41、送受信部42、A/D(アナログ/デジタル)変換・デモジュレーション部43、受信バッファ44、ICカードOS45、ICカードOS46、送信バッファ47、およびD/A(デジタル/アナログ)変換・モジュレーション部48が設けられている。
アンテナ41は、閉ループのコイルを構成しており、このコイルに流れる電流が変化することで、電磁波を出力する。また、アンテナ41としてのコイルを通る磁束が変化することで、アンテナ41に電流が流れる。
送受信部42は、アンテナ41を介して、他の装置(例えば、リーダライタ22や非接触ICカード23)から送信されてきたデータを受信したり、D/A変換・モジュレーション部48から供給されてきたデータを、アンテナ41を介して他の装置(例えば、リーダライタ22や非接触ICカード23)に送信する処理を実行する。
具体的には、送受信部42には、送信部61と受信部62とが設けられている。送信部61は、D/A変換・モジュレーション部48から供給された、送信するデータに対する搬送波(所定の単一の周波数の搬送波を放射させるための電流としての搬送波)を変調した電磁波を、アンテナ41に送信する。これにより、アンテナ41からは、送信するデータに従って搬送波が変調された電磁波が放射される。受信部62は、アンテナ41に流れる電流を受信し、同調と検波を行い、これをA/D変換・デモジュレーション部43に供給する。
A/D変換・デモジュレーション部43は、受信部62からのデータをA/D変換した後、復調(デモジュレーション)し、これを、受信バッファ44に供給する。
受信バッファ44は、A/D変換・デモジュレーション部43から供給されてきたデータを一時格納(バッファリング)する。
ICカードOS45とICカードOS46は、受信バッファ44にデータが格納された場合、そのデータを取得し、取得したデータに対応する処理を実行する。具体的には、ICカードOS45とICカードOS46は、それぞれファイルシステムを識別するファイルシステムIDが付されたファイルシステムを有しており、各ICカードOS(ICカードOS45またはICカードOS46)は、取得したコマンド(データ)に、自分自身が対応するファイルシステムを識別するファイルシステムIDが指定されている場合に、そのコマンドに対応する処理を実行する。なお、ICカードOS45とICカードOS46との間(すなわち、各ファイルシステム間)は、ファイアウォールにより保護されている。
具体的には、ICカードOS45には、ファイルシステムID#1のファイルシステム51が格納されており、ICカードOS45は、そのファイルシステムID#1のファイルシステム51に対応する処理を実行する。例えば、受信バッファ44から取得したデータが、ファイルシステムID#1のファイルシステム51に対するコマンドである場合(すなわち、コマンドの送信先がファイルシステムID#1である場合)、ICカードOS45は、ファイルシステムID#1のファイルシステム51に基づいて、そのコマンドに対応する処理を実行する。ICカードOS45は、コマンドに対応して実行した結果(以下、処理結果と称する)を、送信バッファ47に供給する。
また、ICカードOS46には、ファイルシステムID#2のファイルシステム52が格納されており、ICカードOS46は、そのファイルシステムID#2のファイルシステム52に対応する処理を実行する。例えば、受信バッファ44から取得したデータが、ファイルシステムID#2のファイルシステム52に対するコマンドである場合(すなわち、コマンドの送信先がファイルシステムID#2である場合)、ICカードOS46は、ファイルシステムID#2のファイルシステム52に基づいて、そのコマンドに対応する処理を実行する。ICカードOS46は、コマンドに対応して実行した結果(以下、処理結果と称する)を、送信バッファ47に供給する。
すなわち、ICカードOS45は、受信バッファ44から取得したデータが、ファイルシステムID#1のファイルシステム51に対するコマンドではなく、ファイルシステムID#2のファイルシステム52に対するコマンドである場合、そのコマンドに対応する処理は実行しない。また、ICカードOS46は、受信バッファ44から取得したデータが、ファイルシステムID#2のファイルシステム52に対するコマンドではなく、ファイルシステムID#1のファイルシステム51に対するコマンドである場合、そのコマンドに対応する処理は実行しない。換言すれば、ICカードOS45とICカードOS46は、自分自身が有するファイルシステムのファイルシステムID以外のファイルシステムIDを指定するコマンドが受信バッファ44から供給されてきた場合には、そのコマンドに対応する処理を実行しない。
送信バッファ47は、ICカードOS45またはICカードOS46から供給されてきた処理結果を一時格納(バッファリング)するとともに、それを、受信バッファ44にも供給する。このとき、送信バッファ47と受信バッファ44には、同一のデータ(処理結果)が格納される。このようにすることで、送信バッファ47から受信バッファ44に供給された処理結果が、あたかも、リーダライタ22などから受信されたものとみなすことができる。
D/A変換・モジュレーション部48は、送信バッファ47にデータ(例えば、処理結果)が格納された場合、そのデータを取得し、これを変調(モジュレーション)した後、D/A変換し、これを、送受信部42の送信部61に供給する。
送信部61は、上述したように、D/A変換・モジュレーション部48から供給された、送信するデータに対する搬送波(所定の単一の周波数の搬送波を放射させるための電流としての搬送波)を変調した電磁波を、アンテナ41に送信することで、他の装置に対してデータを送信する。
このように、ICカードOS45またはICカードOS46による処理結果は、まず、送信バッファ47に格納される。次に、送信バッファ47は、この処理結果を、リーダライタ22などの外部の機器に送信させるとともに、受信バッファ44に供給する。受信バッファ44に格納された処理結果は、再び、ICカードOS45とICカードOS46とに取得され、送信先のファイルシステムIDが一致する場合に、そのICカードOSにおいて処理が実行されるので、非接触ICカード21内で、リーダライタ22からコマンドを受けなくても、処理の実行を続けることができる構成とされている。
なお、図1の非接触ICカード23の構成は、上述した図2の非接触ICカード21と同様に構成されるため、その説明は省略する。
次に、図3を参照して図1のリーダライタ22の構成例を説明する。
リーダライタ22には、アンテナ81、送受信部82、A/D変換・デモジュレーション部83、制御部84、およびD/A変換・モジュレーション部85が設けられている。
アンテナ81は、閉ループのコイルを構成しており、このコイルに流れる電流が変化することで、電磁波を出力する。また、アンテナ81としてのコイルを通る磁束が変化することで、アンテナ81に電流が流れる。
送受信部82は、アンテナ81を介して、他の装置(例えば、非接触ICカード21や非接触ICカード23)から送信されてきたデータを受信したり、D/A変換・モジュレーション部85から供給されてきたデータを、アンテナ81を介して他の装置(例えば、非接触ICカード21や非接触ICカード23)に送信する処理を実行する。
具体的には、送受信部82には、送信部91と受信部92とが設けられている。送信部91は、D/A変換・モジュレーション部85から供給された、送信するデータに対する搬送波(所定の単一の周波数の搬送波を放射させるための電流としての搬送波)を変調した電磁波を、アンテナ81に送信する。これにより、アンテナ81からは、送信するデータに従って搬送波が変調された電磁波が放射される。受信部92は、アンテナ81に流れる電流を受信し、同調と検波を行い、これをA/D変換・デモジュレーション部83に供給する。
A/D変換・デモジュレーション部83は、受信部92からのデータをA/D変換した後、復調(デモジュレーション)し、これを、制御部84に供給する。
制御部84は、A/D変換・デモジュレーション部83から供給されてきたデータに基づく処理を実行したり、送信するデータを、D/A変換・モジュレーション部85に対して供給したりする。
具体的には、制御部84には、制御処理部93、判定部94、およびタイマ95が設けられており、制御部84の内部では、それぞれデータの授受が可能である。制御処理部93は、非接触ICカード21や非接触ICカード23に対するコマンドを生成したり、非接触ICカード21や非接触ICカード23から供給されてきたレスポンスに対応する処理を実行する。
判定部94は、非接触ICカード21や非接触ICカード23から供給されてきたレスポンス(データ)が、自分自身(すなわち、リーダライタ22)に対するレスポンスであるか否かを判定する。例えば、非接触ICカード21や非接触ICカード23から供給されてきたレスポンス(データ)の送信先に、自分自身(リーダライタ22)が指定されている場合には、自分自身に対するレスポンスであると判定し、他の装置のID(例えば、他のファイルシステムID)が指定されている場合には、自分自身に対するレスポンスでないと判定する。
タイマ95は、制御処理部93により生成されたコマンドが送信された後、そのコマンドに対応するレスポンスが送信されてくるまでの待機時間を設定する。例えば、タイマ95は、制御処理部93が生成したコマンドが、D/A変換・モジュレーション部85、送受信部82の送信部91、およびアンテナ81を介して、非接触ICカード21(または非接触ICカード23)に送信された場合、このコマンドに対するレスポンスが送信されてくるまでの待機時間T1を設定する。
次に、図4を参照して、図3の制御処理部93が生成するコマンドのパケット構造を説明する。すなわち、図4は、リーダライタ22から非接触ICカード21や非接触ICカード23に対して送信されるコマンド120のパケット構造の例である。
図4に示されるように、コマンド120には、Command data(コマンドデータ)121、File System ID(ファイルシステムID)122、Data(データ)123、およびCRC(Cyclic Redundancy Check)124が含まれている。
コマンドデータ121は、そのコマンド120の送信先の装置に実行させるための指令(命令)である。ファイルシステムID122は、そのコマンドを実行させるファイルシステムを特定するためのファイルシステムIDである。例えば、非接触ICカード21のICカードOS45に実行させるコマンドを送信する場合、ファイルシステムIDはファイルシステムID#1となる。すなわち、送信先のファイルシステムIDが、コマンド120のファイルシステムID122に記述される。データ123は、コマンドデータ121の指令を実行するときに用いられるデータである。例えば、100円を課金するコマンドを送信する場合、コマンドデータ121は、「課金処理」の指令とされ、データ123は、「100円」とされる。CRC124は、巡回冗長検査のためのデータであり、受信側でそのデータが正しく受信できたか否かを検査するために用いられる。
なお、このCRC124を用いた検査は、図2の非接触ICカード21のA/D変換・デモジュレーション部43によって実行されるが、本発明とは直接関係がないので、その詳細は省略する。
このように、コマンド120には、そのコマンドに対する処理を実行させるファイルシステムを特定するファイルシステムIDが含まれる。なお、送信元を特定するデータを含める場合、例えば、コマンドデータ121に格納されるようにしてもよいし、送信元を特定するデータを格納する領域を、別途設けるようにしてもよい。
図5は、リーダライタ22と非接触ICカード21の各部とにおいて実行されるデータの送受信処理を説明するフローチャートである。なお、図5は、リーダライタ22、非接触ICカード21の受信バッファ44、送信バッファ47、ICカードOS45、およびICカードOS46の各部において実行される処理をフローチャートにしているものである。また、この処理は、例えば、リーダライタ22に対して、非接触ICカード21にコマンドを送信するようユーザから指令され、非接触ICカード21が近接された場合などに開始される。さらに、図中、実線は、送信されるデータに含まれる送信先と、送信される側が一致することを示し(すなわち、送信されるデータが有効に用いられることを示し)、波線は、送信されるデータに含まれる送信先と、送信される側が一致しないことを示している。
ステップS11において、リーダライタ22は、ファイルシステムID#1を含むコマンドを送信する。具体的には、リーダライタ22は、図4のファイルシステムID122を、「ファイルシステムID#1」とするコマンド120を、非接触ICカード21に対して送信する。このとき、リーダライタ22は、コマンド120に対応するレスポンスの待ち時間(ウエイト時間)を、待ち時間T1と設定する(図中、R/Wウエイト時間と記述している)。なお、以下において、ステップS11の処理で生成された、図4のコマンド120のファイルシステムID122が「ファイルシステムID#1」とされたコマンド120を、コマンド120−1と称する。コマンド120−1は、図中、「ID#1付きコマンド」に対応する。
これに対して、非接触ICカード21の受信バッファ44は、ステップS31において、リーダライタ22から供給されてきたコマンド120−1を受信し、一時格納する。具体的には、受信バッファ44は、リーダライタ22から供給されてきたコマンド120−1を、アンテナ41、受信部62、およびA/D変換・デモジュレーション部43を介して受信し、一時格納する。
受信バッファ44にコマンド120−1が格納されると、ICカードOS45とICカードOS46とからそのコマンド120−1(データ)の読み出しが要求されるので、ステップS32において、受信バッファ44は、格納しているコマンド120−1を、ファイルシステムID#1のファイルシステム51を有するICカードOS45と、ファイルシステムID#2のファイルシステム52を有するICカードOS46とに供給する。
これに対して、ICカードOS45は、ステップS71において、受信バッファ44に格納されたコマンド120−1の供給を受け付け(取得し)、そのコマンド120−1に含まれる送信先のファイルシステムIDと、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、コマンド120−1は、ファイルシステムID#1を送信先としているので(図4のファイルシステムID122がファイルシステムID#1であるので)、ICカードOS45は、一致すると判定する。
そして、ICカードOS45は、そのコマンド120−1に含まれるコマンドデータ121に対する処理を、データ123に基づいて実行し、ステップS72において、その処理結果を送信バッファ47に供給する。なお、このとき、ICカードOS45が実行した処理の結果、ファイルシステムID#2に実行させるための処理があると判定されたため、この処理結果は、送信先のファイルシステムIDを、「ファイルシステムID#2」としたコマンド120(図4のファイルシステムID122がファイルシステムID#2であるコマンド120)となる。なお、以下において、ICカードOS45によるコマンド120−1に対する処理を実行した結果である、図4のコマンド120のファイルシステムID122が「ファイルシステムID#2」とされたコマンド120を、コマンド120−2と称する。コマンド120−2は、図中、「ID#2付きコマンド」に対応する。
一方、受信バッファ44によりステップS32において供給されたコマンド120−1は、ICカードOS46にも供給されるので、ICカードOS46は、ステップS91において、これを受け付け(取得し)、そのコマンド120−1に含まれる送信先のファイルシステムIDと、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、コマンド120−1は、ファイルシステムID#1を送信先としているので(図4のファイルシステムID122がファイルシステムID#1であるので)、ICカードOS46は、一致しないと判定し、そのまま待機する。
また、送信バッファ47は、ステップS51において、ICカードOS45によりステップS72の処理で送信バッファ47に供給された処理結果、すなわち、ファイルシステムID#2を含むコマンド120−2を受け付け、これを格納するとともに、受信バッファ44に供給する。受信バッファ44は、ステップS33において、送信バッファ47から供給されたコマンド120−2(ファイルシステムID#2を含むコマンド120−2)を格納する。また、送信バッファ47にデータ(コマンド120−2)が格納されると、ステップS52において、D/A変換・モジュレーション部48によりそのデータが読み出され、送信部61、およびアンテナ41を介して、リーダライタ22に送信される。
リーダライタ22は、ステップS12において、送信バッファ47に格納され、送信されたコマンド120−2(ファイルシステムID#2を含むコマンド120−2)を受信する。リーダライタ22は、このコマンド120−2のファイルシステムIDをみて、自分自身への応答でないことを確認すると、ステップS11の処理で設定した待ち時間T1をさらに延長し、時間T2とする(図中、R/W延長ウエイト時間と記述している)。
一方、ステップS33の処理で受信バッファ44にデータ(ファイルシステムID#2を含むコマンド120−2)が格納されると、ICカードOS45とICカードOS46からそのデータの読み出しが要求されるので、受信バッファ44は、ステップS34において、格納しているコマンド120−2を、ファイルシステムID#1のファイルシステム51を有するICカードOS45と、ファイルシステムID#2のファイルシステム52を有するICカードOS46とに供給する。
これに対して、ICカードOS45は、ステップS73において、受信バッファ44に格納されたコマンド120−2の供給を受け付け(取得し)、そのコマンド120−2に含まれる送信先のファイルシステムIDと、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、コマンド120−2は、ファイルシステムID#2を送信先としているので(図4のファイルシステムID122がファイルシステムID#2であるので)、ICカードOS45は、一致しないと判定し、そのまま待機する。
一方、受信バッファ44によりステップS34において供給されたコマンド120−2は、ICカードOS46にも供給されるので、ICカードOS46は、ステップS92において、これを受け付け(取得し)、そのコマンド120に含まれる送信先のファイルシステムIDと、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、コマンド120−2は、ファイルシステムID#2を送信先としているので(図4のファイルシステムID122がファイルシステムID#2であるので)、ICカードOS46は、一致すると判定する。
そして、ICカードOS46は、そのコマンド120−2に含まれるコマンドデータ121に対する処理を、データ123に基づいて実行し、ステップS93において、その処理結果を送信バッファ47に供給する。なお、このとき、ICカードOS46が実行した処理の結果は、ファイルシステムID#2のファイルシステム52を実行するICカードOS46から、ファイルシステムID#1のファイルシステム51を実行するICカードOS45へのレスポンスとなるので、この処理結果は、送信元のファイルシステムIDを「ファイルシステムID#2」とし、送信先のファイルシステムIDを「ファイルシステムID#1」としたレスポンスとなる。すなわち、ファイルシステムID#1のファイルシステム51を備えるICカードOS45から送信されてきたコマンド120−2に対応する処理を、ファイルシステムID#2のファイルシステム52のICカードOS46が実行した結果、そのレスポンスは、ファイルシステムID#1のファイルシステム51に戻される。なお、レスポンスのパケット構造は、図4のコマンドパケット構造と基本的に同様であり、コマンドデータ121が「レスポンスデータ」とされる。また、このレスポンスは、図中、「ID#2→ID#1へのレスポンス」に対応する。
また、送信バッファ47は、ステップS53において、ICカードOS46によりステップS93の処理で送信バッファ47に供給された処理結果、すなわち、ファイルシステムID#2のファイルシステム52を送信元とし、ファイルシステムID#1のファイルシステム51を送信先とするレスポンス(ID#2→ID#1へのレスポンス)を受け付け、これを格納するとともに、受信バッファ44に供給する。受信バッファ44は、ステップS35において、送信バッファ47から供給されたレスポンス(ファイルシステムID#2を送信元とし、ファイルシステムID#1を送信先とするレスポンス)を格納する。また、送信バッファ47にデータ(レスポンス)が格納されると、ステップS54において、D/A変換・モジュレーション部48によりそのデータが読み出され、送信部61、およびアンテナ41を介して、リーダライタ22に送信される。
リーダライタ22は、ステップS13において、送信バッファ47に格納され、送信されたレスポンス(ファイルシステムID#2を送信元とし、ファイルシステムID#1を送信先とするレスポンス)を受信する。リーダライタ22は、このレスポンスの送信先のファイルシステムIDをみて、自分自身への応答でないことを確認すると、ステップS12の処理で延長しておいた待ち時間T2をさらに延長し、時間T3とする(図中、R/W再延長ウエイト時間と記述している)。
一方、ステップS35の処理で受信バッファ44にデータ(送信元がファイルシステムID#2であり、送信先がファイルシステムID#1であるレスポンス)が格納されると、ICカードOS45とICカードOS46からそのデータの読み出しが要求されるので、受信バッファ44は、ステップS36において、格納しているレスポンスを、ファイルシステムID#1のファイルシステム51を有するICカードOS45と、ファイルシステムID#2のファイルシステム52を有するICカードOS46とに供給する。
これに対して、ICカードOS45は、ステップS74において、受信バッファ44に格納されたレスポンス(送信元がファイルシステムID#2であり、送信先がファイルシステムID#1であるレスポンス)の供給を受け付け(取得し)、そのレスポンスに含まれる送信先のファイルシステムIDと、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、レスポンスは、送信元をファイルシステムID#2とし、送信先をファイルシステムID#1としているので、ICカードOS45は、一致すると判定する。
そして、ICカードOS45は、そのレスポンスに含まれるレスポンスデータ(図4のコマンドデータ121に対応するレスポンスデータ)に対する処理を実行し、ステップS75において、その処理結果を送信バッファ47に供給する。なお、このとき、ICカードOS45が実行した処理の結果は、リーダライタ22へのレスポンスであるとされるので、この処理結果は、送信元をファイルシステムID#1とし、送信先をリーダライタ22とするレスポンスとなる。例えば、このレスポンスには、送信元をファイルシステムID#1とし、送信先を、リーダライタ22を特定するIDなどとするデータが含まれる。このレスポンスは、図中、「ID#1からのレスポンス」に対応する。
一方、受信バッファ44によりステップS36において供給されたレスポンス(送信元がファイルシステムID#2であり、送信先がファイルシステムID#1であるレスポンス)は、ICカードOS46にも供給されるので、ICカードOS46は、ステップS94において、これを受け付け(取得し)、そのレスポンスに含まれる送信先のファイルシステムIDと、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、レスポンスは、送信元とファイルシステムID#2とし、送信先をファイルシステムID#1としているので、ICカードOS46は、一致しないと判定し、そのまま待機する。
また、送信バッファ47は、ステップS55において、ICカードOS45によりステップS75の処理で送信バッファ47に供給されたレスポンス、すなわち、送信元をファイルシステムID#1とし、送信先をリーダライタ22とするレスポンスを受け付け、これを格納するとともに、受信バッファ44に供給する。受信バッファ44は、ステップS37において、送信バッファ47から供給されたレスポンス(送信元をファイルシステムID#1とし、送信先をリーダライタ22とするレスポンス)を格納する。また、送信バッファ47にデータ(レスポンス)が格納されると、ステップS56において、D/A変換・モジュレーション部48によりそのデータが読み出され、送信部61、およびアンテナ41を介して、リーダライタ22に送信される。
リーダライタ22は、ステップS14において、送信バッファ47に格納され、送信されたレスポンス(送信元をファイルシステムID#1とし、送信先をリーダライタ22とするレスポンス)を受信する。リーダライタ22は、このレスポンスをみて、自分自身への応答であることを確認すると、そのレスポンスに対応する所定の処理を実行し、処理を終了する。これにより、リーダライタ22は、ICカードOS45に設けられているファイルシステムID#1のファイルシステム51に送信したコマンド(コマンド120−1)に対応するレスポンスを、受信することができる。
一方、ステップS37の処理で受信バッファ44にデータ(送信元をファイルシステムID#1とし、送信先をリーダライタ22とするレスポンス)が格納されると、ICカードOS45とICカードOS46からそのデータの読み出しが要求されるので、受信バッファ44は、ステップS38において、格納しているレスポンスを、ファイルシステムID#1のファイルシステム51を有するICカードOS45と、ファイルシステムID#2のファイルシステム52を有するICカードOS46とに供給する。
これに対して、ICカードOS45は、ステップS76において、受信バッファ44に格納されたレスポンスの供給を受け付け(取得し)、そのレスポンスに含まれる送信先(のID)と、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、レスポンスは、リーダライタ22を特定するIDなどを送信先としているので、ICカードOS45は、一致しないと判定し、そのまま待機する。そして、処理は終了される。
一方、受信バッファ44によりステップS38において供給されたレスポンスは、ICカードOS46にも供給されるので、ICカードOS46は、ステップS95において、これを受け付け(取得し)、そのレスポンスに含まれる送信先(のID)と、自分自身に備えられているファイルシステムに対応するファイルシステムIDとが一致するか否かを判定する。この例の場合、レスポンスは、リーダライタ22を特定するIDなどを送信先としているので、ICカードOS46は、一致しないと判定し、そのまま待機する。そして、処理は終了される。
図5の処理により、リーダライタ22は、ファイルシステムID#1のファイルシステム51を有するICカードOS45に対するコマンドを送信するだけで、ファイルシステム51のICカードOS45とファイルシステム52のICカードOS46とで実行された処理結果をレスポンスとして受け取ることができる。また、リーダライタ22は、送信バッファ47に格納され、送信されてくるデータ(例えば、ステップS52の処理で送信されてくる、送信先をファイルシステムID#2とするコマンドや、ステップS54の処理で送信されてくる、送信先をファイルシステムID#1とするレスポンス)に基づいて、ファイルシステムID#1のファイルシステム51を有するICカードOS45に対するコマンドの待ち時間を延長するようにすることができ、エラーを防ぐことができる。
さらに、ファイルシステムID#1のファイルシステム51を有するICカードOS45とファイルシステムID#2のファイルシステム52を有するICカードOS46との間で、一方が処理を実行した結果、他方のファイルシステムに実行させる処理があった場合に、一方のファイルシステムを有するICカードOSが、他方のファイルシステムを送信先とするデータを、送信バッファ47に一旦格納させるようにし、送信バッファ47に格納されたデータを、受信バッファ44にさらに格納させるようにすることで、受信バッファ44には、あたかも受信したとさせるデータが格納されることになり、直接ファイルシステムを有するICカードOS同士がアクセスすることを防ぐので、異なるファイルシステム間のやりとりを、安全に行うことができる。
また、異なるファイルシステムを有するICカードOSが、一旦処理結果をリーダライタ22に戻さなくとも、非接触ICカード21の内部において、リーダライタ22に対するレスポンスを生成することができるので、リーダライタ22からのコマンドの受信回数を減らすことができ、もって、通信オーバーヘッドや速度の制限を減らすことができる。
次に、図5の処理をより詳細に説明するために、図3のリーダライタ22における処理の詳細を、図6のフローチャートを参照して説明する。なお、この処理は、例えば、リーダライタ22に対して、非接触ICカード21にコマンドを送信するようユーザから指令され、非接触ICカード21が近接された場合などに開始される。
ステップS111において、リーダライタ22は、送信先のファイルシステムIDを含むコマンドを、非接触ICカード21に送信する。具体的には、図3の制御部84の制御処理部93は、近接された非接触ICカード21が有する複数のファイルシステムの中から、コマンドを送信するファイルシステムのファイルシステムIDを含めるよう、コマンドを生成し、これを送信するよう制御する。例えば、制御処理部93は、図4のファイルシステムID122を、「ファイルシステムID#1」とするコマンド120−1を生成し、これをD/A変換・モジュレーション部85に供給する。D/A変換・モジュレーション部85は、このコマンド120−1を変調した後、D/A変換し、これを、送受信部82の送信部91に供給する。送信部91は、この送信するデータに対する搬送波を変調した電磁波を、アンテナ81に送信することで、非接触ICカード21に対してコマンド120−1を送信する。なお、この処理は、基本的に、図5のステップS11に対応する処理である。
ステップS112において、タイマ95は、コマンド120−1に対応するレスポンスの待ち時間(ウエイト時間)を、待ち時間T1を設定する。すなわち、タイマ95は、送信したコマンド120−1に対応するレスポンス(応答)が送信されてくるまでの待機時間T1を設定する。なお、ステップS111とステップS112の処理は、基本的に、図5のステップS11に対応する処理である。
ステップS113において、タイマ95は、設定されている待ち時間が経過したか否かを判定する。1回目のステップS113の処理では、ステップS111の処理でコマンド120−1を送信してから、ステップS112の処理で設定した待ち時間T1が経過したか否かを判定する。待ち時間T1が経過したと判定された場合、処理はステップS114に進み、制御処理部93は、エラー処理を実行し、処理を終了する。例えば、制御処理部93は、コマンドを送信してからそれに対応する応答が送信されてこなかったものと認識し、処理を終了する。
ステップS113において、まだ待ち時間が経過していないと判定された場合、処理はステップS115に進み、送受信部82の受信部92は、非接触ICカード21からのレスポンスが送信されてきたか否かを判定する。例えば、図5のステップS52,ステップS54,またはステップS56の処理により、非接触ICカード21の送信バッファ47から各部を介してデータが送信されてくる場合に、受信部92は、非接触ICカード21からレスポンスが送信されてきたと判定する。
ステップS115において、非接触ICカード21からのレスポンスが送信されてきたと判定された場合、ステップS116において、受信部92は、非接触ICカード21からのレスポンスを受信する。受信部92は、受信したレスポンスを、A/D変換・デモジュレーション部83に供給する。A/D変換・デモジュレーション部83は、このデータをA/D変換した後、復調し、これを制御部84に供給する。
ステップS117において、判定部94は、受信したレスポンスの送信先が自分自身であるか否かを判定する。すなわち、判定部94は、受信したレスポンスが、ステップS111の処理で非接触ICカード21に送信したコマンド120−1に対するレスポンスであるか否かを判定する。図5の例の場合、ステップS52とステップS54の処理で非接触ICカード21の送信バッファ47に格納され、送信されてきたレスポンスは、リーダライタ22に対するレスポンスではないので、NOと判定され、ステップS56の処理で非接触ICカード21の送信バッファ47に格納され、送信されてきたレスポンスは、リーダライタ22に対するレスポンスであるのでYESと判定される。なお、この処理では、送信先のアドレスが自分であるか否かに基づいて、そのレスポンスが正当であるか否かを判定しているが、送信元のアドレスが、ステップS111の処理でコマンドを送信したファイルシステムのファイルシステムIDであるか否かも、重ねて確認するようにしてもよい。
ステップS117において、受信したレスポンスの送信先が自分自身でないと判定された場合、すなわち、受信したレスポンスが、他のファイルシステムIDのファイルシステムに対するレスポンス(またはコマンド)である場合、処理はステップS118に進む。
ステップS118において、制御処理部93は、そのレスポンス(またはコマンド)に含まれる延長時間を取得する。具体的には、受信したレスポンス(またはコマンド)が、自分自身へのレスポンスではない場合、そのレスポンス(またはコマンド)には、待ち時間を延長するための延長時間が格納されている。そこで、制御処理部93は、そのレスポンスに含まれる延長時間を取得する。例えば、制御処理部93は、レスポンスに含まれる延長時間T11を取得する。
ステップS119において、タイマ95は、延長時間に基づいて、待ち時間を延長する。1回目のステップS119の例の場合、ステップS112の処理で設定された待ち時間T1に、さらに延長時間T11を加算した、時間(T1+T11)を、新たな待ち時間T2に設定する。これにより、延長時間T11に基づいて、待ち時間T1が延長される。なお、以下において、時間(T1+T11)=T2とする。また、この処理は、図5のステップS12に対応する処理である。
ステップS115において、非接触ICカード21からレスポンスが送信されてきていないと判定された場合、または、ステップS119の処理の後、処理はステップS113に戻り、それ以降の処理が繰り返される。例えば、2回目以降のステップS113の処理では、そのとき設定されている待ち時間(例えば、1回目のステップS119の処理で設定された待ち時間T2)が経過したか(コマンドを送信してから、時間T2が経過したか)否かが判定され、待ち時間内に、非接触ICカード21からレスポンスが送信されてきた場合、2回目のステップS117で、そのレスポンスの送信先が自分自身であるか否かが判定され、自分自身でないと判定された場合、2回目のステップS119において、延長時間に基づいて待ち時間がさらに延長され、時間T3とされる(図5のステップS13に対応する処理)。そして、その後のステップS113の処理では、コマンドを送信してから(ステップS111の後から)、待ち時間T3が経過したか否かが判定される。
このように、リーダライタ22は、自分自身へのレスポンスが受信されるまで、待ち時間を延長することができる。
そして、ステップS117において、受信したレスポンスの送信先が自分自身であると判定された場合、すなわち、ステップS111の処理で送信した非接触ICカード21へのコマンドに対するレスポンスを受信したと判定された場合、処理はステップS120に進み、制御処理部93は、そのレスポンスに対応する処理を実行する。その後、処理は終了される。なお、この処理は、図5のステップS14に対応する処理である。
図6の処理により、レスポンスが自分自身へのレスポンスでない場合に、延長時間に基づいて、レスポンスが送信されてくるまでの待ち時間を延長するようにしたので、タイムアウトを防ぐことができる。また、リーダライタ22は、コマンドを1回送信するだけで、複数のファイルシステムにより実行された結果のレスポンスを受信することができる。
次に、図5の処理をより詳細に説明するために、図2の受信バッファ44における処理の詳細を、図7のフローチャートを参照して説明する。
ステップS151において、受信バッファ44は、データが供給されてきたか否かを判定し、供給されてくるまで待機する。具体的には、受信バッファ44は、A/D変換・デモジュレーション部43または送信バッファ47からデータが供給されてきたか否かを判定し、データが供給されてくるまで待機する。
ステップS151において、データが供給されてきたと判定された場合、ステップS152において、受信バッファ44は、供給されてきたデータを格納(バッファリング)する。この処理は、図5の例においては、ステップS31,ステップS33,ステップS35,およびステップS37の処理に対応する処理である。
ステップS153において、受信バッファ44は、格納したデータは、自分自身が管理するファイルシステムのファイルシステムIDを含むか否かを判定する。具体的には、受信バッファ44は、格納したデータの送信先が、自分自身が管理するファイルシステムのファイルシステムIDであるか否かを判定する。図2の例の場合、受信バッファ44は、格納したデータの送信先が、ファイルシステムID#1またはファイルシステムID#2であるか否かを判定する。
ステップS153において、格納したデータが、自分自身が管理するファイルシステムのファイルシステムIDを含まないと判定された場合、このデータは、非接触ICカード21に対して送信されたものではないので、ステップS154において、受信バッファ44は、格納したデータを破棄し、処理はステップS151に戻る。
一方、ステップS153において、格納したデータが、自分自身が管理するファイルシステムのファイルシステムIDを含むと判定された場合、このデータは、非接触ICカード21に対して送信されてきたものであるので、処理をステップS155に進める。例えば、格納したデータの送信先に、ファイルシステムID#1が記述されている場合や、ファイルシステムID#2が記述されている場合に、処理をステップS155に進める。
ステップS155において、受信バッファ44は、ICカードOSからデータが要求されたか否かを判定する。図2の例の場合、ICカードOSは2つ(ICカードOS45とICカードOS46の2つ)あるので、受信バッファ44は、これらの2つのICカードOSからデータが要求される。
ステップS155において、ICカードOSからデータが要求されたと判定された場合、処理はステップS156において、受信バッファ44は、ICカードOSに、要求されたデータを供給する。図2の例の場合、受信バッファ44は、ICカードOS45とICカードOS46とに、ステップS152の処理で格納したデータを供給する。なお、この処理は、図5の例の場合、ステップS32,ステップS35,ステップS36,およびステップS38の処理に対応する。
ステップS155において、ICカードOSからデータが要求されていないと判定された場合、またはステップS156の処理の後、処理はステップS157に進み、受信バッファ44は、処理を終了するか否かを判定する。
ステップS151においてデータが供給されてこないと判定された場合、ステップS154の処理の後、または、ステップS157において処理を終了しないと判定された場合、処理はステップS151に戻り、それ以降の処理が繰り返される。ステップS157において、処理を終了すると判定された場合、処理は終了される。
図7の処理によれば、受信バッファ44は、供給されてきたデータを格納するとともに、ICカードOSからデータの読み出しが要求された場合に、要求されたデータを供給することができる。
次に、図5の処理をより詳細に説明するために、図2の送信バッファ47における処理の詳細を、図8のフローチャートを参照して説明する。
ステップS201において、送信バッファ47は、データが供給されてきたか否かを判定し、供給されてくるまで待機する。具体的には、送信バッファ47は、ICカードOS45またはICカードOS46からデータが供給されてきたか否かを判定し、データが供給されてくるまで待機する。
ステップS201において、データが供給されてきたと判定された場合、ステップS202において、送信バッファ47は、供給されてきたデータを格納(バッファリング)する。この処理は、図5の例においては、ステップS51,ステップS53,およびステップS55の処理に対応する処理である。
ステップS203において、送信バッファ47は、供給されてきたデータを受信バッファ44に供給する。すなわち、ステップS201の処理で供給されてきたと判定されたデータが、受信バッファ44にも供給される。
すなわち、ステップS202とステップS203の処理で、送信バッファ47にデータが供給されてきた場合、データが送信バッファ47に格納されるとともに、受信バッファ44にそのデータが供給される。
ステップS204において、送信バッファ47は、ステップS202の処理で格納したデータを、リーダライタ22に送信する。具体的には、送信バッファ47にデータが格納されると、D/A変換・モジュレーション部48から、そのデータが要求されるので、送信バッファ47は、D/A変換・モジュレーション部48に、格納したデータを供給する。D/A変換・モジュレーション部48は、そのデータを変調した後、D/A変換し、これを、送信部61に供給する。送信部は、送信するデータに対する搬送波を変調した電磁波を、アンテナ41に送信することで、リーダライタ22に対してデータを送信する。これにより、送信バッファ47に格納されたデータが、リーダライタ22に送信される。
ステップS205において、送信バッファ47は、処理を終了するか否かを判定する。ステップS205において処理を終了しないと判定された場合、処理はステップS201に戻り、それ以降の処理が繰り返される。また、ステップS205において、処理を終了すると判定された場合、処理は終了される。
図8の処理によれば、送信バッファ47は、供給されてきたデータを、格納するとともに、受信バッファ44に供給することができる。
次に、図5の処理をより詳細に説明するために、図2のICカードOS45における処理の詳細を、図9のフローチャートを参照して説明する。すなわち、この処理は、ファイルシステムID#1のファイルシステム51を有するICカードOS45が実行する処理である。なお、この処理は、後述する図10の処理(ICカードOS46が実行する処理)と基本的に同様であるが、図5の処理に対応するICカードOS45が実行する処理として、説明していく。
ステップS251において、ICカードOS45は、受信バッファ44にデータが格納されたか否かを判定し、データが格納されるまで待機する。例えば、図7のステップS153の処理で自分自身が管理するファイルシステムIDを含むと判定された場合(すなわち、ステップS153でYESと判定され、格納されたデータが破棄されなかった場合)に、ICカードOS45は、受信バッファ44にデータが格納されたと判定する。すなわち、ICカードOS45は、受信バッファ44に格納されたデータを取得できると確認したとき(破棄されないと確認したとき)、受信バッファ44にデータが格納されたと判定する。
ステップS251において、受信バッファ44にデータが格納されたと判定された場合、処理はステップS252に進み、ICカードOS45は、受信バッファ44に格納されたデータを取得する。すなわち、ICカードOS45は、受信バッファ44に格納されたデータの読み出しを要求し、そのデータを読み出す。
ステップS253において、ICカードOS45は、取得したデータの送信先のファイルシステムIDが、ファイルシステムID#1であるか否かを判定する。すなわち、ICカードOS45は、自分自身が有するファイルシステム51のファイルシステムID#1が、そのデータの送信先として指定されているか否かを判定する。このことは、取得したデータが、自分宛に送信されたものであるか否かを判定することと等価である。
なお、このとき判定されるデータは、図5の例の場合、ステップS71,ステップS73,ステップS74,およびステップS76の処理で取得されるコマンドやレスポンスである。より具体的には、図5のステップS71の処理で取得されるデータは、送信先がファイルシステムID#1であるコマンド120−1であるので、ステップS253の処理では、YESと判定される。また、図5のステップS73の処理で取得されるデータは、送信先がファイルシステムID#2であるコマンド120−2であるので、ステップS253の処理ではNOと判定される。さらに、図5のステップS74の処理で取得されるデータは、送信先がファイルシステムID#1であるレスポンスであるので、ステップS253の処理ではYESと判定される。また、図5のステップS76の処理で取得されるデータは、送信先がリーダライタ22を特定するIDであるレスポンスであるので、ステップS253の処理ではNOと判定される。
ステップS253において、取得したデータの送信先のファイルシステムIDがファイルシステムID#1と判定された場合、すなわち、取得したデータの送信先が自分自身であると判定された場合、処理はステップS254に進む。図5の例の場合、ステップS71またはステップS74の処理に対応する。
ステップS254において、ICカードOS45は、ステップS252の処理で取得したデータに対応する処理を実行する。この処理が図5のステップS71に対応する場合、取得されたデータは、コマンド120−1であるので、ICカードOS45は、コマンド120−1に含まれるコマンドデータ121(図4)と、データ123とに基づく処理を実行する。また、この処理が、図5のステップS74に対応する場合、取得されたデータは、レスポンスであるので、ICカードOS45は、レスポンスに含まれるデータに基づく処理を実行する。
ステップS255において、ICカードOS45は、ステップS254の処理による処理結果を、他のファイルシステムのICカードOSに送信するか否かを判定する。具体的には、ICカードOS45は、処理を実行した結果を、非接触ICカード21の内部に設けられている他のファイルシステム(図2の例の場合、ファイルシステム51とは異なるファイルシステム52)のICカードOSに送信するか、リーダライタ22に送信するか否かを判定する。すなわち、ICカードOS45は、処理を実行した結果が、他のファイルシステムのICカードOSに送信するものであるか、リーダライタ22に送信するものであるか否かを判定する。例えば、この処理が、図5のステップS71の処理に対応する処理である場合、処理結果を、他のファイルシステムのICカードOS46に送信すると判定される。
ステップS255において、処理結果を、他のファイルシステムのICカードOSに送信すると判定された場合、ステップS256において、ICカードOS45は、処理結果に、送信先のファイルシステムIDを含める。例えば、この処理が、図5のステップS71の処理に対応する処理である場合、ICカードOS45は、処理結果であるコマンド120(図4)の送信先であるファイルシステムID122を、「ファイルシステムID#2」とすることで、処理結果に送信先のファイルシステムIDを含める。
ステップS257において、ICカードOS45は、処理結果に延長時間を含める。延長時間とは、リーダライタ22により図6のステップS112の処理で設定された待ち時間を延長するための時間であり、図6のステップS119の処理で、待ち時間を延長するのに用いられる。すなわち、ICカードOS45は、処理結果を、他のファイルシステムのICカードOSに送信する場合、リーダライタ22にレスポンスが送信されてくるまでの待ち時間を延長して貰うために、処理結果に延長時間を含める。例えば、処理結果がコマンド120である場合、図4のデータ123の部分に延長時間(例えば、時間T11)を含める。
ステップS255において、処理結果を他のファイルシステムのICカードOSに送信しない(この例の場合、処理結果をリーダライタ22に送信する)と判定された場合、またはステップS257の処理の後、処理はステップS258に進む。
なお、処理結果がリーダライタ22に送信されるものである場合には、その処理結果の送信先は、リーダライタ22を特定するIDとされている。
ステップS258において、ICカードOS45は、処理結果を送信バッファ47に供給する。これにより、処理結果がリーダライタ22に送信するものである場合には、処理結果がリーダライタ22と受信バッファ44に送信されるとともに、処理結果が他のファイルシステムのICカードOSに送信するものである場合には、処理結果に延長時間が含められて、リーダライタ22と受信バッファ44に送信される。
ステップS253において、取得したデータの送信先のファイルシステムIDがファイルシステムID#1でない(この例の場合、取得したデータの送信先のファイルシステムIDがファイルシステムID#2である)と判定された場合、または、ステップS258の処理の後、処理はステップS259に進む。
ステップS259において、ICカードOS45は、処理を終了するか否かを判定し、処理を終了しないと判定された場合、処理はステップS251に戻り、それ以降の処理が繰り返される。ステップS259において、処理を終了すると判定された場合、処理は終了される。
図9の処理によれば、ICカードOS45は、取得したデータが自分自身に対するものである場合(送信先のファイルシステムIDが、自分自身が実行するファイルシステム51のファイルシステムID#1と一致する場合)、取得したデータに対応する処理を実行し、自分自身に対するものでない場合、処理を実行しない。
また、ICカードOS45は、処理を実行した結果、処理結果を、他のファイルシステムのICカードOSに送信する場合には、処理結果に送信先のファイルシステムIDを含めるとともに、リーダライタ22に通知するための延長時間を含めるようにしたので、リーダライタ22側で、待ち時間を延長することができる。
次に、図5の処理をより詳細に説明するために、図2のICカードOS46における処理の詳細を、図10のフローチャートを参照して説明する。すなわち、この処理は、ファイルシステムID#2のファイルシステム52を有するICカードOS46が実行する処理である。なお、この処理は、上述した図9の処理(ICカードOS45が実行する処理)と基本的に同様であるが、図5の処理に対応するICカードOS46が実行する処理として、説明していく。
ステップS301において、ICカードOS46は、受信バッファ44にデータが格納されたか否かを判定し、データが格納されるまで待機する。例えば、図7のステップS153の処理で自分自身が管理するファイルシステムIDを含むと判定された場合(すなわち、ステップS153でYESと判定され、格納されたデータが破棄されなかった場合)に、ICカードOS46は、受信バッファ44にデータが格納されたと判定する。すなわち、ICカードOS46は、受信バッファ44に格納されたデータを取得できると確認したとき(破棄されないと確認したとき)、受信バッファ44にデータが格納されたと判定する。
ステップS301において、受信バッファ44にデータが格納されたと判定された場合、処理はステップS302に進み、ICカードOS46は、受信バッファ44に格納されたデータを取得する。すなわち、ICカードOS46は、受信バッファ44に格納されたデータの読み出しを要求し、そのデータを読み出す。
このように、ICカードOS46が受信バッファ44からデータを取得するタイミングは、ICカードOS45が受信バッファ44からデータを取得するタイミング(図9のステップS252)と同様であり、受信バッファ44にデータが格納された場合には、ICカードOS45とICカードOS46とにより、データが取得される。
ステップS303において、ICカードOS46は、取得したデータの送信先のファイルシステムIDが、ファイルシステムID#2であるか否かを判定する。すなわち、ICカードOS46は、自分自身が有するファイルシステム52のファイルシステムID#2が、そのデータの送信先として指定されているか否かを判定する。このことは、取得したデータが、自分宛に送信されたものであるか否かを判定することと等価である。
なお、このとき判定されるデータは、図5の例の場合、ステップS91,ステップS92,ステップS94,およびステップS95の処理で取得されるコマンドやレスポンスである。より具体的には、図5のステップS91の処理で取得されるデータは、送信先がファイルシステムID#1であるコマンド120−1であるので、ステップS303の処理では、NOと判定される。また、図5のステップS92の処理で取得されるデータは、送信先がファイルシステムID#2であるコマンド120−2であるので、ステップS303の処理ではYESと判定される。さらに、図5のステップS94の処理で取得されるデータは、送信先がファイルシステムID#1であるレスポンスであるので、ステップS303の処理ではNOと判定される。また、図5のステップS95の処理で取得されるデータは、送信先がリーダライタ22を特定するIDであるレスポンスであるので、ステップS303の処理ではNOと判定される。
ステップS303において、取得したデータの送信先のファイルシステムIDがファイルシステムID#2と判定された場合、すなわち、取得したデータの送信先が自分自身であると判定された場合、処理はステップS304に進む。図5の例の場合、ステップS92の処理に対応する。
ステップS304において、ICカードOS46は、ステップS302の処理で取得したデータに対応する処理を実行する。この処理が図5のステップS92に対応する場合、取得されたデータは、コマンド120−2であるので、ICカードOS46は、コマンド120−2に含まれるコマンドデータ121(図4)と、データ123とに基づく処理を実行する。
このように、受信バッファ44に格納されたデータは、ICカードOS45とICカードOS46とに取得され(図9のステップS252と図10のステップS302)、送信先の対応するICカードOSのみが、そのデータに対応する処理を実行する。
ステップS305において、ICカードOS46は、ステップS304の処理による処理結果を、他のファイルシステムのICカードOSに送信するか否かを判定する。具体的には、ICカードOS46は、処理を実行した結果を、非接触ICカード21の内部に設けられている他のファイルシステム(図2の例の場合、ファイルシステム52とは異なるファイルシステム51)のICカードOSに送信するか、リーダライタ22に送信するか否かを判定する。すなわち、ICカードOS46は、処理を実行した結果が、他のファイルシステムのICカードOSに送信するものであるか、リーダライタ22に送信するものであるか否かを判定する。このとき、ICカードOS46が、他のファイルシステムを有するICカードOS(例えば、ICカードOS45)からのコマンドに対応する処理を実行した場合(例えば、図5のステップS92の処理を実行した場合)、そのレスポンスは、ICカードOS45に送信する必要があるので、処理結果を、他のファイルシステムのICカードOSに送信すると判定する。
ステップS305において、処理結果を、他のファイルシステムのICカードOSに送信すると判定された場合、ステップS306において、ICカードOS46は、処理結果に、送信先のファイルシステムIDを含める。例えば、この処理が、図5のステップS92の処理に対応する処理である場合、ICカードOS46は、処理結果であるレスポンスの送信先であるファイルシステムIDを、「ファイルシステムID#1」とすることで、処理結果に送信先のファイルシステムIDを含める。なお、このとき、送信元のファイルシステムIDは、ファイルシステムID#2とされて、レスポンスに含められている(例えば、ICカードOS46が処理を実行したときにその結果に、送信元のファイルシステムID#2が含められている)。
ステップS307において、ICカードOS46は、処理結果に延長時間を含める。延長時間とは、リーダライタ22により図6のステップS112の処理で設定された待ち時間を延長するための時間であり、図6のステップS119の処理で、待ち時間を延長するのに用いられる。すなわち、ICカードOS46は、処理結果を、他のファイルシステムのICカードOSに送信する場合、リーダライタ22にレスポンスが送信されてくるまでの待ち時間を延長して貰うために、処理結果に延長時間を含める。
ステップS305において、処理結果を他のファイルシステムのICカードOSに送信しない(この例の場合、処理結果をリーダライタ22に送信する)と判定された場合、またはステップS307の処理の後、処理はステップS308に進む。
なお、処理結果がリーダライタ22に送信されるものである場合には、その処理結果の送信先は、リーダライタ22を特定するIDとされている。
ステップS308において、ICカードOS46は、処理結果を送信バッファ47に供給する。これにより、処理結果がリーダライタ22に送信するものである場合には、処理結果がリーダライタ22と受信バッファ44に送信されるとともに、処理結果が他のファイルシステムのICカードOSに送信するものである場合には、処理結果に延長時間が含められて、リーダライタ22と受信バッファ44に送信される。
ステップS303において、取得したデータの送信先のファイルシステムIDがファイルシステムID#2でない(この例の場合、取得したデータの送信先のファイルシステムIDがファイルシステムID#1である)と判定された場合、または、ステップS308の処理の後、処理はステップS309に進む。
ステップS309において、ICカードOS46は、処理を終了するか否かを判定し、処理を終了しないと判定された場合、処理はステップS301に戻り、それ以降の処理が繰り返される。ステップS309において、処理を終了すると判定された場合、処理は終了される。
図9の処理によれば、ICカードOS46は、取得したデータが自分自身に対するものである場合(送信先のファイルシステムIDが、自分自身が実行するファイルシステム52のファイルシステムID#2と一致する場合)、取得したデータに対応する処理を実行し、自分自身に対するものでない場合、処理を実行しない。
また、ICカードOS46は、処理を実行した結果、処理結果を、他のファイルシステムのICカードOSに送信する場合には、処理結果に送信先のファイルシステムIDを含めるとともに、リーダライタ22に通知するための延長時間を含めるようにしたので、リーダライタ22側で、待ち時間を延長することができる。
以上により、非接触ICカード21が、複数のファイルシステムを有する場合、送信バッファに格納されたデータを受信バッファにも供給するように構成するとともに、各ファイルシステムで実行された結果を他のファイルシステムにも供給する構成としたので、非接触ICカード21の中で、セキュリティを保ちつつ、複数のファイルシステムによる処理を実行させることができる。
すなわち、非接触ICカード21内に複数のファイルシステムが設けられている状態で、外部のリーダライタ22により送信された、ひとつのファイルシステムを指定したコマンドに基づいて処理を実行する場合、非接触ICカード21の指定されたファイルシステムにおいて処理が実行された後、他のファイルシステムに処理を実行させる場合(例えば、図9のステップS255でYESの場合)、そのコマンドを、あたかも非接触ICカード21が受信したものと見なすように、受信バッファ44に格納するとともにリーダライタ22にも送信するようにした(例えば、図9のステップS258、図8のステップS203)ので、複数のファイルシステムにおける処理を連携させることができる。
また、リーダライタ22は、非接触ICカード21の複数のファイルシステムの中の1つのファイルシステムを特定するデータ(ID)を付加したコマンドを送信するだけで、複数のファイルシステムにより実行された結果を、最終的なレスポンスとして受け取ることができる(例えば、図5のステップS14の処理)。
例えば、リーダライタ22にファイルシステムID#1のファイルシステム51に対する処理しかあらかじめ登録されていない場合、一般的には、そのファイルシステムID#1のファイルシステム51のICカードOS45の処理結果しか受け取ることができないが、本発明によれば、リーダライタ22にファイルシステムID#1のファイルシステム51に対する処理しかあらかじめ登録されていない場合であっても、非接触ICカード21の中で、複数のファイルシステムに渡って処理を実行し、その結果を、ICカードOS45からのレスポンスとして送信するようにした(例えば、図5のステップS56)ので、リーダライタ22に前もって登録されているコマンドに対する処理以外の処理であっても、実行させることができる。
すなわち、リーダライタ22の有するコマンドに制限されず、非接触ICカード21のみが有するコマンドを用いてファイルシステム間通信を行うことができ、処理の柔軟性や安全性を向上させることができる。
また、非接触ICカード21内において、リーダライタ22から1つコマンドを受信するだけで(例えば、図5のステップS31の処理でコマンドを受信するだけで)、複数のファイルシステムにおける処理を実行することができるので、リーダライタ22からのコマンドを受ける回数を減らすことができ、通信オーバーヘッドなども少なくなり、もって、最終的なレスポンスを送信するまでの時間を短くすることができる。
さらに、ファイルシステム間のファイアウォールを壊すことなく、外部のリーダライタ22からの通信と同様に、非接触ICカード21内の処理を実行することができるので、セキュリティの脆弱性の発生を抑えつつ、非接触ICカード21内が有する複数のファイルシステム間の連携を可能とすることができる。
また、非接触ICカード21の1つのファイルシステムにより実行された結果を、他のファイルシステムに送信する場合に、同様のデータをリーダライタ22にも送信するようにしたので、リーダライタ22は、処理の途中経過を知ることができ、待ち時間を調整することができる。
さらに、非接触ICカード21の1つのファイルシステムにより実行された結果を、他のファイルシステムに送信する場合に、その処理結果に、延長時間を含めるようにしたので、リーダライタ22は、待ち時間を延長することができ、タイムアウトになるのを防ぐことができる。
なお、以上の例では、ICカードOSが処理を実行した結果、他のファイルシステムのICカードOSに処理をさせる場合に、処理結果に延長時間を含めるようにしたが、延長時間を含めないようにしてもよい。この場合、リーダライタ22が、処理結果が自分自身宛のレスポンスでないと判断した場合に、あらかじめ決められた所定の時間だけ延長するようにすればよい。
また、以上の例では、非接触ICカード21に2つのファイルシステム51,52を設けるようにしたが、この個数は2つに限らず、2つ以上の複数のファイルシステムを設ける構成としてもよい。
さらに、以上の例(図2の例)では、ICカードOSがそれぞれ、ファイルシステムIDで特定されるファイルシステムを有する構成としたが、1つのICカードOSが、ファイルシステムIDで特定される複数のファイルシステムを読み出して、それに対する処理を実行する構成としてもよい。この場合の非接触ICカード201構成例を、図11に示す。なお、図中、図2と対応する部分については、同一の符号を付してあり、その説明は繰り返しになるので省略する。
図11において、非接触ICカード201には、アンテナ41、送受信部42、A/D(アナログ/デジタル)変換・デモジュレーション部43、受信バッファ44、送信バッファ47、D/A(デジタル/アナログ)変換・モジュレーション部48、ファイルシステムID#1のファイルシステム51、および、ファイルシステムID#2のファイルシステム52の他、ICカードOS221がさらに設けられている。
アンテナ41、送受信部42、A/D変換・デモジュレーション部43、受信バッファ44、送信バッファ47、およびD/A変換・モジュレーション部48の構成は、上述した図2の各部と同様である。
ICカードOS221は、非接触ICカード21に設けられている複数のファイルシステムに基づく処理をそれぞれ実行する。すなわち、ICカードOS221は、ファイルシステムID#1のファイルシステム51に基づいて、コマンドやレスポンスに対応する処理を実行したり、ファイルシステムID#2のファイルシステム52に基づいて、コマンドやレスポンスに対応する処理を実行する。
すなわち、ICカードOS221は、図2のICカードOS45やICカードOS46とように、内部にファイルシステムを有する構成ではなく、別途設けられている複数のファイルシステムのそれぞれに従って、対応する処理を実行する。
このように、ICカードOS221そのものにファイルシステムが格納されていなくても、ICカードOS221が、非接触ICカード21に設けられている複数のファイルシステム(ファイルシステム51とファイルシステム52)とを別々に(独立させて)実行するようにすることで、上述した処理と同様の処理を実行することができ、本発明を適用することができる。
具体的には、図5や図9の「ICカードOS45」の処理は、図11のファイルシステムID#1のファイルシステム51に基づく処理を実行するICカードOS221が実行するものとし、図5や図10の「ICカードOS46」の処理は、図11のファイルシステムID#2のファイルシステム52に基づく処理を実行するICカードOS221が実行するものとすればよい。
なお、上述した処理では、非接触ICカード21、リーダライタ22、および非接触ICカード23間の通信を、ISO/IEC15693に準拠した規格により行うものとしたが、非接触ICカード21、リーダライタ22、および非接触ICカード23間の通信は、IEEE(The Institute of Electrical and Electronic Engineers)802.11a,802.11b、および802.11gなどの無線LAN(Local Area Network)、またはBluetooth等様々な非接触による通信(無線通信)や、ISO/IEC 7816で規定されている接触式通信、さらには、Ethernet(登録商標)やUSB(Universal Serial Bus)等様々な有線通信であってもよい。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、上述した処理は、図12に示されるようなパーソナルコンピュータにより実行される。
図12において、CPU(Central Processing Unit)501は、ROM(Read Only Memory)502、または記憶部508に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)503には、CPU501が実行するプログラムやデータなどが適宜記憶される。これらのCPU501、ROM502、およびRAM503は、バス504により相互に接続されている。
CPU501にはまた、バス504を介して入出力インターフェース505が接続されている。入出力インターフェース505には、キーボード、マウス、マイクロホンなどよりなる入力部506、ディスプレイ、スピーカなどよりなる出力部507が接続されている。CPU501は、入力部506から入力される指令に対応して各種の処理を実行する。そして、CPU501は、処理の結果を出力部507に出力する。
入出力インターフェース505に接続されている記憶部508は、例えばハードディスクからなり、CPU501が実行するプログラムや各種のデータを記憶する。通信部509は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部509を介してプログラムを取得し、記憶部508に記憶してもよい。
入出力インターフェース505に接続されているドライブ510は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア521が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部508に転送され、記憶される。
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図12に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)を含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア521、または、プログラムが一時的もしくは永続的に格納されるROM502や、記憶部508を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインターフェースである通信部509を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
11 通信システム, 21 非接触ICカード, 22 リーダライタ, 23 非接触ICカード, 44 受信バッファ, 45 ICカードOS, 46 ICカードOS, 47 送信バッファ, 51 ファイルシステムID#1のファイルシステム, 52 ファイルシステムID#2のファイルシステム, 61 送信部, 62 受信部, 91 送信部, 92 受信部, 93 制御処理部, 94 判定部, 95 タイマ, 120 コマンド, 121 コマンドデータ, 122 ファイルシステムID, 123 データ, 124 CRC, 221 ICカードOS