特許第6388035号(P6388035)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許6388035情報処理システム、情報処理方法、情報処理装置、通信端末および制御プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6388035
(24)【登録日】2018年8月24日
(45)【発行日】2018年9月12日
(54)【発明の名称】情報処理システム、情報処理方法、情報処理装置、通信端末および制御プログラム
(51)【国際特許分類】
   G06F 13/00 20060101AFI20180903BHJP
   G06F 13/38 20060101ALI20180903BHJP
【FI】
   G06F13/00 353C
   G06F13/38 350
【請求項の数】9
【全頁数】51
(21)【出願番号】特願2016-560256(P2016-560256)
(86)(22)【出願日】2015年11月18日
(86)【国際出願番号】JP2015082359
(87)【国際公開番号】WO2016080426
(87)【国際公開日】20160526
【審査請求日】2017年5月11日
(31)【優先権主張番号】特願2014-235108(P2014-235108)
(32)【優先日】2014年11月19日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】小林 佳和
【審査官】 安藤 一道
(56)【参考文献】
【文献】 特開2009−031882(JP,A)
【文献】 特開2008−210115(JP,A)
【文献】 米国特許出願公開第2012/0117292(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
デバイスと、
前記デバイスを制御するデバイス制御手段、および、前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を有するデバイス側の情報処理装置である通信端末と、
アプリケーションと、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段とを有するホスト側の情報処理装置と、
前記アプリケーションインタフェース手段と前記デバイスインタフェース手段とを接続した場合に、前記アプリケーションと前記デバイス制御手段との間に制御チャネルおよびデータチャネルを確立するチャネル確立手段と、
を備え
前記アプリケーションインタフェース手段は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始し、
前記デバイスインタフェース手段は、前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させる
情報処理システム。
【請求項2】
前記通信端末と前記デバイスとが、シリアルバスで接続された請求項1に記載の情報処理システム。
【請求項3】
前記情報処理装置が、前記デバイスインタフェース手段を前記通信端末に配信する配信手段をさらに有する請求項1又は請求項2に記載の情報処理システム。
【請求項4】
前記デバイスと前記デバイス制御手段とは、USB(Universal Serial Bus)、HDMI(登録商標)(High-Definition Multimedia Interface)、SCSI(Small Computer System Interface)、SDメモリカード(SD Memory Card)へのインタフェース、または、近距離無線により接続される請求項1乃至のいずれか1項に記載の情報処理システム。
【請求項5】
ホスト側の情報処理装置が、アプリケーションを開始する開始ステップと、
前記情報処理装置が、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段と、デバイス側の情報処理装置である通信端末に備えられてデバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイス制御手段との間に制御チャネルおよびデータチャネルを確立するチャネル確立ステップと、
を含み、
前記チャネル確立ステップにおいて、前記情報処理装置は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始し、
前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させる
情報処理方法。
【請求項6】
アプリケーションと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と、
前記アプリケーションインタフェース手段を、デバイス側の情報処理装置である通信端末に備えられてデバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段に通信手段を介して接続し、前記アプリケーションと前記デバイス制御手段との間に制御チャネルおよびデータチャネルを確立するチャネル確立手段と、
を備え
前記アプリケーションインタフェース手段は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始し、
前記デバイスインタフェース手段は、前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させる
情報処理装置。
【請求項7】
アプリケーションを開始する開始ステップと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイス側の情報処理装置である通信端末に備えられてデバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段に通信手段を介して接続し、前記アプリケーションと前記デバイス制御手段との間に制御チャネルおよびデータチャネルを確立するチャネル確立ステップと、
をコンピュータに実行させ
前記チャネル確立ステップにおいて、前記情報処理装置は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始し、
前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させる情報処理装置の制御プログラム。
【請求項8】
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が持つアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段に通信手段を介して接続し、前記アプリケーションと前記デバイス制御手段との間に制御チャネルおよびデータチャネルを確立するチャネル確立手段と、
を備え
前記アプリケーションインタフェース手段は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始し、
前記デバイスインタフェース手段は、前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させる
デバイス側の情報処理装置である通信端末。
【請求項9】
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が持つアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段に通信手段を介して接続し、前記アプリケーションと前記デバイス制御手段との間に制御チャネルおよびデータチャネルを確立するチャネル確立ステップと、
をコンピュータに実行させ、
前記チャネル確立ステップにおいて、前記情報処理装置は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始し、
前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させるデバイス側の情報処理装置である通信端末の制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法、デバイス、情報処理装置、通信端末およびそれらの制御方法と制御プログラムに関する。
【背景技術】
【0002】
上記技術分野において、特許文献1には、デバイスドライバを構成する機能ドライバとハブドライバとの間を、ネットワークを介した通信で接続し、USBデバイスを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2013−016165号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記文献に記載の技術では、ネットワーク通信とUSB通信とが直接に関連付けられてなく、通信チャネル(パイプ)が分断されているため余分な構成を必要とする。
【0005】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明に係る情報処理システムは、
デバイスと、
前記デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
アプリケーションと、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段とを有する情報処理装置と、
前記アプリケーションインタフェース手段と前記デバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。
【0007】
上記目的を達成するため、本発明に係る情報処理方法は、
情報処理装置が、アプリケーションを開始する開始ステップと、
前記情報処理装置が、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段と、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
を含む。
【0008】
上記目的を達成するため、本発明に係る情報処理装置は、
アプリケーションと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。
【0009】
上記目的を達成するため、本発明に係る情報処理装置の制御プログラムは、
アプリケーションを開始する開始ステップと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
をコンピュータに実行させる。
【0010】
上記目的を達成するため、本発明に係る通信端末は、
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。
【0011】
上記目的を達成するため、本発明に係る通信端末の制御プログラムは、
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
をコンピュータに実行させる。
【0012】
上記目的を達成するため、本発明に係るデバイスは、
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。
【発明の効果】
【0013】
本発明によれば、アプリケーションからデバイスまで統一された通信チャネル(パイプ)とすることにより、簡潔な構成で遠隔のデバイスを制御することができる。
【図面の簡単な説明】
【0014】
図1】本発明の第1実施形態に係る情報処理システムの構成を示すブロック図である。
図2A】本発明の第2実施形態に係る情報処理システムの構成を示すブロック図である。
図2B】本発明の第2実施形態に係る情報処理システムの概念を示す図である。
図2C】本発明の第2実施形態に係る情報処理システムのネットワークによる遠隔接続を示す図である。
図2D】本発明の第2実施形態に係る通信メッセージの構成を示す図である。
図2E】本発明の第2実施形態に係るUSBの転送データのフォーマットを示す図である。
図2F】本発明の第2実施形態に係るUSBの論理プロトコルを示す図である。
図3A】前提技術に係る情報処理システムの概念を示す図である。
図3B】前提技術に係るデバイスドライバのソフトウェア構成を示す図である。
図4】本発明の第2実施形態に係る情報処理装置の機能構成を示すブロック図である。
図5】本発明の第2実施形態に係る通信端末の機能構成を示すブロック図である。
図6A】本発明の第2実施形態に係る情報処理システムにおける情報の流れを示す図である。
図6B】本発明の第2実施形態に係る情報処理システムにおける通信データ構成を示す図である。
図6C】本発明の第2実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
図7A】本発明の第2実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
図7B】本発明の第2実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
図7C】本発明の第2実施形態に係る情報処理システムの詳細な通信手順を示すシーケンス図である。
図8】本発明の第2実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
図9A】本発明の第2実施形態に係る情報処理装置の処理手順を示すフローチャートである。
図9B】本発明の第2実施形態に係る情報処理装置の処理手順を示すフローチャートである。
図10】本発明の第2実施形態に係る通信端末のハードウェア構成を示すブロック図である。
図11A】本発明の第2実施形態に係る通信端末の処理手順を示すフローチャートである。
図11B】本発明の第2実施形態に係る通信端末の処理手順を示すフローチャートである。
図12】本発明の第3実施形態に係る情報処理システムの概念を示す図である。
図13】本発明の第3実施形態に係るUSBデバイスの機能構成を示すブロック図である。
図14】本発明の第3実施形態に係る情報処理システムにおける情報の流れを示す図である。
図15】本発明の第3実施形態に係るUSBデバイスのハードウェア構成を示すブロック図である。
図16】本発明の第3実施形態に係るUSBデバイスの処理手順を示すフローチャートである。
図17】本発明の第4実施形態に係る情報処理システムの概念を示す図である。
図18】本発明の第4実施形態に係るUSBハブの機能構成を示すブロック図である。
図19】本発明の第4実施形態に係る情報処理システムにおける情報の流れを示す図である。
図20】本発明の第4実施形態に係るUSBハブのハードウェア構成を示すブロック図である。
図21】本発明の第4実施形態に係るUSBハブの処理手順を示すフローチャートである。
図22】本発明の第5実施形態に係る情報処理システムの概念を示す図である。
図23】本発明の第5実施形態に係る情報処理システムにおける情報の流れを示す図である。
図24】本発明の第6実施形態に係る情報処理システムの概念を示す図である。
図25】本発明の第6実施形態に係る情報処理システムにおける情報の流れを示す図である。
図26】本発明の第7実施形態に係る情報処理システムの概念を示す図である。
図27】本発明の第7実施形態に係る情報処理システムにおける情報の流れを示す図である。
図28】本発明の第8実施形態に係る情報処理システムの概念を示す図である。
図29】本発明の第8実施形態に係る他の情報処理システムの概念を示す図である。
図30】本発明の第9実施形態に係る情報処理システムの概念を示す図である。
図31】本発明の第10実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
図32】本発明の第10実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。
【発明を実施するための形態】
【0015】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【0016】
[第1実施形態]
本発明の第1実施形態としての情報処理システム100について、図1を用いて説明する。情報処理システム100は、接続されたデバイスを制御するシステムである。
【0017】
図1に示すように、情報処理システム100は、デバイス110と、デバイス制御部120と、デバイスインタフェース部130と、情報処理装置140と、チャネル確立部150と、を含む。デバイス制御部120は、デバイス110を制御する。デバイスインタフェース部130は、デバイス制御部120とのインタフェースを行なう。情報処理装置140は、アプリケーション141と、アプリケーション141とのインタフェースを行なうアプリケーションインタフェース部142とを有する。チャネル確立部150は、アプリケーションインタフェース部142とデバイスインタフェース部130とを、通信部151を介して接続し、アプリケーション141とデバイス110との間に制御チャネル152とデータチャネル153とを確立する。
【0018】
本実施形態によれば、アプリケーションからデバイスまで統一された通信チャネル(パイプ)とすることにより、簡潔な構成で遠隔のデバイスを制御することができる。
【0019】
[第2実施形態]
次に、本発明の第2実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、遠隔の通信端末にUSB(Universal Serial Bus)ケーブルで接続された遠隔のUSBデバイスを、情報処理装置としてのホストからネットワークを介して制御し、自装置に接続されたデバイスと同じように操作する。
【0020】
《情報処理システム》
本実施形態の情報処理システムを説明する前に、本実施形態の特徴を明瞭にするために前提技術に係る情報処理システムについて説明する。
【0021】
(前提技術)
図3Aは、前提技術に係る情報処理システム300の概念を示す図である。
【0022】
情報処理システム300は、情報処理装置としてのホスト330と、そのUSBコネクタに物理的通信線であるUSBケーブル360により接続されたUSBデバイス310と、を備える。
【0023】
ホスト330は、ソフトウェアとして、アプリケーションソフトウェア331と、デバイスドライバとしてのシステムソフトウェア332と、USBバスインタフェース333と、を有する。アプリケーションソフトウェア331は、あらかじめホスト330が提供するサービス、あるいは、ユーザが開発したサービスを提供するためのソフトウェアである。アプリケーションソフトウェア331が実行する入出力ファイル操作の対象デバイスやそのプロトコル、データフォーマットなどに従って、デバイスドライバとしてのシステムソフトウェア332がロードされ起動される。システムソフトウェア332は、入出力ファイルのコマンドを解釈し、本例ではUSBデバイス310での入出力ファイルのアクセスなので、USBのプロトコルに応じたコマンドやデータフォーマットを準備して、USBバスインタフェース333を制御する。USBバスインタフェース333は、USBケーブル360上のメッセージのやり取りを制御するホストコントローラと、USBケーブル360上の信号を制御するSIE(Serial Interface Engine)とを含む。なお、USBバスインタフェース333は、ハードウェアチップとして提供されてもよい。
【0024】
USBデバイス310は、ソフトウェアとして、ホスト330のUSBバスインタフェース333とUSBケーブル360を介して接続して、信号をやり取りするUSBデバイス310のUSBバスインタフェース316を有する。
【0025】
かかる接続により、ホスト330とUSBデバイス310とは、お互いのUSBバスインタフェース333、316により物理レベルの通信を実行する。システムレベルのコントロール転送では、デフォルトパイプ351を介してシステムソフトウェア332がエンドポイント0を使った基本処理317としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、パイプ群352を介してアプリケーションソフトウェア331がエンドポイント1〜nを使ったデバイスクラスの各メソッド318としてのデータ通信を実現する。
【0026】
図3Bは、前提技術に係るデバイスドライバ332のソフトウェア構成を示す図である。
【0027】
デバイスドライバ332は、アプリケーションソフトウェア331からのファイル入出力の指示を受ける。そして、デバイスドライバ332は、クラスドライバと、バスドライバと、ホストコントローラドライバと、を有する。クラスドライバは、対象デバイスの種類によって異なるプロトコルを実装する。バスドライバは、USB固有のプロトコルを実装する。ホストコントローラドライバは、USBデバイス310と物理接続するUSBホストコントローラ335のハードウェアチップを抽象化する。
【0028】
《本実施形態の情報処理システム》
図2A乃至図2Fを参照して、本実施形態の情報処理システム200の基本的な構成および動作を説明する。
【0029】
(システム構成)
図2Aは、本実施形態に係る情報処理システム200の構成を示すブロック図である。
【0030】
情報処理システム200は、情報処理装置としてのホスト230にネットワーク240を介して接続された通信端末221〜223を備える。通信端末221〜223には、それぞれシリアルバス261〜265によりデバイス212〜215が接続されている。なお、デバイス213と214とは、ハブを介して接続される。また、ホスト230には、デバイス211が接続されている。ここで、デバイス211、212はDVDユニット、デバイス213は体温計、デバイス214は血圧計、デバイス215は工作機器である。
【0031】
このように接続されたデバイスは、ホスト230から操作可能なデバイスを示すデバイスマネージャの表示画面上において、次のように表示されている。ホスト230のUSBコネクタに接続されたデバイス211は、内部のユニバーサル_シリアル_バス_コントローラの欄に“USB_DVD”231と表示される。ネットワーク240を介して外部に接続されたデバイス212〜215は、それぞれ、リモート_ユニバーサル_シリアル_バスの欄に“USB_DVD”232、“USB_体温計”233、“USB_血圧計”234、“USB_工作機器”235と表示される。ホスト230からは、自装置に接続したデバイスもネットワーク240を介して遠隔に接続したデバイスも、同じ接続デバイスとして操作される。
【0032】
(システム概念)
図2Bは、本実施形態に係る情報処理システム200の概念を示す図である。なお、図2Bにおいては、常備のソフトウェアであるOS(Operating System)やBIOS(Basic Input/Output System)などの図示を省略している。
【0033】
図2Bの情報処理システム200は、情報処理装置としてのホスト230と、遠隔にあって、ホスト230とネットワーク240を介して接続する通信端末220と、通信端末220のUSBコネクタに接続されたUSBデバイス210と、を備える。
【0034】
ホスト230は、ソフトウェアとして、アプリケーションソフトウェア231と、デバイスドライバの一部としてのアプリケーションインタフェース(図中、アプリケーションIF)232とを有する。アプリケーションソフトウェア231は、あらかじめホスト230が提供するサービス、あるいは、ユーザが開発したサービスを提供するためのソフトウェアである。アプリケーションインタフェース232は、アプリケーションソフトウェア231が要求した入出力ファイル操作の構造体を解釈して、入出力ファイル操作の対象デバイスやそのプロトコル、データフォーマットなどに従って、ネットワーク240を介して送受信する制御情報やデータを定義する構造体を生成する。本例ではUSBデバイス210に対する入出力ファイルのアクセスなので、USBのプロトコルに応じたコマンドやデータフォーマットに従うデータの送受信を準備する。
【0035】
通信端末220は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース(図中、ホストコントローラIF)225と、ホストコントローラおよびSIEを有するUSBバスインタフェース226とを有する。ホストコントローラインタフェース225は、ネットワーク240を介して、アプリケーションインタフェース232から受信したUSBのプロトコルに応じたコマンドやデータなどを、USBバスインタフェース226のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース225は、ネットワーク240を介して、USBバスインタフェース226のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク240を介して、アプリケーションインタフェース232に送信する。USBバスインタフェース226のホストコントローラは、ホストコントローラインタフェース225とコマンドやデータなどを交換しながら、USBケーブル260を介したシリアル通信をUSBプロトコルに従い実行する。USBバスインタフェース226のSIEは、USBケーブル260上の信号をUSB通信の仕様に従い制御する。
【0036】
USBデバイス210は、ソフトウェアとして、通信端末220のUSBバスインタフェース226とUSBケーブル260を介して接続して、信号をやり取りするUSBデバイス210のUSBバスインタフェース216を有する。また、USBデバイス210は、デバイス情報や制御情報を含むディスクリプタを記憶するFIFO(First-in First-out)0からなるエンドポイント0217と、入出力データを記憶するFIFO1〜nからなるエンドポイント1〜n218とを有する。
【0037】
かかる接続により、通信端末220とUSBデバイス210とは、お互いのUSBバスインタフェース226、216により物理レベルの通信を実行する。また、アプリケーションインタフェース232、ネットワーク240およびホストコントローラインタフェース225を介したシステムレベルのコントロール転送により、デフォルトパイプ251を介してアプリケーションソフトウェア231とエンドポイント0217との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群252を介してアプリケーションソフトウェア231とエンドポイント1〜n218との間で、デバイスクラスの各メソッドとしてのデータ通信を実現する。
【0038】
以上のように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末220のホストコントローラインタフェース225とのネットワーク通信と、USBケーブルを介した、USBバスインタフェース226と216間のシリアル通信とから、統一された通信チャネル(パイプ)を形成することができる。
【0039】
(ネットワークによる遠隔接続)
図2Cは、本実施形態に係る情報処理システム200のネットワークによる遠隔接続を示す図である。
【0040】
図2Cに図示するように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末220のホストコントローラインタフェース225とのネットワーク通信においては、USBのデフォルトパイプ251である制御チャネルと、USBのデータパイプ群252となるデータチャネルとが、対応して確立される。そして、アプリケーションインタフェース232とアプリケーションソフトウェア231とのインタフェース、および、通信端末220のホストコントローラインタフェース225とUSBバスインタフェース226とのインタフェースも、USBのデフォルトパイプ251およびデータパイプ群252に対応付けられている。
【0041】
(通信メッセージ)
図2Dは、本実施形態に係る通信メッセージの構成を示す図である。なお、通信メッセージのフォーマットは、図2Dに限定されるものではない。
【0042】
図2Dには、デフォルトパイプ251である制御チャネルで送受信される制御メッセージ270と、データパイプ群252となるデータチャネルで送受信されるデータメッセージ280とが図示されている。
【0043】
制御メッセージ270の内、ホスト230から通信端末220に送信される制御メッセージは、IPアドレス271と、伝送先エリア/伝送元エリア272と、通信データ273と、誤り訂正の例えばCRC274と、を有する。IPアドレス271としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア/伝送元エリア272としては、伝送先エリアにUSBデバイス210のFIFO0が、伝送元エリアにホスト230のUSBバッファ0が、指示される。また、通信データ273としては、ホスト230が割り当てたデバイスアドレスやUSBデバイス210の制御コマンドが伝送される。
【0044】
制御メッセージ270の内、通信端末220からホスト230に送信される制御メッセージは、IPアドレス275と、伝送先エリア/伝送元エリア276と、通信データ277と、誤り訂正の例えばCRC278と、を有する。IPアドレス275としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア/伝送元エリア276としては、伝送先エリアにホスト230のUSBバッファ0が、伝送元エリアにUSBデバイス210のFIFO0が、指示される。また、通信データ277としては、USBデバイス210のデバイスディスクリプタやデバイスステータスが伝送される。
【0045】
データメッセージ280の内、ホスト230から通信端末220に送信されるデータメッセージは、IPアドレス281と、伝送先エリア/伝送元エリア282と、通信データ283と、誤り訂正の例えばCRC284と、を有する。IPアドレス281としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア/伝送元エリア282としては、伝送先エリアにUSBデバイス210のFIFO1〜nが、伝送元エリアにホスト230のUSBバッファ1〜nが、対応付けられて指示される。また、通信データ283としては、1つまたは複数のバルクOUTデータが伝送される。
【0046】
データメッセージ280の内、通信端末220からホスト230に送信されるデータメッセージは、IPアドレス285と、伝送先エリア/伝送元エリア286と、通信データ287と、誤り訂正の例えばCRC288と、を有する。IPアドレス285としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア/伝送元エリア286としては、伝送先エリアにホスト230のUSBバッファ1〜nが、伝送元エリアにUSBデバイス210のFIFO1〜nが、対応付けられて指示される。また、通信データ287としては、1つまたは複数のバルクINデータが伝送される。
【0047】
なお、コントロール転送、バルク転送の外に、インタラプト転送やアイソクロナス転送があるが、データメッセージの構成としては、“SETUP”ステージが省略されるが同様であるので、それらのメッセージの説明を省略する。
【0048】
このように、カプセリングしたIPアドレスとしては、ホスト230と通信端末220との間のネットワーク通信であるが、データは、ホスト230にアプリケーションソフトウェア231が確保させたUSBバッファと、USBデバイス210のエンドポイントであるFIFOとの間で伝送される。
【0049】
(USBの転送フォーマットおよびプロトコル)
図2Eは、本実施形態に係るUSBの転送データのフォーマットを示す図である。
【0050】
全体の構成291は、SOF(Start of Frame)から始まり、通常は1ms周期で通信される1つのまとまったトランザクション群を1フレームとする複数のフレームから構成される。なお、図2Dにおいて、通信データとして通信される内容は、上記1フレームあるいは複数フレームであってもよい。この場合には、ホストコンピュータ230では各USBデバイス210に対応するマクロプログラム(関数)によりまとまったトランザクション群が生成されて通信端末220と通信される。一方、通信端末220においてはフレームからトランザクション、さらにパケットへの変換とUSBデバイス210とのデータ交換が実行される。
【0051】
各フレーム構成292は、SOFから始まる複数の1まとまりのトランザクション群からなる。トランザクション構成293は、“SETUP”、“OUT”、“IN”の3つの送受信の単位である。そして、各トランザクションを構成する最小の通信単位であるパケットがUSBケーブル260を介してシリアル通信される。なお、図2Eにおいて、網かけしたデータはデバイスからホストコンピュータへ伝送されるデータ、網かけの無いデータはホストコンピュータからデバイスへ伝送されるデータである。なお、図2Dにおいて、通信データとして通信される内容は、複数のトランザクションであっても、各トランザクション単位であってもよい。この場合には、ホストコンピュータ230では各USBデバイス210に対応するトランザクション単位のプログラム(関数)によりトランザクションが生成されて通信端末220と通信される。通信端末220においてはトランザクションからパケットへの変換とUSBデバイス210とのデータ交換が実行される。
【0052】
図2Fは、本実施形態に係るUSBの論理プロトコルを示す図である。
【0053】
コントロール転送のプロトコル294は、図2Bの双方向のデフォルトパイプ251を生成するように、制御データとして制御コマンドやデバイスディスクリプタを転送するプロトコルである。コントロール転送のプロトコル294は、転送データを含まない“No-data Control”と、デバイスに制御コマンドを送信する “Control Write”と、デバイスからデバイスディスクリプタなどを受信する“Control Read”とを有する。
【0054】
バルク転送のプロトコル295は、図2Bの片方向のデータパイプ群252を生成するように、非同期に大量のデータを転送するプロトコルである。バルク転送のプロトコル295は、デバイスにデータを送信する “Bulk Write”と、デバイスからデータを受信する“Bulk Read”とを有する。
【0055】
インタラプト転送のプロトコル296は、図2Bの片方向のデータパイプ群252を生成するように、ホストコンピュータの周期的なポーリングに対して、デバイスが任意のタイミングで応答することによって見かけ上、デバイスからの通知が行われたかのように転送するプロトコルである。インタラプト転送では少量で、いつデータが発生するかタイミングが不定なデータの転送に用いられる。インタラプト転送のプロトコル296は、デバイスにデータを送信する“Interrupt Write”と、デバイスからデータを受信する“Interrupt Read”とを有する。
【0056】
アイソクロナス転送のプロトコル297は、図2Bの片方向のデータパイプ群252を生成するように、周期的にデータ転送が行われるプロトコルである。アイソクロナス転送のプロトコル297は、データの信頼性よりも時間が重視されており、エラーによる再送が行われない。音声やCCDカメラの映像などのデータ転送に用いられる。アイソクロナス転送のプロトコル297は、デバイスにデータを送信する“Isochronous Write”と、デバイスからデータを受信する“Isochronous Read”とを有する。
【0057】
なお、図2Eのフレームとして、図2Fの各転送プロトコルを対応付けてもよいし、複数の転送プロトコルをまとめてフレームを形成してもよい。いずれにしても、ホストコンピュータ230側と通信端末220側とのフォーマットのネゴシエーションによって、デバイスドライバを構成するアプリケーションインタフェース232とホストコントローラインタフェースとの間の種々の論理層(L2)における通信が実現できる。
【0058】
《情報処理装置の機能構成》
図4は、本実施形態に係る情報処理装置230の機能構成を示すブロック図である。なお、図4には、本実施形態の動作に関連の深い機能構成部を図示し、情報処理装置230が有する通常の機能構成部は図示していない。例えば、情報処理装置230がパーソナルコンピュータ(以下、PC)の場合の種々の処理機能については示していない。
【0059】
情報処理装置230は、通信制御部401と、チャネル確立部402と、アプリケーションデータベース(図中、アプリケーションDB)410と、を備える。通信制御部401は、ネットワーク240を介する通信端末220との通信を制御する。チャネル確立部402は、アプリケーション開始部403とアプリケーションインタフェース起動部404とを含み、情報処理装置230と通信端末220、さらに、USBデバイス210へのチャネルを確立する。アプリケーションデータベース410は、複数のアプリケーション411、および、デバイスドライバの一部である複数のアプリケーションインタフェース412を格納する。
【0060】
アプリケーション開始部403は、ユーザにサービスを提供するためにアプリケーションデータベース410からアプリケーションを選択して開始する。アプリケーションインタフェース起動部404は、アプリケーション開始部403が開始したアプリケーションにより指示された入出力ファイル操作を実現するためのアプリケーションインタフェースを、アプリケーションデータベース410から検索して起動させる。
【0061】
《通信端末の機能構成》
図5は、本実施形態に係る通信端末220の機能構成を示すブロック図である。なお、図5には、本実施形態の動作に関連の深い機能構成部を図示し、通信端末220が有する通常の機能構成部は図示していない。例えば、通信端末220がスマートフォンやタブレットの場合の種々の処理機能については示していない。
【0062】
通信端末220は、通信制御部501と、チャネル確立部502と、を備える。通信制御部501は、ネットワーク240を介する情報処理装置230との通信を制御する。チャネル確立部502は、ホストコントロールインタフェース起動部503と、デバイス制御部としてのUSBホストコントローラ504と、SIEを含むUSBコネクタ505と、を含む。ホストコントロールインタフェース起動部503は、入出力ファイル操作に対応して、デバイスドライバの一部である、USBホストコントローラ504とインタフェースするホストコントローラインタフェースを起動する。USBホストコントローラ504は、アプリケーション開始部403が開始したアプリケーションにより指示された入出力ファイル操作を実現するために、USBバスインタフェース226のパケット交換を制御する。USBコネクタ505は、USBデバイス210とのパケット交換のためにUSBケーブルが接続される。
【0063】
(情報の流れ)
図6Aは、本実施形態に係る情報処理システム200における情報の流れを示す図である。なお、図6Aには、主要な記憶領域を示し、細部の構成は省略している。なお、図6Aにおいては、デバイスドライバにおいてホストコントローラドライバの処理を、ホストとしての情報処理装置230と遠隔の通信端末220とに通信を介して分離して、情報処理装置230からUSBデバイス210を直接接続しているように制御する例を示す。しかしながら、デバイスドライバのどの階層で分離するかは、情報処理装置230および通信端末220の性能や、通信環境により選択するのが望ましい。
【0064】
情報処理装置230には、入出力ファイル構造体631と、USBバッファ63と、通信構造体63と、が確保される。入出力ファイル構造体631は、アプリケーションソフトウェア231が入出力ファイル操作を指示した時に確保され、例えば、ファイル格納先やデバイス種別、入出力プロトコルなどに対応して所定の処理を行なう関数群と、デバイス情報と、入出力バッファと、を含む。デバイス制御情報632は、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、USBデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報632は、入出力ファイル構造体631のデバイス情報に一体化されていてもよい。USBバッファ633は、アプリケーションインタフェース232が入出力ファイル構造体631の関数群の処理に応じて、デバイス種別がUSBデバイスの場合に確保される、エンドポイントにそれぞれ対応するバッファを有する。通信構造体634は、アプリケーションインタフェース232が入出力ファイル構造体631の関数群の処理に応じて、デバイスがネットワークを介した遠隔にある場合に確保される構造体である。通信構造体63は、通信に関連するプロトコルやメッセージフォーマット、通信速度などを設定するための関数群と、送信する制御コマンドと、受信したステータスと、送信データを一時記憶する送信バッファと、受信データを一時記憶する受信バッファと、を含む。なお、USBバッファ633は必須ではない。入出力ファイル構造体631の入出力バッファと、通信構造体633の送信バッファおよび受信バッファとの間で、直接、データ転送が行なわれてもよい。また、通信により分離されるデバイスドライバの階層が上位であれば、制御コマンドやステータスは独自に通信される必要はなく、送受信データの中に含まれていればよい。
【0065】
通信端末220には、通信構造体621と、デバイス制御情報622と、USBバッファ623と、が確保される。通信構造体621は、アプリケーションインタフェース232が確保した通信構造体634に対応付けられた構造体である。通信構造体621は、通信に関連するプロトコルやメッセージフォーマット、通信速度などを設定するための関数群と、受信した制御コマンドと、送信するステータスと、受信データを一時記憶する受信バッファと、送信データを一時記憶する送信バッファと、を含む。デバイス制御情報622は、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群のそれぞれは、その制御コマンドを実行するUSBコマンド列に変換する制御フローに対応付けられる。また、制御コマンド群には、USBデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。USBバッファ623は、デバイス種別がUSBデバイスの場合に確保される、USBデバイス210のエンドポイントにそれぞれ対応するバッファを有する。
【0066】
USBデバイス210には、エンドポイント611として、デバイス種別に応じてFIFO0〜FIFOnが準備されている。
【0067】
(通信データ構成例)
図6Bは、本実施形態に係る情報処理システム200における通信データ構成を示す図である。図6Bにおいては、図2Dにおける、カブセル化のためのIPアドレスなどは省かれている。なお、図6Bには、本実施形態を実現する通信データ構成の一例を示すが、これに限定されるわけではない。例えば、デバイスドライバの上位層における通信データとして、関数のパラメータ(引数)を送受信することや、さらに、関数自体を送受信することなどもできる。
【0068】
図6Bには、基本的な通信データ構成650と、USBの場合の通信データ構成660と、他のHDMI(登録商標)(High-Definition Multimedia Interface)やSCSI(Small Computer System Interface)の場合の通信データ構成670が示されている。
【0069】
通信データ構成650は、デバイス特定情報651を有する。デバイス特定情報651は、デバイス種類と、接続バス種類と、デバイス識別子と、を含む。通信データ構成650は、接続バスにおける転送モード652と、接続バスを介して転送すべき情報653と、を有する。転送すべき情報653には、コマンドやステータスやデータを含む。
【0070】
USBの場合の通信データ構成660は、デバイス特定情報661として、デバイス種類である産業機器と、接続バスであるUSBと、デバイス識別子であるIE001と、を有する。USBの場合の通信データ構成660は、転送モード662としてUSBコントロール転送と、転送情報663としてUSBリクエストやデバイスディスクリプタを含む。かかる構成によれば、従来のUSB接続による最大127台という制限を考慮する必要はなくなる。
【0071】
他のHDMI(登録商標)やSCSIの場合の通信データ構成670は、デバイス特定情報671として、モニタ、HDMI(登録商標)、MT0002や、CD、SCSI、CD0005を有する。また、転送モード672としてHDMI(登録商標)制御やSCSI制御、転送情報673としてDDC/CEDやコマンド/レスポンスを含む。
【0072】
(データ伝送例)
図6Cは、本実施形態に係る情報処理システムにおけるデータ伝送を示す図である。なお、図6Cは、USBデバイスにおけるL2レベルの通信を示すが、通信はさらに下位レベルであっても上位レベルであってもよい。図6Cは、USB接続されたUSBデバイスのディスクリプタ取得手順を示す図である。
【0073】
デバイス210に設定されているディスクリプタは、GET_DESCRIPTORなどのUSBリクエスト663により取得される。USBリクエスト663は、それぞれコントロール転送662によりデバイス210とやり取りされる。各コントロール転送662は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス210から取得したディスクリプタはIPヘッダやTCPヘッダでIPカプセリングして、携帯端末220から情報処理装置230に送信される。
【0074】
ここで、情報処理装置230のアプリケーションインタフェース232は、アプリケーション231のデバイス入出力要求に応じて、まず接続デバイスを確認するためコントロール転送662とGET DESCRIPTORのUSBリクエスト663とを生成して、通信制御部401に渡す。
【0075】
IPヘッダやTCPヘッダでIPカプセリングされたコントロール転送662とGET DESCRIPTORのUSBリクエスト663とは、通信端末220の通信制御部501で受信されてIPアンカプセリングされる。コントロール転送662とGET DESCRIPTORのUSBリクエスト663とは、ホストコントローラインタフェース225に渡される。ホストコントローラインタフェース225は、コントロール転送662とGET DESCRIPTORのUSBリクエスト663とに基づいて、デバイス210へのUSBバスにおける各パケットを生成するようUSBバスインタフェース226(不図示)に指示する。
【0076】
ホストコントローラインタフェース225は、デバイス210から受信した、データ・ステージで受信したデータパケットをデバイスディスクリプタとして抽出し、コントロール転送662とデバイスディスクリプタ663として、通信制御部501に渡す。IPヘッダやTCPヘッダでIPカプセリングされたコントロール転送662とデバイスディスクリプタ663とは、通信端末220の通信制御部501から情報処理装置230の通信制御部401に送信される。
【0077】
情報処理装置の通信制御部401は、アンカプセリングしたコントロール転送662とデバイスディスクリプタ663をアプリケーションインタフェース232に渡すと、アプリケーションインタフェース232はアプリケーション231のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【0078】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース225とUSBバスインタフェース226とが一体にされたソフトウェアであってもよい。
【0079】
(動作手順)
図7A乃至図7Cは、本実施形態に係る情報処理システム200の動作手順を示すシーケンス図である。なお、図7A乃至図7Cのシーケンスにおいて実際にはOSが種々の処理に関与するが、その図示は最小限に限定されている。また、図7A乃至図7Cにおいては、ホスト230から処理をイニシエートする(開始する)例を示したが、本実施形態においては、例えUSBによるデバイス接続であっても、USBデバイス側から処理をイニシエートすることができる。
【0080】
図7Aは、初期動作として、ホスト230がUSBデバイス210のデバイスディスクリプタを取得し、USBデバイス210に対応するデバイスドライバを検索して取得する動作手順である。なお、図7Aでは、ホスト230が主動してデバイスディスクリプタを取得する例を示した。一方、USBデバイス210を通信端末220のUSBコネクタに接続したことをトリガとして、デバイスディスクリプタを取得する場合は、USBデバイス210の接続をホスト230に通知することになる。
【0081】
ステップS701において、アプリケーションがI/Oコマンドを発生したとする。このI/Oコマンドを受けたOSは、ステップS703において、入出力ファイル構造体であるI/Oファイルを作成する。そして、ステップS705において、デバイスドライバの上位層であるアプリケーションインタフェースが起動される。アプリケーションインタフェースは、ステップS707において、USBファイルを確保する。そして、ホスト230の通信部を介して、ステップS709において、デバイスディスクリプタを要求する。
【0082】
通信端末220の通信部は、ステップS711において、デバイスディスクリプタの要求を受信すると、OSがステップS713において、デバイスドライバの下位層であるホストコントロールインタフェースを起動させる。通信端末220は、必要であればステップS715において、ホストコントローラインタフェースをダウンロードし、ステップS717において起動する。そして、ホストコントローラインタフェースは、ステップS719において、USBファイルを確保する。起動したホストコントローラインタフェースは、ステップS721において、デバイス制御部としてのUSBホストコントローラを起動させる。なお、ステップS715において、ホストコントローラインタフェースは、ホスト230から配信されても、他のサーバから配信されてもよい。
【0083】
USBデバイス210が、ステップS723において、USBケーブルによって通信端末220に接続されると、ステップS725において、FIFO0に記憶されているデバイスディスクリプタが要求されてUSBデバイス210が送信する。デバイスディスクリプタは、ステップS727において、通信端末220に確保されたUSBバッファに一時記憶される。そして、ホストコントローラインタフェースは、ステップS729において、デバイスディスクリプタをホスト230に送信するように通信部に指示する。通信部は、ステップS731において、USBデバイス210から取得したデバイスディスクリプタをホスト230に送信する。
【0084】
ホスト230の通信部は、ステップS733において、デバイスディスクリプタを受信して、ステップS735において、アプリケーションインタフェースに渡す。アプリケーションインタフェースは、デバイスディスクリプタを取得して、USBデバイス種別に従い対応するデバイスディスクリプタを取得する。
【0085】
図7Bは、ホスト230からUSBデバイス210にデータを出力する動作手順と、ホスト230がUSBデバイス210からデータを入力する動作手順と、である。なお、既にアプリケーションソフトウェア231によって、USBデバイス210へのデータ出力あるいはUSBデバイス210からのデータ入力が操作指示されて、ホスト230、通信端末220およびUSBデバイス210は準備が完了しているものとする。
【0086】
ホスト230からUSBデバイス210にデータを出力する動作手順において、ホスト230のOSは、ステップS741において、アプリケーションからの要求を受けてUSBデバイス210に出力するデータを取得して、USBバッファに一時記憶する。アプリケーションインタフェースは、ステップS743において、取得されたデータを遠隔のUSBデバイス210に出力するため、ホスト230の通信部に出力を指示する。通信部は、USBバッファのデータをカプセリングしてUSBデバイス210が接続された通信端末220に送信する。なお、カプセリングする出力データの量は、バルク出力のデータ量に限定されず、複数単位のバルク出力データを1つのパケットで送信してもよい。
【0087】
通信端末220の通信部は、ステップS747において、ホスト230の通信部から送信された出力データを受信する。ホストコントローラインタフェースは、ステップS749において、通信部が受信した出力データをアンカプセリングして、対応するUSBバッファに一時記憶する。そして、ホストコントローラインタフェースは、デバイス制御部としてのUSBバスインタフェース226に対して、USBデバイス210への送信を指示する。ホストコントローラインタフェースからの出力指示を受けたUSBバスインタフェース226は、ステップS751において、USBバッファのデータをUSBデバイス210の対応するFIFO(エンドポイント)に対するバルク出力を実行する。このように、ホスト230のアプリケーションによる出力ファイル操作に従ったUSBデバイス210への出力が実行される。
【0088】
USBデバイス210へのバルク出力中またはバルク出力完了時に、USBバスインタフェース226は、ステップS753において、USBデバイス210のステータスを取得する。ホストコントローラインタフェースは、ステップS755において、USBデバイス210のステータスをUSBバッファ0に一時記憶する。そして、ホストコントローラインタフェースは、USBデバイス210のステータスをホスト230に送信するよう通信部に指示する。通信端末220の通信部は、ステップS757において、USBバッファ0のステータスデータをホスト230にカプセリングして送信する。
【0089】
ホスト230の通信部は、ステップS759において、通信端末220の通信部から送信されたステータスデータを受信する。アプリケーションインタフェースは、ステップS761において、通信部が受信したステータスデータをアンカプセリングして、USBバッファ0に一時記憶する。そして、ホストコントローラインタフェースは、OSに対してステータスデータを入出力ファイル構造体への書込を指示する。OSは、ステップS763において、入出力バッファ構造体としてのI/Oファイルにステータスデータをセットする。アプリケーションソフトウェア231は、ステップS765において、入出力ファイル構造体を参照することにより出力操作の結果を取得する。
【0090】
ホスト230にUSBデバイス210からデータを入力する動作手順において、ホストコントローラインタフェースからの入力指示を受けたUSBバスインタフェース226は、ステップS771において、USBデバイス210の対応するFIFO(エンドポイント)からのバルク入力を実行する。ホストコントローラインタフェースは、ステップS773において、USBデバイス210からの入力データを対応するUSBバッファに一時記憶する。そして、ホストコントローラインタフェースは、入力データをホスト230に送信するよう通信部に指示する。通信端末220の通信部は、ステップS775において、USBバッファの入力データをホスト230にカプセリングして送信する。なお、カプセリングする入力データの量は、バルク入力のデータ量に限定されず、複数単位のバルク入力データを1つのパケットで送信してもよい。
【0091】
ホスト230の通信部は、ステップS777において、通信端末220の通信部から送信された入力データを受信する。アプリケーションインタフェースは、ステップS779において、通信部が受信した入力データをアンカプセリングして、対応するUSBバッファに一時記憶する。そして、ホストコントローラインタフェースは、OSに対して入力データを入出力ファイル構造体への書込を指示する。OSは、ステップS781において、入出力バッファ構造体としてのI/Oファイルに入力データをセットする。アプリケーションソフトウェア231は、ステップS783において、入出力ファイル構造体から入力指示した入力データを取得する。
【0092】
USBデバイス210へのバルク入力中またはバルク入力完了時に、USBバスインタフェース226は、ステップS785において、USBデバイス210のステータスを取得する。以降のステップS797までの、アプリケーションソフトウェア231が入出力ファイル構造体を参照することにより入力操作の結果を取得する処理は、出力操作時のステップS755〜S765と同様なので、詳細な説明を省略する。
【0093】
図7Cは、図7Aのデバイスディスクリプタの要求から取得間の詳細な通信手順を示すシーケンス図である。図7Cは、図7Aの一部の手順を詳細に示したものであるが、図7Aの他の処理や図7Bの処理も図7Cのように処理される。図7Cにおいては、通信部以外の制御は、ホスト側制御部および通信端末側制御部にまとめられている。
【0094】
ホスト230のホスト側制御部は、ステップS7010において、USBバッファ0を確保する。次に、ホスト側制御部は、ステップS7020において、USBデバイスにデバイス情報を要求する。ステップS7020は、USBリクエストとして“GET DESCRIPTOR”を生成するステップS7021と、コントロール転送のプロトコルを設定するステップS7023と、を含む。通信部は、ステップS7030において、制御コマンドを含むメッセージを通信端末220に向けて送信する。このメッセージには、コントロール転送であること、GET DESCRIPTORであること、が含まれている。
【0095】
通信端末220の通信部は、ステップS7040において、ホスト230からの制御コマンドを含むメッセージを受信する。次に、通信端末側制御部は、ステップS7050において、USBデバイス210からデバイスディスクリプタを取得する。ステップS7050は、ステップS7051〜S7059を含む。ステップS7051においては、受信したメッセージから制御コマンドの内容を抽出する。ステップS7053においては、制御コマンドの内容を実現するためのUSBパケットを生成する。ステップS7055においては、デバイスディスクリプタを取得するためのUSBバスコントロールを行なう。ステップS7057においては、デバイスディスクリプタを含むUSBパケットを取得する。そして、ステップS7059においては、取得したデバイスディスクリプタを含む応答メッセージを生成する。通信端末220の通信部は、ステップS7060において、生成された応答メッセージをホスト230に送信する。
【0096】
ホスト230の通信部は、ステップS7070において、通信端末220からの応答メッセージを受信する。なお、応答メッセージには、USBデバイス210のデバイスディスクリプタが含まれている。ホスト側制御部は、ステップS7080において、デバイスディスクリプタを分析してUSBデバイス210に対応する処理(入出力の準備)を行なう。ステップS7080は、ステップS7081と、S7083と、S7085と、を含む。ステップS7081においては、受信したデバイスディスクリプタを分析する。ステップS7083においては、USBデバイス210に対応したデータ転送モードを設定する。ステップS7085においては、USBデバイス210に対応したUSBバッファ0以外の必要なUSBバッファを確保する。
された応答メッセージをホスト230に送信する。
【0097】
以下、USBデバイス210への設定を経て、データ入出力を行なうことになる。なお、図7Cにおいては、デバイスドライバの内、ホストコントローラドライバの処理を、ホストとしての情報処理装置230と遠隔の通信端末220とに通信を介して分離して、情報処理装置230からUSBデバイス210を直接接続しているように制御する例を示す。しかしながら、デバイスドライバのどの階層で分離するかは、情報処理装置230および通信端末220の性能や、通信環境により選択するのが望ましい。
【0098】
《情報処理装置のハードウェア構成》
図8は、本実施形態に係る情報処理装置230のハードウェア構成を示すブロック図である。
【0099】
図8で、CPU(Central Processing Unit)810は演算制御用のプロセッサであり、プログラムを実行することで図4の情報処理装置230の機能構成部を実現する。ROM(Read Only Memory)820は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部401は、ネットワーク240を介して通信端末220と通信する。なお、CPU810は1つに限定されず、複数のCPUであっても、あるいは画像処理用のGPU(Graphic Processing Unit)を含んでもよい。また、通信制御部401は、CPU810とは独立したCPUを有して、RAM(Random Access Memory)840の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、RAM840とストレージ850との間でデータを転送するDMAC(Direct Memory Access Controller)を設けるのが望ましい(図示なし)。さらに、入出力インタフェース860は、CPU810とは独立したCPUを有して、RAM840の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、CPU810は、RAM840にデータが受信あるいは転送されたことを認識してデータを処理する。また、CPU810は、処理結果をRAM840に準備し、後の送信あるいは転送は通信制御部401やDMAC、あるいは入出力インタフェース860に任せる。
【0100】
RAM840は、CPU810が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM840には、本実施形態の実現に必要なデータを記憶する領域が確保されている。入出力ファイル構造体631は、アプリケーションソフトウェア231の入出力ファイル操作を受けてOSが作成する構造体である。入出力ファイル構造体631は、ファイル処理関数群と、入出力フラグと、入出力バッファとのエリアを含む。通信構造体634は、アプリケーションインタフェース232が通信制御プログラム858による通信制御を渡すための構造体である。通信構造体634は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報632は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。USBバッファ633は、USBデバイス210のFIFO(エンドポイント)に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、USBデバイス210の種別や入出力処理に対応して含む。なお、USBバッファ633は必須な構成ではなく、入出力ファイル構造体631と通信構造体634との間で、直接、データ交換が行なわれてもよい。
【0101】
ストレージ850には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。アプリケーション格納部851は、情報処理装置230が提供するアプリケーションソフトウェアを検索可能に格納している。関数群格納部852は、情報処理装置230が使用する関数を検索可能に格納している。ドライバ格納部853は、デバイスドライバや、デバイスドライバの一部であるアプリケーションインタフェースなどを検索可能に格納している。
【0102】
ストレージ850には、以下のプログラムが格納される。OS854は、情報処理装置230の全体を制御する基礎プログラムである。BIOS855は、情報処理装置230の入出力操作を制御する基礎プログラムである。アプリケーションソフトウェア231は、現在、情報処理装置230が実行中のアプリケーションプログラムである。アプリケーションインタフェース232は、デバイスドライバの一部としてアプリケーションソフトウェア231とのインタフェースを実現するプログラムである。通信制御プログラム858は、通信制御部401により通信端末220との通信を実行するプログラムである。
【0103】
入出力インタフェース860は、入出力機器との入出力データをインタフェースする。入出力インタフェース860には、表示部861、操作部862、が接続される。また、情報処理装置230に、直接、デバイスをシリアルバスケーブルで接続して使用可能な場合は、USBコントローラ(コネクタ)863、SCSIコントローラ(コネクタ)864、HDMI(登録商標)コントローラ(コネクタ)865、などが接続されてもよい。さらに、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、GPS位置判定部が接続されてもよい。
【0104】
なお、図8のRAM840やストレージ850には、情報処理装置230が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【0105】
《情報処理装置の処理手順》
図9Aおよび図9Bは、本実施形態に係る情報処理装置230の処理手順を示すフローチャートである。このフローチャートは、図8のCPU810がRAM840を使用しながら実行して、図4の機能構成部を実現する。なお、図9Aおよび図9Bにおいては、アプリケーションインタフェース232による処理手順を説明する。
【0106】
情報処理装置230は、ステップS901において、アプリケーションソフトウェア231から渡された入出力ファイル構造体を取得する。情報処理装置230は、ステップS903において、入出力ファイル構造体を参照して、USBバッファを確保する。情報処理装置230は、ステップS905において、入出力ファイル構造体を参照して、通信構造体を生成する。情報処理装置230は、ステップS907において、USBデバイス210のデバイスディスクリプタを要求する。そして、情報処理装置230は、ステップS909において、USBデバイス210のデバイスディスクリプタの受信を待つ。
【0107】
USBデバイス210のデバイスディスクリプタを受信すると、情報処理装置230は、ステップS911において、受信したデバイスディスクリプタを確保されたUSBバッファ0に設定する。そして、情報処理装置230は、ステップS913において、受信したデバイスディスクリプタを入出力ファイル構造体に転送する。受信したデバイスディスクリプタの解析は、OSあるいはBIOS、アプリケーションインタフェース232、アプリケーションソフトウェア231、あるいはその協働で行なわれる。次に、情報処理装置230は、ステップS915において、入出力ファイル構造体からUSBデバイス210からの入力処理か、USBデバイス210への出力処理かを判定する。
【0108】
USBデバイス210からの入力処理の場合、情報処理装置230は、ステップS921において、USBデバイス210からの入力処理を指示する。本例では、通信構造体が使用され、通信端末220のホストコントローラインタフェース225を介してUSBデバイス210に対して指示を伝達する。情報処理装置230は、ステップS923において、USBデバイス210からの入力データの受信を待つ。USBデバイス210からの入力データの受信があれば、情報処理装置230は、ステップS925において、入力データを対応するUSBバッファに格納する。情報処理装置230は、ステップS927において、入出力ファイル構造体が設定する所定量の入力データが受信されたか否かを判定する。所定量でなければ、情報処理装置230は、ステップS923に戻って、次の入力データを受信する。所定量になれば、情報処理装置230は、ステップS929において、USBバッファの入力データを入出力ファイル構造体に転送する。そして、情報処理装置230は、ステップS931において、入力処理の完了か否かを判定する。入力処理の完了でなければ、情報処理装置230は、ステップS923に戻って、次の入力データを受信する。
【0109】
一方、USBデバイス210への出力処理の場合、情報処理装置230は、ステップS941において、USBデバイス210への出力処理を指示する。本例では、通信構造体が使用され、通信端末220のホストコントローラインタフェース225を介してUSBデバイス210に対して指示を伝達する。情報処理装置230は、ステップS943において、入出力ファイル構造体を参照して出力データを取得して、対応するUSBバッファに転送して格納する。そして、情報処理装置230は、ステップS945において、出力データを通信端末220に送信する。情報処理装置230は、ステップS947において、USBデバイス210の種別に対応して所定量の出力データが送信されたか否かを判定する。所定量でなければ、情報処理装置230は、ステップS945に戻って、出力データの送信を繰り返す。所定量になれば、情報処理装置230は、ステップS949において、出力処理の完了か否かを判定する。出力処理の完了でなければ、情報処理装置230は、ステップS943に戻って、次の出力データを取得して送信する。
【0110】
入力処理の完了あるいは出力処理の完了と判定すれば、情報処理装置230は、ステップS951において、入出力処理のステータスを取得する。そして、情報処理装置230は、ステップS953において、入出力処理のステータスを入出力ファイル構造体に渡して、アプリケーションソフトウェア231に通知する。
【0111】
《通信端末のハードウェア構成》
図10は、本実施形態に係る通信端末220のハードウェア構成を示すブロック図である。
【0112】
図10で、CPU1010は演算制御用のプロセッサであり、プログラムを実行することで図5の通信端末220の機能構成部を実現する。ROM1020は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部501は、ネットワーク240を介して情報処理装置230と通信する。なお、CPU1010は1つに限定されず、複数のCPUであっても、あるいは画像処理用のGPUを含んでもよい。また、通信制御部501は、CPU1010とは独立したCPUを有して、RAM1040の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、RAM1040とストレージ1050との間でデータを転送するDMACを設けるのが望ましい(図示なし)。さらに、入出力インタフェース1060は、CPU1010とは独立したCPUを有して、RAM1040の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、CPU1010は、RAM1040にデータが受信あるいは転送されたことを認識してデータを処理する。また、CPU1010は、処理結果をRAM1040に準備し、後の送信あるいは転送は通信制御部501やDMAC、あるいは入出力インタフェース1060に任せる。
【0113】
RAM1040は、CPU1010が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM1040には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体621は、ホストコントローラインタフェース225が通信制御プログラム1057による通信制御を渡すための構造体である。通信構造体621は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報622は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。USBバッファ623は、USBデバイス210のFIFO(エンドポイント)に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、USBデバイス210の種別や入出力処理に対応して含む。
【0114】
ストレージ1050には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部1051は、通信端末220が使用する関数を検索可能に格納している。コアドライバ格納部1052は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【0115】
ストレージ1050には、以下のプログラムが格納される。OS1053は、本通信端末220の全体を制御する基礎プログラムである。BIOS1054は、本通信端末220の入出力操作を制御する基礎プログラムである。ホストコントローラインタフェース225は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。ホストコントローラを含むコアドライバ1056は、USBシリアル通信を制御するためのプログラムである。通信制御プログラム1057は、通信制御部501により情報処理装置230との通信を実行するプログラムである。
【0116】
入出力インタフェース1060は、入出力機器との入出力データをインタフェースする。入出力インタフェース1060には、表示部1061、操作部1062、USBコントローラ(コネクタ)504と505、が接続される。また、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、GPS位置判定部が接続されてもよい。
【0117】
なお、図10のRAM1040やストレージ1050には、通信端末220が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【0118】
《通信端末の処理手順》
図11Aおよび図11Bは、本実施形態に係る通信端末220の処理手順を示すフローチャートである。このフローチャートは、図10のCPU1010がRAM1040を使用しながら実行して、図5の機能構成部を実現する。なお、図11Aおよび図11Bにおいては、ホストコントローラインタフェース225による処理手順を説明する。
【0119】
通信端末220は、ステップS1101において、USBデバイス210のFIFO(エンドポイント)に対応付けて、USBバッファを確保する。通信端末220は、ステップS1103において、通信構造体を生成する。通信端末220は、ステップS1105において、USBデバイス210に対してデバイスディスクリプタを要求する。そして、通信端末220は、ステップS1107において、USBデバイス210からのデバイスディスクリプタの取得を待つ。
【0120】
USBデバイス210のデバイスディスクリプタを取得すると、通信端末220は、ステップS1109において、取得したデバイスディスクリプタを確保されたUSBバッファ0に設定する。そして、通信端末220は、ステップS1111において、取得したデバイスディスクリプタを情報処理装置230に送信する。次に、通信端末220は、ステップS1113において、USBデバイス210からの入力処理か、USBデバイス210への出力処理かを判定する。
【0121】
USBデバイス210からの入力処理の場合、通信端末220は、ステップS1121において、USBデバイス210からのバルク入力をUSBバスインタフェース226のホストコントローラに指示する。通信端末220は、ステップS1123において、USBデバイス210からのバルク入力を待つ。USBデバイス210からのバルク入力があれば、通信端末220は、ステップS1125において、入力データを対応するUSBバッファに格納する。そして、通信端末220は、ステップS1127において、USBバッファに格納した入力データを、通信部を介して情報処理装置230に送信する。通信端末220は、ステップS1129において、入力処理の完了か否かを判定する。入力処理の完了でなければ、通信端末220は、ステップS1123に戻って、次のバルク入力を待つ。
【0122】
一方、USBデバイス210への出力処理の場合、通信端末は、ステップS1141において、情報処理装置230からの出力データの受信を待つ。出力データの受信があれば、通信端末220は、ステップS1143において、対応するUSBバッファに転送して格納する。そして、通信端末220は、ステップS1145において、出力データのバルク出力をUSBバスインタフェース226のホストコントローラに指示する。通信端末は、ステップS1147において、USBバッファからUSBデバイスの対応するFIFO(エンドポイント)へのバルク出力の完了を待つ。バルク出力が完了すれば、通信端末220は、ステップS1149において、出力処理の完了か否かを判定する。出力処理の完了でなければ、通信端末は、ステップS1141に戻って、アプリケーションソフトウェア231が指示したUSBデバイス210へのデータ出力を継続する。
【0123】
入力処理の完了あるいは出力処理の完了と判定すれば、通信端末220は、ステップS1131において、デバイスステータスを取得してUSBバッファに格納する。そして、通信端末220は、ステップS1133において、デバイスステータスを情報処理装置230に送信して、アプリケーションソフトウェア231に通知する。
【0124】
本実施形態によれば、USBデバイスを遠隔の通信端末に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【0125】
[第3実施形態]
次に、本発明の第3実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態と比べると、ネットワークを介して直接、遠隔のUSBデバイスを接続して操作する点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0126】
《情報処理システムの概念》
図12は、本実施形態に係る情報処理システム1200の概念を示す図である。なお、図12において、図2Bと同様な機能構成要素には同じ参照番号を付して、説明を省略する。また、図12においては、常備のソフトウェアであるOSやBIOSなどの図示を省略している。
【0127】
情報処理システム1200は、情報処理装置としてのホスト230にネットワーク240を介して接続されたUSBデバイス1210を備える。USBデバイス1210は、ホストコントローラインタフェース1225を有し、ホスト230と直接通信を行ないデバイスの制御をする。また、USBケーブルによる物理的な接続は無く、ホストコントローラインタフェース1225は、USBバッファとFIFO(エンドポイント)0〜nとのデータ交換を、USBバスインタフェース216を介して、直接、実行する。
【0128】
このような構成とすることにより、遠隔に直接、ネットワーク接続されたUSBデバイスに対し、情報処理装置に接続した場合と同じ操作ができる。
【0129】
《USBデバイスの機能構成》
図13は、本実施形態に係るUSBデバイス1210の機能構成を示すブロック図である。なお、図13には、本実施形態の動作に関連の深い機能構成部を図示し、USBデバイス1210が有する通常の機能構成部は図示していない。
【0130】
USBデバイス1210は、通信制御部1301と、チャネル確立部1302と、デバイス機能処理部1305と、を備える。通信制御部1301は、ネットワーク240を介して情報処理装置230との通信を制御する。チャネル確立部1302は、ホストコントローラとのインタフェースを行なう、デバイスドライバの一部であるホストコントローラインタフェース起動部1303とUSB通信のデータを保持するFIFO(エンドポイント)1304とを有し、情報処理装置230のアプリケーションソフトウェア231からUSBデバイス1210までの制御チャネルおよびデータチャネルを確立する。デバイス機能処理部1305は、エンドポイント1304を使用しながらデバイス機能を果たす。
【0131】
(情報の流れ)
図14は、本実施形態に係る情報処理システム1200における情報の流れを示す図である。なお、図14において、図6と同様の構成要素には同じ参照番号を付して、説明を省略する。
【0132】
USBデバイス1210が、通信構造体621とデバイス制御情報622とエンドポイント1304とを確保する。エンドポイント1304は、デバイス種別に応じてFIFO0〜FIFOnを含む。
【0133】
《デバイスのハードウェア構成》
図15は、本実施形態に係るUSBデバイス1210のハードウェア構成を示すブロック図である。
【0134】
図15で、CPU1510は演算制御用のプロセッサであり、プログラムを実行することで図13のUSBデバイス1210の機能構成部を実現する。ROM1520は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部1301は、ネットワーク240を介して情報処理装置230と通信する。なお、CPU1510は1つに限定されず、複数のCPUであっても、あるいは画像処理用のGPUを含んでもよい。また、通信制御部1301は、CPU1510とは独立したCPUを有して、RAM1540の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、RAM1540とストレージ1550との間でデータを転送するDMACを設けるのが望ましい(図示なし)。さらに、入出力インタフェース1560は、CPU1510とは独立したCPUを有して、RAM1540の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、CPU1510は、RAM1540にデータが受信あるいは転送されたことを認識してデータを処理する。また、CPU1510は、処理結果をRAM1540に準備し、後の送信あるいは転送は通信制御部1301やDMAC、あるいは入出力インタフェース1560に任せる。
【0135】
RAM1540は、CPU1510が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM1540には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体621は、ホストコントローラインタフェース起動部1303が通信制御プログラム1556による通信制御を渡すための構造体である。通信構造体621は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報622は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。エンドポイント1304は、USBデバイス210の入出力バッファであり、USBデバイス1210の種別に対応してFIFO0〜nを有する。デバイス用バッファ1543は、USBデバイス1210の処理でCPU1510が使用するバッファである。
【0136】
ストレージ1550には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部1551は、USBデバイス1210が使用する関数を検索可能に格納している。コアドライバ格納部1552は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【0137】
ストレージ1550には、以下のプログラムが格納される。OS1553は、USBデバイス1210の全体を制御する基礎プログラムである。BIOS1554は、USBデバイス1210の入出力操作を制御する基礎プログラムである。ホストコントローラインタフェース1225は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。通信制御プログラム1556は、通信制御部1301により情報処理装置230との通信を実行するプログラムである。デバイス制御プログラム1557は、USBデバイス1210の機能を実現するプログラムである。
【0138】
入出力インタフェース1560は、入出力機器との入出力データをインタフェースする。入出力インタフェース1560には、表示部1561、操作部1562、USBデバイス1210がセンサデバイスである場合の入出力センサ部1563と、が接続される。また、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、GPS位置判定部が接続されてもよい。
【0139】
なお、図15のRAM1540やストレージ150には、USBデバイス1210が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【0140】
《デバイスの処理手順》
図16は、本実施形態に係るUSBデバイス1210の処理手順を示すフローチャートである。このフローチャートは、図15のCPU1510がRAM1540を使用しながら実行して、図13の機能構成部を実現する。なお、図16においては、ホストコントローラインタフェース1225による処理手順を説明する。また、図16において、図11Aまたは図11Bと同様のステップには同じステップ番号を付して、説明を省略する。
【0141】
USBデバイス1210は、ステップS1611において、FIFO0に格納されているデバイスディスクリプタを、情報処理装置230に送信する。
【0142】
USBデバイス1210からの入力処理の場合、USBデバイス1210は、ステップS1621において、例えば、入出力センサ部1563などから入力データを取得する。そして、USBデバイス1210は、ステップS1625において、対応するFIFOに格納する。
【0143】
一方、USBデバイス1210への出力処理の場合、USBデバイス1210は、ステップS1643において、情報処理装置230から受信した出力データを対応するFIFOに格納する。そして、USBデバイス1210は、ステップS1645において、FIFOからデータを出力する。
【0144】
USBデバイス1210は、ステップS1631において、取得された入出力処理のステータスをFIFO0に格納する。
【0145】
本実施形態によれば、遠隔に直接、ネットワーク接続されたUSBデバイスに対し、情報処理装置に接続した場合と同じ操作ができる。
【0146】
[第4実施形態]
次に、本発明の第4実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態および第3実施形態と比べると、遠隔のUSBハブを接続する点で異なる。その他の構成および動作は、第2実施形態または第3実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0147】
《情報処理システムの概念》
図17は、本実施形態に係る情報処理システム1700の概念を示す図である。なお、図17において、図2Bと同様の構成要素には同じ参照番号を付して、説明を省略する。
【0148】
情報処理システム1700は、USBハブ1760と、複数のUSBデバイス1711〜171nとを備える。USBハブ1760は、ホストコントローラインタフェース1725と、複数のSIEに分岐するUSBバスインタフェース1726とを有する。ホストコントローラインタフェース1725は、複数のUSBケーブルに分岐するための機能を有する。また、複数のSIEは、それぞれ、複数のUSBケーブル1761〜176nを介して、複数のUSBデバイス1711〜171nの各SIEと接続される。
【0149】
《USBハブの機能構成》
図18は、本実施形態に係るUSBハブ1760の機能構成を示すブロック図である。
【0150】
USBハブ1760は、通信制御部1801と、チャネル確立部1802と、オプションとして給電部1810と、を備える。通信制御部1801は、ネットワーク240を介して情報処理装置230との通信を制御する。チャネル確立部1802は、ホストコントローラとのインタフェースを行なう、デバイスドライバの一部であるホストコントローラインタフェース機能部1803と、USBハブ1760で分岐する数のハブ接続部とUSBコネクタとのセット1804と、を有する。
【0151】
(情報の流れ)
図19は、本実施形態に係る情報処理システム1700における情報の流れを示す図である。なお、図19において、図6と同様の構成要素には同じ参照番号を付して、説明を省略する。
【0152】
USBハブ1760は、通信構造体621と、デバイス制御情報622と、複数のUSBバッファ1923〜192nと、が確保される。通信構造体622は、アプリケーションインタフェース232が確保した通信構造体633に対応付けられた構造体である。USBバッファ1911〜19nは、デバイス種別がUSBデバイスの場合に確保される、USBデバイス1711〜171nのエンドポイントにそれぞれ対応するバッファを有する。
【0153】
USBデバイス1711〜171nには、それぞれ、エンドポイント1911〜191nとして、デバイス種別に応じてFIFO0〜FIFOnが準備されている。
【0154】
《USBハブのハードウェア構成》
図20は、本実施形態に係るUSBハブ1760のハードウェア構成を示すブロック図である。
【0155】
図20で、CPU2010は演算制御用のプロセッサであり、プログラムを実行することで図18のUSBハブ1760の機能構成部を実現する。ROM2020は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部1801は、ネットワーク240を介して情報処理装置230と通信する。なお、CPU2010は1つに限定されず、複数のCPUであっても、あるいは画像処理用のGPUを含んでもよい。また、通信制御部1801は、CPU2010とは独立したCPUを有して、RAM2040の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、RAM2040とストレージ2050との間でデータを転送するDMACを設けるのが望ましい(図示なし)。さらに、入出力インタフェース2060は、CPU2010とは独立したCPUを有して、RAM1040の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、CPU2010は、RAM2040にデータが受信あるいは転送されたことを認識してデータを処理する。また、CPU2010は、処理結果をRAM2040に準備し、後の送信あるいは転送は通信制御部1801やDMAC、あるいは入出力インタフェース2060に任せる。
【0156】
RAM2040は、CPU2010が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM2040には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体621は、ホストコントローラインタフェース1725が通信制御プログラム2057による通信制御を渡すための構造体である。通信構造体621は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報622は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。USBバッファ0(1923)は、USBデバイス1711のFIFO(エンドポイント)に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、USBデバイス1711の種別や入出力処理に対応して含む。また、USBバッファn(192n)は、USBデバイス171nのFIFO(エンドポイント)に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、USBデバイス171nの種別や入出力処理に対応して含む。
【0157】
ストレージ2050には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部2051は、USBハブ1760が使用する関数を検索可能に格納している。コアドライバ格納部2052は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【0158】
ストレージ2050には、以下のプログラムが格納される。OS2053は、USBハブ1760の全体を制御する基礎プログラムである。BIOS2054は、USBハブ1760の入出力操作を制御する基礎プログラムである。なお、USBハブ1760が入出力操作機能を有しない場合には、BIOS2054は必要ない。ホストコントローラインタフェース1725は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。ホストコントローラを含むコアドライバ2056は、USBシリアル通信を制御するためのプログラムである。通信制御プログラム2057は、通信制御部1801により情報処理装置230との通信を実行するプログラムである。USBハブ制御プログラム2058は、USBハブ1760の機能を実現するプログラムである。
【0159】
入出力インタフェース2060は、入出力機器との入出力データをインタフェースする。入出力インタフェース2060には、USBコントローラ(コネクタ)2063〜206nが接続される。また、USBハブ1760が入出力操作機能を有する場合は、表示部2061、操作部2062、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、GPS位置判定部が接続されてもよい。
【0160】
なお、図20のRAM2040やストレージ2050には、USBハブ1760が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【0161】
《USBハブの処理手順》
図21は、本実施形態に係るUSBハブ1760の処理手順を示すフローチャートである。このフローチャートは、図20のCPU2010がRAM2040を使用しながら実行して、図18の機能構成部を実現する。
【0162】
USBハブ1760は、ステップS2101において、分岐するUSBコネクタ分のUSBバッファ、あるいは、USBケーブルが接続されたUSBコネクタ分のUSBバッファを確保する。USBハブ1760は、ステップS2103において、USBケーブルが接続されたUSBコネクタを認識して、処理対象として選択する。そして、USBハブ1760は、ステップS2105において、ホストコントロールインタフェース処理を実行する。なお、ステップS2105のホストコントロールインタフェース処理は、各USBコネクタについて、図11Aおよび図11Bを参照して前述した処理と類似であるので、説明を省略する。
【0163】
本実施形態によれば、遠隔にネットワークを介して接続されたUSBハブにおいて、接続した複数のUSBデバイスを、情報処理装置に接続した場合と同じ操作ができる。
【0164】
[第5実施形態]
次に、本発明の第5実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第4実施形態と比べると、デバイスが接続されるシリアルバスがHDMI(登録商標)である点で異なる。その他の構成および動作は、第2実施形態から第4実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0165】
《情報処理システムの概念》
図22は、本実施形態に係る情報処理システム2200の概念を示す図である。なお、図22において、図2Bと同様の構成要素には同じ参照番号を付して、説明を省略する。
【0166】
図22の情報処理システム2200は、情報処理装置としてのホスト230と、遠隔にあって、ホスト230とネットワーク240を介して接続する通信端末2220と、通信端末2220のHDMI(登録商標)コネクタに接続されたHDMI(登録商標)デバイス2210と、を備える。
【0167】
通信端末2220は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース2225と、ホストコントローラおよび通信用ICを有するHDMI(登録商標)バスインタフェース2226とを有する。ホストコントローラインタフェース2225は、ネットワーク240を介して、アプリケーションインタフェース232から受信したHDMI(登録商標)のプロトコルに応じたコマンドやデータなどを、HDMI(登録商標)バスインタフェース2226のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース2225は、ネットワーク240を介して、HDMI(登録商標)バスインタフェース2226のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク240を介して、アプリケーションインタフェース232に送信する。HDMI(登録商標)バスインタフェース2226のホストコントローラは、ホストコントローラインタフェース2225とコマンドやデータなどを交換しながら、HDMI(登録商標)ケーブル2260を介したシリアル通信をHDMI(登録商標)プロトコルに従い実行する。HDMI(登録商標)バスインタフェース2226の通信用ICは、HDMI(登録商標)ケーブル2260上の信号をHDMI(登録商標)通信の仕様に従い制御する。
【0168】
HDMI(登録商標)デバイス2210は、ソフトウェアとして、通信端末2220のHDMI(登録商標)バスインタフェース2226とHDMI(登録商標)ケーブル2260を介して接続して、信号をやり取りするHDMI(登録商標)デバイス2210のHDMI(登録商標)バスインタフェース2216を有する。また、HDMI(登録商標)デバイス2210は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント2217と、入出力データを記憶するエンドポイント2218とを有する。
【0169】
かかる接続により、通信端末2220とHDMI(登録商標)デバイス2210とは、お互いのHDMI(登録商標)バスインタフェース2226および2216により物理レベルの通信を実行する。また、アプリケーションインタフェース232、ネットワーク240およびホストコントローラインタフェース2225を介したシステムレベルのコントロール転送により、制御パイプ(DDC:ディスプレイ・データ・チャネル/CEC:コンシューマエレクトロニクス・コントロール)2251を介してアプリケーションソフトウェア231とエンドポイント2217との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群2252を介してアプリケーションソフトウェア231とエンドポイント2218との間で、デバイスクラスの各メソッドとしてのTMDSデータ通信を実現する。
【0170】
以上のように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末2220のホストコントローラインタフェース2225とのネットワーク通信と、HDMI(登録商標)ケーブルを介した、HDMI(登録商標)バスインタフェース2226と2216間のシリアル通信とから、統一された通信チャネル(パイプ)を形成することができる。
【0171】
(情報の流れ)
図23は、本実施形態に係る情報処理システム2200における情報の流れを示す図である。なお、図23において、図6と同様の構成要素は同じ参照番号を付して、説明を省略する。
【0172】
情報処理装置230のデバイス制御情報2332は、HDMI(登録商標)における、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、HDMI(登録商標)デバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報2332は、入出力ファイル構造体631のデバイス情報に一体化されていてもよい。情報処理装置230のHDMI(登録商標)バッファ2333は、アプリケーションインタフェース232が入出力ファイル構造体631に定義されたHDMI(登録商標)シリアルデータ通信に基づいて確保された、HDMI(登録商標)デバイス2210用のバッファである。HDMI(登録商標)バッファ2333は、制御信号を格納する制御バッファと、TDMS(Technical Data Management Streaming)ファイル形式のデータを格納するデータバッファと、を含む。なお、HDMI(登録商標)バッファ2333を設けずに、入出力ファイル構造体631と通信構造体634とで、直接、データを交換してもよい。
【0173】
通信端末2220のデバイス制御情報2332は、HDMI(登録商標)における、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、HDMI(登録商標)デバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。通信端末2220のHDMI(登録商標)バッファ2323は、HDMI(登録商標)デバイス2210のエンドポイント2311に対応付けられて確保され、その構造はHDMI(登録商標)バッファ2333と同様である。また、HDMI(登録商標)デバイス2210のエンドポイント2311は、HDMI(登録商標)デバイス2210の種別やデータフォーマットなどに対応して準備される。
【0174】
本実施形態によれば、シリアルバスとしてHDMI(登録商標)を使用しても、上記実施形態同様に、HDMI(登録商標)デバイスを遠隔に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【0175】
[第6実施形態]
次に、本発明の第6実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第5実施形態と比べると、デバイスが接続されるシリアルバスがSCSIである点で異なる。その他の構成および動作は、第2実施形態から第5実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0176】
《情報処理システムの概念》
図24は、本実施形態に係る情報処理システム2400の概念を示す図である。なお、図24において、図2Bと同様の構成要素には同じ参照番号を付して、説明を省略する。
【0177】
図24の情報処理システム2400は、情報処理装置としてのホスト230と、遠隔にあって、ホスト230とネットワーク240を介して接続する通信端末2420と、通信端末2420のSCSIコネクタに接続されたSCSIデバイス2410と、を備える。
【0178】
通信端末2420は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース2425と、ホストコントローラおよび通信用ICを有するSCSIバスインタフェース2426とを有する。ホストコントローラインタフェース2425は、ネットワーク240を介して、アプリケーションインタフェース232から受信したSCSIのプロトコルに応じたコマンドやデータなどを、SCSIバスインタフェース2426のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース2425は、ネットワーク240を介して、SCSIバスインタフェース2426のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク240を介して、アプリケーションインタフェース232に送信する。SCSIバスインタフェース2426のホストコントローラは、ホストコントローラインタフェース2425とコマンドやデータなどを交換しながら、SCSIケーブル2460を介したシリアル通信をSCSIプロトコルに従い実行する。SCSIバスインタフェース2426の通信用ICは、SCSIケーブル2460上の信号をSCSI通信の仕様に従い制御する。
【0179】
SCSIデバイス2410は、ソフトウェアとして、通信端末2420のSCSIバスインタフェース2426とSCSIケーブル2460を介して接続して、信号をやり取りするSCSIデバイス2410のSCSIバスインタフェース2416を有する。また、SCSIデバイス2410は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント2417と、入出力データを記憶するエンドポイント2418とを有する。
【0180】
かかる接続により、通信端末2420とSCSIデバイス2410とは、お互いのSCSIバスインタフェース2426および2416により物理レベルの通信を実行する。また、アプリケーションインタフェース232、ネットワーク240およびホストコントローラインタフェース2425を介したシステムレベルのコントロール転送により、制御パイプ(SCSIコマンド/SCSIレスポンス)2451を介してアプリケーションソフトウェア231とエンドポイント2417との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群2452を介してアプリケーションソフトウェア231とエンドポイント2418との間で、デバイスクラスの各メソッドとしてのSCSIデータ通信を実現する。
【0181】
以上のように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末2420のホストコントローラインタフェース2425とのネットワーク通信と、SCSIケーブルを介した、SCSIバスインタフェース2426と2416間のシリアル通信とから、統一された通信チャネル(パイプ)を形成することができる。
【0182】
(情報の流れ)
図25は、本実施形態に係る情報処理システム2400における情報の流れを示す図である。なお、図25において、図6と同様の構成要素は同じ参照番号を付して、説明を省略する。
【0183】
情報処理装置230のデバイス制御情報2532は、SCSIにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、SCSIデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報2532は、入出力ファイル構造体631のデバイス情報に一体化されていてもよい。情報処理装置230のSCSIバッファ2533は、アプリケーションインタフェース232が入出力ファイル構造体631に定義されたSCSIシリアルデータ通信に基づいて確保された、SCSIデバイス2410用のバッファである。SCSIバッファ2533は、制御信号を格納する制御バッファと、データを格納するデータバッファと、を含む。なお、SCSIバッファ2533を設けずに、入出力ファイル構造体631と通信構造体634とで、直接、データを交換してもよい。
【0184】
通信端末2420のデバイス制御情報2522は、SCSIにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、SCSIデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。通信端末2420のSCSIバッファ2523は、SCSIデバイス2410のエンドポイント2511に対応付けられて確保され、その構造はSCSIバッファ2533と同様である。また、SCSIデバイス2410のエンドポイント2511は、SCSIデバイス2410の種別やデータフォーマットなどに対応して準備される。
【0185】
本実施形態によれば、シリアルバスとしてSCSIを使用しても、上記実施形態同様に、SCSIデバイスを遠隔に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【0186】
[第7実施形態]
次に、本発明の第7実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第6実施形態と比べると、遠隔に接続するデバイスがSDカードである点で異なる。その他の構成および動作は、第2実施形態から第6実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0187】
《情報処理システムの概念》
図26は、本実施形態に係る情報処理システム2600の概念を示す図である。なお、図26において、図2Bと同様の構成要素には同じ参照番号を付して、説明を省略する。
【0188】
図26の情報処理システム2600は、情報処理装置としてのホスト230と、遠隔にあって、ホスト230とネットワーク240を介して接続する通信端末2620と、通信端末2620のコネクタに接続されたSDカード2610と、を備える。
【0189】
通信端末2620は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース2625と、ホストコントローラおよびバス用アンプを有するSDカードバスインタフェース2626とを有する。ホストコントローラインタフェース2625は、ネットワーク240を介して、アプリケーションインタフェース232から受信したSDカードのプロトコルに応じたコマンドやデータなどを、SDカードバスインタフェース2626のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース2625は、ネットワーク240を介して、SDカードバスインタフェース2626のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク240を介して、アプリケーションインタフェース232に送信する。SDカードバスインタフェース2626のホストコントローラは、ホストコントローラインタフェース2625とコマンドやデータなどを交換しながら、SDカードコネクタ2660を介したシリアル通信をSDカードのプロトコルに従い実行する。SDカードバスインタフェース2626のバス用アンプは、SDカードコネクタ2660上の信号をSDカード用通信の仕様に従い制御する。
【0190】
SDカード2610は、ソフトウェアとして、通信端末2620のSDカードバスインタフェース2626とSDカードコネクタ2660を介して接続して、信号をやり取りするSDカード2610のSDカードバスインタフェース2616を有する。また、SDカード2610は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント2617と、入出力データを記憶するエンドポイント2618とを有する。
【0191】
かかる接続により、通信端末2620とSDカード2610とは、お互いのSDカードバスインタフェース2626および2616により物理レベルの通信を実行する。また、アプリケーションインタフェース232、ネットワーク240およびホストコントローラインタフェース2625を介したシステムレベルのコントロール転送により、制御パイプ(SDカードコマンド)2651を介してアプリケーションソフトウェア231とエンドポイント2617との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群2652を介してアプリケーションソフトウェア231とエンドポイント2618との間で、デバイスクラスの各メソッドとしてのデータ通信を実現する。
【0192】
以上のように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末2620のホストコントローラインタフェース2625とのネットワーク通信と、SDカードコネクタを介した、SDカードバスインタフェース2626と2616間のシリアル通信とから、統一された通信チャネル(パイプ)を形成することができる。
【0193】
(情報の流れ)
図27は、本実施形態に係る情報処理システム2600における情報の流れを示す図である。なお、図27において、図6と同様の構成要素は同じ参照番号を付して、説明を省略する。
【0194】
情報処理装置230のデバイス制御情報2732は、SDカードにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、SDカードへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報2732は、入出力ファイル構造体631のデバイス情報に一体化されていてもよい。情報処理装置230のSDカードバッファ2733は、アプリケーションインタフェース232が入出力ファイル構造体631に定義されたSDカードシリアルデータ通信に基づいて確保された、SDカード2610用のバッファである。SDカードバッファ2733は、制御信号を格納する制御バッファと、データを格納するデータバッファと、を含む。なお、SDカードバッファ2733を設けずに、入出力ファイル構造体631と通信構造体634とで、直接、データを交換してもよい。
【0195】
通信端末2620のデバイス制御情報2722は、SDカードにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、SDカードへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。通信端末2620のSDカードバッファ2723は、SDカード2610のエンドポイント2711に対応付けられて確保され、その構造はSDカードバッファ2733と同様である。また、SDカード2610のエンドポイント2711は、SDカード2610の種別やデータフォーマットなどに対応して準備される。
【0196】
本実施形態によれば、遠隔に接続するデバイスがDCカードであっても、上記実施形態同様に、情報処理装置に直接接続した場合と同じ操作ができる。
【0197】
[第8実施形態]
次に、本発明の第8実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第7実施形態と比べると、遠隔の通信端末から近距離無線(近接無線)によりデバイスを接続する点で異なる。その他の構成および動作は、第2実施形態から第7実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0198】
《情報処理システム》
図28は、本実施形態に係る情報処理システム2800の概念を示す図である。図28は、遠隔の通信端末がWi−Fi通信でデバイスを接続する場合である。なお、図28において、図2Bと同様の構成要素には同じ参照番号を付して、説明を省略する。
【0199】
図28の情報処理システム2800は、情報処理装置としてのホスト230と、遠隔にあって、ホスト230とネットワーク240を介して接続する通信端末2820と、通信端末2820とWi−Fi無線で接続されたWi−Fiデバイス2810と、を備える。
【0200】
通信端末2820は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース2825と、ホストコントローラおよびWi−Fi用ICを有するWi−Fiバスインタフェース2826とを有する。ホストコントローラインタフェース2825は、ネットワーク240を介して、アプリケーションインタフェース232から受信したWi−Fiのプロトコルに応じたコマンドやデータなどを、Wi−Fiバスインタフェース2826のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース2825は、ネットワーク240を介して、Wi−Fiバスインタフェース2826のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク240を介して、アプリケーションインタフェース232に送信する。Wi−Fiバスインタフェース2826のホストコントローラは、ホストコントローラインタフェース2825とコマンドやデータなどを交換しながら、Wi−Fi通信2860を介したシリアル通信をWi−Fiプロトコルに従い実行する。Wi−Fiバスインタフェース2826のWi−Fi用ICは、Wi−Fi通信2860上の信号をWi−Fi通信の仕様に従い制御する。
【0201】
Wi−Fiデバイス2810は、ソフトウェアとして、通信端末2820のWi−Fiバスインタフェース2826とWi−Fi通信2860を介して接続して、信号をやり取りするWi−Fiデバイス2810のWi−Fiバスインタフェース2816を有する。また、Wi−Fiデバイス2810は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント2817と、入出力データを記憶するエンドポイント2818とを有する。
【0202】
かかる接続により、通信端末2820とWi−Fiデバイス2810とは、お互いのWi−Fiバスインタフェース2826および2816により物理レベルの通信を実行する。また、アプリケーションインタフェース232、ネットワーク240およびホストコントローラインタフェース2825を介したシステムレベルのコントロール転送により、制御パイプ2851を介してアプリケーションソフトウェア231とエンドポイント2817との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群2852を介してアプリケーションソフトウェア231とエンドポイント2818との間で、デバイスクラスの各メソッドとしてのWi−Fiデータ通信を実現する。
【0203】
以上のように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末2820のホストコントローラインタフェース2825とのネットワーク通信と、Wi−Fi通信を介した、Wi−Fiバスインタフェース2826と2816間のシリアル通信とから、統一された通信チャネル(パイプ)を形成することができる。
【0204】
図29は、本実施形態に係る他の情報処理システム2900の概念を示す図である。図29は、遠隔の通信端末がBluetooth(登録商標)通信でデバイスを接続する場合である。なお、図29において、図2Bと同様の構成要素には同じ参照番号を付して、説明を省略する。
【0205】
図29の情報処理システム2900は、情報処理装置としてのホスト230と、遠隔にあって、ホスト230とネットワーク240を介して接続する通信端末2920と、通信端末2920とBluetooth(登録商標)無線で接続されたBluetooth(登録商標)デバイス2910と、を備える。
【0206】
通信端末2920は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース2925と、ホストコントローラおよびBluetooth(登録商標)用ICを有するBluetooth(登録商標)バスインタフェース2926とを有する。ホストコントローラインタフェース2925は、ネットワーク240を介して、アプリケーションインタフェース232から受信したBluetooth(登録商標)のプロトコルに応じたコマンドやデータなどを、Bluetooth(登録商標)バスインタフェース2926のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース2925は、ネットワーク240を介して、Bluetooth(登録商標)バスインタフェース2926のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク240を介して、アプリケーションインタフェース232に送信する。Bluetooth(登録商標)バスインタフェース2926のホストコントローラは、ホストコントローラインタフェース2925とコマンドやデータなどを交換しながら、Bluetooth(登録商標)通信2960を介したシリアル通信をWi−Fiプロトコルに従い実行する。Bluetooth(登録商標)バスインタフェース2926のBluetooth(登録商標)用ICは、Bluetooth(登録商標)通信2960上の信号をBluetooth(登録商標)通信の仕様に従い制御する。
【0207】
Bluetooth(登録商標)デバイス2910は、ソフトウェアとして、通信端末2920のBluetooth(登録商標)バスインタフェース2926とBluetooth(登録商標)通信2960を介して接続して、信号をやり取りするBluetooth(登録商標)デバイス2910のBluetooth(登録商標)バスインタフェース2916を有する。また、Bluetooth(登録商標)デバイス2910は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント2917と、入出力データを記憶するエンドポイント218とを有する。
【0208】
かかる接続により、通信端末2920とBluetooth(登録商標)デバイス2910とは、お互いのBluetooth(登録商標)バスインタフェース2926および2916により物理レベルの通信を実行する。また、アプリケーションインタフェース232、ネットワーク240およびホストコントローラインタフェース2925を介したシステムレベルのコントロール転送により、制御パイプ2951を介してアプリケーションソフトウェア231とエンドポイント2917との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群2952を介してアプリケーションソフトウェア231とエンドポイント2918との間で、デバイスクラスの各メソッドとしてのBluetooth(登録商標)データ通信を実現する。
【0209】
以上のように、ネットワーク240を介した、ホスト230のアプリケーションインタフェース232と通信端末2920のホストコントローラインタフェース2925とのネットワーク通信と、Bluetooth(登録商標)通信を介した、Bluetooth(登録商標)バスインタフェース2926と2916間のシリアル通信とから、統一された通信チャネル(パイプ)を形成することができる。
【0210】
なお、本実施形態においては、近距離無線(近接無線)としてWi−Fi無線やBluetooth(登録商標)無線を例に示したが、他の赤外線通信などにおいても同様の構成で同様の効果が得られる。



【0211】
本実施形態によれば、遠隔に接続するデバイスが近距離無線(近接無線)による接続であっても、上記実施形態同様に、情報処理装置に直接接続した場合と同じ操作ができる。
【0212】
[第9実施形態]
次に、本発明の第9実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第7実施形態と比べると、情報処理装置に対してネットワークを介して異なる位置の複数のデバイスを接続する点で異なる。その他の構成および動作は、第2実施形態から第7実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0213】
《情報処理システムの概念》
図30は、本実施形態に係る情報処理システム3000の概念を示す図である。なお、図30において、図2B図12図17、または、図22と同様の構成要素には同じ参照番号を付している。また、図30には、図24図26の通信端末は示されていないが、これらも図30においてネットワーク240を介して、情報処理装置230と接続されて、シリアルバス制御の遠隔への延長が可能である。
【0214】
図30には、情報処理装置230とネットワークを介して、USB接続機能を有する図2Bの通信端末220、USB接続機能を有する図12のデバイス1210、USBハブ機能を有する図17のUSBハブ1760、HDMI(登録商標)接続機能を有する図22の通信端末2220、Wi−Fi通信機能を有する図28の通信端末2820が接続されて、複数のシリアルバス接続が可能である。
【0215】
本実施形態によれば、遠隔の異なる場所に複数のデバイスを自在に接続して、情報処理装置に直接接続した場合と同じ操作ができる。
【0216】
[第10実施形態]
次に、本発明の第10実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第9実施形態と比べると、情報処理装置230(仮想PC)とデバイスが接続された通信端末220との間で異なるデータが通信される点で異なる。すなわち、本実施形態においては、情報処理装置230のアプリケーションIFと通信端末220のホストコントローラIFとが、第2実施形態と異なる部分で分離されている。例えば、ホストコントローラチップ(HC)を含めて全体のデバイスドライバをソフトウェアで実現した場合に、特に、ホストコントローラドライバとホストコントローラチップとの組を種々の階層で通信効率や通信速度を考慮して分割する。そして、分割された階層間の情報を情報処理装置230と通信端末220間でネットワーク通信するよう設計する。その他の構成および動作は、第2実施形態から第9実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【0217】
(データ伝送例)
図31は、本実施形態に係る情報処理システムにおけるデータ伝送を示す図である。なお、図31は、図6Cと同様に、USB接続されたUSBデバイスのディスクリプタ取得手順を示す図である。したがって、図31において、図6Cと同様の構成要素には同じ参照番号を付して、説明は省略する。
【0218】
デバイス210に設定されているディスクリプタは、GET_DESCRIPTORなどのUSBリクエストにより取得される。コントロール転送であるUSBリクエストのUSBプロトコルを含むフレームは、情報処理装置230とデバイス210間でやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス210から取得したディスクリプタはIPヘッダやTCPヘッダでIPカプセリングされたフレームに挿入されて、携帯端末220から情報処理装置230に送信される。
【0219】
ここで、情報処理装置230のアプリケーションインタフェース3132は、アプリケーション231のデバイス入出力要求に応じて、まず接続デバイスを確認するためGET DESCRIPTORのUSBリクエストのUSBプロトコルを含むフレームを生成して、通信制御部401に渡す。
【0220】
IPヘッダやTCPヘッダでIPカプセリングされたGET DESCRIPTORのUSBリクエストを含むフレームは、通信端末220の通信制御部501で受信されてIPアンカプセリングされる。GET DESCRIPTORのUSBリクエストは、ホストコントローラインタフェース3125に渡される。ホストコントローラインタフェース3125は、GET DESCRIPTORのUSBリクエストのUSBプロトコルを含むフレームに基づいて、デバイス210へのUSBバスにおける各パケットを転送するようUSBバスインタフェース226(不図示)に指示する。
【0221】
ホストコントローラインタフェース3125は、デバイス210からデータ・ステージにおいて受信したデータ・パケットをデバイスディスクリプタ3163として含むフレームを、通信制御部501に渡す。IPヘッダやTCPヘッダでIPカプセリングされたデバイスディスクリプタ3163を含むフレームは、通信端末220の通信制御部501から情報処理装置230の通信制御部401に送信される。
【0222】
情報処理装置の通信制御部401は、アンカプセリングしたデバイスディスクリプタ3163を含むフレームをアプリケーションインタフェース3132に渡すと、アプリケーションインタフェース3132はアプリケーション231のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【0223】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース3125とUSBバスインタフェース226とが一体にされたソフトウェアであってもよい。
【0224】
図32は、本実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。なお、図32は、図6Cおよび図31と同様に、USB接続されたUSBデバイスのディスクリプタ取得手順を示す図である。したがって、図32において、図6Cおよび図31と同様の構成要素には同じ参照番号を付して、説明は省略する。
【0225】
デバイス210に設定されているディスクリプタは、GET_DESCRIPTORなどのUSBリクエストにより取得される。USBリクエストのUSBプロトコルを含むコントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。コントロール転送であるUSBリクエストのUSBプロトコルを含むセット・ステージと、データ・ステージと、ステータス・ステージとは、それぞれ、情報処理装置230とデバイス210間でやり取りされる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス210から取得したディスクリプタはIPヘッダやTCPヘッダでIPカプセリングされたデータ・ステージに挿入されて、携帯端末220から情報処理装置230に送信される。
【0226】
ここで、情報処理装置230のアプリケーションインタフェース3232は、アプリケーション231のデバイス入出力要求に応じて、まず接続デバイスを確認するためGET DESCRIPTORのUSBリクエストのUSBプロトコルを含むセット・ステージを生成して、通信制御部401に渡す。
【0227】
IPヘッダやTCPヘッダでIPカプセリングされたGET DESCRIPTORのUSBリクエストを含むセット・ステージは、通信端末220の通信制御部501で受信されてIPアンカプセリングされる。GET DESCRIPTORのUSBリクエストは、ホストコントローラインタフェース3225に渡される。ホストコントローラインタフェース3225は、GET DESCRIPTORのUSBリクエストのUSBプロトコルを含むセット・ステージに基づいて、デバイス210へのUSBバスにおける各パケットを転送するようUSBバスインタフェース226(不図示)に指示する。
【0228】
ホストコントローラインタフェース3225は、デバイス210からデータ・ステージにおいて受信したデータ・パケットをデバイスディスクリプタ3263として含むデータ・ステージを、通信制御部501に渡す。IPヘッダやTCPヘッダでIPカプセリングされたデバイスディスクリプタ3263を含むデータ・ステージは、通信端末220の通信制御部501から情報処理装置230の通信制御部401に送信される。
【0229】
情報処理装置の通信制御部401は、アンカプセリングしたデバイスディスクリプタ3263を含むデータ・ステージをアプリケーションインタフェース3232に渡すと、アプリケーションインタフェース3232はアプリケーション231のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【0230】
また、ホストコントローラインタフェース3225は、デバイス210からステータス・ステージで受信したデータ・パケットをステータスデータ3264として含むステータス・ステージを、通信制御部501に渡す。IPヘッダやTCPヘッダでIPカプセリングされたステータスデータ3264を含むステータス・ステージは、通信端末220の通信制御部501から情報処理装置230の通信制御部401に送信される。
【0231】
情報処理装置の通信制御部401は、アンカプセリングしたステータスデータ3264を含むステータス・ステージをアプリケーションインタフェース3232に渡すと、アプリケーションインタフェース3232はアプリケーション231のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【0232】
なお、上記説明では、アプリケーションインタフェース3232においては、ハンドシェイク・パケットについて判定していないが、アプリケーションインタフェース3232が各ステージにおけるハンドシェイク・パケットを確認する構成であってもよい。
【0233】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース3225とUSBバスインタフェース226とが一体にされたソフトウェアであってもよい。
【0234】
本実施形態によれば、情報処理装置(仮想PC)と通信端末間の通信が互いのドライバを分割したフレーム単位の通信であってもステージ単位の通信であっても、USBデバイスを遠隔の通信端末に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【0235】
[他の実施形態]
なお、上記実施形態においては、情報処理装置としてのホストをスタンドアロンのPCとして説明したが、本実施形態のホストはクラウドサーバ内に構築された仮想PCであってよい。本実施形態のホストが仮想PCである場合、クラウドサーバに蓄積されたデバイス接続履歴をナレッジとして利用し、仮想PCから遠隔デバイスへの好適な接続を構成することができる。
【0236】
また、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【0237】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。
【0238】
なお、この出願は、同日出願された日本国特許出願(特願2014−235109,特願2014−235110、特願2014−235111)と関連し、その開示の全てをここに取り込む。
【0239】
この出願は、2014年11月19日に出願された日本国特許出願 特願2014−235108号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
図1
図2A
図2B
図2C
図2D
図2E
図2F
図3A
図3B
図4
図5
図6A
図6B
図6C
図7A
図7B
図7C
図8
図9A
図9B
図10
図11A
図11B
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32