JP2015501477A - デバイスリンキング - Google Patents

デバイスリンキング Download PDF

Info

Publication number
JP2015501477A
JP2015501477A JP2014535825A JP2014535825A JP2015501477A JP 2015501477 A JP2015501477 A JP 2015501477A JP 2014535825 A JP2014535825 A JP 2014535825A JP 2014535825 A JP2014535825 A JP 2014535825A JP 2015501477 A JP2015501477 A JP 2015501477A
Authority
JP
Japan
Prior art keywords
computing device
devices
network connection
dword
console
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014535825A
Other languages
English (en)
Other versions
JP6243843B2 (ja
JP2015501477A5 (ja
Inventor
リウ,ミン
ディスコロ,アンソニー・ヴイ
ルイ,エドムンド・ホン−サム
リム,キーン・イー
エルグラム,ライアン・ビー
ボックス,ドナルド・エフ
グッジン,マーティン・ジェイ
シュウ,ジャーンウェイ
マニオン,トッド・アール
ガードナー,グラント
デューイー,ジェレミー・エル
キュパラ,シラズ・ジェイ
スティーブ,カート・エイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015501477A publication Critical patent/JP2015501477A/ja
Publication of JP2015501477A5 publication Critical patent/JP2015501477A5/ja
Application granted granted Critical
Publication of JP6243843B2 publication Critical patent/JP6243843B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/005Discovery of network devices, e.g. terminals
    • A63F13/12
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/215Input arrangements for video game devices characterised by their sensors, purposes or types comprising means for detecting acoustic signals, e.g. using a microphone
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/32Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
    • A63F13/323Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections between game devices with different hardware characteristics, e.g. hand-held game devices connectable to game consoles or arcade machines
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/32Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
    • A63F13/327Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections using wireless networks, e.g. Wi-Fi or piconet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/71Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network
    • H04L12/2809Exchanging configuration information on appliance services in a home automation network indicating that an appliance service is present in a home automation network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2823Reporting information sensed by appliance or service execution status of appliance services in a home automation network
    • H04L12/2827Reporting to a device within the home network; wherein the reception of the information reported automatically triggers the execution of a home appliance functionality
    • H04L12/2829Reporting to a device within the home network; wherein the reception of the information reported automatically triggers the execution of a home appliance functionality involving user profiles according to which the execution of a home appliance functionality is automatically triggered
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/403Connection between platform and handheld device
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/404Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network characterized by a local network connection
    • A63F2300/405Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network characterized by a local network connection being a wireless ad hoc network, e.g. Bluetooth, Wi-Fi, Pico net
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/407Data transfer via internet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8017Driving on land or water; Flying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles

Abstract

デバイスリンキングについて記述される。1つまたは複数の実施態様では、ネットワークサービスのユーザーアカウントと結合される複数のデバイスの特性を記述しているデータは、ネットワークサービスで維持される。通信は、デバイス間のローカルネットワーク接続を開始するために、複数のデバイスのうちの1つであって、複数のデバイスのうちの別の1つに関係し、かつ受け取る側のデバイスがその複数のデバイスのうちのその別の1つを発見するのに適したデータの一部を含んだ、複数のデバイスのうちの1つによって受け取られるように形成される。

Description

[0001]ユーザーは、所与の日に様々な異なるデバイスと対話することができる。例えばユーザーは、デスクトップPC、ラップトップコンピューター、モバイル通信デバイス(例えば携帯電話)、およびゲームコンソール等々と対話することができる。しかしながら、これらのデバイスとの従来の対話は、あるデバイスと対話すると、別のデバイスとの対話が途絶えてしまうことがしばしばであった。さらに、この問題の解決を試行するための技法が引き続いて開発されてはいるが、これらの技法は、しばしば複雑で、効率的でなく、したがってユーザーは、通常この機能を控える選択をしている。
[0002]デバイスリンキングが記述される。1つまたは複数の実施態様では、ネットワークサービスのユーザーアカウントと関連付けられた複数のデバイスの特性を記述しているデータは、ネットワークサービスで維持される。通信は、デバイス間のローカルネットワーク接続を開始するために、複数のデバイスのうちの1つであって、複数のデバイスのうちの別の1つに関係し、かつ受け取る側のデバイスがその複数のデバイスのうちのその別の1つを発見するのに適したデータの一部を含んだ、複数のデバイスのうちの1つによって受け取られるように形成される。
[0003]1つまたは複数の実施態様では、データは、ユーザーアカウントに関連付けられている計算デバイスにおいて、ユーザーアカウントと関連付けられた別の計算デバイスを識別するネットワークサービスから受け取られる。計算デバイスが、ローカルネットワーク接続を介してその別の計算デバイスを利用することができることを決定すると、それに応答して、その別の計算デバイスと共に計算デバイスによってローカルネットワーク接続が形成される。計算デバイスが、ローカルネットワーク接続を介してその別の計算デバイスを利用することができないことを決定すると、それに応答して、その別の計算デバイスと共に計算デバイスによって非ローカルネットワーク接続が形成される。
[0004]1つまたは複数の実施態様では、コンパニオン経験をサポートするために、デバイスのネットワークサービスとの通信を介して利用可能性が発見され、この利用可能性は、デバイスとユーザーアカウントとの関連付けを介して決定される。コンパニオン経験に含まれているデータを通信するために使用することができることを発見した結果として、ネットワークサービスから受け取ったデータを使用して、計算デバイスとデバイスの間のローカルネットワーク接続が開始される。
[0005]この「発明の概要」は、以下で、「発明を実施するための形態」でさらに説明される概念の選択を簡易形態で紹介するために提供されたものである。この「発明の概要」には、特許請求される主題の重要な特徴または本質的な特徴を識別することも、特許請求される主題の範囲を決定する際の補助として使用されることも意図されていない。
[0006]詳細な説明は、添付の図を参照して述べられる。図においては、参照番号の一番左側の1つまたは複数の桁は、その参照番号が最初に出現する図を識別している。説明および図の中の異なる例における同じ参照番号の使用は、同様の項目または全く同じ項目を示している。図に示されている実体は、1つまたは複数の実体を表していることがあり、したがって説明の中では、これらの実体の単一の形態または複数の形態を交換可能に参照することができる。
[0007]本明細書において説明されているデバイスリンキング技法を実施するように動作させることができる一実施態様例における環境を示す図である。 [0008]図1の計算デバイスおよびサービスプロバイダーをより詳細に示す一実施態様例におけるシステムを示す図である。 [0009]ネットワークサービスがデバイス間の接続を仲介するように構成されている一実施態様例における手順を示す流れ図である。 [0010]別の計算デバイスと通信するために、ローカルネットワーク接続および/またはリモートネットワーク接続を活用するように計算デバイスが構成される一実施態様例における手順を示す流れ図である。 [0011]コンパニオン経験がデバイスリンキングを介してサポートされる一実施態様例における手順を示す流れ図である。 [0012]図1を参照して説明される計算デバイスを含んだ一システム例を示す図である。 [0013]本明細書において説明される技法の実施形態を実施するために、図1〜図4を参照して説明される任意のタイプの計算デバイスとして実施することができる一デバイス例の様々な構成要素を示す図である。
概説
[0014]複数のデバイスを一体にリンクするために利用されていた従来の技法には、通常、ユーザーによる複数の手動ステップの実施が必要である。さらに、これらのステップは複雑であることがしばしばであり、したがってユーザーは、従来より、利用可能ではあってもこれらの技法を利用することはなかった。
[0015]デバイスリンキング技法について記述される。1つまたは複数の実施態様では、ゲームコンソールとの対話をサポートするためのモバイル通信デバイスの使用など、異なるタイプのデバイスを共に動作させることができる技法が記述される。本明細書においては、例えばこの対話をサポートするために、複数のデバイスを一体にリンクするように活用することができる様々な技法が説明される。この例には、セットアップを実施するための「クラウド」およびローカル接続の使用の活用、ローカル接続およびリモート接続の使用の活用、およびフォールバック機能のサポートの活用等々がある。この活用および他の技法についてのさらなる説明については、以下の節を参照されたい。
[0016]以下の説明では、最初に、本明細書において説明されている技法を使用することができる一環境例が記述される。次に、上記環境例ならびに他の環境で実施することができる手順例が記述される。したがって上記手順例の実施は上記環境例に限定されず、また、上記環境例は、上記手順例の実施に限定されない。
環境例
[0017]図1は、本明細書において説明されている技法を使用するように動作させることができる一実施態様例における環境100を示したものである。図に示されている環境100は、様々な方法で構成することができる2つの計算デバイス102、104の例を含む。計算デバイス102、104は、例えば、動作環境およびデバイスの例に関連してさらに説明するように、従来のコンピューター、(例えばデスクトップ・パーソナル・コンピューター、およびラップトップコンピューター等々)、移動局、娯楽機器、表示デバイス(例えばテレビジョン)に通信結合されたゲームコンソール、モバイル通信デバイス(例えば無線電話、タブレット)、ならびにネットブック等々として構成することができる。したがって計算デバイス102、104は、かなりの記憶装置およびプロセッサー資源(例えばパーソナルコンピューター、ゲームコンソール)を備えた全資源デバイスから、限られた記憶装置および/または処理資源(例えば従来のセットトップボックス、ハンドヘルドゲームコンソール)を備えた低資源デバイスまでの範囲に及ぶことができる。図に示されている実施態様では、計算デバイス102はゲームコンソールとして構成されており、また、別の計算デバイス104はモバイル通信デバイスとして構成されているが、上で説明したような他の実施態様も同じく企図されている。
[0018]計算デバイス102、104は、それぞれ入力/出力モジュール106、108を含むものとして示されている。入力/出力モジュール106、108は、個々の計算デバイスによる入力の認識および/または出力の準備に関連する機能を表している。例えば入力/出力モジュール106、108は、キーボード、マウスから入力を受け取るように構成することができ、それにより例えばジェスチャーを識別し、かつそのジェスチャーに対応する操作を実施する等々を実施ことができる。入力は、入力/出力モジュール106、108によって様々な異なる方法で検出することができる。
[0019]例えば入力/出力モジュール106は、図に示されているコントローラー110などのハードウェアデバイスとの接触対話を介して1つまたは複数の入力を受け取るように構成することができる。接触対話は、ボタンを押すこと、ジョイスティックを動かすこと、トラックパッド全体の運動、および表示デバイスのタッチスクリーンの使用(例えば計算デバイス102によるユーザーの手の指またはスタイラスの検出)等々を含むことができる。
[0020]入力の認識は、入力/出力モジュール106、108によって活用することができ、それにより個々の計算デバイス102、104によって出力されるユーザーインタフェースと対話して、例えばゲーム、アプリケーションと対話すること、インターネットを検索すること、および計算デバイス102、104の1つまたは複数の設定を変更すること等々を実施することができる。デバイスとの接触対話を含んだ様々な他のハードウェアデバイスも同じく企図されている。このようなハードウェアデバイスの例には、カーソル制御デバイス(例えばマウス)、リモート制御(例えばテレビジョンリモート制御)、モバイル通信デバイス(例えば計算デバイス104によって示されているように、計算デバイス102の1つまたは複数の操作を制御するように構成された無線電話)、およびユーザーまたは対象の一部との接触を含んだ他のデバイスがある。
[0021]また、入力/出力モジュール106、108は、ナチュラル・ユーザーインタフェース(NUI)をサポートすることも可能であり、それにより例えば接触を含むことができない対話を認識することができる。例えば計算デバイス102、104は、ユーザーによる特定のデバイスへの接触を必要とすることなく入力を検出することができるよう入力デバイスを活用することができ、それにより例えばマイクロホンを使用して音声入力を認識することができる。例えば入力/出力モジュール106、108は、音声認識を実施し、それにより特定の発声(例えば口頭指令)を認識し、かつその発声をもたらした特定のユーザーを認識するように構成することができる。
[0022]他の例では、入力/出力モジュール106、108は、カメラを使用することにより、ジェスチャー、表示される対象、および画像等々を認識するように構成することができる。カメラは、例えば、ゲームコンソール構成における計算デバイス102に対して示されているように、異なる透視画を捕獲することができ、したがって深度を決定することができるよう、複数のレンズを含むように構成することができる。例えば異なる透視画を使用して入力デバイスからの相対距離を決定することができ、したがってこの相対距離の変化を決定することができる。この異なる透視画は、深度知覚として個々の計算デバイス102、104によって活用することができる。当然、モバイル通信デバイスとして構成される計算デバイス104のカメラなどの深度知覚を使用することなく他の画像を活用することも可能である。画像を活用して、特定のユーザーの識別(例えば顔認識によって)、対象の識別、および探索の実施等々のための技法などの様々な機能を提供することができる。
[0023]入力/出力モジュール106、108は、入力を活用して、人体の特定の点(例えば48の骨格点)の特徴抽出と共に骨格のマッピングを実施し、それにより1人または複数のユーザー(例えば4人のユーザーを同時に)追跡して運動解析を実施することができる。例えば捕獲された画像は、入力/出力モジュール106、108によって解析することができ、それによりユーザーによってなされた1つまたは複数の運動を認識することができ、この認識には、その運動をもたらすために使用された身体部分についての認識、ならびにその運動をもたらしたユーザーについての認識を含む。一例は、ユーザーの手112の1本または複数の指の位置および運動および/またはユーザーの手112全体の運動の認識を通して示されている。運動は、入力/出力モジュール106、108によってジェスチャーとして識別することができ、それにより対応する操作を開始することができる。
[0024]計算デバイス102、104は、さらに、個々のリンキングモジュール114、116を含むものとして示されている。リンキングモジュール114、116は、デバイス間の1つまたは複数のネットワーク接続を開始し、かつ管理するための個々のデバイスの機能を表している。これらの接続を使用して、コンパニオン経験などの様々な異なる機能をサポートすることができる。例えばモバイル通信デバイスとして構成された計算デバイス104は、ユーザー経験を補足するために、ゲームコンソールとして構成された計算デバイス102と対話することができる。これには、ゲームコントローラーとしての計算デバイス104の使用、および計算デバイス102による同報通信コンテンツの出力を制御するための電子プログラムガイドの出力等々を含むことができる。したがって計算デバイス104との対話を使用して、計算デバイス102によって実施される1つまたは複数の操作を制御することができ、かつその逆に計算デバイス102との対話を使用して、計算デバイス104によって実施される1つまたは複数の操作を制御することができる。例えば計算デバイス102は、計算デバイス104による出力に対する補足的コンテンツを提供することができる。
[0025]リンキングモジュール114、116は、ネットワーク接続を開始し、かつ管理するための様々な異なる機能を含むことができる。例えばリンキングモジュール114、116は、デバイス間のローカルネットワーク接続118(例えばローカルWi−Fi接続)を形成し、かつ/またはネットワーク120を含んだリモート接続、例えばインターネットを介してアクセスすることができるサービスプロバイダー122を活用することによって「オーバー・ザ・クラウド」を形成するための機能を含むことができる。したがってこの第2の例では、サービスプロバイダー122は、同じくデバイスリンキング機能をサポートするサービスプロバイダー122の機能を表すリンキングモジュール124を同じく含むものとして示されている。
[0026]例えばリンキングモジュール114、116は、ネットワーク120のリモート接続を活用することができ、それによりサービスプロバイダー120と接触して、デバイスの発見、例えば通信するデバイスの「突き止め(locate)」を実施することができる。次に、このデータを使用してデバイス間のローカルネットワーク接続118をセットアップし、上で説明したコンパニオン経験をサポートすることができる。他の例では、ネットワーク120、例えばインターネットまたは他の広域ネットワークを含んだリモート接続を介して、全体的に、または部分的にこの接続を維持することができる。したがってリンキングモジュール114、116は、これらの接続を形成するために様々な異なるタイプの接続および技法を活用することができ、その詳細については、以下の図に関連して説明する。
[0027]概して、本明細書において説明されている機能は、すべて、ソフトウェア、ファームウェア、ハードウェア(例えば固定論理回路機構)またはこれらの実施態様の組合せを使用して実施することができる。本明細書において使用されている「モジュール」、「機能」および「論理」という用語は、通常、ソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せを表している。ソフトウェア実施態様の場合、モジュール、機能または論理は、プロセッサー(例えば1つまたは複数のCPU)上で実行されると規定されたタスクを実施するプログラムコードを表している。プログラムコードは、1つまたは複数のコンピューター可読メモリー素子に記憶することができる。以下で説明される技法の特徴は、プラットフォーム独立型であり、これらの技法は、様々なプロセッサーを有する様々な商用計算プラットフォーム上で実施することができることを意味している。
[0028]例えば計算デバイス102、104は、計算デバイス102、104のハードウェアに動作、例えばプロセッサー、および機能ブロック等々を実施させる実体(例えばソフトウェア)を含むことも可能である。例えば計算デバイス102、104は、計算デバイス、より詳細には計算デバイス102、104のハードウェアが動作を実施することになる命令を維持するように構成することができるコンピューター可読媒体を含むことができる。したがって命令は、ハードウェアを構成して動作を実施させるように機能し、この方法によれば、ハードウェアの形を変えて機能を実施することができる。命令は、コンピューター可読媒体によって、様々な異なる構成を介して計算デバイス102に提供することができる。
[0029]コンピューター可読媒体のこのような構成の1つは、信号を担っている媒体であり、したがってネットワークなどを介して計算デバイスのハードウェアに命令を伝送するように構成されている(例えば搬送波として)。また、コンピューター可読媒体は、コンピューター可読記憶媒体として構成することも可能であり、したがって信号を担っている媒体ではない。コンピューター可読記憶媒体の例には、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、光ディスク、フラッシュメモリー、ハード・ディスク・メモリー、および命令および他のデータを記憶するための磁気技法、光学技法および他の技法を使用することができる他のメモリー素子がある。
[0030]図2は、計算デバイス102、104およびサービスプロバイダー122をより詳細に示すシステム200を示したものである。コンパニオン経験をサポートするための、計算デバイス102と104の間の接続は、様々な方法で開始し、かつ維持することができる。例えば計算デバイス102、104の各々は、サービスプロバイダー122のネットワークサービスのユーザーアカウントと関連付けることができる。したがってユーザーは、ネットワーク120を介して信用証明書を提供することにより、余計なログイン情報、およびキーコード等々を必要とすることなく、サービスプロバイダー122のユーザーアカウントに単純にログインすることができる。これらの信用証明書は、次に、ユーザーを認証するために、サービスプロバイダー122のアカウント管理プログラム・モジュール202によって処理することができる。さらに、この認証を使用して、「ワン・タイム」ログインを介してサービスプロバイダー122(および他のサービスプロバイダー)の様々な異なるサービスにアクセスすることができ、例えば音楽サービス、メッセージングサービス、カレンダーリングサービス、およびコンタクトサービス等々などにアクセスすることができる。
[0031]認証されると、リンキングモジュール124の機能を実施し、例えばデバイス間の接続を形成することができる。例えばリンキングモジュール124は、デバイス間のネットワーク接続の形成に利用することができるネットワーク接続の詳細を記述しているデータを維持するように構成することができる。これには、例えば識別子、およびネットワーク名等々を使用してWi−Fi接続をサポートするために、ローカルネットワーク接続118の詳細を記述しているデータを含むことができる。また、このデータは、リモート接続の詳細を記述することも可能であり、それによりネットワーク120(例えばインターネット)を介して、IPアドレス、サポートされている帯域幅、位置情報、およびネットワーク・アクセス・タイプ等々などにアクセスすることができる。
[0032]データは、様々な方法で、様々な時間にサービスプロバイダー122に通信することができる。例えばデータは、認証の一部として通信すること、先行する通信から記憶すること、およびサービスプロバイダー122から受け取った要求に応答して提供すること等々が(例えば認証された後に)ができる。したがってリンキングモジュール114、116は、接続を形成するために活用することができる様々な異なるデータを通信することができる。
[0033]1つまたは複数の実施態様では、このデータを提供するかどうかを制御するために、個々のリンキングモジュール114、116に対して設定を実施することができる。例えば個々の計算デバイスを発見可能にするために構成設定を実施することができ、デフォルトとして「オン」を設定することができるが、他の例も同じく企図されている。
[0034]さらに、他の構成設定を使用して、計算デバイスのサービスプロバイダー122との生きた接続を維持するかどうかを制御することも可能であり、デフォルトとして「オフ」に設定することができる。これを使用して、デバイス接続特徴を維持することを望んでいないデバイスに対して、そのようにすることをサービスプロバイダー122が強制されないよう、資源の消費(例えばネットワーク120および/またはサービスプロバイダーによる消費)を少なくすることができる。例えばこの設定は、最初は「オフ」に設定することができる。しかしながら、接続が試行されると、この設定を自動的に「オン」に切り換えることができ、また、ユーザーが介在することなく「レディ」オープン接続を維持して、本明細書において説明されているリンキングを実施することができる。
[0035]接続を開始するために、計算デバイス102、104は、最初に、様々な方法で互いに「発見」することができる。例えばリンキングモジュール114、116は、最初に、Wi−Fi、Bluetooth(登録商標)または他の有線ネットワークもしくは無線ネットワークを介して利用することができるような他のデバイスをローカルネットワーク接続118を介して利用することができるかどうかを決定するように構成することができる。この発見は、個々のリンキングモジュール114、116によって予め記憶されている、個々の計算デバイス102、104の特定のネットワーク識別子の識別、ネットワークおよび他の情報などのデータを活用するように構成することができるが、他の例も同じく企図されている。
[0036]デバイスが発見されない場合、リンキングモジュール114、116は、接続のために別のデバイスを利用することができるかどうか発見するようサービスプロバイダー112に通信することができる。例えば計算デバイス102、104は、デバイスの位置を示すデータ、およびローカル接続を介してデバイスを発見するために使用することができるデータ等々を通信することができる。データは、特定の部屋の中などの特定の位置、活用GPS座標および他の位置決定機能を示すことができる。さらに、例えばデバイスがローカルネットワーク接続118によってサポートされる距離より長い距離を隔てて位置しており、そのためにローカルネットワーク接続118を利用することができない場合、この情報を使用して、例えばネットワーク120を介してリモート接続を確立するために確立すべき接続のタイプを決定することも可能である。
[0037]例えば計算デバイス104は、ネットワーク120を介してサービスプロバイダー122のリンキングモジュール124と通信し、ユーザーのアカウントに登録されている他のデバイス(例えば計算デバイス102)をリンキングのために利用することができるかどうかを決定することができる。サービスプロバイダー122は、次に、これらのデバイスのための追加ローカルネットワーク接続情報(例えば無線サブネットまたは有線サブネット)を含むことができる回答を返すことができる。計算デバイス104のリンキングモジュール116は、次に、その情報を使用してローカルネットワークを探索し、1つまたは複数の他のデバイスを見出すべく試行することができる。1つまたは複数の他のデバイスが見出されると、計算デバイス102、104は、通信のための直接リンクをローカルネットワーク接続118を介して交渉することができ、この直接リンクは、1つまたは複数の例では、ネットワーク120を介したサポートよりもさらに効果的に通信をサポートすることができる。例えばローカルネットワーク接続118は、ネットワーク120を介したリモート接続より高い帯域幅をサポートすることができる。さらに、使用するネットワークに関する決定プロセスの一環として費用考察事項を利用することも可能であり、例えばWi−Fiネットワーク対利用キャップを有する携帯電話ネットワークを利用することができる。
[0038]1つまたは複数の他のデバイスが見出されない場合、計算デバイス102、104は、ネットワーク120を介して様々な方法で通信することができる。例えば通信は、仲介としてサービスプロバイダー122を通すことができる。したがってこの例における通信は、インターネットまたは他の広域ネットワークを活用してデバイスを互いに接続することができる。リモート接続の他の例では、トンネリング技法をサポートして、例えば個々のリンキングモジュール114、116によって他のデバイスのIPアドレスを活用することによって通信することができ、それによりネットワーク120を介して、サービスプロバイダー122を仲介として積極的に働かせることなく直接通信することができる。
[0039]異なる通信が異なるネットワークを介して実施される混成モードなどの様々な他の例も同じく企図されている。例えばこのような混成モードを使用して、ネットワーク120を介したコマンドの通信をサポートし、また、ローカルネットワーク接続118を介したコンテンツの通信をサポートすることができ、また、それとは逆に、ネットワーク120を介したコンテンツの通信をサポートし、また、ローカルネットワーク接続118を介したコマンドの通信をサポートすることができる。通信のこの分割は、個々のネットワークによってサポートされる特定のネットワーク接続のトポロジーの制限などの様々な理由で実施することができる。
[0040]いくつかの例では、使用中にネットワーク接続の特性を変更することができる。したがってリンキングモジュール114、116、124は、これらの変更に対処するために様々な異なる方法で構成することができる。例えばリンキングモジュール114、116、124は、この変更をユーザーに通知する(例えばユーザーインタフェースを介して)ように構成することができる。さらに、リンキングモジュール114、116、124は、例えば分解能、通信指向である機能、およびそのネットワークによってサポートされていない特徴等々を低減するために、この状態では良好に働かない可能性のある特徴を調整する(例えば不能にする)ように構成することも可能である。
[0041]さらに、リンキングモジュール114、116、124は、効率を改善し、かつ断続的接続問題を取り扱うために使用することができるコマンドを保存するように構成することも可能である。この保存は、計算デバイス102、104ならびにサービスプロバイダー122で実施することができる。様々な他の例も同じく企図されている。
[0042]例えばリンキングモジュール114、116、124は、自動フォールバック回復をサポートするように構成することができる。例えばローカルネットワーク接続118は、計算デバイス102から遠ざかる方向への計算デバイス104の移動、およびネットワーク干渉等々などのために劣化し、または切断されることがある。このような例では、上で説明した混成フォーマット等々の使用を決定することができる代わりに、リンキングモジュール114、116、124は、ネットワーク120を介して接続を達成しなければならないことになる。ネットワーク120の信頼性が低下した場合、ユーザーが介在することなく、自動的にローカルネットワーク接続118を活用してデバイス間の通信をサポートすることができる点では、その逆も真である。
[0043]また、この変更を使用して、複数のネットワークのうちの別の1つが利用可能になったことの決定に応答してネットワークを切り換えることも可能である。例えば計算デバイス104は、ローカルネットワーク接続118がサポートされていない距離に計算デバイス104が位置した場合などでは、最初はインターネットを介して計算デバイス102と通信することができる。計算デバイス104が現在は計算デバイス102のローカルネットワーク範囲内に位置していることが決定されると、リンキングモジュール114、116は、それに応答して、ローカルネットワーク接続118を介して自動的に通信することができる。上で説明したように、この機能の使用に際しては、上で説明した費用考察事項などの様々な考察事項を考慮することができる。したがって様々な異なる機能を活用してデバイスリンキングをサポートすることができ、この活用を同じく使用して、上で説明したコンパニオン経験などの様々な追加機能をサポートすることができる。
[0044]リンキングモジュール114、116、124は、様々な他の機能をサポートすることも可能である。例えば上で説明したように、接続は、複数のデバイスの各々が他のデバイスにデータを送り、かつ他のデバイスからデータを受け取ることができるよう、双方向接続であってもよい。この機能は、様々な方法で活用することができる。例えば計算デバイス102は、現在の状態について、コンテンツの出力の中で計算デバイス104に知らせるように構成することができる。計算デバイス104は、次に、この情報を活用して、例えば関連するコンテンツを突き止めること、およびその関連するコンテンツと関連付けられた1つまたは複数のシーンに基づいてインターネット探索を実施すること等々のための機能を提供することができる。計算デバイス104は、デバイスによって活用して、例えば計算デバイス102による現時点における、計算デバイス104によるコンテンツの出力に対応するコンテンツの再生を継続するための機能をサポートすることができる状態を計算デバイス102に通信することができる点では、その逆も真である。
[0045]他の例では、リンキングモジュール114、116、124は、ローカルネットワーク接続118を介した通信およびネットワーク120を介したリモート通信の両方等々を保護するための様々な異なる暗号化方式をサポートすることも可能である。さらに、インターネットは、ネットワーク120に関連して説明されているが、これらの技法は、例えば単一領域、企業の一部、およびイントラネット等々などの様々な異なるタイプのネットワークをサポートすることも可能である。デバイスリンキング技法についてのさらなる説明については、以下の手順を参照されたい。
手順例
[0046]以下の説明は、上で説明したシステムおよびデバイスを利用して実施することができるデバイスリンキング技法を示したものである。手順の個々の態様は、ハードウェア、ファームウェアもしくはソフトウェア、またはそれらの組合せの中で実施することができる。手順は、1つまたは複数のデバイスによって実施される操作を明記した一組のブロックとして示されているが、個々のブロックによって実施される操作の順序は、必ずしも図に示されている順序に限定されない。以下の説明の一部には、図1の環境100および図2のシステム200が参照されている。
[0047]図3は、ネットワークサービスがデバイス間の接続を仲介するように構成されている一実施態様例における手順300を示す流れ図である。ネットワークサービスのユーザーアカウントと関連付けられた複数のデバイスの特性を記述しているデータは、ネットワークサービスで維持される(ブロック302)。例えばサービスプロバイダー122のリンキングモジュール124は、ユーザーのアカウントと関連付けられた計算デバイス102、104からデータを受け取ることができる。このデータは、デバイスの発見を許容するための個々のデバイスにおける設定の選択に応答して受け取ることができる。
[0048]通信は、デバイス間のローカルネットワーク接続を開始するために、複数のデバイスのうちの1つであって、複数のデバイスのうちの別の1つに関係し、かつ受け取る側のデバイスがその複数のデバイスのうちのその別の1つを発見するのに適したデータの一部を含んだ複数のデバイスのうちの1つによって受け取られるように形成される(ブロック304)。例えば通信は、デバイスを例えば有線サブネットまたは無線サブネットでローカルに突き止めるために使用することができるデータを含むことができ、その別のデバイスは、この有線サブネットまたは無線サブネットを介して、ローカルネットワーク接続を介してアクセスすることができる。また、通信は、デバイスをリモートに突き止めるために使用することができるIPアドレスなどのデータを含むことも可能である。次にこのデータを使用して、上で説明したコンパニオン経験などの様々な機能をサポートするために使用することができる接続を形成することができる。
[0049]図4は、別の計算デバイスと通信するために、ローカルネットワーク接続および/またはリモートネットワーク接続を活用するように計算デバイスが構成される一実施態様例における手順400を示す流れ図である。データは、ユーザーアカウントに関連付けられた別の計算デバイスを識別するネットワークサービスから、ユーザーアカウントと関連付けられた計算デバイスで受け取られる(ブロック402)。上で説明したように、データは、ネットワークアドレス、およびデバイスの名称等々などによって様々な方法でデバイスを記述することができる。
[0050]計算デバイスが、ローカルネットワーク接続を介してその別の計算デバイスを利用することができることを決定すると、それに応答して、その別の計算デバイスと共に計算デバイスによってローカルネットワーク接続が形成される(ブロック404)。例えば計算デバイス102は、利用可能であれば計算デバイス104と共にローカル無線接続(例えばWi−Fi)を形成することができる。
[0051]計算デバイスが、ローカルネットワーク接続を介して別の計算デバイスを利用することができないことを決定すると、それに応答して、その別の計算デバイスと共に計算デバイスによって非ローカルネットワーク接続が形成される(ブロック406)。上記の例を継続すると、ローカルネットワーク接続118を介して計算デバイス104を利用することができない場合、計算デバイス102は、ネットワーク120を介してネットワーク接続、例えばインターネットまたは他の広域ネットワークを形成することができる。様々な他の例も同じく企図されている。
[0052]図5は、コンパニオン経験がデバイスリンキングを介してサポートされる一実施態様例における手順500を示す流れ図である。コンパニオン経験をサポートするために、デバイスのネットワークサービスとの通信を介して利用可能性が発見され、この利用可能性は、デバイスとユーザーアカウントとの関連付けを介して決定される(ブロック502)。例えばモバイル通信デバイス(例えば無線電話)として構成された計算デバイス104は、サービスプロバイダー122と通信して、ゲームコンソールとして構成された計算デバイス102などのデバイスを利用することができるかどうかを決定することができる。
[0053]コンパニオン経験に含まれているデータを通信するために使用することができることを発見した結果として、ネットワークサービスから受け取ったデータを使用して、計算デバイスとデバイスの間のローカルネットワーク接続が開始される(ブロック504)。例えば計算デバイス104は、有線サブネットまたは無線サブネットを記述したデータを受け取ることができ、計算デバイス102は、この有線サブネットまたは無線サブネットを介してアクセスすることができる。様々な他の例も同じく企図されており、その例については、以下の実施態様例を参照されたい。
実施態様例
[0054]以下は、上で説明した技法の一実施態様例を示したものである。1つまたは複数のコンパニオン経験シナリオでは、ユーザーは、コンソール上でビデオカタログ等々を検索し、次に映画をピックアップし、それを借り、かつ再生するためのデバイスを使用することができる。映画を見ている間、ユーザーは、モバイル通信デバイスまたは他のデバイスを使用して映画を制御することができ、例えば再生/一時停止、速送りおよび巻戻し等々を制御することができる。また、ゲームコンソールは、現在の映画の状態、およびコンソール上でのタイトル変化等々などのコンソール上で生じていることについてデバイスに知らせるように構成することも可能である。ユーザーは、デバイスからコンソール上にタイトルを起動することができ、それにより例えばコンソール上で走っているタイトルのタイトルIDを得ることができる。
[0055]デバイス間の通信に関して、メッセージ交換は、様々なカテゴリーに分類することができ、それの例には、
・Operations:どうすれば別のデバイス上のワークをトリガーすることができますか?
・Notifications:どうすれば別のデバイス上の状態変化を通知されることができますか?
がある。
[0056]システムに生じる可能性がある様々な通知が存在している。
・Active Title Changed:新しいタイトルが起動されている。この通知は、コントローラー入力またはコンパニオンコマンドのいずれかを介して新しいタイトルがコンソール上に起動されるとき生じる。
・Media State Change:現在のID、再生速度、再生ヘッド位置または再生/一時停止状態などの再生ヘッド状態の何らかの状況が変更されている。この通知は、位置変数をデバイス全体にわたって同期した状態に維持するために周期的に生じ、また、変化がユーザー入力に基づいて生じると(例えば停止ボタンが押されると)、直ちに生じる。
[0057]システム内で発することができる様々な操作が存在している。
・Launch Title:任意選択で、表示するメディアコンテンツ片を示すために使用されるコマンド・ライン・アーギュメントを使用してコンソール・タイトルを起動する。このコマンドは、新しいコンテンツ片がガイドまたは探索結果から選択されると、コンパニオンデバイス(以下の説明では「コンパニオン」とも呼ばれている)によって発することができる。
・Get Active Title:現在走っているタイトルについてコンソールに問い合わせる。これは、コンパニオンが最初にコンソールに接続して初期タイトルIDを獲得する際に呼び出すことができ、また、顧客がこの情報を明確にリフレッシュすると(例えば休止状態から復帰すると)、いつでも呼び出すことができる。このコマンドの結果は、Active Title Changed通知と同じ情報を含む。
・Send Input:コンソールに入力コマンドを送る。トランスポート制御(例えば再生、一時停止、停止)がクリックされると、コンパニオンによって必ずこのコマンドが発せられる。
・Get Media State:現在の媒体状態についてコンソールに問い合わせる。これは、コンパニオンが最初にコンソールに接続して初期媒体状態を獲得する際に呼び出され、また、顧客がこの情報を明確にリフレッシュする必要がある場合に(例えば休止状態から復帰する場合に)、必ず呼び出される。このコマンドの結果は、Media State Changed通知と同じ情報を含む。
媒体状態
[0058]プロトコルおよびAPIの両方に使用される、この例における一次データ構造は媒体状態構造である。この構造は、現在の再生ヘッド状態および媒体アプリケーション/タイトル内で再生中の現在のIDを表す。Media Stateは、コンソールMedia APIから引き出すことができ、以下の欄/属性を含む。
Figure 2015501477
[0059]ScourTransportStateは、コンソール媒体APIから得られる列挙である。
enum ScourTransportState
{
//未定義
SCOURTRANSPORTSTATE_INVALID = 0,
//停止が受け取られたか、あるいはコンテンツの終わりに到達した
SCOURTRANSPORTSTATE_STOPPED = 1,
//再生/非一時停止が受け取られたが、再生は未だ始まっていない
SCOURTRANSPORTSTAT_STARTING = 2,
//コンテンツは現在再生中である
SCOURTRANSPORTSTATE_PLAYING = 3,
//一時停止が受け取られ、再生/非一時停止が受け取られるまで再生が一時中断される
SCOURTRANSPORTSTATE_PAUSED = 4,
//コンテンツ・バッファリングが生じており、バッファリングが終了するまで再生が一時中断される
SCOURTRANSPORTSTATE_BUFFERING = 5,
};
[0060]媒体が再生されていない(例えばゲームが走っている)ことを示すための追加列挙値は、以下のように構成することができる。
‖媒体が再生されていない
SCOURTRANSPORTSTATE_NOMEDIA=−1
この値が使用される場合、媒体状態の残りの欄は定義されない。
[0061]TransportCapabilitiesは、メディアプレーヤーが実施することができる操作を示すフラグ列挙である。
enum TransportCapabilities
{
// SendInput(Stop)に応答することができる
TRANSPORTCAPABILITIES_CANSTOP = 0x1,
// SendInput(Pause)に応答することができる
TRANSPORTCAPABILITIES_CANPAUSE = 0x2,
// SendInput(Rewind)に応答することができる
TRANSPORTCAPABILITIES_CANREWIND = 0x4,
// SendInput(FastForward)に応答することができる
TRANSPORTCAPABILITIES_CANFASTFORWARD = 0x8,
// SendInput(Play)に応答することができる
TRANSPORTCAPABILITIES_CANPLAY = 0x10,
// SendInput(TogglePlayPause)に応答することができる
TRANSPORTCAPABILITIES_CANPLAYPAUSE = 0x20,
// SendInput(SkipForward)に応答することができる
TRANSPORTCAPABILITIES_CANSKIPFORWARD = 0x40,
// SendInput(SkipBackward)に応答することができる
TRANSPORTCAPABILITIES_CANSKIPBACKWARD = 0x80,
// SendInput(Seek,Position)に応答することができる
TRANSPORTCAPABILITIES_CANSEEK = 0x100,
// TODO、認可:???
TRANSPORTCAPABILITIES_ISLIVETRANSPORT = 0x200,
}
通信
[0062]コンパニオンシナリオを可能にするために使用される通信スタックは、ローカル低レイテンシTCPおよびUDPメッセージングとクラウドベースサービスを結合することができ、それにより機密保護およびデバイス発見、ならびにライン・オブ・サイトIP接続性を有していないデバイス間の通信をサポートすることができる。
[0063]通信は、クラウド、例えばネットワークサービスを介して調整することができる。コンソールは、コンパニオンデバイスによって発見される順にコンパニオンサービスに登録する。コンパニオンデバイスは、コンパニオンサービスを使用して、コンパニオンデバイスが通信することができるデバイスを決定する。コンソールとコンパニオンデバイスの間にライン・オブ・サイトIP接続性が存在している場合、そのデバイスとコンソールの間の後続する通信は、サービスが介在することなく、ローカルTCPおよびUDPメッセージングを介して実施することができる。コンソールとコンパニオンデバイスの間にライン・オブ・サイトIP接続性が存在していない場合、レイテンシがより高くなるが、コンパニオンサービスを介して通信することができる。コンパニオンアプリケーションは、低レイテンシ通信スタックを利用することができるかどうかに基づいて、そのユーザーインタフェースに適合することができ、クラウドベースのメッセージングを利用している場合、「意味をなさない」という特徴を不能にすることができる。
[0064]デバイス発見/ペアリング/許可は、コンパニオンサービスを介して実施することができる。システムは、これを以下のようにして実施することができる。
1.コンパニオンデバイスは、Login IDに対応する認証されたネットワークIDを使用する。
2.所与のデバイスは、そのデバイス上の現在のユーザーがログインしているコンソールと通信する。送信勧誘コードまたは他のより進歩したユーザーインタフェースを使用したゲスト・ペアリング/許可をサポートすることも可能である。
[0065]コンソールは、ログオンされたユーザーのセットに変更が生じると、コンパニオンサービスに再登録することができる。この登録の一部は、一組のアクティブユーザー、コンソールのIPアドレス、およびローカルコンパニオンコマンドを聞くために使用されるTCPポートを含むことができる。登録されると、コンパニオンサービスは、コンソールが確信をもってサインするために使用することができる保護セッションキーおよび暗号化されたメッセージをローカルサブネット上に返すことができる。
[0066]コンパニオンデバイスがセッションに加わるべく試行する場合、コンパニオンデバイスはコンパニオンサービスと接触し、コンパニオンサービスは、次に、現在のユーザーがログインしているコンソールのネットワークアドレス、ならびにサインするために使用することができ、また、メッセージを封印するために使用することができる保護セッションキーの両方をローカルサブネット上に返す。
[0067]サービスとの通信は、HTTPSを介して実施することができる。ライン・オブ・サイトIP接続性を利用することができる場合、後続する通信は、コマンドに対してはTCP/IPを使用して実施することができ(コンソールのTCP/IPアドレスを使用して)、また、通知に対してはUDP同報通信を使用して実施することができる(コンソールのIPサブネットアドレスを使用して)。ライン・オブ・サイトIP接続性を利用することができない場合、後続する通信は、コンパニオンサービスを介して実施することができる。
[0068]1つまたは複数の実施態様では、コンソールに対するTCP接続性は可能であっても、デバイスに対するUDP同報通信は、コンソールおよびコンパニオンデバイスがIPルーターによって分離されているために不可能であることがあり得る。その場合、コンパニオンデバイスは、コンパニオンサービスを介して通知を受け取ることができるが、依然としてコマンドの発行(およびそれらに対する応答の受取り)は、コンソールへの直接TCPを介して実施される。
機密保護
[0069]ローカルサブネット(例えばWi−Fiを介したWEPまたはWPA)によって提供される機密保護に加えて、システム内における通信は、以下のようにして保護することができる。
コンパニオンデバイス−コンパニオンサービス
[0070]コンパニオンデバイスとサービスの間の通信は、有効コンソールIDに対応するネットワークIDを使用して認証することができるHTTPSを介して実施することができる。例えばモバイル通信デバイスは、XBLなどのリンキングサービスから認証(例えばSAML)送信権を取得することができ、次にモバイル通信デバイスは、この認証送信権をコンパニオンサービスに提示する。コンパニオンサービスは、次に、サービスに対する後続する呼出しのための1つまたは複数の機密保護送信権を発行する。例えばサービスに対する後続する呼出しのために1つの送信権を使用することができ、また、コンソールおよびモバイル通信デバイスに対する呼出しのために他の送信権を使用し、それによりメッセージを認証することができる。
コンソール−コンパニオンサービス
[0071]コンソールとサービスの間の通信は、HTTPSを介して実施することができる。XBLにログインされたコンソール上のユーザーのセットが変化すると、コンソールは、XBLからSAML送信権を取得することができ、次にコンソールは、このSAML送信権をコンパニオンサービスに提示する。コンパニオンサービスは、次に、サービスに対する後続する呼出しのための機密保護送信権を発行する。
コンパニオンデバイス−コンソール/コンソール−コンパニオンデバイス
[0072]コンパニオンデバイスまたはコンソールがコンパニオンサービスを認証すると、デバイスは、次に、互いの通信のための保護セッションを確立することができる。セッションは、複数のデバイスが通信のために使用することができる保護文脈と見なすことができる。個々のセッションは、
1.セッションID(guid)であって、この通信セッションを独自に識別するサービスによって追跡されるセッションID
2.サインするために使用される128ビットセッションキー、およびローカルサブネットを介して送られる暗号化されたメッセージ
を有することができる。ログオンされたユーザーのセットがコンソール上で変化すると、コンソールは、コンパニオンサービスを使用して必ず再認証することができ、その前のユーザーがログオフしている場合、新しいセッションキーをそのセッションのために生成することができる。
[0073]ローカルサブネット上のデバイス間で送られるメッセージは、完全性が保護され、かつ暗号化されたメッセージであってもよい。完全性保護は、HMAC−SHA1を使用して提供することができ、一方、暗号化は、CBCモードのAES−128を使用して実施することができる。シーケンス番号を使用して再生保護を実施することも可能である。受信側は、「最高点」数およびより小さい数字を有する拒絶メッセージを維持することができる。
コンソール実施態様
[0074]コンパニオンのためのほとんどの通信スタックは、タイトルに露出される最小のAPIセットで、コンソール・オペレーティング・システムの中で実施することができる。
コンソールAPI
[0075]コンパニオンAPIは、タイトルによって呼び出すことができる。APIは、「LrcSetMediaState」と呼ぶことができる。LrcSetMediaStateは、再生ヘッド状態またはコンテンツIDが変化したことを通信するためにメディアプレーヤータイトルによって呼び出される。この機能は、
1.コンテンツIDの明確な変化(例えば同じコンソール・タイトル/app内での最初の映画の再生から次の映画の再生への変化)に応答して
2.トランスポート制御要求(例えば停止が押された、FF/REWのために再生速度が変化した)の処理に応答して
3.ストリームの末端への到達またはバッファリングの開始もしくは終了を含む、通常の再生による再生ヘッド状態の進行に応じて周期的に
呼び出すことができる。このAPIの実施態様は、アプリケーションの実行を混乱させることなく、またはタイトル資源を消費することなく、再生ヘッド状態に対する後続する要求を満たすために、最後の呼出しで引き渡されたデータをしまっておくことができる。
[0076]このAPIの実施態様は、ヒューリスティックスを実施して、生じた変化のタイプに基づいて、実際に媒体状態変化通知を送る時期を決定することができる。概して、
1.位置以外の欄に対する変化は、利用することができる次の機会に送られる通知をトリガーすることができる。
2.位置欄に対してのみ生じた変化は、送られる通知をトリガーすることはできない。その代わりに、コンソール・オペレーティング・システムは、周期的媒体状態変化通知を送ることができ、また、次の状態変化で、最後の位置変化をピックアップすることができる。ローカルサブネットを介した周期的変化の場合、10秒毎にこれらの変化を送ることができる。クラウドを介した周期的変化の場合、30秒毎にこれらの変化を送ることができる。
[0077]APIのシグネチャーは以下の通りである。
struct LrcMediaState
{
ULONGLONG duration; //100ns単位における総コンテンツ継続時間
ULONGLONG minSeek; //100ns単位における最小シーク位置
ULONGLONG maxSeek; //100ns単位における最大シーク位置
ULONGLONG position; //100ns単位における現在の再生位置
float fRate; //現在の再生速度(1.0f==通常の再生)
ScourTransportState eTransportState; //現在のトランスポート状態
TransportCapabilities eTransportCapabilities;
// Wire repは「mediaType:mediaAssetId」である
BYTE MediaAssetId[256]; //ヌル終了UTF-8
// TODO:Minは、彼がコンソール上のZuneから正しい資産idを得ることができることを保障する
};
機能は、成功するとS_OKを返し、失敗するとE_FAILを返す。
LrcGetInput/LrcGetInputWithSeek
[0078]LrcGetInput/LrcGetInputWithSeek APIは、タイトルの入力ポーリングルーチンの一部として呼ばれるように設計されている。LrcGetInputは、コンパニオンデバイスから制御コマンドを得るためのシークコマンドをサポートすることができないタイトルから呼ばれるように設計されている。LrcGetInputWithSeekは、「シーク」操作をサポートすることができるタイトルのために設計されている。
HRESULT WINAPI LrcGetInput(
IN OUT DWORD* pdwUserlndex,
IN DWORD dwFlags,
OUT XINPUT_KEYSTROKE *pKeystroke
);
HRESULT WINAPI LrcGetInputWithSeek(
IN OUT DWORD*pdwUserlndex,
IN DWORD dwFlags,
OUT XINPUT_KEYSTROKE *pKeystroke,
OUT ULONGLONG *pSeekPos
);
入力事象が存在している場合、機能はERROR_SUCCESSを返す。入力事象が存在していない場合、機能はERROR_EMPTYを返す。
[0079]pdwUserIndexは、署名して入った、デバイスと関連付けられたユーザー(例えばゲーマー)のインデックスに対するポインターであり、次の利用可能入力事象を任意のユーザーから取り出すために、0からXUSER_MAX_COUNT−1までの範囲の値にするか、またはXUSER_INDEX_ANYに設定することができる。
[0080]復帰すると、pdwUserIndexによって指示された変数は、入力事象の原始であったデバイスと関連付けられたゲーマーのインデックスを含むことができる。これは、pdwUserIndexによって指示された変数がXUSER_INDEX_ANYを入力上に含んでいると有用である。
[0081]dwFlagsパラメーターは、XINPUT_FLAG_ANYDEVICEであっても、またはpdwUserIndexが値XUSER_INDEX_ANYを有している場合はXINPUT_FLAG_ANYUSERであってもよい。
[0082]pKeystrokeパラメーターは、XINPUT_KEYSTROKE構造に対する非ヌルポインターであってもよい。
[0083]pSeekPosパラメーターは、ULONGLONGに対する非ヌルポインターであってもよい。
[0084]LrcGetInputの場合、機能がERROR_SUCCESSを返すと、pKeystrokeによって参照される構造は、この入力事象に対してXINPUT_KEYSTROKEデータを含むことができる。
[0085]LrcGetInputWithSeekの場合、
1.入力がシークコマンドであった場合と、pSeekPosによって参照されるULONGLONGは、100ns単位の所望の位置を含むことができ、また、pKeystrokeによって参照される構造は未定義であってもよい。
2.入力はシークコマンドではなかったが、機能がERROR_SUCCESSを返した場合、pSeekPosによって参照されるULONGLONGは−1であってもよく、また、pKeystrokeによって参照される構造は、この入力事象に対してXINPUT_KEYSTROKEデータを含むことができる。
[0086]これらのAPIのいずれの場合も、入力に対応するヒューマン・インタフェース・デバイス(HID)コードは、標準ハードウェアコードである。UserIndexは、コンパニオンデバイスの現在のユーザーに基づいて、ゼロないし3であってもよい正しいインデックスに設定することができる。新しいキーが押されなかった場合(また、GetInputWithSeekの場合で、シーク情報が存在しない場合)、APIはERROR_EMPTYを返す。pdwUserIndexが入力上にIDを含んでおり、それに対する対応するログオンユーザーが存在しない場合、これらのAPIはERROR_DEVICE_NOT_CONNECTEDを返す。
コンソール内のコンパニオン構成要素の実施態様
[0087]ブート時に、コンソールは、XとYの間のダイナミックポート上に、コマンドのための入り接続をサポートするためのTCPリスナーソケットを生成する。リスン待ち行列の長さは1であり、また、コンソールは、資源を節約するために一度に1つの入り接続を受け取ることができる。これは、コンソールは、入りコマンド要求を処理し、かつ対応する応答を送った後、リスナーソケットに対して次のアクセプトコールを実施する前にTCP接続を閉じることができることを意味している。
[0088]ローカルサブネットを介して通知を送る場合、コンソールは、UDPソケットを生成し、送るための呼出しを実施した後、ソケットを閉じることができる。TCPソケットおよびUDPソケットの両方の使用は、開いているソケットの数を少なくするために最適化され、この最適化は、コンソール内で走っているコードに対する正しい最適化であることに留意されたい。プロトコルは、複数のメッセージ交換の間、実施態様がTCP接続を開いた状態に保持することができるように設計することができる。上で説明したソケットの使用に加えて、コンソールがコンパニオンサービスと対話するためにもう1つソケットを消費することができる。
[0089]XBLアカウント/プロファイルのログインまたはログアウトを必要とするログオンが変化する毎に、コンソールはコンパニオンサービスと接触して、ユーザーのセットがそのコンソール上で変化したことを示す。また、これは、コンソールのローカルIPアドレスおよび入りコマンド要求を聞くために使用されるTCPポートの登録を必要とする。さらに、懸案のCOMETスタイルHTTP要求は、非ライン・オブ・サイトIPデバイスからの入り要求に応答するために、サービス上に「留めておく」ことができる。この要求は、30秒毎に再発行することができ、また、コンソール上のログオンセットが変化すると終了する。
通信資源消費
[0090]コンソールからの総ソケット使用は、
・1個の静的に割り当てられる、ログオンセット登録およびCOMET事象獲得の両方のために使用される、サービスとのHTTP通信のためのアウトバウンドTCPソケット
・1個の静的に割り当てられる、ローカルサブネット要求のためのTCPリスンソケット
・1個の動的に割り当てられる、入りローカルサブネット要求を処理するためのTCPストリームソケット
・1個の動的に割り当てられる、通知メッセージを送るためのUDPソケット
である。
[0091]これは、少なくとも2個のソケットが消費され、また、最大4個(TCP応答の送信に先立ってUDP通知の送信が許容される場合)、または3個(TCP接続が切り離されるまで通知の送信が延期される場合)のソケットが消費されることを意味している。
プロトコル概説
[0092]プロトコルは、コンパニオンデバイスからコンソールに向かって開始される直接TCP接続を使用して、コンソール上での呼出し操作をサポートする。プロトコル設計は、TCP接続毎に複数の懸案要求をサポートし、かつ順序外れの応答引渡しをサポートするが、本発明のコンソール実施態様は、最初の応答を送った後、接続を閉じることができる。
[0093]プロトコルは、コンソールからコンパニオンデバイスへのUDP同報通信を使用して、通知の送信をサポートする。TCPまたはUDPを介して、以下で説明する署名/暗号化規則を使用して、以下のメッセージフォーマットを安全に送ることができる。
メッセージフォーマット
[0094]メッセージは、ネットワークを介して、2進ビッグ・エンディアン・フォーマットで符号化することができる。個々のメッセージ欄は、それらの固有の境界上で整列させることができる(すなわち2バイト境界上のWORD、および4バイト境界上のDWORD等々)。固定長列が「\0」で終了するUTF−8テキストとして符号化され、作成者によって縞をつけることができる先頭のユニコードBOMは含んでいない。
[0095]TCP接続およびUDPペイロードの両方に使用するため保護フレーミングプロトコルが定義されている。これらのメッセージのフォーマットは、
1.バージョン情報、機密保護データ、アドレス情報およびメッセージIDを含んだ固定長のMessage Header
2.メッセージタイプ特化データを含んだ可変長のMessage Body(メッセージボディの長さは、メッセージヘッダー内の欄によって示される)
3.メッセージヘッダーおよびメッセージボディ上にHMAC−SHA1シグネチャーを含んだ固定長のMessage Trailer
を含む。
Message Headers
[0096]メッセージは、32バイトメッセージヘッダーで始まり、その内容は以下の通りである。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = <残りのメッセージ中のバイト数>
DWORD SequenceNumber = <再生検出、相関応答のために、また暗号化のための初期化ベクトルとして使用され、メッセージ毎に増分される>
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的であり、OxFFFFFFFFは同報通信を示す>
DWORD From = <デバイスidメッセージの出所であり、応答をアドレス指定するために使用される>
DWORD MessageKind = <以下を参照>
DWORD MessageType = <以下を参照>
[0097]「To」および「From」メッセージヘッダー欄は、個々のコンパニオンデバイスが独自のシーケンス番号を有しているため、再生検出をサポートするために使用される。要求の中に「From」欄がない場合、コンソールは、メッセージを送った顧客を決定することができず、したがって正しいシーケンス番号を決定することができない。応答の中に「To」欄がない場合、アタッカーは、可能性として、異なるデバイスに対して、あるデバイスのために意図されたメッセージを再生することができる。
[0098]メッセージヘッダーには、MessageKindおよびMessageTypeの2つのディスクリミネーター欄が存在している。MessageKind欄は、メッセージが、
操作の実施を要求するために使用される[0x00000001]Requestメッセージ(例えばコマンド、問合せ、接続管理)であるかどうか、または
特定の要求メッセージに応答して実施された操作の結果を伝える[0x00000002]Responseメッセージであるかどうか、または
状態変化事象を伝える[0x00000003]Notificationメッセージであるかどうか
を示している。
[0099]MessageType欄は、所与の操作または通知のフォーマットおよびセマンティクスを識別する。サポートされるメッセージタイプの一リスト例は、
[0x80000001] JoinSession (要求および応答)
[0x80000002] LeaveSession (要求および応答)
[0x00000001] GetActiveTitleld ([要求および応答)
[0x00000002] LaunchTitle (要求および応答)
[0x00000003] SendInput (要求および応答)
[0x00000004] GetMediaAndTitleState (要求および応答)
[0x00000005] NonMediaTitleStateNotification (通知)
[0x00000006] MediaTitleStateNotification (通知)
[00100]応答メッセージは、それらのメッセージヘッダーの中に追加欄を有していなければならない。
DWORD ResponseTo = <これが対応する要求のSequenceNumber>
DWORD ResultCode = <HRESULTベースの状態コード>
[00101]「応答」メッセージは、HRESULTのように処理される4バイト結果コードで始まる。詳細には、OxOOOOOOOO/S_OKの値は、要求された操作の実行が成功したことを表している。特定の結果コードは、応答メッセージタイプ毎に定義される。
Message Trailers
[00102]メッセージは20バイトで終了する。
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
Message Bodies
[00103]この部分は、プロトコルによってサポートすることができる特定のメッセージタイプのフォーマットおよびセマンティクスを定義する。SequenceNumberメッセージヘッダー欄の後にバイトが続き、また、メッセージトレーラーに先行し暗号化される。
JoinSession Request Message
[00104]このメッセージは、(a)プロトコルバージョンが一致していることを保証し、かつ(b)インバウンドおよびアウトバウンドメッセージのために使用するための初期シーケンス番号を得るために、コンパニオンデバイスからコンソールへ送られる。JoinSession要求/応答は、コンパニオンデバイスから何らかの追加メッセージがローカルサブネットを介してコンソールに送られる前に生じてもよい。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = <残りのメッセージ中のバイト数>
DWORD SequenceNumber = 0xnnnnnnnn <無作為初期値>
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000001 <要求>
DWORD MessageType = 0x80000001 <JoinSession>
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
JoinSession Response Message
[00105]このメッセージは、(a)プロトコルバージョンが一致していることを保証し、かつ(b)インバウンドおよびアウトバウンドメッセージのために使用するための初期シーケンス番号を伝えるために、コンパニオンデバイスからコンソールへ、また、コンソールからコンパニオンデバイスへ送られる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = <残りのメッセージ中のバイト数>
DWORD SequenceNumber = 0xnnnnnnnn <常に要求のSeqeuenceNumber+1>

DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的であり、JoinSession Requestメッセージ中のFromと同様>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000002 <応答>
DWORD MessageType = 0x80000001 <JoinSession>
DWORD ResponseTo = 0xnnnnnnnn
DWORD ResultCode = <以下を参照>
DWORD SupportedProtocolVersion = 0xnnnnnnnn
DWORD ClientSequenceNumber = <顧客が次の要求のために使用することができるシーケンス番号>
DWORD NotificationSequenceNumber = <サーバーが次のUDP通知メッセージのために使用することができるシーケンス番号>
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
[00106]ResultCodeがS_OK(0)である場合、要求されたプロトコルバージョンがサポートされる。また、
1.SupportedProtocolVersionは、このサーバーによってサポートされるプロトコルバージョン番号を含む。
2.ClientSequenceNumberは、顧客が次のメッセージをサーバーに送るために使用することができるシーケンス番号を含む。
3.NotificationSequenceNumberは、UDPを介してサーバーによって送られる次の通知メッセージのためのシーケンス番号を含む。
ResultCodeがE_VERSION_MISMATCH(0x8hhhhhhh)である場合、セッションは結合されておらず、SupportedProtocolVersion欄のみが有効である。ResultCodeがE_TOO_MANY_CONNECTIONS(0x8hhhhhhh)である場合、セッションは結合されておらず、SupportedProtocolVersion、ClientSequenceNumberおよびNotificationSequenceNumberは無効である。
GetActiveTitleId Request Message
[00107]このメッセージは、コンソール上でアクティブタイトルIDを問い合わせるためにコンパニオンデバイスからコンソールへ送られる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn

DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000001 <要求>
DWORD MessageType = 0x00000001 <GetActiveTitleId>
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
GetActiveTitleId Response Message
[00108]このメッセージは、GetActiveTitleId要求メッセージに応答してコンパニオンデバイスからコンソールへ、また、コンソールからコンパニオンデバイスへ送られ、現在走っているタイトルを示す。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的であり、GetActiveTitleId Requestメッセージ中のFromと同様>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000002 <応答>
DWORD MessageType = 0x00000001 <GetActiveTitleId>
DWORD ResponseTo = 0xnnnnnnnn
DWORD ResultCode = 0x00000000
DWORD TitleId = 0xnnnnnnnn
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
TitleIdは、コンソール上で現在走っているタイトルのためのコンソールTitle IDである。
LaunchTitle Request Message
[00109]このメッセージは、明記されたコマンド・ライン・アーギュメントを有するタイトルを起動するためにコンパニオンデバイスからコンソールへ送られる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000001 <要求>
DWORD MessageType = 0x00000002 <LaunchTitle>
DWORD Titleld
DWORD LaunchParameterLength; (使用せず)
BYTE[900] LaunchParameter (ヌル終了UTF-8テキスト)
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
TitleIdは、コンソール上で現在走っているタイトルのためのコンソールTitle IDである。LaunchParameter欄は、通常、一旦タイトルが起動すると、再生すべき内容を識別する。この欄の正確な翻訳はタイトル特化である。
LaunchTitle Response Message
[00110]このメッセージは、タイトル起動の成功/失敗を示すためにコンソールからコンパニオンデバイスへ送られる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的であり、LaunchTitle Requestメッセージ中のFromと同様>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000002 <応答>
DWORD MessageType = 0x00000002 <起動>
DWORD ResponseTo = 0xnnnnnnnn
DWORD ResultCode = 0x00000000
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
SendInput Request Message
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000001 <要求>
DWORD MessageType = 0x00000003 <SendInput>
DWORD ValidFields = 0x01 - VirtualKey, 0x02 - SeekPos, 0x03 - Both
DWORD VirtualKey = <XDKからの仮想キーコード>
ULONGLONG SeekPosition
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumberおよび後続する欄の暗号化バージョン>
ValidFields欄は、要求がキーストロークを含んでいる場合は0x01の値を有しており、要求がシークコマンドを含んでいる場合は0x02の値を有しており、かつ要求がそれらの両方を含んでいる場合は0x03の値を有している。VirtualKeyは、XINPUT_KEYSTROKEにおけるその定義と全く同じである。SeekPositionは、シークコマンドを伝えるために使用される。この要求メッセージがシークを示していない場合、この欄は、OxFFFFFFFFFFFFFFFF(−1)の値を有することができる。
SendInput Response Message
[00111]このメッセージは、SendInput操作が成功したこと/失敗したことを示すためにコンパニオンデバイスからコンソールへ、また、コンソールからコンパニオンデバイスへ送られる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的であり、SendInput Requestメッセージ中のFromと同様>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000002 <応答>
DWORD MessageType = 0x00000003 <SendInput>

DWORD ResponseTo = 0xnnnnnnnn
DWORD ResultCode = 0x00000000
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
GetMediaAndTitleState Command Message
[00112]このメッセージは、コンソール上の媒体状態を問い合わせるためにコンパニオンデバイスからコンソールへ送られる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000001 <要求>
DWORD MessageType = 0x00000004 <GetMediaAndTitleState>

BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumber、および後続するメッセージヘッダー欄およびメッセージボディ全体の暗号化バージョン>
GetMediaAndTitleState Response Message
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = <デバイスidメッセージが意図されている目的であり、GetMediaAndTitleState Requestメッセージ中のFromと同様>
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000002 <応答>
DWORD MessageType = 0x00000004 <GetMediaAndTitleState>
DWORD ResponseTo = 0xnnnnnnnn
DWORD ResultCode = 0x00000000
DWORD TitleId
ULONGLONG Duration (100ns単位)
ULONGLONG Position (100ns単位)
ULONGLONG MinSeek (100ns単位)
ULONGLONG MaxSeek (100ns単位)
FLOAT Rate (再生速度、1.0==通常)
DWORD TransportState (以下のコンソールAPI内のScourTransportState列挙参照)
DWORD TransportCapabilities (以下のコンソールAPI内のTransportCapabilities列挙参照)
DWORD MediaAssetIdLength; (使用せず)
BYTE[256] MediaAssetId (ヌル終了UTF-8テキスト)
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumberおよび後続する欄の暗号化バージョン>
[00113]ResultCodeがS_OK(0)で、かつTransportStateがSCOURTRANSPORTSTATE_NOMEDIAではない場合、他の媒体状態欄(Duration、Position、…、MediaAssetId)はすべて有効である。ResultCodeがS_OK(0)で、かつTransportStateがSCOURTRANSPORTSTATE_NOMEDIAである場合、現在、コンソール上には媒体は存在せず、残りの媒体状態値は定義されない。
NonMediaTitleStateNotification Message
[00114]NonMediaTitleStateNotificationメッセージは、非媒体イネーブル・コンソール・タイトル(例えばゲーム)が、現在、コンソール上で走っている最中であることを示す。NonMediaTitleStateNotificationメッセージは、以下の場合に、コンソールによってUDP同報通信を介して送られる。
1.非媒体イネーブル・タイトルが走っている最中である(例えばゲーム)。および
2.更新時間間隔(10秒)のためにNonMediaTitleStateNotificationまたはMediaTitleStateNotificationが未だ送られていない。または非媒体イネーブル・タイトルが起動されている。
[00115]タイトルの変更は、タイトルIDを伝えるクラウドに対して再認証を強制するため、このメッセージは、コンソールからクラウドへ送る必要はない。このメッセージは、クラウドからコンパニオンデバイスへ送ることができる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = 0xFFFFFFFF
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000003 <通知>
DWORD MessageType = 0x00000005 <NonMediaTitleStateNotification>

DWORD TitleId
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumberおよび後続する欄の暗号化バージョン>
MediaTitleStateNotification Message
[00116]MediaTitleStateNotificationメッセージは、媒体イネーブル・コンソール・タイトル(例えばビデオ・ストリーミング・サービスに関連するタイトル)が、現在、コンソール上で走っている最中であることを示す。このメッセージは、コンソール・タイトルIDならびに現在のコンテンツIDの両方、および再生ヘッド状態を伝える。
[00117]MediaTitleStateNotificationメッセージは、以下の場合に、コンソールによってUDP同報通信を介して送られる。
1.媒体イネーブル・タイトルが走っている最中である(例えばゲーム)。および
2.更新時間間隔(10秒)のためにNonMediaStateTitleNotificationまたはMediaTitleStateNotificationが未だ送られていない。あるいは媒体イネーブル・タイトルが起動されているか、またはトランスポート制御コマンドがタイトルによって処理されている(例えば再生、停止)。
[00118]MediaTitleStateNotificationメッセージは、以下の場合に、コンソールによってクラウドへ送られる。
1.媒体イネーブル・タイトルが走っている最中である(例えばゲーム)。および
2.更新時間間隔(30秒)のためにNonMediaTitleStateNotificationまたはMediaTitleStateNotificationが未だ送られていない。あるいは媒体イネーブル・タイトルが起動されているか、またはトランスポート制御コマンドがタイトルによって処理されている(例えば再生、停止)。
[00119]このメッセージは、クラウドからコンパニオンデバイスへ送ることができる。
DWORD HeaderSignature = 0xBEDABEDA
DWORD MessageLength = 0xnnnnnnnn
DWORD SequenceNumber = 0xnnnnnnnn
DWORD ProtocolVersion = 0x00000001
DWORD To = 0xFFFFFFFF
DWORD From = <デバイスidメッセージの出所>
DWORD MessageKind = 0x00000003 <通知>
DWORD MessageType = 0x00000006 <MediaTitleNotification>
DWORD TitleId

ULONGLONG Duration (100ns単位)
ULONGLONG Position (100ns単位)
ULONGLONG MinSeek (100ns単位)
ULONGLONG MaxSeek (100ns単位)
FLOAT Rate (再生速度、1.0==通常)
DWORD TransportState (以下のコンソールAPI内のScourTransportState列挙参照)
DWORD TransportCapabilities (以下のコンソールAPI内のTransportCapabilities列挙参照)
DWORD MediaAssetIdLength; (使用せず)
BYTE[256] MediaAssetId (ヌル終了UTF-8テキスト)
BYTE[20] hmac = <HeaderSignature上のHMAC-SHA1、MessageLength、SequenceNumberおよび後続する欄の暗号化バージョン>
[00120]TransportStateがSCOURTRANSPORTSTATE_NOMEDIAではない場合、他の媒体状態欄(Duration、Position、…、MediaAssetId)は有効である。TransportStateがSCOURTRANSPORTSTATE_NOMEDIAである場合、現在、コンソール上には媒体は存在せず、残りの媒体状態値は定義されない。
コンソールおよびクラウド通信
[00121]ユーザーがコンソールにログオンすると、コンソールは、ユーザー情報をクラウドに報告し、したがってクラウドは、コンソールにログオンしたユーザーを知ることができる。また、コンソールは、そのローカルサブネットIPアドレスについてクラウドに話す。コンソールは、ユーザーがログオフすると、そのことをクラウドに報告する。
通知モデル
[00122]コンソールは、ユニキャスト手法を使用して、タイトル変化、および媒体状態変化等々のようなコンソール上の特定の変化を知らせることができる。これは、デバイスとコンソールの間に確立されるソケットを使用して実施することができる。
[00123]コンパニオンデバイス側では、実行時ライブラリーは、通知機能を提供することができる。すなわち、リンキングモジュールは、リンキングモジュールが興味をもった事象は、何でも登録することができ、また、実行時層は、事象が生じると、それらの事象をappに通知することができる。
デバイス側の実行時ライブラリー
[00124]実行時ライブラリーは、サポートされている個々のデバイス上で利用することができる。
[00125]サポートすることができるAPI例は以下の通りである。
1.ブールJoinSession()
このAPIは、デバイスを「hostIPAddress」によって特定されるコンソールホストに接続することができる。
リターン値:接続が良好であればリターンTRUE。さもなければリターンフォールス。
サンプル使用:JoinSession();
それは、ペアリング後のコンソールのローカルサブネットIPアドレスが成功しているクラウドから得ることができる。また、それは、コンソールとの通信を保護するために使用することができる機密保護キーをクラウドから得る。
2.DisconnectSession()
このAPIは、デバイスと現在接続されているコンソールの間の接続を閉じることができる。ランタイムは、このAPIを使用してセッションデータを一掃し、コンソールを使用してソケットを閉じることに留意されたい。当然、デバイスが休止状態に入ると、コンソールはそれを知ることができる。したがってコンソールはソケットを閉じることができる。
3.TitleInfo[] GetAvailableTitles()
このAPIは、リビング・ルーム・コンパニオン経験が現在サポートしているタイトルのリストを提供することができる。
struct TitleInfo
{
uint titleId;
string friendlyName;
}
例えば以下は、この機能からの可能な戻りの1つである。
{
1481115612;
"Zune";
}
{
"1481115605";
"Netflix";
}
4.符号なしint GetCurrentRunningTitleId()
このAPIは、現在接続されているコンソール上で現在走っているタイトルのtitleIDに戻す。
5.ボイドLaunch(符号なしint TitleID、列パラメーター)
このAPIは、「パラメーター」の中で特定されている所与のパラメーターを使用して、「TitleId」によって特定されるappを起動することができる。
TitleId:起動したいappのタイトルID。発信者は、呼出し「GetListOfAvailableTitles()」からフレンドリーapp名を得る。
Parameter:起動中にタイトルに渡したいパラメーター
6.ボイドSendControlCommand(CommandTypeキー)
このAPIは、コンソール制御コマンドを現在接続されているコンソールに送る。
CommandType
{
Play,
Pause,
FastForword,
Rewind,
Stop
}
7.Notification API
enum consoleProperty
{
TitleChanged,
MediaStateChange,
SubNetConnectionLost
} ;

public interface IconsolePropertyChangeDelegate
{
void propertyChanged( Object value );
} ;
ボイドSetPropertyChangedCallback(consoleProperty propertyType、IconsolePropertyChangeDelegate委託)
[00126]これらのAPIは、デバイスに、状態変化、およびコンソール上のタイトル変化等々のような通知事象をコンソールから受け取らせるために使用される。特定の例が説明されているが、説明および特許請求の範囲は、必ずしもこれらの例に限定されないことは容易に明らかであろう。
システムおよびデバイス例
[00127]図6は、図1を参照して説明した計算デバイス102を含んだ一システム例600を示したものである。このシステム例600は、パーソナルコンピューター(PC)、テレビジョンデバイスおよび/またはモバイルデバイス上でアプリケーションを走らせると、ユーザーのシームレス経験のための偏在環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用している間、ビデオゲームを再生している間、およびデオを見ている間等々の間、1つのデバイスから次のデバイスへ移行する際に、共通のユーザー経験のための3つのすべての環境で実質的に同様に走る。
[00128]このシステム例600では、複数のデバイスが中央計算デバイスを介して相互接続されている。中央計算デバイスは、これらの複数のデバイスに対してローカルに配置することも、またはこれらの複数のデバイスからリモートに配置することも可能である。一実施形態では、中央計算デバイスは、ネットワーク、インターネットまたは他のデータ通信リンクを介してこれらの複数のデバイスに接続される1つまたは複数のサーバーコンピューターのクラウドであってもよい。一実施形態では、この相互接続アーキテクチャーにより、複数のデバイス全体の間で機能を引き渡すことができ、それにより共通のシームレス経験をこれらの複数のデバイスのユーザーに提供することができる。これらの複数のデバイスの各々は、異なる物理的要求事項および機能を有することができ、また、中央計算デバイスは、プラットフォームを使用して、デバイスに適合され、かつ依然としてすべてのデバイスに対して共通の経験をデバイスに引き渡すことができる。一実施形態では、目標デバイスの等級が生成され、かつ経験がデバイスの包括的等級に適合される。デバイスの等級は、物理的特徴、使用のタイプまたはデバイスの他の共通の特性によって定義することができる。
[00129]様々な実施態様では、計算デバイス102は、コンピューター602、モバイル604およびテレビジョン606に使用するためなどの様々な異なる構成を想定することができる。これらの構成の各々は、概ね異なる構造および機能を有することができるデバイスを含み、したがって計算デバイス102は、異なる複数のデバイス等級のうちの1つまたは複数に従って構成することができる。例えば計算デバイス102は、パーソナルコンピューター、デスクトップコンピューター、マルチ・スクリーン・コンピューター、ラップトップコンピューター、およびノートブック等々を含むデバイスのコンピューター602等級として実施することができる。
[00130]また、計算デバイス102は、携帯電話、携帯型音楽プレーヤー、携帯型ゲーミングデバイス、タブレットコンピューター、およびマルチ・スクリーン・コンピューター等々などのモバイルデバイスを含むデバイスのモバイル604等級として実施することも可能である。また、計算デバイス102は、普段の観察環境で概ねより大型のスクリーンを有しているか、またはこのようなスクリーンに接続されるデバイスを含むデバイスのテレビジョン606等級として実施することも可能である。これらのデバイスは、テレビジョン、セットトップボックス、およびゲーミングコンソール等々を含む。本明細書において説明されている技法は、これらの様々な構成の計算デバイス102によってサポートすることができ、また、本明細書において説明されている技法の特定の例に限定されない。
[00131]クラウド608は、コンテンツサービス612のためのプラットフォーム610を含み、かつ/またはコンテンツサービス612のためのプラットフォーム610を表している。プラットフォーム610は、ハードウェア(例えばサーバー)の基礎をなしている機能およびクラウド608のソフトウェア資源を抽象している。コンテンツサービス612は、計算デバイス102からリモートに位置しているサーバー上でコンピューター処理が実行されている間、利用することができるアプリケーションおよび/またはデータを含むことができる。コンテンツサービス612は、インターネットを介した、および/またはセルラーまたはWi−Fiネットワークなどの加入者ネットワークを介したサービスとして提供することができる。これの例は、計算デバイス上のリンキングモジュール114の包含として示されている。上で説明したように、これらの技法も、同じく、以下で説明するプラットフォーム310の一部としてリンキングモジュール124の実施態様などを介して「クラウド」を活用することができる。
[00132]プラットフォーム610は、計算デバイス102と他の計算デバイスを接続するための資源および機能を抽象することができる。また、プラットフォーム610は、資源のスケーリングを抽象して、プラットフォーム610を介して実施されるコンテンツサービス612のための遭遇デマンドに対するスケールの対応するレベルを提供するように働くことも可能である。したがって相互接続されたデバイスの実施形態では、本明細書において説明されている機能の実施態様は、システム600全体に分散させることができる。例えば機能は、一部を計算デバイス102上で、かつクラウド608の機能を抽象しているプラットフォーム610を介して実施することができる。
[00133]図7は、図1、図2および図6を参照して説明した任意のタイプの計算デバイスとして実施することができる、本明細書において説明されている技法の実施形態を実施するための一デバイス例700の様々な構成要素を示したものである。デバイス700は、デバイスデータ704(例えば受け取ったデータ、受信中のデータ、同報通信のためにスケジュールされたデータ、およびデータのデータパケット等々)の有線ならびに/または無線通信を可能にする通信デバイス702を含む。デバイスデータ704または他のデバイスコンテンツは、デバイスの構成設定、デバイス上に記憶されているメディアコンテンツ、および/またはデバイスのユーザーと関連付けられた情報を含むことができる。デバイス700上に記憶されているメディアコンテンツは、任意のタイプの音声、ビデオおよび/または画像データを含むことができる。デバイス700は、1つまたは複数のデータ入力706を含み、この1つまたは複数のデータ入力706を介して、ユーザー選択可能入力、メッセージ、音楽、テレビジョン・メディアコンテンツ、記録されたビデオコンテンツ、および任意のコンテンツおよび/またはデータ源から受け取った任意の他のタイプの音声、ビデオおよび/または画像データなどの任意のタイプのデータ、メディアコンテンツおよび/または入力を受け取ることができる。
[00134]また、デバイス700は、直列および/または並列インタフェース、無線インタフェース、任意のタイプのネットワークインタフェース、モデムのうちの任意の1つまたは複数として実施することができ、かつ任意の他のタイプの通信インタフェースとして実施することができる通信インタフェース708を含むことも可能である。通信インタフェース708は、デバイス700と通信ネットワークの間の接続および/または通信リンクを提供し、他の電子デバイス、計算デバイスおよび通信デバイスは、この接続および/または通信リンクによってデバイス700とデータを通信する。
[00135]デバイス700は、様々なコンピューター実行可能命令を処理してデバイス700の動作を制御し、かつ本明細書において説明されている技法の実施形態を実施する1つまたは複数のプロセッサー710(例えばマイクロプロセッサー、およびコントローラー等々のうちの任意のプロセッサー)を含む。別法または追加として、デバイス700は、ハードウェア、ファームウェア、または一括して712で識別されている処理回路および制御回路と共に実施される固定論理回路機構のうちの任意の1つまたは組合せを使用して実施することも可能である。図には示されていないが、デバイス700は、デバイス内の様々な構成要素を結合するシステムバスすなわちデータ転送システムを含むことができる。システムバスは、メモリーバスもしくはメモリーコントローラー、周辺バス、ユニバーサル・シリアル・バスおよび/または様々なバスアーキテクチャーのうちの任意のバスアーキテクチャーを利用しているプロセッサーまたはローカルバスなどの異なるバス構造のうちの任意の1つまたは組合せを含むことができる。
[00136]また、デバイス700は、1つまたは複数のメモリー構成要素などのコンピューター可読媒体714を同じく含み、それらの例には、ランダム・アクセス・メモリー(RAM)、不揮発性メモリー(例えばリード・オンリー・メモリー(ROM)、フラッシュメモリー、EPROM、およびEEPROM等々のうちの任意の1つまたは複数)ならびにディスク記憶装置がある。ディスク記憶装置は、ハード・ディスク・ドライブ、記録型および/または書換え型コンパクトディスク(CD)、ならびに任意のタイプのディジタル汎用ディスク(DVD)等々などの任意のタイプの磁気記憶装置または光学記憶装置として実施することができる。また、デバイス700は、大容量記憶媒体デバイス716を含むことも可能である。
[00137]コンピューター可読媒体714は、デバイスデータ704ならびに様々なデバイスアプリケーション718、およびデバイス700の動作面に関連する任意の他のタイプの情報および/またはデータを記憶するためのデータ記憶機構を提供する。例えばオペレーティングシステム720は、コンピューター可読媒体714を使用して、コンピューターアプリケーションとして維持することができ、また、プロセッサー710上で実行することができる。デバイスアプリケーション718は、デバイス管理プログラム(例えば制御アプリケーション、ソフトウェアアプリケーション、信号処理および制御モジュール、特定のデバイスに固有のコード、ならびに特定のデバイスのためのハードウェア抽象層等々)を含むことができる。また、デバイスアプリケーション718は、本明細書において説明されている技法の実施形態を実施するための任意のシステム構成要素またはモジュールを同じく含む。この例では、デバイスアプリケーション718は、ソフトウェアモジュールおよび/またはコンピューターアプリケーションとして示されているインタフェースアプリケーション722および入力/出力モジュール724を含む。入力/出力モジュール724は、タッチスクリーン、トラックパッド、カメラ、およびマイクロホン等々などの入力を捕獲するように構成されたデバイスとのインタフェースを提供するために使用されるソフトウェアを表している。別法または追加として、インタフェースアプリケーション722および入力/出力モジュール724は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組合せとして実施することも可能である。さらに、入力/出力モジュール724は、それぞれ視覚入力および音声入力を捕獲するための個別のデバイスなどの複数の入力デバイスをサポートするように構成することも可能である。
[00138]また、デバイス700は、音声システム728に音声データを提供し、かつ/または表示システム730にビデオデータを提供する音声および/またはビデオ入力/出力システム726を同じく含む。音声システム728および/または表示システム730は、音声データ、ビデオデータおよび画像データを処理し、表示し、かつ/またはさもなければ再現する任意のデバイスを含むことができる。ビデオ信号および音声信号は、RF(無線周波数)リンク、S−ビデオリンク、複合ビデオリンク、コンポーネント・ビデオ・リンク、DVI(ディジタル・ビデオ・インタフェース)、アナログ音声接続、または他の同様の通信リンクを介して、デバイス700から音声デバイスおよび/または表示デバイスへ通信することができる。一実施形態では、音声システム728および/または表示システム730は、デバイス700の外部構成要素として実施される。別法としては、音声システム728および/または表示システム730は、デバイス例700の統合構成要素として実施される。
結び
[00139]以上、本発明について、構造的特徴および/または方法論的行為に特化された言語で説明したが、特許請求の範囲で定義されている本発明は、説明されている特定の特徴または行為に必ずしも限定されないことを理解されたい。そうでなく、これらの特定の特徴および行為は、特許請求される本発明を実施する形態例として開示されている。

Claims (10)

  1. ネットワークサービスを実施する1つまたは複数の計算デバイスによって実施される方法であって、
    前記ネットワークサービスのユーザーアカウントと関連付けられた複数のデバイスの特性を記述しているデータを前記ネットワークサービスで維持するステップと、
    前記デバイス間のローカルネットワーク接続を開始するために、前記複数のデバイスのうちの1つによって受け取られる通信であって、前記複数のデバイスのうちの別の1つに関係し、受け取るデバイスが前記複数のデバイスのうちの前記別の1つを発見するのに適したデータの部分を含む通信を形成するステップと
    を含む方法。
  2. 請求項1に記載の方法であって、前記通信が、前記デバイス間のリモートネットワーク接続を開始するために、前記複数のデバイスのうちの前記別のデバイスに関係し、前記複数のデバイスのうちの前記別のデバイスを発見するのに適した前記データの別の部分をさらに含む、方法。
  3. 請求項1に記載の方法であって、前記データの前記部分が有線または無線サブネットを記述しており、前記別のデバイスは、前記有線または無線サブネットを介して、前記ローカルネットワーク接続を介してアクセスすることができる、方法。
  4. 請求項1に記載の方法であって、前記データの前記部分が、前記別のデバイスが前記ローカルネットワーク接続を介してアクセスできないとの判定に応答して前記別のデバイスとのリモートネットワーク接続を形成するために、前記受け取るデバイスによる使用が可能である、方法。
  5. 請求項1に記載の方法であって、前記データの前記部分が、前記ローカルネットワーク接続およびリモートネットワーク接続を含む前記別のデバイスとの混成ネットワーク接続を形成するために、前記受け取るデバイスによる使用が可能である、方法。
  6. 請求項1に記載の方法であって、前記データの前記部分が、前記ローカルネットワーク接続またはリモートネットワーク接続が利用できないとの判定に応答して、前記ローカルネットワーク接続と前記リモートネットワーク接続とを切り換えるためのフォールバック操作を実施するために、前記受け取るデバイスによる使用が可能である、方法。
  7. 請求項1に記載の方法であって、前記データの前記部分が、前記受け取るデバイスと前記別のデバイスの間の通信の暗号化をサポートするために、前記受け取るデバイスによる使用が可能である、方法。
  8. 少なくとも部分的にハードウェアの中で実施される1つまたは複数のモジュールを備える計算デバイスであって、前記1つまたは複数のモジュールが、
    ユーザーアカウントに関連付けられ、前記ユーザーアカウントに関連付けられた別の計算デバイスを識別するデータを、ネットワークサービスから受け取るステップと、
    ローカルネットワーク接続を介して前記別の計算デバイスを利用することができるとの判定に応答して、前記別の計算デバイスとの前記ローカルネットワーク接続を前記計算デバイスによって形成するステップと、
    ローカルネットワーク接続を介して前記別の計算デバイスを利用することができないとの判定に応答して、前記別の計算デバイスとの非ローカルネットワーク接続を前記計算デバイスによって形成するステップと
    を含む操作を実施するように構成された、計算デバイス。
  9. 請求項8に記載の計算デバイスであって、前記データが有線または無線サブネットを記述しており、前記別の計算デバイスは、前記有線または無線サブネットを介して、前記ローカルネットワーク接続を介してアクセスすることができる、計算デバイス。
  10. 請求項8に記載の計算デバイスであって、前記データが前記別の計算デバイスによって前記ネットワークサービスに提供される、デバイス。
JP2014535825A 2011-10-11 2012-10-10 デバイスリンキング Active JP6243843B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161545947P 2011-10-11 2011-10-11
US61/545,947 2011-10-11
US13/291,354 2011-11-08
US13/291,354 US8469816B2 (en) 2011-10-11 2011-11-08 Device linking
PCT/US2012/059621 WO2013055835A2 (en) 2011-10-11 2012-10-10 Device linking

Publications (3)

Publication Number Publication Date
JP2015501477A true JP2015501477A (ja) 2015-01-15
JP2015501477A5 JP2015501477A5 (ja) 2015-11-19
JP6243843B2 JP6243843B2 (ja) 2017-12-06

Family

ID=48042422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014535825A Active JP6243843B2 (ja) 2011-10-11 2012-10-10 デバイスリンキング

Country Status (13)

Country Link
US (4) US8469816B2 (ja)
EP (1) EP2767033A4 (ja)
JP (1) JP6243843B2 (ja)
KR (1) KR101943139B1 (ja)
AU (1) AU2012322844B2 (ja)
BR (1) BR112014008905A2 (ja)
CA (1) CA2851507A1 (ja)
HK (1) HK1179074A1 (ja)
IN (1) IN2014CN02433A (ja)
MX (1) MX342412B (ja)
RU (1) RU2631137C2 (ja)
TW (1) TWI496008B (ja)
WO (1) WO2013055835A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11109093B2 (en) 2014-09-28 2021-08-31 Alibaba Group Holding Limited Method and apparatus for providing information associated with media content

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110252152A1 (en) * 2010-04-09 2011-10-13 Marcus Sherry Reliable messaging system and method
US8469816B2 (en) 2011-10-11 2013-06-25 Microsoft Corporation Device linking
US9026666B2 (en) 2012-02-14 2015-05-05 Avaya Inc. Communication session cloning using barcodes
US9479345B2 (en) * 2012-02-14 2016-10-25 Avaya Inc. Fixed mobile convergence for audio and web conference sessions using barcodes
KR102147237B1 (ko) * 2013-12-27 2020-08-24 삼성전자주식회사 제어 장치를 서버에 등록하는 방법 및 장치
KR20160079922A (ko) * 2014-03-12 2016-07-06 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 소셜 네트워킹 플랫폼을 통해 주변 장치를 제어하는 장치 및 방법
US20150295973A1 (en) * 2014-04-10 2015-10-15 Screenovate Technologies Ltd. Method for real-time multimedia interface management
US9509785B2 (en) * 2014-07-16 2016-11-29 Aruba Networks, Inc. Location approximation and discovery of wired servers
CN104958898A (zh) * 2014-08-13 2015-10-07 腾讯科技(深圳)有限公司 游戏控制方法、装置及系统
KR102300435B1 (ko) 2015-01-09 2021-09-09 삼성전자주식회사 디스플레이 장치 및 디스플레이 방법
US20180062936A1 (en) * 2015-05-15 2018-03-01 Hewlett-Packard Development Company, L.P. Display of Server Capabilities
US9653075B1 (en) * 2015-11-06 2017-05-16 Google Inc. Voice commands across devices
WO2017154633A1 (en) * 2016-03-09 2017-09-14 Sharp Kabushiki Kaisha Methods and systems for usage reporting
US10305891B2 (en) * 2016-05-12 2019-05-28 Bank Of America Corporation Preventing unauthorized access to secured information systems using multi-device authentication techniques
US10700894B2 (en) * 2016-06-01 2020-06-30 At&T Intellectual Property I, L.P. Network caching of outbound content from endpoint device to prevent unauthorized extraction
WO2017219759A1 (zh) * 2016-06-23 2017-12-28 深圳市海月通信技术有限公司 一种用户签到的方法和系统
US10999331B1 (en) 2016-07-06 2021-05-04 Google Llc Reverse discovery and pairing of client devices to a media device
KR102590426B1 (ko) * 2016-10-14 2023-10-18 삼성전자주식회사 동반 장치를 관리하는 방법 및 그를 이용하는 전자 장치
US10449440B2 (en) * 2017-06-30 2019-10-22 Electronic Arts Inc. Interactive voice-controlled companion application for a video game
US10621317B1 (en) 2017-09-14 2020-04-14 Electronic Arts Inc. Audio-based device authentication system
CN111357002A (zh) * 2017-11-01 2020-06-30 惠普发展公司,有限责任合伙企业 针对伴随设备的不符合事件通知
US10629192B1 (en) 2018-01-09 2020-04-21 Electronic Arts Inc. Intelligent personalized speech recognition
US20220032181A1 (en) * 2019-03-18 2022-02-03 Google Llc Cloud-based discovery service for end-user devices
US10926173B2 (en) 2019-06-10 2021-02-23 Electronic Arts Inc. Custom voice control of video game character
GB2617174A (en) * 2022-03-31 2023-10-04 Sony Interactive Entertainment Inc Processing devices, systems and methods

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996041472A1 (en) * 1995-06-07 1996-12-19 Starsight Telecast Incorporated Television system with downloadable features
JPH11196345A (ja) * 1997-10-07 1999-07-21 Masanobu Kujirada 表示システム
JP2002015151A (ja) * 2000-04-27 2002-01-18 Masanobu Kujirada テレビと携帯無線端末を使用した取引方法及び装置
US20060004743A1 (en) * 2004-06-15 2006-01-05 Sanyo Electric Co., Ltd. Remote control system, controller, program product, storage medium and server
JP2009251648A (ja) * 2008-04-01 2009-10-29 Sony Corp サーバ装置、ネットワークシステム、データ転送方法およびプログラム

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100340253B1 (ko) 1997-06-25 2002-06-12 윤종용 브라우저 기반의 개선된 홈 네트웍 명령 및 제어
US7586398B2 (en) 1998-07-23 2009-09-08 Universal Electronics, Inc. System and method for setting up a universal remote control
AU5728500A (en) 1999-06-11 2001-01-02 Microsoft Corporation Data driven remote device control model with general programming interface-to-network messaging adapter
US6686838B1 (en) 2000-09-06 2004-02-03 Xanboo Inc. Systems and methods for the automatic registration of devices
US20020122410A1 (en) * 2001-02-13 2002-09-05 Cybiko Inc. Method of wireless data exchange amongst devices of limited range
US20030055867A1 (en) 2001-07-31 2003-03-20 Openwave Systems Inc. Inter-device linking for presentation of information on devices connected to a communication system
US6846238B2 (en) * 2001-09-28 2005-01-25 Igt Wireless game player
US7274684B2 (en) 2001-10-10 2007-09-25 Bruce Fitzgerald Young Method and system for implementing and managing a multimedia access network device
US20040068756A1 (en) 2002-10-02 2004-04-08 Koninklijke Philips Electronics N.V. Virtual link between CE devices
US8775584B2 (en) * 2003-04-29 2014-07-08 Microsoft Corporation Method and apparatus for discovering network devices
WO2005028057A1 (en) * 2003-09-19 2005-03-31 Nokia Corporation Method and device for supporting wireless multi-player gaming with a multi-player game hub
US7136709B2 (en) 2003-11-04 2006-11-14 Universal Electronics Inc. Home appliance control system and methods in a networked environment
KR20050048414A (ko) 2003-11-19 2005-05-24 삼성전자주식회사 무선 네트워크에서 무선 디바이스간의 연결 요청 중계방법 및 장치
JP4324487B2 (ja) * 2004-01-20 2009-09-02 任天堂株式会社 無線通信ゲームシステムおよび無線通信ゲームプログラム
JP4342356B2 (ja) * 2004-03-22 2009-10-14 任天堂株式会社 ゲームシステム、ゲーム装置、およびゲームプログラム
US7809381B2 (en) 2004-07-16 2010-10-05 Bridgeport Networks, Inc. Presence detection for cellular and internet protocol telephony
US20100081375A1 (en) 2008-09-30 2010-04-01 Apple Inc. System and method for simplified control of electronic devices
US7599915B2 (en) 2005-01-24 2009-10-06 At&T Intellectual Property I, L.P. Portal linking tool
CN1943175B (zh) 2005-02-04 2011-07-27 株式会社东芝 多类多信道无线lan等的最佳信道分配
US20060245403A1 (en) * 2005-04-27 2006-11-02 Matsushita Electric Industrial Co., Ltd. UPnP mobility extension using session initiation protocol
US7784071B2 (en) 2005-06-01 2010-08-24 General Instrument Corporation Method and apparatus for linking a plurality of user devices to a service location
JP4600992B2 (ja) 2005-08-17 2010-12-22 Kddi株式会社 家電機器遠隔操作システムおよびその運用方法
US20070155325A1 (en) 2005-10-11 2007-07-05 Bambic Britt B Modular communications apparatus and method
US8718620B2 (en) 2006-11-13 2014-05-06 Apple Inc. Personal media devices with wireless communication
KR20070015239A (ko) 2007-01-13 2007-02-01 (주)아루온게임즈 휴대전화와 유저 게임공통단말기가 연동된 게임시스템 및그 방법
US7940778B2 (en) 2007-06-29 2011-05-10 Intel Corporation Cross-layer approach to virtualized overlay on ad hoc networks
US7729366B2 (en) * 2007-10-03 2010-06-01 General Instrument Corporation Method, apparatus and system for network mobility of a mobile communication device
FR2922398B1 (fr) 2007-10-11 2011-02-11 Stephane Perret Systeme d'interconnexion entre au moins un appareil de communication et au moins un systeme d'information distant et methode d'interconnexion
US20090248397A1 (en) * 2008-03-25 2009-10-01 Microsoft Corporation Service Initiation Techniques
WO2009135312A1 (en) * 2008-05-08 2009-11-12 Unify4Life Corporation Remote control system and method
US8750178B2 (en) 2009-06-01 2014-06-10 Qualcomm Incorporated Connection manager for a wireless communication device
US9616348B2 (en) * 2009-09-11 2017-04-11 Qualcomm Incorporated System and method of providing leaderboards for mobile gaming in a wireless network
US8937534B2 (en) 2010-12-08 2015-01-20 At&T Intellectual Property I, L.P. Remote control of electronic devices via mobile device
US8943169B2 (en) * 2011-02-11 2015-01-27 Sony Corporation Device affiliation process from second display
CN102130807A (zh) 2011-04-21 2011-07-20 中国科学技术大学苏州研究院 一种个人互联网中实现实时动态组网时的设备发现方法
WO2013023344A1 (en) * 2011-08-12 2013-02-21 Motorola Mobility, Inc. Methods and apparatuses for media property or characteristic control in a media system
US9142182B2 (en) * 2011-10-07 2015-09-22 Lg Electronics Inc. Device and control method thereof
CN102932428B (zh) 2011-10-11 2016-08-10 微软技术许可有限责任公司 设备链接
US8469816B2 (en) 2011-10-11 2013-06-25 Microsoft Corporation Device linking

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996041472A1 (en) * 1995-06-07 1996-12-19 Starsight Telecast Incorporated Television system with downloadable features
JPH11196345A (ja) * 1997-10-07 1999-07-21 Masanobu Kujirada 表示システム
JP2002015151A (ja) * 2000-04-27 2002-01-18 Masanobu Kujirada テレビと携帯無線端末を使用した取引方法及び装置
US20060004743A1 (en) * 2004-06-15 2006-01-05 Sanyo Electric Co., Ltd. Remote control system, controller, program product, storage medium and server
JP2009251648A (ja) * 2008-04-01 2009-10-29 Sony Corp サーバ装置、ネットワークシステム、データ転送方法およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11109093B2 (en) 2014-09-28 2021-08-31 Alibaba Group Holding Limited Method and apparatus for providing information associated with media content

Also Published As

Publication number Publication date
MX342412B (es) 2016-09-28
EP2767033A2 (en) 2014-08-20
US20130318247A1 (en) 2013-11-28
KR101943139B1 (ko) 2019-04-17
US20170164180A1 (en) 2017-06-08
JP6243843B2 (ja) 2017-12-06
TWI496008B (zh) 2015-08-11
US20180234831A1 (en) 2018-08-16
US9579570B2 (en) 2017-02-28
AU2012322844B2 (en) 2017-02-23
EP2767033A4 (en) 2015-02-18
CA2851507A1 (en) 2013-04-18
US10750349B2 (en) 2020-08-18
US8469816B2 (en) 2013-06-25
AU2012322844A1 (en) 2014-05-01
IN2014CN02433A (ja) 2015-06-19
WO2013055835A2 (en) 2013-04-18
WO2013055835A3 (en) 2013-08-01
TW201322000A (zh) 2013-06-01
MX2014004483A (es) 2014-08-01
HK1179074A1 (zh) 2013-09-19
US20130090169A1 (en) 2013-04-11
KR20140090624A (ko) 2014-07-17
RU2631137C2 (ru) 2017-09-19
US9967730B2 (en) 2018-05-08
BR112014008905A2 (pt) 2018-06-05
RU2014114269A (ru) 2015-10-20

Similar Documents

Publication Publication Date Title
JP6243843B2 (ja) デバイスリンキング
US10963147B2 (en) Media-aware interface
US11831561B2 (en) System, apparatus, and method for controlling internet devices via a mobile device session
US8171145B2 (en) System and method for two way communication and controlling content in a game
US8769054B2 (en) Pairing a media server and a media client
KR20150016284A (ko) 전자 디바이스의 총체적 식별
JP2022527290A (ja) Bluetooth(登録商標)低エネルギー(BLE)モードで動作可能なゲームコントローラ
US9381427B2 (en) Generic companion-messaging between media platforms
US9712865B2 (en) Method, device and system for switching back transferred-for-play digital media content
US11936928B2 (en) Method, system and device for sharing contents
CN102932428B (zh) 设备链接
US20240129257A1 (en) System, Apparatus, And Method For Controlling Internet Devices Via A Mobile Device Session
US11013994B2 (en) Method for playing back applications from a cloud, telecommunication network for streaming and for replaying applications (APPs) via a specific telecommunication system, and use of a telecommunication network for streaming and replaying applications (APPs)
AlDuaij Multi-Mobile Computing

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150929

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150929

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170303

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170922

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170928

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171110

R150 Certificate of patent or registration of utility model

Ref document number: 6243843

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250