説明

サービス利用端末、サービス提供端末、サービス利用端末の制御方法、サービス提供端末の制御方法およびサービス提供システム

【課題】クライアント/サーバ型のアプリケーションで、クライアント側のトランスポート層の役割がResponder/Deviceである場合においても、クライアント側によるセッション層プロトコルの停止制御を行うことができる。
【解決手段】通信制御部14は、トランスポート層より上位層のサービスを提供するサービス提供端末からトランスポート層の通信データを受信する。CPU13は、通信制御部14が受信したトランスポート層の通信データがサービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う。CPU13は、サービスの停止に係るトリガを受け付ける。CPU13がトリガを受け付けた場合、通信制御部14は、サービス提供端末に、サービスの停止要求に係る上位層への要求を含むトランスポート層の通信データを送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サービス利用端末、サービス提供端末、サービス利用端末の制御方法、サービス提供端末の制御方法およびサービス提供システムに関する。
【背景技術】
【0002】
クライアント/サーバ型のアプリケーションにおけるサービスの停止制御は、クライアント側が行なう。クライアント/サーバ型のアプリケーションで、トランスポート層にInitiator/ResponderやHost/Deviceのような役割を持った主従型のトランスポート層プロトコルを採用している場合において、サーバ側にResponder/Device、クライアント側にInitiator/Hostが割り当てられている場合、クライアント側からトランスポート層の通信を介してのサービスまたはセッション層プロトコルの停止制御を行うことができる。また、通信規格としてUSB2.0が知られている(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Universal Serial Bus Specification Revision 2.0、[online]、April 27, 2000、[平成22年3月25日検索]、インターネット<URL:http://www.usb.org/developers/docs/>
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、クライアント/サーバ型のアプリケーションで、トランスポート層にInitiator/ResponderやHost/Deviceのような役割を持った主従型のトランスポート層プロトコルを採用している場合において、クライアント側にResponder/Device、サーバ側にInitiator/Hostが割り当てられている場合では、アプリケーション層におけるサービス、または/およびセッション層プロトコル(OBEX/SCSI/PTP等)の停止制御がInitiator/Hostからしかできないため、クライアント側でサーバ側が提供するサービスの利用を終了したくても、トランスポート層の通信を介してのサービスまたはセッション層プロトコルの停止制御はできず、無駄な消費電力を消耗していた。
【0005】
本発明は、上記事情に鑑みてなされたものであり、クライアント/サーバ型のアプリケーションで、クライアント側のトランスポート層の役割がResponder/Deviceである場合においても、クライアント側によるセッション層プロトコルの停止制御を行うことができるサービス利用端末、サービス提供端末、サービス利用端末の制御方法、サービス提供端末の制御方法およびサービス提供システムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、トランスポート層より上位層のサービスを提供するサービス提供端末からトランスポート層の通信データを受信する受信部と、前記受信したトランスポート層の通信データが前記サービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う制御部と、前記サービスの停止に係るトリガを受け付けるトリガ受付部と、前記トリガを受け付けた場合、前記サービス提供端末に、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データを送信する送信部と、を有することを特徴とするサービス利用端末である。
【0007】
また、本発明のサービス利用端末において、前記上位層のサービスは、OBEX Clientであり、前記送信部は、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データとして、前記サービスの停止要求情報を付したDISCONNECT Requestを送信、または前記サービスの停止要求を意味するオブジェクトをPUT Requestで送信することを特徴とする。
【0008】
また、本発明のサービス利用端末において、前記上位層のサービスは、SCSI Initiatorであり、前記送信部は、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データとして、前記サービスの停止要求を意味するSCSIコマンドを送信することを特徴とする。
【0009】
また、本発明のサービス利用端末において、前記上位層のサービスは、PTP Initiatorであり、前記送信部は、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データとして、前記サービスの停止要求情報を付したServiceStop Requestを送信、または前記サービスの停止要求を意味するオブジェクトをSendObject Requestで送信することを特徴とする。
【0010】
また、本発明のサービス利用端末において、前記送信部は、トランスポート層においてInitiatorの役割を担う前記サービス提供端末に、前記サービスの停止要求に関連する前記上位層への要求を含むトランスポート層の通信データを送信することを特徴とする。
【0011】
また、本発明は、トランスポート層より上位層のサービスを利用するサービス利用端末からトランスポート層の通信データを受信する受信部と、前記受信したトランスポート層の通信データが、前記サービスの停止要求に係る前記上位層への要求を含む場合、前記サービス利用端末に、前記サービスの停止要求に関連するトランスポート層の通信データを送信する送信部と、を有することを特徴とするサービス提供端末である。
【0012】
また、本発明は、トランスポート層より上位層のサービスを提供するサービス提供端末からトランスポート層の通信データを受信する受信ステップと、前記受信したトランスポート層の通信データが前記サービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う制御ステップと、前記サービスの停止に係るトリガを受け付けるトリガ受付ステップと、前記トリガを受け付けた場合、前記サービス提供端末に、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データを送信する送信ステップと、を有することを特徴とするサービス利用端末の制御方法である。
【0013】
また、本発明は、トランスポート層より上位層のサービスを利用するサービス利用端末からトランスポート層の通信データを受信する受信ステップと、前記受信したトランスポート層の通信データが、前記サービスの停止要求に係る前記上位層への要求を含む場合、前記サービス利用端末に、前記サービスの停止要求に関連するトランスポート層の通信データを送信する送信ステップと、を有することを特徴とするサービス提供端末の制御方法である。
【0014】
また、本発明は、トランスポート層より上位層のサービスを利用するサービス利用端末と、当該サービスを提供するサービス提供端末とを有するサービス提供システムにおいて、前記サービス利用端末は、前記サービス提供端末からトランスポート層の通信データを受信する利用端末受信部と、前記受信したトランスポート層の通信データが前記サービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う制御部と、前記サービスの停止に係るトリガを受け付けるトリガ受付部と、前記トリガを受け付けた場合、前記サービス提供端末に、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データを送信する利用端末送信部と、を有し、前記サービス提供端末は、前記サービス利用端末からトランスポート層の通信データを受信する提供端末受信部と、前記受信したトランスポート層の通信データが、前記サービスの停止要求に係る前記上位層への要求を含む場合、前記サービス利用端末に、前記サービスの停止要求に関連するトランスポート層の通信データを送信する提供端末送信部と、を有することを特徴とするサービス提供システムである。
【発明の効果】
【0015】
本発明によれば、サービス利用端末の受信部は、トランスポート層より上位層のサービスを提供するサービス提供端末からトランスポート層の通信データを受信する。制御部は、受信部が受信したトランスポート層の通信データがサービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う。トリガ受付部は、サービスの停止に係るトリガを受け付ける。トリガ受付部がトリガを受け付けた場合、送信部は、サービス提供端末に、サービスの停止要求に係る前記上位層の通信データを送信する。
【0016】
従って、クライアント/サーバ型のアプリケーションで、サービス利用端末側のトランスポート層の役割がResponder/Deviceである場合においても、サービス利用端末側によるセッション層プロトコルの停止制御を行うことができる。
【図面の簡単な説明】
【0017】
【図1】本発明の一実施形態における電子カメラの構成を示したブロック図である。
【図2】本実施形態におけるPCの構成を示したブロック図である。
【図3】本実施形態におけるInitiatorとRequestとの接続手順を示したシーケンス図である。
【図4】本実施形態におけるメッセージのフォーマットを示した概略図である。
【図5】本実施形態におけるサービスリスト要求メッセージに格納されるデータを示した概略図である。
【図6】本実施形態におけるサービスリスト応答メッセージに格納されるデータを示した概略図である。
【図7】本実施形態におけるService Parameterのフォーマットを示した概略図である。
【図8】本実施形態におけるサービス起動・停止要求メッセージに格納されるデータを示した概略図である。
【図9】本実施形態におけるサービス起動・停止応答メッセージに格納されるデータを示した概略図である。
【図10】本実施形態において、セッション層プロトコルがOBEXプロトコルであり、InitiatorがClientであり、ResponderがServerである場合において、Initiator側からのサービスの停止手順を示したシーケンス図である。
【図11】本実施形態において、セッション層プロトコルがOBEXプロトコルであり、InitiatorがServerであり、ResponderがClientである場合において、DISCONNECT Requestを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。
【図12】本実施形態において、セッション層プロトコルがOBEXプロトコルであり、InitiatorがServerであり、ResponderがClientである場合において、PUT Requestを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。
【図13】本実施形態において、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する情報が記述されているオブジェクトの例を示した図である。
【図14】本実施形態において、セッション層プロトコルがSCSIプロトコルであり、InitiatorがClientであり、ResponderがServerである場合において、Initiator側からのサービスの停止手順を示したシーケンス図である。
【図15】本実施形態において、セッション層プロトコルがSCSIプロトコルであり、InitiatorがServerであり、ResponderがClientである場合において、Responder側からのサービスの停止手順を示したシーケンス図である。
【図16】本実施形態における「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドのCDBのデータ構造を示した概略図である。
【図17】本実施形態において、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Initiatorであり、ResponderがPTP Responderである場合において、Initiator側からのサービスの停止手順を示したシーケンス図である。
【図18】本実施形態において、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Responderであり、ResponderがPTP Initiatorである場合において、Object Dataを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。
【図19】本実施形態において、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Responderであり、ResponderがPTP Initiatorである場合において、ServiceStop Requestを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。
【図20】本実施形態における「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションのデータ構造を示した概略図である。
【発明を実施するための形態】
【0018】
以下、本発明の一実施形態について図面を参照して説明する。本実施形態は、電子カメラとPC(パーソナルコンピュータ)との間、または2台の電子カメラ間でデータの送受信を行っている際に、データの送受信を停止する例について説明する。
【0019】
図1は、本実施形態における電子カメラの構成を示したブロック図である。図示する例では、電子カメラ1は、撮像部11と、記録媒体12と、CPU13(制御部、トリガ受付部)と、通信制御部14(送信部、受信部)と、操作部15と、表示部16と、RAM17と、フラッシュメモリ18とを備えている。
【0020】
CPU13は、フラッシュメモリ18に記録されている制御プログラムを読み出して実行し、RAM17に種々のデータを読み書きすることにより、電子カメラ1が備える各部の動作を統括的に制御する。フラッシュメモリ18には、制御プログラムの他に、撮影パラメータや通信パラメータ(データ通信プロトコル情報等)等が記録されている。
【0021】
撮像部11は、被写体を撮影して撮像信号を生成するとともに、種々の画像処理を行って画像データを作成する。撮像部11に作成された画像データは、記録媒体12に記録される。例えば、記録媒体12として、電子カメラ1に着脱可能なメモリカードや、電子カメラ1に固定されたハードディスクなどが用いられる。
【0022】
操作部15は、電子カメラ1の動作に関する指示を入力するための操作スイッチなどを備える。表示部16は、記録媒体12から読み出された画像データや、ユーザインタフェース画面等を表示する。通信制御部14は、PCや、プリンタや、外部記録装置等の外部機器との間で撮影画像等のデータの授受を行う通信インタフェースである。通信インタフェースとは広く情報の送受信に用いられるインタフェースのことで、有線通信に限らず、WLAN(Wireless LAN、無線LAN)、Blutooth(登録商標)、IrDA(登録商標)、TransferJET(登録商標)、WiMedia(登録商標)などの無線通信も含まれる。
【0023】
次に、PCの構成について説明する。図2は、本実施形態におけるPCの構成を示したブロック図である。図示する例では、PC2は、CPU21と、記録媒体22と、通信制御部23(送信部、受信部)と、操作部24と、表示部25と、RAM26とを備えている。
【0024】
CPU21は、記録媒体22に記録されている制御プログラムを読み出し実行し、RAM26に種々のデータを読み書きすることにより、PC2が備える各部の動作を統括的に制御する。例えば、記録媒体22として、ハードディスクやフラッシュメモリなどが用いられる。記録媒体22には、制御プログラムの他に、文書データや画像データ等の種々のデータが記録される。
【0025】
操作部24は、PC2の動作に関する指示を入力するためのキーボードやマウスなどを備える。表示部25は、ユーザインタフェース画面や、記録媒体から読み出された文書データや画像データ等を表示する。通信制御部23は、電子カメラ1やプリンタ等の機器との間で種々のデータの授受を行う通信インタフェースである。通信インタフェースとは広く情報の送受信に用いられるインタフェースのことで、有線通信に限らず、WLAN、Blutooth(登録商標)、IrDA(登録商標)、TransferJET(登録商標)、WiMedia(登録商標)などの無線通信も含まれる。
【0026】
次に、電子カメラ1の通信制御部14と、PC2の通信制御部23とが用いる通信方式について説明する。本実施形態では、電子カメラ1の通信制御部14と、PC2の通信制御部23とは主従型のトランスポート層プロトコルを採用する通信方式を用いる。主従型のトランスポート層プロトコルを採用する通信方式とは、例えば、USB(Universal Serial Bus)のような、通信を行う一方の機器にHostの役割を持たせ、他方の機器にDeviceの役割をもたせ、Hostがデータの送受信を制御する通信方式である。また、図3に示すように、通信を行う一方の機器にInitiatorの役割を持たせ、他方の機器にResponderの役割をもたせ、Initiatorが接続要求として接続要求メッセージを送信し、その接続要求メッセージを受信したResponderが接続を許可する場合、接続許可メッセージをInitiatorに送信する通信方式も主従型のトランスポート層プロトコルを採用する通信方式である。なお、本発明においてトランスポート層プロトコルの通信データとは、トランスポート層プロトコルよりも上位層の通信プロトコルの通信データを含むものとする。
【0027】
これらの通信方式において、サービス、または/およびセッション層プロトコル(OBEX(Object EXchange)、SCSI、PTP等)の起動および停止は、HostやInitiatorにより制御される。例えば、通信方式がUSBの場合は、Hostが、Deviceに対してSet Configurationデバイスリクエストを発行して、セッション層プロトコルの起動および停止を行う。
【0028】
なお、本実施形態では、図3に示したようなトランスポート層プロトコルを採用する通信方式を用いて説明する。本実施形態の通信方式では、トランスポート層において、InitiatorとResponderとの間で以下のメッセージを送受信することにより、サービスの起動および停止が行われる。InitiatorとResponderとの間で送受信されるメッセージは、InitiatorからResponderに発行されるRequestメッセージと、ResponderからInitiatorに返信されるResponseメッセージとである。
【0029】
次に、本実施形態で用いるメッセージのフォーマットについて説明する。図4は、本実施形態で用いるメッセージのフォーマットを示した概略図である。本実施形態で用いるメッセージの0バイト(byte)目のデータは「Message Type」を示す。1バイト目のデータは「Message Code」を示す。2バイト目〜5バイト目のデータは「Parameters」を示す。6バイト目〜7バイト目のデータは「Length」を示す。8バイト目以降のデータは「Data」を示す。
【0030】
「Message Type」には、このメッセージが「Requestメッセージ」であるか「Responseメッセージ」であるかを示す情報がセット(格納)される。「Message Code」にはメッセージ種別を示す情報がセットされる。「Parameters」には、メッセージ種別ごとに定義されている内容を示す情報がセットされる。「Length」には、後続の「Data」のサイズを示す情報がセットされる。「Data」には、メッセージ種別ごとに定義されたデータがセットされる。
【0031】
次に、本実施形態で用いるメッセージのうち、サービスリスト要求メッセージについて説明する。サービスリスト要求メッセージは、Responderが対応しているサービスおよび/またはプロトコルのリストを取得するためのメッセージであり、InitiatorからResponderに送信される。
【0032】
図5は、本実施形態で用いるサービスリスト要求メッセージに格納されるデータを示した概略図である。図示する例では、サービスリスト要求メッセージの「Message Type」には、Requestメッセージであることを示す「Message Type = 0x00」がセットされている。「Message Code」には、メッセージ種別「Get Service List」であることを示す「Message Code = 0x01」がセットされている。「Parameters」は、メッセージ種別ごとに定義されている内容を示す情報をセットできるように、予約(Reserved)されている。「Length」には、後続の「Data」が存在しないことを示す「Length = 0」がセットされている。
【0033】
次に、本実施形態で用いるメッセージのうち、サービスリスト応答メッセージについて説明する。サービスリスト応答メッセージは、サービスリスト要求メッセージに対し、Responderが対応しているサービスおよび/またはプロトコルのリストを返信するためのメッセージであり、ResponderからInitiatorに送信される。
【0034】
図6は、本実施形態で用いるサービスリスト応答メッセージに格納されるデータを示した概略図である。図示する例では、サービスリスト応答メッセージの「Message Type」には、Responseメッセージであることを示す「Message Type = 0x01」がセットされている。「Message Code」には、メッセージ種別「Get Service List」であることを示す「Message Code = 0x01」がセットされている。「Parameters」の一部(メッセージの2バイト目)には、メッセージの8バイト目以降のService Parameterの数(m個)を示す「Number of Service Parameter = m」がセットされており、残りの部分(メッセージの3バイト目から5バイト目)はメッセージ種別ごとに定義されている内容を示す情報をセットできるように、予約(Reserved)されている。「Length」には、後続の「Data」のサイズ(8バイト目以降のサイズ)を示す「Length = 8バイト目以降のサイズ」がセットされている。「Data」には、サービスやプロトコルに関するパラメータである「Service Parameter #0〜Service Parameter #m−1」がセットされている。
【0035】
次に、Service Parameterのフォーマットについて説明する。図7は、本実施形態で用いるService Parameterのフォーマットを示した概略図である。本実施形態で用いるService Parameterの0バイト目のデータは「Protocol Code」を示す。1バイト目のデータは「Class Code」を示す。2バイト目のデータは「Result Code」を示す。3バイト目〜5バイト目のデータは、Service Parameterに関する情報をセットできるように、予約(Reserved)されている。6バイト目〜7バイト目のデータは「Length」を示す。8バイト目以降のデータは「Service Information」を示す。
【0036】
「Protocol Code」には、プロトコル種別(OBEX/SCSI/PTP等)を示すコードがセットされる。「Class Code」には、プロトコル種別毎に定義されたクラスコードがセットされる。例えば、プロトコル種別がOBEXの場合は「OBEX Push Server」や「OBEX Push Client」等を示すコードがセットされる。また、プロトコル種別がSCSIの場合は「SCSI Block Device − Target」や「SCSI Block Device − Initiator」等を示すコードセットされる。また、プロトコル種別がPTPの場合は「PTP Initiator」や「PTP Responder」がセットされる。
【0037】
「Result Code」には、処理結果がセットされる。例えば、処理が正常に終了した場合は、SUCCESSを示すコードがセットされる。「Length」には、「Service Information」のサイズがセットされる。「Service Information」にはアプリケーション層のサービスに応じた情報(例えば、対応するファイルフォーマット等)がセットされる。
【0038】
次に、本実施形態で用いるメッセージのうち、サービス起動・停止要求メッセージについて説明する。サービス起動・停止要求メッセージは、指定したService Parameterでサービスおよび/またはプロトコルを起動する、または現在起動中のサービスおよび/またはプロトコルを停止するようにResponderに要求するためのメッセージであり、InitiatorからResponderに送信される。なお、サービス起動・停止要求メッセージのLengthが0、すなわちService Parameterが無い場合は、サービス停止要求を示す。
【0039】
図8は、本実施形態で用いるサービス起動・停止要求メッセージに格納されるデータを示した概略図である。図示する例では、サービス起動・停止要求メッセージの「Message Type」には、Requestメッセージであることを示す「Message Type = 0x00」がセットされている。「Message Code」には、メッセージ種別「Set Service」であることを示す「Message Code = 0x02」がセットされている。「Parameters」はメッセージ種別ごとに定義されている内容を示す情報をセットできるように、予約(Reserved)されている。「Length」には、後続の「Service Parameter」のサイズ(8バイト目以降のサイズ)を示す「Length = 8バイト目以降のサイズ」がセットされている。「Service Parameter」には、サービスに関するパラメータである「Service Parameter」がセットされている。なお、本実施形態では、「Length」に「Length=0」がセットされているサービス起動・停止要求メッセージ、すなわち、「Service Parameter」が無いサービス起動・停止要求メッセージは、サービス停止要求を示す。
【0040】
次に、本実施形態で用いるメッセージのうち、サービス起動・停止応答メッセージについて説明する。サービス起動・停止応答メッセージは、サービス起動・停止要求メッセージに対する応答メッセージであり、ResponderからInitiatorに送信される。
【0041】
図9は、本実施形態で用いるサービス起動・停止応答メッセージに格納されるデータを示した概略図である。図示する例では、サービス起動・停止応答メッセージの「Message Type」には、Responseメッセージであることを示す「Message Type = 0x01」がセットされている。「Message Code」には、メッセージ種別「Set Service」であることを示す「Message Code = 0x02」がセットされている。「Parameters」の一部(メッセージの2バイト目)は、「Result Code」を示し、処理結果がセットされる。例えば、処理が正常に終了した場合は、「Result Code」にSUCCESSを示すコードがセットされる。「Parameters」の残りの部分(メッセージの3バイト目から5バイト目)はメッセージ種別ごとに定義されている内容を示す情報をセットできるように、予約(Reserved)されている。「Length」には、後続の「Data」が存在しないことを示す「Length = 0」がセットされている。
【0042】
(セッション層プロトコルがOBEXプロトコルの場合におけるサービスの停止方法)
次に、セッション層プロトコルがOBEXプロトコルの場合におけるサービスの停止方法について説明する。セッション層プロトコルがOBEXプロトコルである場合、「電子カメラ1とPC2との間でデータの送受信を行う際に、PC2がInitiatorの役割で動作し、電子カメラ1がResponderの役割で動作する」、または「電子カメラ1とPC2との間でデータの送受信を行う際に、電子カメラ1がInitiatorの役割で動作し、PC2がResponderの役割で動作する」、または「2台の電子カメラ1間でデータの送受信を行う際に、一方の電子カメラ1がInitiatorの役割で動作し、他方の電子カメラ1がResponderの役割で動作する」ことが可能である。
【0043】
図10は、セッション層プロトコルがOBEXプロトコルであり、InitiatorがOBEX Client(サービス利用端末)であり、ResponderがOBEX Server(サービス提供端末)である場合において、Initiator側からのサービスの停止手順を示したシーケンス図である。なお、本実施形態では、CPU13,21がApplication LayerおよびSession Layerとして動作し、通信制御部14,23がTransport Layerとして動作する。または、CPU13,21がApplication Layerとして動作し、通信制御部14,23がSession LayerおよびTransport Layerとして動作する。
【0044】
(ステップS101)InitiatorとResponderとは、通信接続を確立する。具体的には、図3に示したように、InitiatorはResponderに対して接続要求を行い、Responderは接続要求を許可する。
(ステップS102)InitiatorとResponderとの通信接続が確立されると、InitiatorのApplication Layerは、OBEX Clientを起動する。
(ステップS103)OBEX Clientを起動すると、InitiatorのApplication Layerは、Transport Layerにサービスの起動を要求する。
【0045】
(ステップS104)サービスの起動を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービスリスト要求メッセージを送信する。
(ステップS105)サービスリスト要求メッセージを受信したResponderのTransport Layerは、InitiatorのTransport Layerに、自機が対応するサービスをService Parameterにセットしたサービスリスト応答メッセージを送信する。
【0046】
(ステップS106)サービスリスト応答メッセージを受信したInitiatorのTransport Layerは、サービスリスト応答メッセージに「Protocol Code」が「OBEX」、かつ「Class Code」が「OBEX Push Server」であるService Parameterが存在した場合、「OBEX Push Server」を起動するためにResponderのTransport Layerにサービス起動・停止要求メッセージ(起動)を送信する。
【0047】
(ステップS107)サービス起動・停止要求メッセージ(起動)を受信したResponderのTransport Layerは、ResponderのSession LayerにOBEXプロトコルの起動を要求する。
(ステップS108)OBEXプロトコルの起動を要求されたResponderのSession Layerは、OBEXプロトコルを起動し、ResponderのApplication LayerにOBEX Serverの起動を要求する。
(ステップS109)OBEX Serverの起動を要求されたResponderのApplication Layerは、OBEX Serverを起動する。
【0048】
(ステップS110)ResponderのSession LayerにOBEXプロトコルの起動を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS111)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにOBEXプロトコルの起動を要求する。
(ステップS112)OBEXプロトコルの起動を要求されたInitiatorのSession Layerは、OBEXプロトコルを起動する。
【0049】
(ステップS113)InitiatorのSession LayerがOBEXプロトコルを起動した後、InitiatorのApplication Layerは、InitiatorのSession LayerにCONNECT Requestを入力する。
(ステップS114)InitiatorのSession Layerは、入力されたCONNECT RequestをOBEX Packet(Request)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Request)を送信する。
【0050】
(ステップS115)ResponderのSession Layerは、受信したOBEX Packet(Request)をCONNECT Requestに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したCONNECT Requestを入力する。
(ステップS116)CONNECT Requestが入力されたResponderのApplication Layerは、CONNECTを実行する。
(ステップS117)ResponderのApplication Layerは、CONNECTを実行したことを通知するために、ResponderのSession LayerにCONNECT Responseを入力する。
【0051】
(ステップS118)CONNECT Responseが入力されたResponderのSession Layerは、CONNECT ResponseをOBEX Packet(Response)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS119)InitiatorのSession Layerは、受信したOBEX Packet(Response)をCONNECT Responseに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したCONNECT Responseを入力する。
(ステップS120)CONNECT Responseが入力されたInitiatorのApplication Layerは、CONNECTを完了する。
【0052】
(ステップS121)CONNECTを完了した後、InitiatorのApplication Layerは、InitiatorのSession Layerに、送信対象のオブジェクト(ファイル等)を含むPUT Requestを入力する。
(ステップS122)InitiatorのSession Layerは、入力されたPUT RequestをOBEX Packet(Request #1)〜OBEX Packet(Request #n)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、
変換したOBEX Packet(Request #1)〜OBEX Packet(Request #n)を送信する。
【0053】
(ステップS123)ResponderのSession Layerは、受信したOBEX Packet(Request #1)〜OBEX Packet(Request #n)をPUT Requestに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したPUT Requestを入力する。
(ステップS124)PUT Requestが入力されたResponderのApplication Layerは、PUTを実行する。
【0054】
(ステップS125)ResponderのApplication Layerは、PUTを実行したことを通知するために、ResponderのSession LayerにPUT Responseを入力する。
(ステップS126)ResponderのSession Layerは、入力されたPUT ResponseをOBEX Packet(Response)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS127)InitiatorのSession Layerは、受信したOBEX Packet(Response)をPUT Responseに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したPUT Responseを入力する。
(ステップS128)PUT Responseが入力されたInitiatorのApplication Layerは、PUTを完了する。
【0055】
(ステップS129)PUTを完了した後、InitiatorのApplication Layerは、InitiatorのSession LayerにDISCONNECT Requestを入力する。
(ステップS130)InitiatorのSession Layerは、入力されたDISCONNECT RequestをOBEX Packet(Request)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Request)を送信する。
【0056】
(ステップS131)ResponderのSession Layerは、受信したOBEX Packet(Request)をDISCONNECT Requestに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したDISCONNECT Requestを入力する。
(ステップS132)DISCONNECT Requestが入力されたResponderのApplication Layerは、DISCONNECTを実行する。
(ステップS133)ResponderのApplication Layerは、DISCONNECTを実行したことを通知するために、ResponderのSession LayerにDISCONNECT Responseを入力する。
【0057】
(ステップS134)ResponderのSession Layerは、入力されたDISCONNECT ResponseをOBEX Packet(Response)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS135)InitiatorのSession Layerは、受信したOBEX Packet(Response)をDISCONNECT Responseに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したDISCONNECT Responseを入力する。
(ステップS136)DISCONNECT Responseが入力されたInitiatorのApplication Layerは、DISCONNECTを完了する。
【0058】
(ステップS137)ユーザによるサービスの停止指示がInitiatorに入力されると、InitiatorのApplication Layerは、Transport Layerにサービスの停止を要求する。
(ステップS138)サービスの停止を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービス起動・停止要求メッセージ(停止)を送信する。
(ステップS139)サービス起動・停止要求メッセージ(停止)を受信したResponderのTransport Layerは、ResponderのSession LayerにOBEXプロトコルの停止を要求する。
(ステップS140)OBEXプロトコルの停止を要求されたResponderのSession Layerは、OBEXプロトコルを停止し、ResponderのApplication LayerにOBEX Serverの停止を要求する。
(ステップS141)OBEX Serverの停止を要求されたResponderのApplication Layerは、OBEX Serverを停止させる。
【0059】
(ステップS142)ResponderのSession LayerにOBEXプロトコルの停止を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS143)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにOBEXプロトコルの停止を要求する。
(ステップS144)OBEXプロトコルの停止を要求されたInitiatorのSession Layerは、OBEXプロトコルを停止し、InitiatorのApplication LayerにOBEX Clientの停止を要求する。
(ステップS145)OBEX Clientの停止を要求されたInitiatorのApplication Layerは、OBEX Clientを停止させる。
【0060】
上述した手順により、セッション層プロトコルがOBEXプロトコルであり、InitiatorがOBEX Client(サービス利用端末)であり、ResponderがOBEX Server(サービス提供端末)である場合において、Initiator側からサービスを停止させることができる。
【0061】
図11は、セッション層プロトコルがOBEXプロトコルであり、InitiatorがOBEX Server(サービス提供端末)であり、ResponderがOBEX Client(サービス利用端末)である場合において、DISCONNECT Requestを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。
【0062】
ステップS201の処理は、図10のステップS101の処理と同様の処理である。
(ステップS202)InitiatorとResponderとの通信接続が確立されると、InitiatorのApplication Layerは、OBEX Serverを起動する。
(ステップS203)OBEX Serverを起動すると、InitiatorのApplication Layerは、Transport Layerにサービスの起動を要求する。
【0063】
(ステップS204)サービスの起動を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービスリスト要求メッセージを送信する。
(ステップS205)サービスリスト要求メッセージを受信したResponderのTransport Layerは、InitiatorのTransport Layerに、自機が対応するサービスをService Parameterにセットしたサービスリスト応答メッセージを送信する。
【0064】
(ステップS206)サービスリスト応答メッセージを受信したInitiatorのTransport Layerは、サービスリスト応答メッセージに「Protocol Code」が「OBEX」、かつ「Class Code」が「OBEX Push Client」であるService Parameterが存在した場合、「OBEX Push Client」を起動するためにResponderのTransport Layerにサービス起動・停止要求メッセージ(起動)を送信する。
【0065】
(ステップS207)サービス起動・停止要求メッセージ(起動)を受信したResponderのTransport Layerは、ResponderのSession LayerにOBEXプロトコルの起動を要求する。
(ステップS208)OBEXプロトコルの起動を要求されたResponderのSession Layerは、OBEXプロトコルを起動し、ResponderのApplication LayerにOBEX Clientの起動を要求する。
(ステップS209)OBEX Clientの起動を要求されたResponderのApplication Layerは、OBEX Clientを起動する。
【0066】
(ステップS210)ResponderのSession LayerにOBEXプロトコルの起動を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS211)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにOBEXプロトコルの起動を要求する。
(ステップS212)OBEXプロトコルの起動を要求されたInitiatorのSession Layerは、OBEXプロトコルを起動する。
【0067】
(ステップS213)ResponderのSession LayerがOBEXプロトコルを起動した後、ResponderのApplication Layerは、ResponderのSession LayerにCONNECT Requestを入力する。
(ステップS214)ResponderのSession Layerは、入力されたCONNECT RequestをOBEX Packet(Request)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、変換したOBEX Packet(Request)を送信する。
【0068】
(ステップS215)InitiatorのSession Layerは、受信したOBEX Packet(Request)をCONNECT Requestに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したCONNECT Requestを入力する。
(ステップS216)CONNECT Requestが入力されたInitiatorのApplication Layerは、CONNECTを実行する。
(ステップS217)InitiatorのApplication Layerは、CONNECTを実行したことを通知するために、InitiatorのSession LayerにCONNECT Responseを入力する。
【0069】
(ステップS218)CONNECT Responseが入力されたInitiatorのSession Layerは、CONNECT ResponseをOBEX Packet(Response)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS219)ResponderのSession Layerは、受信したOBEX Packet(Response)をCONNECT Responseに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したCONNECT Responseを入力する。
(ステップS220)CONNECT Responseが入力されたResponderのApplication Layerは、CONNECTを完了する。
【0070】
(ステップS221)CONNECTを完了した後、ResponderのApplication Layerは、ResponderのSession Layerに、送信対象のオブジェクト(ファイル等)を含むPUT Requestを入力する。
(ステップS222)ResponderのSession Layerは、入力されたPUT RequestをOBEX Packet(Request #1)〜OBEX Packet(Request #n)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、
変換したOBEX Packet(Request #1)〜OBEX Packet(Request #n)を送信する。
【0071】
(ステップS223)InitiatorのSession Layerは、受信したOBEX Packet(Request #1)〜OBEX Packet(Request #n)をPUT Requestに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したPUT Requestを入力する。
(ステップS224)PUT Requestが入力されたInitiatorのApplication Layerは、PUTを実行し、PUT Requestからオブジェクトを取得する。
【0072】
(ステップS225)InitiatorのApplication Layerは、PUTを実行したことを通知するために、InitiatorのSession LayerにPUT Responseを入力する。
(ステップS226)InitiatorのSession Layerは、入力されたPUT ResponseをOBEX Packet(Response)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS227)ResponderのSession Layerは、受信したOBEX Packet(Response)をPUT Responseに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したPUT Responseを入力する。
(ステップS228)PUT Responseが入力されたResponderのApplication Layerは、PUTを完了する。
【0073】
(ステップS229)ユーザによるサービスの停止指示がResponderに入力されると、ResponderのApplication Layerは、DISCONNECT RequestのOBEX Header“Description”に「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する文字列(例えば“SRVSTOP”)をセットする。続いて、ResponderのApplication Layerは、ResponderのSession Layerに、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する文字列をセットしたDISCONNECT Requestを入力する。
【0074】
(ステップS230)ResponderのSession Layerは、入力されたDISCONNECT RequestをOBEX Packet(Request)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、変換したOBEX Packet(Request)を送信する。
【0075】
(ステップS231)InitiatorのSession Layerは、受信したOBEX Packet(Request)をDISCONNECT Requestに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したDISCONNECT Requestを入力する。
(ステップS232)InitiatorのApplication Layerは、入力されたDISCONNECT Requestに基づいて、DISCONNECTを実行する。
(ステップS233)InitiatorのApplication Layerは、DISCONNECTを実行したことを通知するために、InitiatorのSession LayerにDISCONNECT Responseを入力する。
【0076】
(ステップS234)DISCONNECT Responseが入力されたInitiatorのSession Layerは、DISCONNECT ResponseをOBEX Packet(Response)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS235)ResponderのSession Layerは、受信したOBEX Packet(Response)をDISCONNECT Responseに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したDISCONNECT Responseを入力する。
(ステップS236)DISCONNECT Responseが入力されたResponderのApplication Layerは、DISCONNECTを完了する。
【0077】
(ステップS237)ステップS233でInitiatorのSession LayerにDISCONNECT Responseを入力した後、前記DISCONNECT RequestのOBEX Header“Description”に「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する文字列がセットされている場合は、InitiatorのApplication Layerは、Transport Layerにサービスの停止を要求する。
(ステップS238)サービスの停止を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービス起動・停止要求メッセージ(停止)を送信する。
【0078】
(ステップS239)サービス起動・停止要求メッセージ(停止)を受信したResponderのTransport Layerは、ResponderのSession LayerにOBEXプロトコルの停止を要求する。
(ステップS240)OBEXプロトコルの停止を要求されたResponderのSession Layerは、OBEXプロトコルを停止し、ResponderのApplication LayerにOBEX Clientの停止を要求する。
(ステップS241)OBEX Clientの停止を要求されたResponderのApplication Layerは、OBEX Clientを停止させる。
【0079】
(ステップS242)ResponderのSession LayerにOBEXプロトコルの停止を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS243)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにOBEXプロトコルの停止を要求する。
(ステップS244)OBEXプロトコルの停止を要求されたInitiatorのSession Layerは、OBEXプロトコルを停止し、InitiatorのApplication LayerにOBEX Serverの停止を要求する。
(ステップS245)OBEX Serverの停止を要求されたInitiatorのApplication Layerは、OBEX Serverを停止させる。
【0080】
上述したように、OBEX Client(Responder)が、DISCONNECT RequestのOBEX Header “Description“に「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する文字列をセットし、OBEX Server(Initiator)に送信する。そして、DISCONNECT Requestを受け取ったOBEX Serverは、DISCONNECT RequestのOBEX Header “Description“に「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する文字列がセットされていたら、OBEX ClientにDISCONNECT Responseを送信する。その後、OBEX Serverは、OBEX Clientに、トランスポート層の「サービス起動・停止要求メッセージ(停止)」を送信し、OBEX Client側のセッション層プロトコルと、アプリケーション層のOBEX Clientとの停止を指示する。
【0081】
これにより、セッション層プロトコルがOBEXプロトコルであり、InitiatorがOBEX Server(サービス提供端末)であり、ResponderがOBEX Client(サービス利用端末)である場合において、DISCONNECT Requestを用いてResponder側からサービスを停止させることができる。
【0082】
図12は、セッション層プロトコルがOBEXプロトコルであり、InitiatorがOBEX Server(サービス提供端末)であり、ResponderがClient(サービス利用端末)である場合において、PUT Requestを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。
【0083】
ステップS301〜ステップS328の処理は、図11のステップS201〜ステップS228の処理と同様の処理である。
【0084】
(ステップS329)ユーザによるサービスの停止指示がResponderに入力されると、ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを含むPUT Requestを入力する。
(ステップS330)ResponderのSession Layerは、入力されたPUT RequestをOBEX Packet(Request)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、変換したOBEX Packet(Request)を送信する。
【0085】
(ステップS331)InitiatorのSession Layerは、受信したOBEX Packet(Request)をPUT Requestに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したPUT Requestを入力する。
(ステップS332)PUT Requestが入力されたInitiatorのApplication Layerは、PUTを実行し、PUT Requestからオブジェクトを取得する。
【0086】
(ステップS333)InitiatorのApplication Layerは、PUTを実行したことを通知するために、InitiatorのSession LayerにPUT Responseを入力する。
(ステップS334)InitiatorのSession Layerは、入力されたPUT ResponseをOBEX Packet(Response)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Response)
【0087】
(ステップS335)ResponderのSession Layerは、受信したOBEX Packet(Response)をPUT Responseに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したPUT Responseを入力する。
(ステップS336)PUT Responseが入力されたResponderのApplication Layerは、PUTを完了する。
【0088】
(ステップS337)PUTを完了した後、ResponderのApplication Layerは、DISCONNECT Requestを入力する。
(ステップS338)ResponderのSession Layerは、入力されたDISCONNECT RequestをOBEX Packet(Request)に変換する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、RInitiatorのSession Layerに、変換したOBEX Packet(Request)を送信する。
【0089】
(ステップS339)InitiatorのSession Layerは、受信したOBEX Packet(Request)をDISCONNECT Requestに変換する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、変換したDISCONNECT Requestを入力する。
(ステップS340)DISCONNECT Requestが入力されたInitiatorのApplication Layerは、DISCONNECTを実行する。
(ステップS341)InitiatorrのApplication Layerは、DISCONNECTを実行したことを通知するために、InitiatorのSession LayerにDISCONNECT Responseを入力する。
【0090】
(ステップS342)InitiatorのSession Layerは、入力されたDISCONNECT ResponseをOBEX Packet(Response)に変換する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、変換したOBEX Packet(Response)を送信する。
(ステップS343)ResponderのSession Layerは、受信したOBEX Packet(Response)をDISCONNECT Responseに変換する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、変換したDISCONNECT Responseを入力する。
(ステップS344)DISCONNECT Responseが入力されたResponderのApplication Layerは、DISCONNECTを完了する。
【0091】
(ステップS345)ステップS341でInitiatorのSession LayerにDISCONNECT Responseを入力した後、ステップS332で取得したオブジェクトが、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトである場合は、InitiatorのApplication Layerは、Transport Layerにサービスの停止を要求する。
【0092】
ステップS346〜ステップS353の処理は、図11のステップS238〜ステップS245の処理と同様の処理である。
【0093】
上述したように、OBEX Client(Responder)が、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトをOBEX Server(Initiator)にPUTする。そして、「サービス開始・停止要求メッセージ(停止)の送信指示」オブジェクトを受け取ったOBEX Serverは、PUT ResponseをOBEX Clientに送信する。続いて、PUT Responseを受信したOBEX Clientは、DISCONNECT RequestをOBEX Server(Initiator)に送信する。そして、DISCONNECT Requestを受け取ったOBEX Serverは、DISCONNECT Requestを受け取ったら、OBEX ClientにDISCONNECT Responseを送信する。その後、DISCONNECT Requestを受け取る以前に「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを受け取っていたOBEX Serverは、OBEX Clientに、トランスポート層の「サービス起動・停止要求メッセージ(停止)」を送信し、OBEX Client側のセッション層プロトコルと、アプリケーション層のOBEX Clientとの停止を指示する。
【0094】
これにより、セッション層プロトコルがOBEXプロトコルであり、InitiatorがOBEX Server(サービス提供端末)であり、ResponderがOBEX Client(サービス利用端末)である場合において、PUT Requestを用いてResponder側からサービスを停止させることができる。
【0095】
なお、上述した例では、DISCONNECT(ステップS337〜ステップS344)を実行する例を示したが、DISCONNECTを実行しないようにしてもよい。具体的には、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを受け取る処理(ステップS329〜ステップS336)を行ったあとに、OBEX Server(サービス提供端末)は、サービスの停止を要求してサービスの停止処理(ステップS345〜ステップS353)を行うようにしてもよい。このように、DISCONNECTが無くても、OBEX Server(サービス提供端末)は、「サービス停止要求」を出すことができる。
【0096】
また、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトの例を以下に示す。
・PUT RequestのOBEX Header “Name”に、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味するオブジェクト名(例えば“SRVSTOP.SCR”)がセットされているオブジェクト。
・PUT RequestのOBEX Header “Type”に、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトタイプ(例えば“application/vnd.foo−srvstop”)がセットされているオブジェクト。
・構造化言語(XML:eXtensible Markup Language)で記述されていて、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する情報が記述されているオブジェクト。
【0097】
図13は、本実施形態において、構造化言語で記述されていて、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する情報が記述されているオブジェクトの例を示した図である。図示する例では、3行目に「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する情報として、<action>ServiceStop</action>が記載されている。
【0098】
(セッション層プロトコルがSCSIプロトコルの場合におけるサービスの停止方法)
次に、セッション層プロトコルとしてSCSIプロトコルを用いた場合におけるサービスの停止方法について説明する。
【0099】
図14は、セッション層プロトコルがSCSIプロトコルであり、InitiatorがSCSI Initiator(サービス利用端末)であり、ResponderがSCSI Target(サービス提供端末)である場合において、Initiator側からのサービスの停止手順を示したシーケンス図である。なお、この場合、電子カメラ1とPC2との間でデータの送受信を行う際に、PC2がInitiatorの役割で動作し、電子カメラ1がResponderの役割で動作するのが望ましい。
【0100】
(ステップS401)InitiatorとResponderとは、通信接続を確立する。具体的には、図3に示したように、InitiatorはResponderに対して接続要求を行い、Responderは接続要求を許可する。
(ステップS402)InitiatorとResponderとの通信接続が確立されると、InitiatorのApplication Layerは、SCSI Initiatorを起動する。
(ステップS403)SCSI Initiatorを起動すると、InitiatorのApplication Layerは、Transport Layerにサービスの起動を要求する。
【0101】
(ステップS404)サービスの起動を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービスリスト要求メッセージを送信する。
(ステップS405)サービスリスト要求メッセージを受信したResponderのTransport Layerは、InitiatorのTransport Layerに、自機が対応するサービスをService Parameterにセットしたサービスリスト応答メッセージを送信する。
【0102】
(ステップS406)サービスリスト応答メッセージを受信したInitiatorのTransport Layerは、サービスリスト応答メッセージに「Protocol Code」が「SCSI」、かつ「Class Code」が「SCSI Block Device − Target」であるService Parameterが存在した場合、「SCSI Block Device − Target」を起動するためにResponderのTransport Layerにサービス起動・停止要求メッセージ(起動)を送信する。
(ステップS407)サービス起動・停止要求メッセージ(起動)を受信したResponderのTransport Layerは、ResponderのSession LayerにSCSIプロトコルの起動を要求する。
(ステップS408)SCSIプロトコルの起動を要求されたResponderのSession Layerは、SCSIプロトコルを起動し、ResponderのApplication LayerにSCSI Targetの起動を要求する。
(ステップS409)SCSI Targetの起動を要求されたResponderのApplication Layerは、SCSI Targetを起動する。
【0103】
(ステップS410)ResponderのSession LayerにSCSIプロトコルの起動を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS411)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにSCSIプロトコルの起動を要求する。
(ステップS412)SCSIプロトコルの起動を要求されたInitiatorのSession Layerは、SCSIプロトコルを起動する。
【0104】
(ステップS413)InitiatorのSession LayerがSCSIプロトコルを起動した後、InitiatorのApplication Layerは、SCSI Targetのディスク等からデータを読み出すために、InitiatorのSession LayerにRead Requestを入力する。
(ステップS414)Read Requestが入力されたInitiatorのSession Layerは、Read Commandを含んだCDB(Command Descriptor Block)を生成する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、生成したCDBを送信する。
【0105】
(ステップS415)ResponderのSession Layerは、受信したCDBからRead Commandを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したRead Commandを入力する。
(ステップS416)Read Commandが入力されたResponderのApplication Layerは、Readを実行する(ディスク等からデータを読み出す)。続いて、ResponderのApplication Layerは、ResponderのSession Layerに、Read Data(読み出したデータ)を入力する。
【0106】
(ステップS417)ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、入力されたRead Dataを送信する。
(ステップS418)InitiatorのSession Layerは、InitiatorのApplication Layerに、受信したRead Dataを入力する。
(ステップS419)InitiatorのApplication Layerは、Read Dataを取得する。
【0107】
(ステップS420)ResponderのApplication Layerは、Readを完了した後、Readを完了したことを通知するために、ResponderのSession LayerにRead Responseを入力する。
(ステップS421)ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、入力されたRead Responseを送信する。
(ステップS422)InitiatorのSession Layerは、InitiatorのApplication Layerに、受信したRead Responseを入力する。
(ステップS423)Read Responseが入力されたInitiatorのApplication Layerは、Readを完了する。
【0108】
(ステップS424)ユーザによるサービスの停止指示がInitiatorに入力されると、InitiatorのApplication Layerは、Transport Layerにサービスの停止を要求する。
(ステップS425)サービスの停止を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービス起動・停止要求メッセージ(停止)を送信する。
(ステップS426)サービス起動・停止要求メッセージ(停止)を受信したResponderのTransport Layerは、ResponderのSession LayerにSCSIプロトコルの停止を要求する。
(ステップS427)SCSIプロトコルの停止を要求されたResponderのSession Layerは、SCSIプロトコルを停止し、ResponderのApplication LayerにSCSI Targetの停止を要求する。
(ステップS428)SCSI Targetの停止を要求されたResponderのApplication Layerは、SCSI Targetを停止させる。
【0109】
(ステップS429)ResponderのSession LayerにSCSIプロトコルの停止を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS430)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにSCSIプロトコルの停止を要求する。
(ステップS431)SCSIプロトコルの停止を要求されたInitiatorのSession Layerは、SCSIプロトコルを停止し、InitiatorのApplication LayerにSCSI Initiatorの停止を要求する。
(ステップS432)SCSI Initiatorの停止を要求されたInitiatorのApplication Layerは、SCSI Initiatorを停止させる。
【0110】
上述した手順により、セッション層プロトコルがSCSIプロトコルであり、InitiatorがSCSI Initiator(サービス利用端末)であり、ResponderがSCSI Target(サービス提供端末)である場合において、Initiator側からサービスを停止させることができる。
【0111】
図15は、セッション層プロトコルがSCSIプロトコルであり、InitiatorがSCSI Target(サービス提供端末)であり、ResponderがSCSI Initiator(サービス利用端末)である場合において、Responder側からのサービスの停止手順を示したシーケンス図である。なお、この場合、電子カメラ1とPC2との間でデータの送受信を行う際に、電子カメラ1がInitiatorの役割で動作し、PC2がResponderの役割で動作するのが望ましい。
【0112】
ステップS501の処理は、図14のステップS401の処理と同様の処理である。
(ステップS502)InitiatorとResponderとの通信接続が確立されると、InitiatorのApplication Layerは、SCSI Initiatorを起動する。
(ステップS503)SCSI Targetを起動すると、InitiatorのApplication Layerは、Transport Layerにサービスの起動を要求する。
【0113】
(ステップS504)サービスの起動を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービスリスト要求メッセージを送信する。
(ステップS505)サービスリスト要求メッセージを受信したResponderのTransport Layerは、InitiatorのTransport Layerに、自機が対応するサービスをService Parameterにセットしたサービスリスト応答メッセージを送信する。
【0114】
(ステップS506)サービスリスト応答メッセージを受信したInitiatorのTransport Layerは、サービスリスト応答メッセージに「Protocol Code」が「SCSI」、かつ「Class Code」が「SCSI Block Device − Initiator」であるService Parameterが存在した場合、「SCSI Block Device − Initiator」を起動するためにResponderのTransport Layerにサービス起動・停止要求メッセージ(起動)を送信する。
【0115】
(ステップS507)サービス起動・停止要求メッセージ(起動)を受信したResponderのTransport Layerは、ResponderのSession LayerにSCSIプロトコルの起動を要求する。
(ステップS508)SCSIプロトコルの起動を要求されたResponderのSession Layerは、SCSIプロトコルを起動し、ResponderのApplication LayerにSCSI Initiatorの起動を要求する。
(ステップS509)SCSI Initiatorの起動を要求されたResponderのApplication Layerは、SCSI Initiatorを起動する。
【0116】
(ステップS510)ResponderのSession LayerにSCSIプロトコルの起動を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS511)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにSCSIプロトコルの起動を要求する。
(ステップS512)SCSIプロトコルの起動を要求されたInitiatorのSession Layerは、SCSIプロトコルを起動する。
【0117】
(ステップS513)ResponderのSession LayerがSCSIプロトコルを起動した後、ResponderのApplication Layerは、SCSI Targetのディスク等からデータを読み出すために、ResponderのSession LayerにRead Requestを入力する。
(ステップS514)Read Requestが入力されたResponderのSession Layerは、Read Commandを含んだCDB(Command Descriptor Block)を生成する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、生成したCDBを送信する。
【0118】
(ステップS515)InitiatorのSession Layerは、受信したCDBからRead Commandを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したRead Commandを入力する。
(ステップS516)Read Commandが入力されたInitiatorのApplication Layerは、Readを実行する(ディスク等からデータを読み出す)。続いて、InitiatorのApplication Layerは、InitiatorのSession Layerに、Read Data(読み出したデータ)を入力する。
【0119】
(ステップS517)InitiatorのSession Layerは、Initiator
とResponderのTransport Layerを介して、ResponderのSession Layerに、入力されたRead Dataを送信する。
(ステップS518)ResponderのSession Layerは、ResponderのApplication Layerに、受信したRead Dataを入力する。
(ステップS519)ResponderのApplication Layerは、Read Dataを取得する。
【0120】
(ステップS520)InitiatorのApplication Layerは、Readを完了した後、Readを完了したことを通知するために、InitiatorのSession LayerにRead Responseを入力する。
(ステップS521)InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、入力されたRead Responseを送信する。
(ステップS522)ResponderのSession Layerは、ResponderのApplication Layerに、受信したRead Responseを入力する。
(ステップS523)Read Responseが入力されたResponderのApplication Layerは、Readを完了する。
【0121】
(ステップS524)ユーザによるサービスの停止指示がResponderに入力されると、ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンド(SCSI Service Stop Command)を入力する。
(ステップS525)ResponderのSession Layerは、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドを含んだCDBを生成する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、生成したCDBを送信する。
【0122】
(ステップS526)InitiatorのSession Layerは、受信したCDBから、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドを入力する。
(ステップS527)「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドが入力されたInitiatorのApplication Layerは、SCSIサービスの停止処理を実行する。
【0123】
(ステップS528)InitiatorのApplication Layerは、SCSIサービスの停止処理を実行したことを通知するために、InitiatorのSession Layerに Responseを入力する。
(ステップS529)InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、入力されたResponseを送信する。
(ステップS530)ResponderのSession Layerは、ResponderのApplication Layerに、受信したResponseを入力する。
(ステップS531)Responseが入力されたResponderのApplication Layerは、SCSIサービスの停止処理を完了する。
(ステップS532)SCSIサービスの停止処理を実行したInitiatorのApplication Layerは、ステップS527でサービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドが入力されていた場合に、Transport Layerにサービスの停止を要求する。
【0124】
ステップS533〜ステップS540の処理は、図14のステップS425〜ステップS432の処理と同様の処理である。
【0125】
上述したように、SCSI Initiator(Responder)が、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIIコマンドをSCSI Target(Initiator)に発行する。そして、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドを受け取ったSCSI Target(Initiator)は、トランスポート層の「サービス開始・停止要求メッセージ(停止)」を、SCSI Initiator(Responder)に送信し、SCSI Initiator(Responder)側のセッション層プロトコルとアプリケーション層のSCSI Initiatorの停止を指示する。
【0126】
これにより、セッション層プロトコルがSCSIプロトコルであり、InitiatorがSCSI Target(サービス提供端末)であり、ResponderがSCSI Initiator(サービス利用端末)である場合において、Responder側からサービスを停止させることができる。
【0127】
なお、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドの例を図16に示す。図16は、本実施形態における「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドのCDBのデータ構造を示した概略図である。図示する例では、CDBの0バイト目にOperation Code「0xD0」が格納されている。本実施形態では、オペレーションコードが「0xD0」であるCDBは、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するSCSIコマンドのCDBである。
【0128】
(セッション層プロトコルがPTPプロトコルの場合におけるサービスの停止方法)
次に、セッション層プロトコルとしてPTPプロトコルを用いた場合におけるサービスの停止方法について説明する。
【0129】
図17は、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Initiator(サービス利用端末)であり、ResponderがPTP Responder(サービス提供端末)である場合において、Initiator側からのサービスの停止手順を示したシーケンス図である。なお、この場合、電子カメラ1とPC2との間でデータの送受信を行う際に、PC2がInitiatorの役割で動作し、電子カメラ1がResponderの役割で動作するのが望ましい。
【0130】
(ステップS601)InitiatorとResponderとは、通信接続を確立する。具体的には、図3に示したように、InitiatorはResponderに対して接続要求を行い、Responderは接続要求を許可する。
(ステップS602)InitiatorとResponderとの通信接続が確立されると、InitiatorのApplication Layerは、PTP Initiatorを起動する。
(ステップS603)PTP Initiatorを起動すると、InitiatorのApplication Layerは、Transport Layerにサービスの起動を要求する。
【0131】
(ステップS604)サービスの起動を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービスリスト要求メッセージを送信する。
(ステップS605)サービスリスト要求メッセージを受信したResponderのTransport Layerは、InitiatorのTransport Layerに、自機が対応するサービスをService Parameterにセットしたサービスリスト応答メッセージを送信する。
【0132】
(ステップS606)サービスリスト応答メッセージを受信したInitiatorのTransport Layerは、サービスリスト応答メッセージに「Protocol Code」が「PTP」、かつ「Class Code」が「PTP Responder」であるService Parameterが存在した場合、「PTP Responder」を起動するためにResponderのTransport Layerにサービス起動・停止要求メッセージ(起動)を送信する。
【0133】
(ステップS607)サービス起動・停止要求メッセージ(起動)を受信したResponderのTransport Layerは、ResponderのSession LayerにPTPプロトコルの起動を要求する。
(ステップS608)PTPプロトコルの起動を要求されたResponderのSession Layerは、PTPプロトコルを起動し、ResponderのApplication LayerにPTP Responderの起動を要求する。
(ステップS609)PTP Responderの起動を要求されたResponderのApplication Layerは、PTP Responderを起動する。
【0134】
(ステップS610)ResponderのSession LayerにPTPプロトコルの起動を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS611)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにPTPプロトコルの起動を要求する。
(ステップS612)PTPプロトコルの起動を要求されたInitiatorのSession Layerは、PTPプロトコルを起動する。
【0135】
(ステップS613)InitiatorのSession LayerがPTPプロトコルを起動した後、InitiatorのApplication Layerは、InitiatorのSession LayerにOpenSession Requestを入力する。
(ステップS614)InitiatorのSession Layerは、入力されたOpenSession RequestをPTP Container(Operation Request)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Operation Request)を送信する。
【0136】
(ステップS615)ResponderのSession Layerは、受信したPTP Container(Operation Request)からOpenSession Requestを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したOpenSession Requestを入力する。
(ステップS616)OpenSession Requestが入力されたResponderのApplication Layerは、OpenSessionを実行する。
(ステップS617)ResponderのApplication Layerは、OpenSessionを実行したことを通知するために、ResponderのSession LayerにOpenSession Responseを入力する。
【0137】
(ステップS618)OpenSession Responseが入力されたResponderのSession Layerは、入力されたOpenSession ResponseをPTP Container(Response)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Response)を送信する。
(ステップS619)InitiatorのSession Layerは、受信したPTP Container(Response)からOpenSession Responseを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したOpenSession Responseを入力する。
(ステップS620)OpenSession Responseが入力されたInitiatorのApplication Layerは、OpenSessionを完了する。
【0138】
(ステップS621)OpenSessionを完了した後、InitiatorのApplication Layerは、InitiatorのSession Layerに、送信対象のオブジェクト(ファイル等)の情報の送信を開始するコマンドであるSendObjectInfo Requestを入力する。
(ステップS622)InitiatorのSession Layerは、入力されたSendObjectInfo RequestをPTP Container(Operation Request)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Operation Request)を送信する。
【0139】
(ステップS623)ResponderのSession Layerは、受信したPTP Container(Operation Request)からSendObjectInfo Requestを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したSendObjectInfo Requestを入力する。
(ステップS624)SendObjectInfo Requestが入力されたResponderのApplication Layerは、SendObjectInfoを実行する。
【0140】
(ステップS625)InitiatorのApplication Layerは、InitiatorのSession Layerに、送信対象のオブジェクト(ファイル等)の情報を含むObjectInfo Dataを入力する。
(ステップS626)InitiatorのSession Layerは、入力されたObjectInfo DataをPTP Container(Data)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Data)を送信する。
【0141】
(ステップS627)ResponderのSession Layerは、受信したPTP Container(Data)からObjectInfo Dataを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したObjectInfo Dataを入力する。
(ステップS628)ObjectInfo Dataが入力されたResponderのApplication Layerは、ObjectInfo Dataを取得する。
【0142】
(ステップS629)ResponderのApplication Layerは、ObjectInfo Dataを取得したことを通知するために、ResponderのSession LayerにSendObjectInfo Responseを入力する。
(ステップS630)ResponderのSession Layerは、入力されたSendObjectInfo ResponseをPTP Container(Response)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Response)を送信する。
(ステップS631)InitiatorのSession Layerは、受信したPTP Container(Response)からSendObjectInfo Responseを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したSendObjectInfo Responseを入力する。
(ステップS632)SendObjectInfo Responseが入力されたInitiatorのApplication Layerは、SendObjectInfoを完了する。
【0143】
(ステップS633)SendObjectInfoを完了した後、InitiatorのApplication Layerは、InitiatorのSession Layerに、送信対象のオブジェクト(ファイル等)の送信を開始するコマンドであるSendObject Requestを入力する。
(ステップS634)InitiatorのSession Layerは、入力されたSendObject RequestをPTP Container(Operation Request)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Operation Request)を送信する。
【0144】
(ステップS635)ResponderのSession Layerは、受信したPTP Container(Operation Request)からSendObject Requestを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したSendObject Requestを入力する。
(ステップS636)SendObject Requestが入力されたResponderのApplication Layerは、SendObjectを実行する。
【0145】
(ステップS637)InitiatorのApplication Layerは、InitiatorのSession Layerに、送信対象のオブジェクト(ファイル等)を含むObject Dataを入力する。
(ステップS638)InitiatorのSession Layerは、入力されたObject DataをPTP Container(Data)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Data)を送信する。
【0146】
(ステップS639)ResponderのSession Layerは、受信したPTP Container(Data)からObject Dataを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したObject Dataを入力する。
(ステップS640)Object Dataが入力されたResponderのApplication Layerは、Object Dataを取得する。
【0147】
(ステップS641)ResponderのApplication Layerは、Object Dataを取得したことを通知するために、ResponderのSession LayerにSendObject Responseを入力する。
(ステップS642)ResponderのSession Layerは、入力されたSendObject ResponseをPTP Container(Response)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Response)を送信する。
(ステップS643)InitiatorのSession Layerは、受信したPTP Container(Response)からSendObject Responseを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したSendObject Responseを入力する。
(ステップS644)SendObject Responseが入力されたInitiatorのApplication Layerは、SendObjectを完了する。
【0148】
(ステップS645)SendObjectを完了した後、InitiatorのApplication Layerは、InitiatorのSession LayerにCloseSession Requestを入力する。
(ステップS646)InitiatorのSession Layerは、入力されたCloseSession RequestをPTP Container(Operation Request)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Operation Request)を送信する。
【0149】
(ステップS647)ResponderのSession Layerは、受信したPTP Container(Operation Request)からCloseSession Requestを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したCloseSession Requestを入力する。
(ステップS648)CloseSession Requestが入力されたResponderのApplication Layerは、CloseSessionを実行する。
(ステップS649)ResponderのApplication Layerは、CloseSessionを実行したことを通知するために、ResponderのSession LayerにCloseSession Responseを入力する。
【0150】
(ステップS650)CloseSession Responseが入力されたResponderのSession Layerは、入力されたCloseSession ResponseをPTP Container(Response)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Response)を送信する。
(ステップS651)InitiatorのSession Layerは、受信したPTP Container(Response)からCloseSession Responseを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したCloseSession Responseを入力する。
(ステップS652)CloseSession Responseが入力されたInitiatorのApplication Layerは、CloseSessionを完了する。
【0151】
(ステップS653)ユーザによるサービスの停止指示がInitiatorに入力されると、InitiatorのApplication Layerは、Transport Layerにサービスの停止を要求する。
(ステップS654)サービスの停止を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービス起動・停止要求メッセージ(停止)を送信する。
(ステップS655)サービス起動・停止要求メッセージ(停止)を受信したResponderのTransport Layerは、ResponderのSession LayerにPTPプロトコルの停止を要求する。
(ステップS656)PTPプロトコルの停止を要求されたResponderのSession Layerは、PTPプロトコルを停止し、ResponderのApplication LayerにPTP Responderの停止を要求する。
(ステップS657)PTP Responderの停止を要求されたResponderのApplication Layerは、PTP Responderを停止させる。
【0152】
(ステップS658)ResponderのSession LayerにPTPプロトコルの停止を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS659)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにPTPプロトコルの停止を要求する。
(ステップS660)PTPプロトコルの停止を要求されたInitiatorのSession Layerは、PTPプロトコルを停止し、InitiatorのApplication LayerにPTP Initiatorの停止を要求する。
(ステップS661)PTP Initiatorの停止を要求されたInitiatorのApplication Layerは、PTP Initiatorを停止させる。
【0153】
上述した手順により、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Initiator(サービス利用端末)であり、ResponderがPTP Responder(サービス提供端末)である場合において、Initiator側からサービスを停止させることができる。
【0154】
図18は、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Responder(サービス提供端末)であり、ResponderがPTP Initiator(サービス利用端末)である場合において、Object Dataを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。なお、この場合、電子カメラ1とPC2との間でデータの送受信を行う際に、電子カメラ1がInitiatorの役割で動作し、PC2がResponderの役割で動作するのが望ましい。
【0155】
ステップS701の処理は、図17のステップS601の処理と同様の処理である。
(ステップS702)InitiatorとResponderとの通信接続が確立されると、InitiatorのApplication Layerは、PTP Responderを起動する。
(ステップS703)PTP Responderを起動すると、InitiatorのApplication Layerは、Transport Layerにサービスの起動を要求する。
【0156】
(ステップS704)サービスの起動を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービスリスト要求メッセージを送信する。
(ステップS705)サービスリスト要求メッセージを受信したResponderのTransport Layerは、InitiatorのTransport Layerに、自機が対応するサービスをService Parameterにセットしたサービスリスト応答メッセージを送信する。
【0157】
(ステップS706)サービスリスト応答メッセージを受信したInitiatorのTransport Layerは、サービスリスト応答メッセージに「Protocol Code」が「PTP」、かつ「Class Code」が「PTP Initiator」であるService Parameterが存在した場合、「PTP Initiator」を起動するためにResponderのTransport Layerにサービス起動・停止要求メッセージ(起動)を送信する。
【0158】
(ステップS707)サービス起動・停止要求メッセージ(起動)を受信したResponderのTransport Layerは、ResponderのSession LayerにPTPプロトコルの起動を要求する。
(ステップS708)PTPプロトコルの起動を要求されたResponderのSession Layerは、PTPプロトコルを起動し、ResponderのApplication LayerにPTP Initiatorの起動を要求する。
(ステップS709)PTP Responderの起動を要求されたResponderのApplication Layerは、PTP Initiatorを起動する。
【0159】
(ステップS710)ResponderのSession LayerにPTPプロトコルの起動を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS711)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにPTPプロトコルの起動を要求する。
(ステップS712)PTPプロトコルの起動を要求されたInitiatorのSession Layerは、PTPプロトコルを起動する。
【0160】
(ステップS713)ResponderのSession LayerがPTPプロトコルを起動した後、ResponderのApplication Layerは、ResponderのSession LayerにOpenSession Requestを入力する。
(ステップS714)ResponderのSession Layerは、入力されたOpenSession RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0161】
(ステップS715)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からOpenSession Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したOpenSession Requestを入力する。
(ステップS716)OpenSession Requestが入力されたInitiatorのApplication Layerは、OpenSessionを実行する。
(ステップS717)InitiatorのApplication Layerは、OpenSessionを実行したことを通知するために、InitiatorのSession LayerにOpenSession Responseを入力する。
【0162】
(ステップS718)OpenSession Responseが入力されたInitiatorのSession Layerは、入力されたOpenSession ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS719)ResponderのSession Layerは、受信したPTP Container(Response)からOpenSession Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したOpenSession Responseを入力する。
(ステップS720)OpenSession Responseが入力されたResponderのApplication Layerは、OpenSessionを完了する。
【0163】
(ステップS721)OpenSessionを完了した後、ResponderのApplication Layerは、ResponderのSession Layerに、送信対象のオブジェクト(ファイル等)の情報の送信を開始するコマンドであるSendObjectInfo Requestを入力する。
(ステップS722)ResponderのSession Layerは、入力されたSendObjectInfo RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0164】
(ステップS723)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からSendObjectInfo Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したSendObjectInfo Requestを入力する。
(ステップS724)SendObjectInfo Requestが入力されたInitiatorのApplication Layerは、SendObjectInfoを実行する。
【0165】
(ステップS725)ResponderのApplication Layerは、ResponderのSession Layerに、送信対象のオブジェクト(ファイル等)の情報を含むObjectInfo Dataを入力する。
(ステップS726)ResponderのSession Layerは、入力されたObjectInfo DataをPTP Container(Data)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Data)を送信する。
【0166】
(ステップS727)InitiatorのSession Layerは、受信したPTP Container(Data)からObjectInfo Dataを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したObjectInfo Dataを入力する。
(ステップS728)ObjectInfo Dataが入力されたInitiatorのApplication Layerは、ObjectInfo Dataを取得する。
【0167】
(ステップS729)InitiatorのApplication Layerは、ObjectInfo Dataを取得したことを通知するために、InitiatorのSession LayerにSendObjectInfo Responseを入力する。
(ステップS730)InitiatorのSession Layerは、入力されたSendObjectInfo ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS731)ResponderのSession Layerは、受信したPTP Container(Response)からSendObjectInfo Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したSendObjectInfo Responseを入力する。
(ステップS732)SendObjectInfo Responseが入力されたResponderのApplication Layerは、SendObjectInfoを完了する。
【0168】
(ステップS733)SendObjectInfoを完了した後、ResponderのApplication Layerは、ResponderのSession Layerに、送信対象のオブジェクト(ファイル等)の送信を開始するコマンドであるSendObject Requestを入力する。
(ステップS734)ResponderのSession Layerは、入力されたSendObject RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0169】
(ステップS735)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からSendObject Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したSendObject Requestを入力する。
(ステップS736)SendObject Requestが入力されたInitiatorのApplication Layerは、SendObjectを実行する。
【0170】
(ステップS737)ResponderのApplication Layerは、ResponderのSession Layerに、送信対象のオブジェクト(ファイル等)を含むObject Dataを入力する。
(ステップS738)ResponderのSession Layerは、入力されたObject DataをPTP Container(Data)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Data)を送信する。
【0171】
(ステップS739)InitiatorのSession Layerは、受信したPTP Container(Data)からObject Dataを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したObject Dataを入力する。
(ステップS740)Object Dataが入力されたInitiatorのApplication Layerは、Object Dataを取得する。
【0172】
(ステップS741)InitiatorのApplication Layerは、Object Dataを取得したことを通知するために、InitiatorのSession LayerにSendObject Responseを入力する。
(ステップS742)InitiatorのSession Layerは、入力されたSendObject ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS743)ResponderのSession Layerは、受信したPTP Container(Response)からSendObject Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したSendObject Responseを入力する。
(ステップS744)SendObject Responseが入力されたResponderのApplication Layerは、SendObjectを完了する。
【0173】
(ステップS745)ユーザによるサービスの停止指示がResponderに入力されると、ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトの情報の送信を開始するコマンドであるSendObjectInfo Requestを入力する。
(ステップS746)ResponderのSession Layerは、入力されたSendObjectInfo RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0174】
(ステップS747)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からSendObjectInfo Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したSendObjectInfo Requestを入力する。
(ステップS748)SendObjectInfo Requestが入力されたInitiatorのApplication Layerは、SendObjectInfoを実行する。
【0175】
(ステップS749)ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトの情報を含むObjectInfo Dataを入力する。
(ステップS750)ResponderのSession Layerは、入力されたObjectInfo DataをPTP Container(Data)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Data)を送信する。
【0176】
(ステップS751)InitiatorのSession Layerは、受信したPTP Container(Data)からObjectInfo Dataを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したObjectInfo Dataを入力する。
(ステップS752)ObjectInfo Dataが入力されたInitiatorのApplication Layerは、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトの情報を含むObjectInfo Dataを取得する。
【0177】
(ステップS753)InitiatorのApplication Layerは、ObjectInfo Dataを取得したことを通知するために、InitiatorのSession LayerにSendObjectInfo Responseを入力する。
(ステップS754)InitiatorのSession Layerは、入力されたSendObjectInfo ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS755)ResponderのSession Layerは、受信したPTP Container(Response)からSendObjectInfo Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したSendObjectInfo Responseを入力する。
(ステップS756)SendObjectInfo Responseが入力されたResponderのApplication Layerは、SendObjectInfoを完了する。
【0178】
(ステップS757)SendObjectInfoを完了した後、ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトの送信を開始するコマンドであるSendObject Requestを入力する。
(ステップS758)ResponderのSession Layerは、入力されたSendObject RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0179】
(ステップS759)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からSendObject Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したSendObject Requestを入力する。
(ステップS760)SendObject Requestが入力されたInitiatorのApplication Layerは、SendObjectを実行する。
【0180】
(ステップS761)ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを含むObject Dataを入力する。
(ステップS762)ResponderのSession Layerは、入力されたObject DataをPTP Container(Data)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Data)を送信する。
【0181】
(ステップS763)InitiatorのSession Layerは、受信したPTP Container(Data)からObject Dataを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したObject Dataを入力する。
(ステップS764)Object Dataが入力されたInitiatorのApplication Layerは、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを含むObject Dataを取得する。
【0182】
(ステップS765)InitiatorのApplication Layerは、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを含むObject Dataを取得したことを通知するために、InitiatorのSession LayerにSendObject Responseを入力する。
(ステップS766)InitiatorのSession Layerは、入力されたSendObject ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS767)ResponderのSession Layerは、受信したPTP Container(Response)からSendObject Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したSendObject Responseを入力する。
(ステップS768)SendObject Responseが入力されたResponderのApplication Layerは、SendObjectを完了する。
【0183】
(ステップS769)SendObjectを完了した後、ResponderのApplication Layerは、ResponderのSession LayerにCloseSession Requestを入力する。
(ステップS770)ResponderのSession Layerは、入力されたCloseSession RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0184】
(ステップS771)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からCloseSession Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したCloseSession Requestを入力する。
(ステップS772)CloseSession Requestが入力されたInitiatorのApplication Layerは、CloseSessionを実行する。
(ステップS773)InitiatorのApplication Layerは、CloseSessionを実行したことを通知するために、InitiatorのSession LayerにCloseSession Responseを入力する。
【0185】
(ステップS774)CloseSession Responseが入力されたInitiatorのSession Layerは、入力されたCloseSession ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS775)ResponderのSession Layerは、受信したPTP Container(Response)からCloseSession Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したCloseSession Responseを入力する。
(ステップS776)CloseSession Responseが入力されたResponderのApplication Layerは、CloseSessionを完了する。
(ステップS777)CloseSessionを実行した後、InitiatorのApplication Layerは、ステップS764で取得したオブジェクトが、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトである場合は、Transport Layerにサービスの停止を要求する。
【0186】
(ステップS778)サービスの停止を要求されたInitiatorのTransport Layerは、ResponderのTransport Layerにサービス起動・停止要求メッセージ(停止)を送信する。
(ステップS779)サービス起動・停止要求メッセージ(停止)を受信したResponderのTransport Layerは、ResponderのSession LayerにPTPプロトコルの停止を要求する。
(ステップS780)PTPプロトコルの停止を要求されたResponderのSession Layerは、PTPプロトコルを停止し、ResponderのApplication LayerにPTP Initiatorの停止を要求する。
(ステップS781)PTP Initiatorの停止を要求されたResponderのApplication Layerは、PTP Initiatorを停止させる。
【0187】
(ステップS782)ResponderのSession LayerにPTPプロトコルの停止を要求したResponderのTransport Layerは、InitiatorのTransport Layerにサービス起動・停止応答メッセージを送信する。
(ステップS783)サービス起動・停止応答メッセージを受信したInitiatorのTransport Layerは、InitiatorのSession LayerにPTPプロトコルの停止を要求する。
(ステップS784)PTPプロトコルの停止を要求されたInitiatorのSession Layerは、PTPプロトコルを停止し、InitiatorのApplication LayerにPTP Responderの停止を要求する。
(ステップS785)PTP Responderの停止を要求されたInitiatorのApplication Layerは、PTP Responderを停止させる。
【0188】
上述したように、PTP Initiator(サービス利用端末)側からサービスを停止する場合、PTP Initiator(サービス利用端末)は、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトをPTP Responder(サービス提供端末)に送信する。
【0189】
なお、PTPでのオブジェクト送信の手順は以下の通りである。
Step1)SendObjectInfoオペレーションで、「送信するオブジェクトの情報(ObjectInfo)」を送信する。ObejctInfoには、ファイル名(Filenameフィールド)のほかに、JPEG、TIFF等のオブジェクトのフォーマットタイプ(ObjectFormatフィールド)や撮影日付(CaptureDateフィールド)がある。
Step2)SendObjectオペレーションで、オブジェクトの実体を送信する。
【0190】
そして、「サービス開始・停止要求メッセージ(停止)の送信指示」オブジェクトを受け取ったPTP Responder(サービス提供端末)は、CloseSessionが完了(CloseSession Request/Responseの送受信)した後に、トランスポート層の「サービス開始・停止要求メッセージ(停止)」をPTP Initiator(サービス利用端末)に送信し、PTP Initiator(サービス利用端末)側のセッション層プロトコルとアプリケーション層のPTP Initiatorの停止を指示する。
【0191】
これにより、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Responder(サービス提供端末)であり、ResponderがPTP Initiator(サービス利用端末)である場合において、Object Dataを用いてResponder側からサービスを停止させることができる。
【0192】
なお、上述した例では、PTP Responder(サービス提供端末)は、CloseSession Requestを受信した後に、「サービス開始・停止要求メッセージ(停止)」を送信したが、PTP Responder(サービス提供端末)は、CloseSession Requestを受信する前に、「サービス開始・停止要求メッセージ(停止)」を送信してもよい。
【0193】
また、上述した例では、Close Session(ステップS769〜ステップS776)を実行する例を示したが、Close Sessionを実行しないようにしてもよい。具体的には、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するオブジェクトを受け取る処理(ステップS757〜ステップS768)を行ったあとに、PTP Responder(サービス提供端末)は、サービスの停止を要求してサービスの停止処理(ステップS777〜ステップS785)を行うようにしてもよい。このように、Close Sessionが無くても、PTP Responder(サービス提供端末)は、「サービス停止要求」を出すことができる。
【0194】
また、「サービス開始・停止要求メッセージの送信指示」を意味するオブジェクトの例を以下に示す。
・SendObjectInfoオペレーションで送信するObjectInfoの“Filename”フィールドに、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味するオブジェクト名(例えば“SRVSTOP.SCR”)がセットされているオブジェクト。
・構造化言語(XML)で記述されていて、「サービス起動・停止要求メッセージ(停止)の送信指示」を意味する情報が記述されているオブジェクト(例えば、図13参照)。
【0195】
図19は、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Responder(サービス提供端末)であり、ResponderがPTP Initiator(サービス利用端末)である場合において、ServiceStop Requestを用いた場合のResponder側からのサービスの停止手順を示したシーケンス図である。なお、この場合、電子カメラ1とPC2との間でデータの送受信を行う際に、電子カメラ1がInitiatorの役割で動作し、PC2がResponderの役割で動作するのが望ましい。
【0196】
ステップS801〜ステップS844の処理は、図18のステップS701〜ステップS744の処理と同様の処理である。
【0197】
(ステップS845)ユーザによるサービスの停止指示がResponderに入力されると、ResponderのApplication Layerは、ResponderのSession Layerに、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションであるServiceStop Requestを入力する。
(ステップS846)ResponderのSession Layerは、入力されたServiceStop RequestをPTP Container(Operation Request)に格納する。続いて、ResponderのSession Layerは、ResponderとInitiatorのTransport Layerを介して、InitiatorのSession Layerに、PTP Container(Operation Request)を送信する。
【0198】
(ステップS847)InitiatorのSession Layerは、受信したPTP Container(Operation Request)からServiceStop Requestを取得する。続いて、InitiatorのSession Layerは、InitiatorのApplication Layerに、取得したServiceStop Requestを入力する。
(ステップS848)ServiceStop Requestが入力されたInitiatorのApplication Layerは、ServiceStopを実行する。
【0199】
(ステップS849)InitiatorのApplication Layerは、ServiceStopを実行したことを通知するために、InitiatorのSession LayerにServiceStop Responseを入力する。
(ステップS850)InitiatorのSession Layerは、入力されたServiceStop ResponseをPTP Container(Response)に格納する。続いて、InitiatorのSession Layerは、InitiatorとResponderのTransport Layerを介して、ResponderのSession Layerに、PTP Container(Response)を送信する。
(ステップS851)ResponderのSession Layerは、受信したPTP Container(Response)からServiceStop Responseを取得する。続いて、ResponderのSession Layerは、ResponderのApplication Layerに、取得したServiceStop Responseを入力する。
(ステップS852)ServiceStop Responseが入力されたResponderのApplication Layerは、ServiceStopを完了する。
(ステップS853)ServiceStopを完了した後、ResponderのApplication Layerは、ResponderのSession LayerにCloseSession Requestを入力する。
【0200】
ステップS854〜ステップS860の処理は、図18のステップS770〜ステップS776の処理と同様の処理である。
(ステップS861)CloseSessionを実行した後、InitiatorのApplication Layerは、ステップS848で「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションであるServiceStop Requestが入力されていた場合は、Transport Layerにサービスの停止を要求する。
【0201】
ステップS862〜ステップS869の処理は、図18のステップS778〜ステップS785の処理と同様の処理である。
【0202】
上述したように、PTP Initiator(サービス利用端末)側からサービスを停止する場合、PTP Initiator(サービス利用端末)は、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーション(ServiceStop Request)をPTP Responder(サービス提供端末)に発行する。
【0203】
そして、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションを受け取ったPTP Responder(サービス提供端末)は、トランスポート層の「サービス起動・停止要求メッセージ(停止)」をPTP Initiator(サービス利用端末)に送信し、PTP Initiator(サービス利用端末)側のセッション層プロトコルとアプリケーション層のPTP Initiatorの停止を指示する。
【0204】
これにより、セッション層プロトコルがPTPプロトコルであり、InitiatorがPTP Responder(サービス提供端末)であり、ResponderがPTP Initiator(サービス利用端末)である場合において、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションを用いてResponder側からサービスを停止させることができる。
【0205】
なお、上述した例では、PTP Responder(サービス提供端末)は、CloseSession Requestを受信した後に、「サービス開始・停止要求メッセージ(停止)」を送信したが、PTP Responder(サービス提供端末)は、CloseSession Requestを受信する前に、「サービス開始・停止要求メッセージ(停止)」を送信してもよい。
【0206】
また、上述した例では、Close Session(ステップS853〜ステップS860)を実行する例を示したが、Close Sessionを実行しないようにしてもよい。具体的には、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションを実行する処理(ステップS845〜ステップS852)を行ったあとに、PTP Responder(サービス提供端末)は、サービスの停止を要求してサービスの停止処理(ステップS861〜ステップS869)を行うようにしてもよい。このように、Close Sessionが無くても、PTP Responder(サービス提供端末)は、「サービス停止要求」を出すことができる。
【0207】
また、「サービス開始・停止要求メッセージの送信指示」を意味するPTPオペレーションの例を図20に示す。図20は、本実施形態における「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションのデータ構造を示した概略図である。図示する例では、PTPオペレーションは、「Operation Code」と、「Parameter1〜Parameter5」の6つのフィールド(Field)を備えている。フィールド「Operation Code」には「ServiceStop(0x9000)」が格納されている。また、フィールド「Parameter1〜Parameter5」にはオペレーションパラメータが格納される。本実施形態では、Operation Codeが「ServiceStop(0x9000)」であるPTPオペレーションは、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションである。なお、「サービス開始・停止要求メッセージ(停止)の送信指示」を意味するPTPオペレーションでは、「Parameter1〜Parameter5」を使用しない。
【0208】
以上、この発明の一実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0209】
1・・・電子カメラ、2・・・PC、11・・・撮像部、12・・・記録媒体、13,21・・・CPU、14,23・・・通信制御部、15,24・・・操作部、16,25・・・表示部、17,26・・・RAM、18・・・フラッシュメモリ、22・・・記録媒体

