技術コラム集

PictBridgeの構造について

2006.4

  • 1ページ目
  • 2ページ目
  • 3ページ目。最後のページ。

PTP

PTPでは、通信媒体で接続された2つのデバイスをInitiatorとResponderと呼んでいます。Initiatorは、コマンドを要求するもの、Responderは、それに応答するものと定義されています。PictBridgeでは、InitiatorがPrinter(USB Host)で、ResponderがDSC(USB Function)にあたります。

PTPでは、次の5つの機構が必要になります。

セッションのオープン/クローズ

InitiatorとResponder間は、セッションを確立した後に通信が行われます。OpenSession オペレーション後にセッションが確立されます。この際、セッションは、SessionIDという32-bitの番号によって管理されます。このSessionIDは、Initiator(USB Host)によって割り振られるので、USB Host側で、SessionIDがユニークに割り当てられるように管理する必要があります。

データ転送インターフェース

PTPは、USB、IEEE1394、IrDA、RS232Cなどの通信媒体には依存しない仕様となっています。このため、システム設計時には、通信媒体に非依存になるような構成にする必要があります。

Operation Requestの実装

PTPで定義されているものの中から、PictBridgeで使用するOperation Requestを表記します。

表4-2 Operation Request
リクエスト 概要
GetDeviceInfo USBデバイスのストレージ情報取得
OpenSession USBホストとデバイス間のセッション確立
CloseSession USBホストとデバイス間のセッション閉鎖
GetStorageIDs 有効なStorageIDのリスト取得
GetStorageInfo 特定のストレージ領域のデータセット取得
GetNumObjects 存在するオブジェクトの総数取得
GetObjectHandles 存在するObjectHandleの配列の取得
GetObjectInfo デバイスからのオブジェクト情報の取得
GetObject デバイスからのオブジェクトの取得
GetThumb デバイスからのサムネイルの取得
SendObjectInfo InitiatorからResponderにオブジェクトを送信する際に最初に使用する操作
SendObject デバイスにオブジェクトを送信
GetPartialObject デバイスからオブジェクトの一部を取得

Eventの実装

PictBridgeで使用するEventを表記します。このうち、RequestObjectTransferのみが必須となります。

表4-3 Event
リクエスト 概要
ObjectAdded デバイスに新しいオブジェクトの追加
ObjectRemoved デバイスからオブジェクトを削除
StoreAdded メディアの挿入
StoreRemove メディアの抜去
ObjectInfoChanged オブジェクト情報の変更
RequestObjectTransfer オブジェクトの転送要求

オブジェクトフォーマット

PTPの仕様書では、扱えるデータとして、画像や動画や音声、テキストなど多くのオブジェクトフォーマットが定義されています。イメージもしくはデータオブジェクトのフォーマット形式をObjectFormatCodesという16ビット長データに格納し、管理します。

PictBridge

本章では、PictBridgeを、Connection、Discovery、PTA、SOA、アプリケーションの5つの機構に分類するものとします。どのような構成にするかはシステム設計に依存します。ConnectionとDiscoveryは、DSCとPrinterとの通信を確立するまでに必要な機構で、PTA とSOAとアプリケーションは、DSCとPrinter間のデータのやり取りを行なう機構になります。

Connection

USBデバイスの挿抜を上位のアプリケーションであるPictBridgeに通知する機構です。この機構をトリガにして、PTPセッションを確立した後にDiscovery機構が起動します。

Discovery

Discoveryは、接続された機器がPictBridge機能を有する機器かどうかのネゴシエーションを行なう機構です。

PTA(Pass Through Action)

XMLを使ったRequest/Responseの対でやりとりするアクションです。PTA は、複数のPTPコマンドから構成されます。また、DSCとPrinter間の転送方向及びRequest/ResponseによってPTPのコマンドシーケンスが異なります。

表4-4 DPS Request(PrinterDSC)
PTPコマンド 転送方向
SendObjectInfo command Printer→DSC
SendObjectInfo data Printer→DSC
SendObjectInfo response Printer←DSC
SendObject command Printer→DSC
SendObject data 【XML request】 Printer→DSC
SendObject response Printer←DSC
ObjectRemoved event (注) Printer←DSC
表4-5 DPS Response(Printer→DSC)
PTPコマンド 転送方向
ObjectAdded event (注) Printer←DSC
RequestObjectTransfer event Printer←DSC
GetObjectInfo command Printer→DSC
GetObjectInfo data Printer←DSC
GetObjectInfo response Printer←DSC
GetObject command Printer→DSC
GetObject data 【XML response】 Printer←DSC
GetObject response Printer←DSC
Object Removed event (注) Printer←DSC
表4-6 DPS Request(DSC→Printer)
PTPコマンド 転送方向
ObjectAdded event (注) DSC→Printer
RequestObjectTransfer event DSC→Printer
GetObjectInfo command DSC←Printer
GetObjectInfo data DSC→Printer
GetObjectInfo response DSC→Printer
GetObject command DSC←Printer
GetObject data 【XML request】 DSC→Printer
GetObject response DSC→Printer
ObjectRemoved event (注) DSC→Printer
表4-7 DPS Response(DSC→Printer)
PTPコマンド 転送方向
SendObjectInfo command DSC←Printer
SendObjectInfo data DSC←Printer
SendObjectInfo response DSC→Printer
SendObject command DSC←Printer
SendObject data 【XML response】 DSC←Printer
SendObject response DSC→Printer
ObjectRemoved event (注) DSC→Printer

(注)ObjectAdded eventとObjectRemoved eventは推奨のため省略してもかまいません。

SOA(Special Optimized Action)

XMLを使わないアクションです。DPSのアクションとPTPのコマンドは、1対1に対応しています。
DPSのアクションは、次のように定義されています。

表4-8 DPSアクション
DPSアクション 種類 概要
DPS_ConfigurePrintService PTA バージョンとその他のコンフィギュレーション情報の交換
DPS_GetCapability PTA プリンタの能力情報の取得
DPS_GetJobStatus PTA プリンタのジョブステータスの取得
DPS_GetDeviceStatus PTA プリンタのデバイスステータスの取得
DPS_StartJob PTA コンフィギュレーションの確立とプリントジョブの開始
DPS_AbortJob PTA プリントジョブの中断
DPS_ContinueJob PTA プリントジョブの再開
DPS_NotifiJobStatus PTA プリントジョブステータスの変化をDSCに通知
DPS_NotifyDeviceStatus PTA プリンタデバイスのステータスの変化をDSCに通知
DPS_GetFileID PTA ファイルIDの取得
DPS_GetFileList PTA ストレージ上のファイルリストの取得
DPS_GetFileInfo SOA PTPコマンドのGetObjectInfo
DPS_GetFile SOA PTPコマンドのGetObject
DPS_GetPartialFile SOA PTPコマンドのGetPartialObject
DPS_GetThumb SOA PTPコマンドのGetThumb

アプリケーション

アプリケーションは、表4-8のDPSアクションを用いて、ダイレクトプリントを実現します。処理例として、図4-5を示します。

PictBridge ジョブフロー
  • 1ページ目
  • 2ページ目
  • 3ページ目。最後のページ。

このページの上へ