【特許請求の範囲】
【請求項1】
トランスポート層より上位層のサービスを提供するサービス提供端末からトランスポート層の通信データを受信する受信部と、
前記受信したトランスポート層の通信データが前記サービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う制御部と、
前記サービスの停止に係るトリガを受け付けるトリガ受付部と、
前記トリガを受け付けた場合、前記サービス提供端末に、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データを送信する送信部と、
を有することを特徴とするサービス利用端末。
【請求項2】
前記上位層のサービスは、OBEX Clientであり、
前記送信部は、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データとして、前記サービスの停止要求情報を付したDISCONNECT Requestを送信、または前記サービスの停止要求を意味するオブジェクトをPUT Requestで送信する
ことを特徴とする請求項1に記載のサービス利用端末。
【請求項3】
前記上位層のサービスは、SCSI Initiatorであり、
前記送信部は、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データとして、前記サービスの停止要求を意味するSCSIコマンドを送信する
ことを特徴とする請求項1に記載のサービス利用端末。
【請求項4】
前記上位層のサービスは、PTP Initiatorであり、
前記送信部は、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データとして、前記サービスの停止要求情報を付したServiceStop Requestを送信、または前記サービスの停止要求を意味するオブジェクトをSendObject Requestで送信する
ことを特徴とする請求項1に記載のサービス利用端末。
【請求項5】
前記送信部は、トランスポート層においてInitiatorの役割を担う前記サービス提供端末に、前記サービスの停止要求に関連する前記上位層への要求を含むトランスポート層の通信データを送信する
ことを特徴とする請求項1に記載のサービス利用端末。
【請求項6】
トランスポート層より上位層のサービスを利用するサービス利用端末からトランスポート層の通信データを受信する受信部と、
前記受信したトランスポート層の通信データが、前記サービスの停止要求に係る前記上位層への要求を含む場合、前記サービス利用端末に、前記サービスの停止要求に関連するトランスポート層の通信データを送信する送信部と、
を有することを特徴とするサービス提供端末。
【請求項7】
トランスポート層より上位層のサービスを提供するサービス提供端末からトランスポート層の通信データを受信する受信ステップと、
前記受信したトランスポート層の通信データが前記サービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う制御ステップと、
前記サービスの停止に係るトリガを受け付けるトリガ受付ステップと、
前記トリガを受け付けた場合、前記サービス提供端末に、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データを送信する送信ステップと、
を有することを特徴とするサービス利用端末の制御方法。
【請求項8】
トランスポート層より上位層のサービスを利用するサービス利用端末からトランスポート層の通信データを受信する受信ステップと、
前記受信したトランスポート層の通信データが、前記サービスの停止要求に係る前記上位層への要求を含む場合、前記サービス利用端末に、前記サービスの停止要求に関連するトランスポート層の通信データを送信する送信ステップと、
を有することを特徴とするサービス提供端末の制御方法。
【請求項9】
トランスポート層より上位層のサービスを利用するサービス利用端末と、当該サービスを提供するサービス提供端末とを有するサービス提供システムにおいて、
前記サービス利用端末は、
前記サービス提供端末からトランスポート層の通信データを受信する利用端末受信部と、
前記受信したトランスポート層の通信データが前記サービスの停止要求に関するものである場合、当該サービスに関連するセッション層プロトコルの停止処理を行う制御部と、
前記サービスの停止に係るトリガを受け付けるトリガ受付部と、
前記トリガを受け付けた場合、前記サービス提供端末に、前記サービスの停止要求に係る前記上位層への要求を含むトランスポート層の通信データを送信する利用端末送信部と、
を有し、
前記サービス提供端末は、
前記サービス利用端末からトランスポート層の通信データを受信する提供端末受信部と、
前記受信したトランスポート層の通信データが、前記サービスの停止要求に係る前記上位層への要求を含む場合、前記サービス利用端末に、前記サービスの停止要求に関連するトランスポート層の通信データを送信する提供端末送信部と、
を有する
ことを特徴とするサービス提供システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2011−221970(P2011−221970A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願番号】特願2010−93545(P2010−93545)
【出願日】平成22年4月14日(2010.4.14)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】