JP2019510404A - 自動車及びクラウドのハイブリッド環境のためのダイナミックなアプリケーションの実行 - Google Patents

自動車及びクラウドのハイブリッド環境のためのダイナミックなアプリケーションの実行 Download PDF

Info

Publication number
JP2019510404A
JP2019510404A JP2018543651A JP2018543651A JP2019510404A JP 2019510404 A JP2019510404 A JP 2019510404A JP 2018543651 A JP2018543651 A JP 2018543651A JP 2018543651 A JP2018543651 A JP 2018543651A JP 2019510404 A JP2019510404 A JP 2019510404A
Authority
JP
Japan
Prior art keywords
components
application
head unit
computing device
current operating
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
JP2018543651A
Other languages
English (en)
Other versions
JP2019510404A5 (ja
JP6953415B2 (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.)
Xevo Inc
Original Assignee
Xevo Inc
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 Xevo Inc filed Critical Xevo Inc
Publication of JP2019510404A publication Critical patent/JP2019510404A/ja
Publication of JP2019510404A5 publication Critical patent/JP2019510404A5/ja
Application granted granted Critical
Publication of JP6953415B2 publication Critical patent/JP6953415B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/08Interaction between the driver and the control system
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Arrangement of adaptations of instruments
    • B60K35/80
    • B60K35/81
    • B60K35/85
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • B60K2360/569
    • B60K2360/573
    • B60K2360/589
    • B60K2360/5899
    • B60K2360/5911
    • B60K2360/592
    • B60K2360/595
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • 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

Abstract

本発明は、アプリケーションの別々のコンポーネントが、別々の処理装置で常時実行な可能な、ダイナミックなアプリケーション環境を提供する。ホスト装置は、自動車のヘッドユニットのような計算装置と関連し、そして、一つ以上のアプリケーションの、どのコンポーネントが計算装置で実行されるか、及びどのコンポーネントがホスト装置(もしあれば)で実行されるか、のそれらの特性の選択に基いて、現在の動作特性をモニタする。ホスト装置は、計算装置で実行するために選択されたコンポーネントを計算装置に提供し、計算装置で実行されない他のコンポーネントを実行する。ホスト装置は、計算装置と関連する現在の動作特性をモニタし、現在の動作特性の変更に基いて、どのコンポーネントがどの装置で実行されいるかの選択を変更する。【選択図】図2B

Description

<優先権の主張>
この出願は、米国特許法119条(e)に基き、2018年2月19日に出願された米国非仮出願第15/018,385号明細書の出願日の利益を主張し、参照のためその全体を本出願明細書に組み入れる。
本発明は、一般的に、ヘッドユニットで実行するアプリケーションコンポーネントのダイナミックなリアルタイムの選択に関し、このアプリケーションの他のコンポーネントは別のホスト装置又はクラウドで実行されているものに関する。
自動車は、ますます使いやすく、インタラクティブなものとなってきている。多くの新車は、現在、ヘッドユニットと呼ばれる、ユーザーが様々な態様で自動車を制御できるユーザーインターフェイスを搭載して製造されている。例えば、ユーザーは、ヘッドユニットを、ラジオ局を変える、自動車室内の温度を変える、地図や衛星測位システムにアクセスする、インターネットにアクセスする、及び他のヘッドユニットアプリケーションにアクセスするために使用することができる。
しかし、これらのアプリケーションは、ユーザーのモバイル機器のセルラーデータに、しばしば頼っている。ここに記載される実施形態がなされたのは、これらと他の考慮点に関することである。
ここに開示される原理によれば、アプリケーションが動作している一方で、コンピュータアプリケーションの様々なコンポーネントが、別々の処理装置で実行するために、ダイナミックに割り当てられる。たとえ、コンピュータアプリケーションの様々なコンポーネントが、一つ以上の別々の装置で実行されていたとしても、アプリケーションと対話するためにユーザーにより使用される装置は、アプリケーションを実行中の当該装置であると考えてもよい。
例えば、あるコンピュータ上で走っているアプリケーションがそのコンピュータで実行中のコンポーネントを有しており、一方、そのアプリケーションの他のコンポーネントはそのとき、モバイル機器又はクラウドのような他の装置で実行されている。
同様に、アプリケーションの他のコンポーネントが、クラウド、又は、たとえ他のコンピュータで実行されているとしても、その一方で、アプリケーションは、そのモバイル機器で実行中であるいくつかのコンポーネントを有するモバイル機器で実行される。
アプリケーションが、それらアプリケーションの組み合わせ実行と関連する様々な特性に基いて動作する一方で、それぞれ別々のコンピュータで実行されているアプリケーションのコンポーネントは、ダイナミックに変更される。この様々な特性としては、アプリケーションコンポーネントそれら自身の特性、アプリケーションコンポーネントを実行するコンピュータの特性、及びそれらの装置間の通信ネットワークの特性を含むことができる。
ある特定の実行されるアプリケーションコンポーネントは、そのすべての例、又はほとんどすべての例において、単一の装置で実行される。第2のコンピュータ又はクラウドコンピューティングリソースがそれらのコンポーネントを実行し且つ第1の装置と通信する場合、第1の装置で実行中のアプリケーションと同じものが、コンピュータ又はクラウドにより実行される、上記それらのコンポーネントを有していることは利点である。これは、アプリケーションが動作するときに、コンポーネントはダイナミックに割り当てられ、一つの装置から、アプリケーションの実行と関連した特性に基いた他の装置へ移動又は交換することができることである。
実施形態の一つのセットは、別々のアプリケーションのコンポーネントが、自動車のヘッドユニットで動作できる、又は、ホスト装置又は自動車から遠隔する一つ以上の他のコンピュータで実行するために割りあてられる、ダイナミックなアプリケーション環境を提供することに向けられる。
そのような遠隔装置の例として、クラウドのサーバー、スマートフォン又は他のモバイル機器、又は他のコンピュータがある。これらは、アプリケーションの一部を実行でき、且つヘッドユニット又は他のコンピュータで実行されるアプリケーションの他の部分の実行と調整できる。このように、実行のためのダイナミックな環境の割り当てが新しく作成される。
ホスト装置は、ヘッドユニットの様々な動作特性に基いて、ヘッドユニットのユーザーにどのアプリケーションを提供するかを選択する。そのような特性として、ヘッドユニットを使用するユーザー、アプリケーションの利用、地理的位置、消費される電力、バッテリー残量などがある。但し、これらに限定されるものではない。
現在の動作特性に基いて、ホスト装置は、前記選択されたアプリケーションのどのコンポーネントをヘッドユニットで実行し、及び、もしあれば、どのコンポーネントを様々なホスト装置で実行するかを選択する。
ホスト装置は、ヘッドユニットでの実行のため、選択されたコンポーネントをヘッドユニットに提供し、そして、ホスト装置や他の装置は、ヘッドユニットでは実行されないその他のコンポーネントのいずれをも実行する。
ホスト装置は、動作特性の変化が発生したかどうかを判定するために、ヘッドユニットに関連する現在の動作特性をモニタする。そして、それらの変化に基いて、どのコンポーネントをヘッドユニットで動作させるか、どのコンポーネントをホスト装置で動作させるか、どのコンポーネントを他のコンピュータで動作させるか、の選択を変更する。
ここに記載された実施形態は、アプリケーションコンポーネントの実行中に、ダイナミックに変更することができるので、ユーザーエクスペリエンスを向上させることができる。異なるアプリケーションは、コンピューティングリソースや通信データを異なる態様で利用し、異なるユーザーは異なる方法でアプリケーションを体験する。所定の時刻にどこで異なるコンポーネントを実行するかをダイナミックに変更することにより、ヘッドユニットのより良いユーザーエクスペリエンスを実現ことができる。
例えば、アプリケーションが、ホスト装置であるクラウドでその全体が実行されると、ホスト装置とヘッドユニットとの間で伝送されるデータ量は増加する、それは表示及びヘッドユニットでのアプリケーションの応答性の遅れを引き起こし、アプリケーションのユーザーの楽しみやエクスペリエンスを中断させる。
これに対して、アプリケーションが、ヘッドユニットでその全体が実行されると、ヘッドユニットは、コンピューティングリソースの制限やヘッドユニットの制約により、アプリケーションの特定のタイプやアプリケーションの同じ数を一度にサポートすることができなくなり、アプリケーションのユーザーの楽しみやエクスペリエンスを減少させることになる。どこでアプリケーションコンポーネントが実行するかをヘッドユニットとホスト装置の間でダイナミックに変更すことにより、ホスト装置とヘッドユニットの間のネットワークトラフィックを最小にすると共に、アプリケーションの実行速度を増大させることができる。
限定的でもなく網羅的でもない、実施形態が下記の図面に記載される。図の中で、特に明記しない限り、種々の図面を通して同様な部分は同様な符号で参照される。
本発明をより良く理解するために、下記の発明を実施する形態で、下記の関連する図面を参照する。
異なる動作可能ユニットに分けられたコンポーネントによる、アプリケーションの実行の一実施形態の概略図。 異なる動作可能ユニットに分けられたコンポーネントによる、アプリケーションの実行の他の実施形態の概略図。 図1A及び図1Bのアプリケーションの様々なコンポーネントを実行することができるハードウェアコンポーネントの概略図。 ここに記載された実施形態による、ヘッドユニットで実行されるアプリケーションを管理するための、自動車のヘッドユニットの遠隔地にあるホスト装置で利用される、自動車環境のコンテキストダイアグラム。 ここに記載された実施形態による、ユーザーモバイル機器、ヘッドユニット、及び様々なアクセサリーを含む自動車システムの使用事例を示す図。 ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。 ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。 ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。 ここに記載された実施形態による、ホスト装置及びヘッドユニットを例示するシステムダイアグラム。 ここに記載された実施形態による、どのアプリケーションコンポーネントがヘッドユニットで実行されていて、コンポーネントがホスト装置で実行されていかをダイナミックに変更すための、概要プロセスの一実施形態を一般的に示している論理フローダイアグラム。 ここに記載された実施形態による、どのアプリケーション又はコンポーネントがヘッドユニットで実行されているかの変更をするかどうかに影響する変更を特定するための、ヘッドユニット環境の動作特性をモニタするための概要プロセスの一実施形態を一般的に示している論理フローダイアグラム。 ここに記載された実施形態を実施するためのコンピュータシステムの一実施例を記載するシステムダイアグラム。
さまざまな実施形態の完全な理解を提供するために、以下の説明では、添付の図面に沿って、特定の具体的な詳細を説明する。しかしながら、記載された実施形態は、様々な組み合わせ、例えば、これらの特定の詳細の一つ以上が欠落していても、又は、他の方法、構成要素、装置、材料、その他を用いても、実施化されてもよいことは、関連する技術の知識がある者は理解できるであろう。他方、本発明の動作環境と関連する周知の構造や構成要素は、通信システムとネットワークと自動車の動作環境を含むが、これに限定されず、実施形態に必要のない不明瞭な説明を避けるために、それらは示されず、又、記載されていない。
従って、様々な実施形態は、方法、システム、媒体、又は装置であってよい。更に、様々な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェアの態様とソフトウェアの態様を組み合わせた実施形態であってよい。
明細書、特許請求の範囲、及び図面を通して、下記の用語は、文脈上別段の意味を有することが明確に解読される場合を除き、これらに明示的に関連する意味を有するものとする。「ここに」との文言は、現在の出願に関連する明細書、特許請求の範囲、及び図面を参照するものである。「ある実施形態では」、「もう一つの実施形態では」、「様々な実施形態において」、「他の実施形態では」のフレーズ及び他のバリエーションは、本記載の一つ以上の特徴、構造、機能、限定、又は特性を参照し、文脈上で別段の意味を有すると明確に解読される場合を除き、同じ実施形態、又は異なる実施形態に限定されるものではない。ここで用いられたように、「又は」は、インクルーシブな「又は」であって、A又はB、又は両方、あるいは、A又はBまたはC、又はそれらのいずれかの組み合わせであり、追加要素があるリストでも同様に扱われる。「基づいて」の文言は排他的ではなく、文脈上別段の意味を有すると明確に解読される場合を除き、記載されていない追加の特徴、機能、態様、又は限定に基いていてもよい。加えて、明細書を通して、「a」、「an」及び「the」のに意味するところは、単数及び複数の引用を含む。
図1Aは、動作可能なユニット、オブジェクト、又はフィーチャーに分けられたコンポーネントを有するアプリケーション10を例示する。アプリケーション10のこの実施形態によれば、動作可能なユニットは、ビューコンポーネント12、コントローラコンポーネント14、及びモデルコンポーネント16を含む。
この特定のプログラミング構造は周知の技術で、MVCのイニシャルを有するモデル−ビュー−コントローラ (Model-View-Controller) アーキテクチャー、又は構造パターンと呼ばれている。MVCパターンによると、アプリケーションは、ビューコンポーネント12、コントローラコンポーネント14、及びモデルコンポーネント16を含む複数のコンポーネントである。一つのタイプのコンポーネントは、他のタイプのコンポーネントから完全に独立に実行することができ、互いに、完全に異なるコード、異なる構造、及び異なるタイプで動作する。
ビューコンポーネント12は、アプリケーション10の動作の視覚的描写を提供するための一つ以上のコンポーネントを含む。ビューコンポーネント12のコードは、ユーザーインターフェイスを描く方法、及びエンドユーザーとの対話を処理する方法を知っている。このユーザーインターフェイスは、特定のユーザーが理解してそれと対話するアプリケーションの一部である。
ビューコンポーネント12は、アプリケーション10の他のコンポーネントの影響与えること無しに、それ自身を変更ことがしばしば可能である。特に、ビューコンポーネント12は、スマートフォンのある特定のモデル、例えば、アップルやサムスンのアンドロイドベースの機器、タブレット、ローカルコンピュータ等の特定のユーザーインターフェイスが適用された他のいかなるハードウェア機器、に対して変更すことができる。ビューコンポーネント12のコードは、新しいハードウェア装置が利用できるようになるときのように、異なるハードウェア装置サポートするために、頻繁に変更することができる。
モデルコンポーネント16は、アプリケーション10のデータ及び動作コードを一定の構造に規格化する一つ以上のコンポーネントを含み、アプリケーション10でデータ操作及び処理するために使用される論理や計算を定義する。モデルコンポーネント16は、データの格納を提供するだけではなく、多くの例では、アプリケーション10の命令セットもまた提供する。
コントローラコンポーネント14は、アプリケーション10の論理や通信を提供する、一つ以上のコンポーネントを含む。コントローラコンポーネント14は、ビューコンポーネント12及びモデルコンポーネント16と対話する。コントローラコンポーネント14は、ビューコンポーネント12により提供されるユーザーインターフェイスからモデルコンポーネント16のデータを切り離すブリッジを提供する。
このアプリケーションプログラミングパターンによると、ビューコンポーネント12及びその中で動作するコードは、モデルコンポーネント16と、直接対話をしたりデータを交換したりは決してしない。コントローラコンポーネント14は、それぞれのビューコンポーネント12に情報を提供し、それぞれのビューコンポーネント12から情報を受領するためのインターフェイスを有する。同様に、コントローラコンポーネント14は、それぞれのモデルコンポーネント16に情報を提供し、それぞれのモデルコンポーネント16から情報を受領するためのインターフェイスを有する。
更に、アプリケーション10の異なる部分をこのプログラミングパターン内の異なる位置で実行することができる。いくつかの部分は、一つ以上のコントローラコンポーネント14により実行することができ、それらのコントローラコンポーネント14と一つ以上のそれぞれのビューコンポーネント12又はモデルコンポーネント16との間で情報を交換することができる。上記のいくつかの部分が一つ以上のビューコンポーネント12内で単独で実行される一方で、アプリケーションの他の部分が、一つ以上のモデルコンポーネント16により実行され、そして、一つ以上のコントローラコンポーネント14を通って、一つ以上のそれぞれのビューコンポーネント12に達する。
MVCパターンによると、各々のビューコンポーネント12及びモデルコンポーネント16は、他について関知することなく、独立して変更することができる。ある状況では、コントローラコンポーネント14は、変更されたビューコンポーネント12又はモデルコンポーネント16に応じて、変更される必要はなくてもよい。他の状況では、それらがアップデートされ変更されるように、一つ以上のコントローラコンポーネント14は、それぞれの変更されたモデルコンポーネント16又はビューコンポーネント12と接続されて更新されそして変更されてもよい。
一般的に、ビューコンポーネント12は、コントローラコンポーネント14だけと対話し、モデルコンポーネント16とは対話しない。コントローラコンポーネント14はビューコンポーネント12及びモデルコンポーネント16と対話する。そして、モデルコンポーネント16は、コントローラコンポーネント14とだけ対話し、ビューコンポーネント12とは対話しない。
様々な実施形態では、あるコンポーネントは、同じタイプの他のコンポーネントとは対話し、異なるタイプの他のコンポーネントとは対話しない。例えば、第1のコントローラコンポーネントは、第1のビューコンポーネントと対話してよく、そして、第2のコントローラコンポーネントは、第2のビューコンポーネントと対話してよい。この方式で、第1のコントローラコンポーネントは、第2のコントローラコンポーネントを介して、第2のビューコンポーネントと対話することができるが、第2のビューコンポーネントと直接対話することはできない。
あるアプリケーションは、必ずしもMVCパターンに固執しないけれども、アプリケーションは、ここに記載された実施形態を用いて、異なる装置で実行することができる別個のコンポーネントを、有していてもよい。
図1Aに示された例は、別々のコンピュータで実行可能な別個のコンポーネントのプログラミングパターンの一例である。
もう一つのプログラミングパターンを図1Bに示した。それは、図1Aに示されたものと、概念及び動作でいくつかの違いがある。図1Bの概略図に示したように、アプリケーション18は、オペレーションコンポーネント20、ビューコンポーネント26、モデルコンポーネント22及びイベント24を含むプログラミングパターンで動作する。イベント24は、オペレーションコンポーネント20、モデルコンポーネント22、及びビューコンポーネント26の間で交換される。
この特定のプログラミングパターンは、モデル、オペレーション、ビュー、及びイベントを意味する頭文字MOVEを有する。この特定のプログラミングパターンによると、ビューコンポーネント26は、ユーザーインターフェイスを提供する。ユーザーが見ることができ対話することができるすべては、ビューコンポーネント26により電力を供給される。
これは、アプリケーション18の状態の、ユーザーが理解できる表示を提供するだけではなく、ユーザーから情報を受け取り、他のコンポーネントにイベント24を伝達するために、有意な方法でユーザーインテラクションが入ってくる経路もまた提供する。ビューコンポーネント26は、オペレーションコンポーネント20又はモデルコンポーネント22にイベント24を送り出し、そして、モデルコンポーネント22又はオペレーションコンポーネント20からイベント24を探すことにより、変更を待つ。
イベント24は、ユーザーがビューコンポーネント26と対話するたびに送り出される。イベント24を監視しイベント24と対話することにより、オペレーションコンポーネント20及びモデルコンポーネント22は、ビューとの対話を特定することができ、これらのコンポーネントは、互いに干渉することなく接続することができる。オペレーションコンポーネント20は、命令セットを提供でき、データを交換でき、そして、様々なタイプのコンポーネントの間で交換されるイベント24に基いて、計算能力の配分を提供することができる。
図1Bのこのアプリケーションは、図1Aに示されたものとは異なるプログラミングパターンであり、ここに記載された発明の実施形態が非常に異なるプログラミングパターンで使用される実例として提供される。
プログラミングパターンには、現存するものや将来作成されて使用されるものなど多くの異なるタイプがある。発明の実施形態が、互いに独立な別々の装置で実行することができるコンポーネントを有する様々なプログラミングパターンにより実行可能なことを示す実例として、2つのプログラミングパターンの例が提供される。
ここに記載された実施形態には、様々な他のプログラミングパターンの例が適用でき、そして、これらの様々なプログラミングパターンは当業者にとって公知となるので、それは、ここに更に記載されなくでも当業者にとって明白なものとなる。
図2Aに、図1Aのアプリケーション10又は図1Bのアプリケーション18のようなアプリケーション内のハードウェアシステム15を示した。ハードウェアシステム15は、モバイル機器26、計算装置28、及びクラウドリソース30を含む。ある実施形態では、システム15は、モバイル機器26及び計算装置28を含むが、クラウドリソース30は含まないと認められるべきである。同様に、他の実施形態では、システム15は、計算装置28及びクラウドリソース30を含むが、モバイル機器26は含まなくてよい。更なる他の実施形態では、システム15は、モバイル機器26及びクラウドリソース30を含むが、計算装置28は含まなくてよい。
モバイル機器26は、アプリケーションの少なくとも一部を実行可能ないかなるモバイル機器も含む。モバイル機器26の例は、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、スマートウオッチ、他のスマート機器、又は他のハンドヘルドコンピュータを含む。しかし。これに限定されるものではない。
通常理解されるように、モバイル機器26は、電池で駆動され、電池の容量には限りがある。モバイル機器26は、処理や記憶能力も制限されていてもよい。そして、例えばアプリケーションを実行するためのプロセッサは一つかもしれないし、大きなグラフィック容量や複雑な数学の方程式を高速で計算する能力はないかもしれないし、また消費電力を抑制するために、処理能力は削減されるかもしれない。
計算装置28は、モバイル機器26から分離されている一つ以上のコンピュータである。計算装置28は、パーソナルコンピュータ、他のモバイル機器、又は追加の処理能力がある他のソースであってもよい。例えば、ある実施形態では、計算装置28は、図2B及び図3A−3Eに記載されたような自動車のヘッドユニットである。他の実施形態では、計算装置28はモバイル機器26のユーザーのホームコンピュータである。
計算装置28の態様の一つは、更なる電源を有する。その電源は、電力線又は送電網に接続されるもの、発電機で補われる電源を有するもの、又はヘッドユニットに電力供給するときに自動車のバッテリーに充電するために使用される交流発電機を含んでいてよい。それにより、計算装置28が使用できる電力量は一定又は無制限と考えることができ、そして、計算装置28は、少なくともモバイル機器26との対比において電源を失うことは決してないと考えることができる。
その上、計算装置28は、モバイル機器26を上回る、更なるメモリ及び処理能力を含む。例えば、計算装置28は、複雑なコードを実行する非常に高い能力及び複数のプロセスを並行して実行することができる能力を有する、一つ以上の先進のプロセッサを有していてよい。しかし、計算装置28のメモリ及び処理能力は、ある状況においてはそれでも制限されるかもしれない。
クラウドリソース30は、サーバーコンピュータのような一つ以上のコンピュータを含み、それは、モバイル機器26及び計算装置28から遠隔地にあり、複数の装置により使用される処理能力及び記憶容量を供給または割り当てる。クラウド30との対話は、無線、インターネット、有線、又は他の伝送線のような様々な接続経路でなされる。クラウド30は、少なくとも計算装置28及びモバイル機器26との対比において、無制限の処理能力、無制限の記憶容量、決して供給が停止しない一定の電力を有すると考えることができる。
アプリケーションは、これらの装置のうちの1台にその全体が備えられていてよく、又、アプリケーションは、いずれのタイプの装置であっても周囲のいろいろな装置に分散させることができる。特に、あるアプリケーションでは、一台の計算装置28に単独で存在し、アプリケーションのすべてのコンポーネントは、その一台の計算装置28内に格納されて、単独で実行される。同様に、あるアプリケーションでは、一台のモバイル機器26に単独で存在し、アプリケーションのすべての部分は、その一台のモバイル機器26内に格納されて、単独で実行される。
他の実施形態では、計算装置28は、アプリケーションを動作させるために、モバイル機器26又はクラウド30、若しくはその両方と対話をしてよい。
この例では、アプリケーションのいくつか(全てではない)のコードが計算装置28で実行されている。そして、残りのコードは、モバイル機器26、クラウド30、又はモバイル機器26とクラウド30の間で分散させて実行させている。このように、アプリケーションのいくつかのコンポーネントは、アプリケーションの他のコンポーネントが、モバイル機器26又はクラウド30で実行されている一方で、計算装置28で実行されている。
同様に、他の実施形態では、モバイル機器26は、アプリケーションを動作させるために、計算装置28又はクラウド30、若しくはその両方と対話をしてよい。
この例では、アプリケーションのいくつか(全てではない)のコードがモバイル機器26で実行されている。そして、残りのコードは、計算装置28、クラウド30、又は計算装置28とクラウド30の間で分散させて実行させている。このように、アプリケーションのいくつかのコンポーネントは、アプリケーションの他のコンポーネントが、計算装置28又はクラウド30で実行されていて、その一方では、モバイル機器26で実行されている。
アプリケーションの異なる部分又はコンポーネントを、モバイル機器26、計算装置28、クラウド30、又はそれらの組み合わせのうちの、ある特定のハードウェア機器の一つで動作させるためにダイナミックに割り当てることができる。いくつかの実施形態では、これらの装置のうちの一つが、異なるアプリケーションコンポーネントをこれらのいくつかの装置に割り当てて分配するために使用される。
この装置は、ホスト装置と呼ばれることがあり、前記いくつかの装置の動作特性をモニタしてもよいし、どのコンポーネントをどの装置で実行しているかを変更する方法を決定するためのアプリケーションの実行をモニタしてもよい。
上記のように、計算装置28、モバイル機器26、及びクラウド30は、異なる処理、メモリ、及び電力の性能を有している。同様に、装置及びシステムの間のネットワーク通信の性能及び帯域幅が異なっていることも可能である。
例えば、モバイル機器26及び計算装置28は、Bluetooth(登録商標)のような無線のローカルエリアネットワークを通して互いに通信してもよい。また、モバイル機器26及びクラウド30はセルラーネットワークを通して互いに通信してもよい。そして、計算装置28及びクラウド30は、セパレートセルラーネットワーク、インターネット、又は他のネットワーク技術のような、他の通信ネットワークを通して、互いに通信してよい。
処理、メモリ、電力、及びネットワークのそれぞれの性能は、装置で実行されているアプリケーションの数、ネットワークの混雑又は遅い伝達時間、小さいバッテリー残量のような電力供給の減少、アプリケーションの使用法、その他により、時間と共に変化させることができる。これらの特性及び性能が変化するように、コンポーネントを実行している場所も変えることができる。
例えば、モバイル機器26に供給可能な電力は、バッテリーが満充電状態から放電しきる寸前まで時間と共に変動してもよい。モバイル機器26がバッッテリー切れ寸前のとき、その内部動作は、どのアプリケーション、又は特定のアプリケーションのどの部分をそこでさせるかを制限してよい。これは、モバイル機器26の他の部分がアクティブであることを維持するために、バッテリーの残量を節約するためである
この例では、アプリケーションの一部は、モバイル機器26から、計算装置28又はクラウド30に移動して、そこで実行してよい。このように、モバイル機器26は、アプリケーションの一部そのものを実行するモバイル機器26よりも、そのアプリケーションの一部を実行している他のシステムからデータを受信することにより、消費電力を削減してよい。
同様に、モバイル機器26のバッテリーが充電されているならば、前もって移動されたアプリケーションの一部を、モバイル機器26により実行するためにモバイル機器26へ戻してもよい。
別の例では、計算装置28がセルラーネットワークを通してクラウド30と通信していれば、月々のデータプランの通信の上限に近付いているとき、クラウド30で実行されているアプリケーションの一部は計算装置28の戻してもよい。このように、処理の多くは、計算装置28自身で実行されており、コンピュータシステムのデータプラン上限を超えないように、セルラーネットワークで伝送されるデータ量を減少させることができる。
同様に、モバイル機器26が、無線ローカルエリアネットワークを通して計算装置28にデータを伝送できるところへは、処理のいくつかをモバイル機器26に移動してよい。それにより、少なくともアプリケーションの一部のために追加の処理能力を供給されている一方で、コンピューティングシステムのデータプランを用いて、セルラーネットワークから伝送されるデータ量を再度減少させることができる。
アプリケーションとしての、いろいろな装置における、メモリ、電力、ネットワーク性能、又は他の動作性能等の処理においての変更のあらゆる組み合わせは、アプリケーションコンポーネントが、常時、どの装置で実行しているかを、ダイナミックに変更、割り当て、分配する方法を判断するために使用することができる動作であると認められるべきである。前記装置のいずれかにおける、処理、メモリ、電力、ネットワーク性能、又は他の動作性能の、アプリケーションの実行中の変更のあらゆる組み合わせは、どのアプリケーションコンポーネントをどの装置で実行するかを、ダイナミックに変更、割り当て、分配する方法を決定するために使用することができるのは当然である。
いろいろな実施形態が、ここで図2Aに示されたハードウェアが異なる動作環境について説明される中で、記載される。
一つの可能な環境は自動車である。この自動車は、計算装置28としてのヘッドユニットを含み、ここでは、ユーザーは、モバイル機器26を持っていたり、持っていなかったりする。もう一つの環境は、ホテルセッティングである。このホテルでは、個々のユーザー又は宿泊客により提供される、計算装置28及び一つ以上のモバイル機器26を含む。
他の可能な環境には、船舶、航空機、家庭、又は他の状況がある。この他の状況とは、その中に別々の電源及びコンピューティングリソースを有するが、互いに対話することができる計算装置28、モバイル機器26、又はクラウド30を含んでいる。互いの対話は、装置が、まるで、すべてのアプリケーションが、ユーザーが使用する一つの装置で実行されるかのようなエクスペリエンスをユーザー提供するために、アプリケーションの異なる部分を実行しているダイナミックな変更のために行われる。
図2Bは、ここに記載される実施形態によるヘッドユニットで実行されるアプリケーションを管理するために、自動車のヘッドユニットから遠くに分離されているホスト装置を利用する、自動車環境のコンテキストダイアグラムを例示する。
システム100は、自動車102とホスト装置124を含む。ある実施形態では、システム100は、複数のモバイル機器114−116及びリモートデータサービス126を含む。
自動車102は、実際には、ヘッドユニット104を有するどんな車両をも含む。この記載は、まず自動車に言及するけれども、航空機、船舶、鉄道車両、及び、ヘッドユニットを含む他の方式の輸送手段、若しくは、家、ホテル、又は他の建物のような他の非輸送環境で利用される類似の実施形態であってもよい。
ヘッドユニット104は、インタラクティブな制御及び自動車のユーザーや乗員にユーザーインターフェイスを提供する自動車内のコンピュータである。ここで用いられるように、ユーザー及び乗員の文言は相互交換可能であって、ヘッドユニット104や自動車102と対話をするすべての人である。ヘッドユニット104は、一つ以上のアプリケーションにアクセスするために、又は、一つ以上のアクセサリー108−110と対話するために利用される。
ある実施形態では、ヘッドユニット104は、図2Aの計算装置28の実施形態である。様々な実施形態においては、ヘッドユニット104は、アクセサリーデータを表示でき、アクセサリーデータをモバイル機器114−116や他のアクセサリー等の他の装置に供給できる。
様々な実施形態において、ヘッドユニット104は、一つ以上のアプリケーションにアクセスすることや、ヘッドユニットアプリケーションとして参照されることを可能とするユーザーインターフェイスを含む。
ある実施形態では、これらのアプリケーションは、一つ以上のアクセサリー108−110である。各アプリケーションは複数のコンポーネントを含み、これらのコンポーネントは互いに対話して全体としてそのアプリケーションの機能を実行する。
ある実施形態では、コンポーネントの少なくとも一つのサブセットは、移動可能で、同一のアプリケーションの他のコンポーネントを実行している装置から分離された別の装置で実行することができる。
ある実施形態では、一つ以上のアプリケーションが、少なくとも一つのビューコンポーネント、少なくとも一つのモデルコンポーネント、及び少なくとの一つのコントローラコンポーネントで、図1Aに記載のアプリケーション10にようにモデル−ビュー−コントローラ構造に構成される。
他のアプリケーションは、図1Bのアプリケーション18により例示されたモデル、オペレーション、ビュー、及びイベント構造のような他の構成、独立したコンポーネントよりなるアプリケーションの他のタイプの構成、又は分離不可能なアプリケーションの他のタイプの構成を含んでもよい。
ある実施形態では、一つのアプリケーションの全体が、ヘッドユニット104で実行されている。他の実施形態では、アプリケーションコンポーネントの全部ではなくサブセットだけが、ヘッドユニット104で実行され、残余のアプリケーションコンポーネントは、ホスト装置124で実行される。
例えば、一つのアプリケーションのビューコンポーネントは、ヘッドユニット104で実行され、その間に、モデルコンポーネントやコントローラコンポーネントは、ヘッドユニット104に関連する現在の動作特性に応じて、ヘッドユニット104、ホスト装置124、又はそれらの組合わせで実行される。
前記動作特性は、例えば、自動車の位置、ヘッドユニットの現在の負荷、ヘッドユニットと対話するユーザー、ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、アプリケーションによるデータ利用、及びヘッドユニットのその他の動作の態様を含んでよい。しかし、これに限定されるものではない。アプリケーションが、別々の装置で実行できるコンポーネントを有さないときは、当然ながら、アプリケーションは、一つのヘッドユニット104又は一つのホスト装置124でその全体を実行してよい。
現在の動作特性が時間と共に変化するとき、ヘッドユニット104で実行されているコンポーネントセットは、この、現在の動作特性の変化に応じて変更されてよい。例えば、自動車が最初にオンされるとき、ホスト装置124は、自動車の運転手は誰か、のような、現在の動作特性の最初のセットを決定する。そして、ホスト装置124は、決定されたそれらの動作特性に基いて、一つ以上のアプリケーションを選択して運転手に提供する。
この例として、ホスト装置124が、以下のコンポーネント:VC_A、VC_B、MC_A、MC_B、CC_A及びCC_Bを有するアプリケーション_Aを選択すると仮定する。ここで、VCコンポーネントはビューコンポーネント、MCコンポーネントはモデルコンポーネント、そしてCCコンポーネントはコントローラコンポーネントのことである。ホスト装置124は、動作特性に基いて、VC_A、VC_B、及びCC_Aを選択して、ヘッドユニット104で実行するためにヘッドユニット104に提供してよく、MC_A、MC_B、及びCC_Bはホスト装置124に残って、ホスト装置124で実行される。
時間の経過とともに、ヘッドユニット104に関連した現在の動作特性は変更されてよい。この変更に応じて、ホスト装置124は、ホスト装置124でCC_Aの実行を開始できるときに、CC_Aを停止するためにヘッドユニット104に通知してよい。この時点では、ヘッドユニット104がVC_A及びVC_Bを実行していて、ホスト装置124が、MC_A、MC_B、CC_A、及びCC_Bを実行している。
又、動作特性では、別の変更が生じてもよく、ホスト装置124は、アプリケーションのすべてのコンポーネントをヘッドユニット104に提供してもよい。その結果、ヘッドユニット104が、VC_A、VC_B、MC_A、MC_B、CC_A及びCC_Bを実行していて、ホスト装置124はいずれのコンポーネントも実行していない。
どのコンポーネントをヘッドユニット104で実行するか、そして、どのコンポーネントホスト装置124やさらには他の装置で実行するかの選択は、ヘッドユニット104に関連する動作特性が時間と共に変化するのに合わせてリアルタイムでダイナミックに変更されてよい。
ホスト装置124は、サーバーコンピュータ、クラウドリソース、スマートフォン又は他のモバイル機器、及び他の計算装置のような、自動車と遠隔しているいかなるコンピュータでもあってよく、ヘッドユニット環境と関連する動作特性をモニタし、どのアプリケーションコンポーネントがヘッドユニット104又は他の計算装置で動作してものであるかをダイナミックに変更することができる。
様々な実施形態では、ホスト装置124は、図2Aに示されたモバイル機器26、クラウドリソース30、又は別の計算装置28であってよい。ここに記載されたように、ヘッドユニット104で実行されていないアプリケーションコンポーネントは、ホスト装置124又はホスト装置124により選択された他の装置で実行されている。
ホスト装置124は、一つの装置として例示されているが、実施形態は、そこまで限定するものではない。もしろ、ホスト装置124は、ヘッドユニットアプリケーションコンポーネントを、リアルタイムでダイナミックに管理する機能を集約して実行する、一つ以上のコンピュータ装置であり得る。
様々な実施形態では、ホスト装置124は、インターネットをからアクセスできるクラウドコンピューティング技術を含んでよい。
リモートデータサービス126は、データ又は他の情報を、ヘッドユニット104又はホスト装置124で実行しているアプリケーション又はアプリケーションコンポーネントに供給する、一つ以上のアプリケーションデータサービスを含んでいてよい。
例えば、ヘッドユニット104で実行されているコンポーネントは、リモートデータサービス126から、音楽データをリクエストしてもよく、リモートデータサービス126は、リクエストされたデータをヘッドユニット104に返す。
別の例では、ホスト装置124で実行されているコンポーネントが、リモートデータサービス126から、音楽データをリクエストしてもよく、リモートデータサービス126は、リクエストされたデータをホスト装置124に返す。そして、ホスト装置124は、そこでアプリケーションを実行するのにそのデータを利用し、又は、ヘッドユニット104で実行されているコンポーネントによる使用のためにそれをヘッドユニット104に提供する。
リモートデータサービス126の事例は、地図データの維持、音楽又は他のコンテンツ、ゲームデータ、並びに、アプリケーションからリクエストされるかもしれない他のタイプの情報を含んでいてもよい。
ホスト装置124、ヘッドユニット104、及びリモートデータサービス126は通信ネットワーク122を通して、互いに通信する。通信ネットワーク122は、一つ以上の装置から一つ以上の他の装置にデータを伝送するために、様々な計算装置を結合して構成される。
通信ネットワーク122は、通信技術及びトポロジーの様々な形式を使用して採用される様々な無線ネットワークを含む。ここで、通信技術及びトポロジーは、セルラーネットワーク、メッシュネットワーク等を含んでよい。しかし、これらに限定されるものではない。
様々な実施形態において、アプリケーションコンポーネントは、それがヘッドユニット104又はホスト装置124で実行されてるかにかかわらず、通信ネットワーク122を使用して、リモートデータサービス126からデータをリクエストしてよい。そして、リモートデータサービス126は、通信ネットワークを通して、ホスト装置124又はヘッドユニット104にリクエストされたデータを提供してよい。
ヘッドユニット104は、アクセサリー108−110へのユーザーアクセスを提供することもできる。アクセサリー108−110は、ユーザーによって制御可能ないかなる自動車のユーティリティ又は装置をも含むことができる。これらのアクセサリーは、例えば、アジャスタブルシート、サンルーフ、サイドミラー、バックミラー、エアーコンディショナー、パワーウィンドウ、又は自動車102の他の制御可能な機能を含む。しかし、それらに限定されるものではない。
アクセサリー108−110は、さらに、情報やデータをユーザーに提供するいかなる自動車ユーティリティや装置を実質的に含む。これらのアクセサリーは、速度計、積算距離計、油圧ゲージ、温度ゲージ、又は自動車のユーザーに情報を提供する他の自動車センサを含む。しかし、それらに限定されるものではない。
アクセサリー108−110はヘッドユニットアプリケーションを更に含む。これらのアクセサリーは、ナビゲーション、オーディオやラジオ調整機能、テレビや音楽アプリケーション、環境制御アプリケーション、自動車性能アプリケーションやメンテナンスアプリケーション、又は他のアプリケーションを含む。しかし、これらに限定されるものではない。
ここで、いくつかのアクセサリーはデータを出力するだけでもよく、いくつかのアクセサリーはアクセサリーを操作するための制御情報を受け取るだけでよく、又、いくつかのアクセサリーはデータを入出力することができる。例えば、速度計は現在の自動車の速度を出力するだけでよく、パワーウィンドウはウインドウを上下に動かす制御信号を受け取るだけで、ヘッドユニットに何ら情報を返さなくてよく。又、ナビゲーションシステムは、目的地の指示を受け取り、目的地への提案された旅行ルートを返してもよい。但し、これらの例はすべてを網羅しているわけではなく、他のタイプのアクセサリーを採用してもよい。
ヘッドユニット104は、アクセサリー通信ネットワーク106を通して、アクセサリー108−110と通信する。アクセサリー通信ネットワーク106は、アクセサリー108−110とヘッドユニット104の間でコンテンツやデータを伝送するために、アクセサリー108−110をヘッドユニット104に結合するように構成される。装置間で伝送される情報は、現在のアクセサリーの状態やデータ、アクセサリー制御データ、動画データ、音声データ、画像データ、テキストデータ、又は他のコンテンツ、データ、情報を含んでよい。
アクセサリー通信ネットワーク106は、一つ以上の物理的なネットワーク、一つ以上の無線通信ネットワーク、一つ以上のアプリケーションプログラムインターフェイス、又は、データ伝送が可能な他のネットワークを含んでいてもよく、これらは、ヘッドユニット104と通信するアクセサリーのタイプに応じて、一つのアクセサリーから他のアクセサリーへ又は一つのアクセサリーからヘッドユニット104へ、ヘッドユニット104から一つのアクセサリーへ、又はこれらの組み合わせによりデータを転送することができる。
例えば、アクセサリー通信ネットワーク106は、有線制御のエリアネットワークのような自動車の車体通信ネットワーク、Bluetooth Low Energy(登録商標)を利用するパーソナルエリアネットワークのような近距離無線通信ネットワーク、又は他のタイプのネットワークを含んでよい。
ある実施形態では、ユーザーは、ヘッドユニット104又はアクセサリー108−110と対話するため、モバイル機器114−116のようなモバイル機器を利用できてもよい。
ある実施形態では、モバイル機器114−116は、図2Aのモバイル機器26の実施形態であって良い。モバイル機器114−116は、自動車102のヘッドユニット104との通信が可能な、いかなるモバイル機器も含む。又、モバイル機器114−116は、ヘッドユニット104へ/から、コンテンツと制御信号を送信/受信するように構築されている。
モバイル機器114−116の例として、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、ウェアラブルコンピューティング機器、他のスマート機器、又は他のハンドヘルドコンピューティング機器を含むが、ただし、これらに限定はされない。
ヘッドユニット104は、モバイル機器通信ネットワーク120を通して、モバイル機器114−116と通信する。モバイル機器通信ネットワーク120は、コンテンツやデータをモバイル機器114−116とヘッドユニット104の間で伝送するために、モバイル機器114−116をヘッドユニット104の結合するように構成される。
装置間で通信される情報は、現在のアクセサリーの状態、アクセサリーデータにアクセスするためのリクエスト、アクセサリーを制御又は変更するためのリクエスト、動画データ、音声データ、画像データ、テキストデータ、又は他のタイプのコンテンツ、データ、又は情報を含んでもよい。
通信ネットワーク120は、classic Bluetooth又はBluetooth Low Energyプロトコルを利用するパーソナルエリアネットワークのような、いろいろな近距離無線通信ネットワークや、IR光ネットワーク、又は、モバイル機器114−116の間の通信を可能とするネットワーク120を含んでよい。
様々な実施形態において、通信ネットワーク122、モバイル機器通信ネットワーク120、及びアクセサリー通信ネットワーク106は、別々の通信ネットワークである。ここに記載するように、ホスト装置124及びヘッドユニット104は、モバイル機器114−116を利用することなしに、通信ネットワーク122を通して互いに直接通信することが可能である。
しかし、ヘッドユニット104が通信ネットワーク122へのアクセスを有していない実施形態では、モバイル機器116が、ヘッドユニット104とホスト装置124又はリモートデータサービス126の間の中間的な装置として利用されてもよい。このような実施形態では、ヘッドユニット104は、モバイル機器通信ネットワークを通してモバイル機器116と通信してよく、そして、モバイル機器116は、通信ネットワーク122を通して、ホスト装置124及びリモートデータサービス126と通信することができる。
他のある実施形態では、ホスト装置124は、どのコンポーネントがヘッドユニット104で実行され、どのコンポーネントがホスト装置124で実行されるかを選択することについて、ここに記載したように同じ機能を実行することができるが、この場合、ホスト装置124は、ヘッドユニット104での実行ために選択されたコンポーネントを、モバイル機器116に提供し、モバイル機器116がそれらのコンポーネントがヘッドユニット104に転送してよい。
ある実施形態では、ホスト装置124はモバイル機器114−116の一つであってよく、この場合、このモバイル機器は、どのコンポーネントがヘッドユニット104で実行され、どのコンポーネントが携帯電話で実行されるのか、を選択する計算装置となる。他の実施形態においては、ここに記載される技術は、ホスト装置124とモバイル機器116との間で採用されてもよい。
そのような少なくとも一つの実施形態においては、ホスト装置124がモバイル機器116に関連する動作特性をモニタし、ヘッドユニット104よりもむしろモバイル機器116上のアプリケーションについてここに記載された実施形態に従って、どのアプリケーションコンポーネントがモバイル機器116で実行しているかをダイナミックに変更することができる。
更に別の実施形態では、ここに記載された技術もまた、どのコンポーネントがヘッドユニット、モバイル機器、及びホスト装置の組み合わせたものの上で実行するかを決定するために採用することができる。
ある実施形態では、アプリケーションの少なくとも一つのコンポーネントを実行している各々の機器は、別々の装置で実行されているコンポーネントの間の通信を調整するために専門化したアプリケーションやオペレーティングシステムを含んでよい。
図3Aは、自動車システムの使用事例を示す。システムは、自動車102、ヘッドユニット104、及び複数の異なるアクセサリーを含む。図示されたアクセサリーは、図2Bのアクセサリー108−110の例である。アクセサリーは、ボディアクセサリー108a−108d、インフォテインメントアクセサリー110a−110f、及び無線アクセサリー109を含む。
ボディアクセサリー108a−108dは、自動車の車体通信ネットワーク218を通してヘッドユニット104と通信するアクセサリーである。自動車の車体通信ネットワーク218は、ボディアクセサリー108a−108dをヘッドユニット104に物理的に接続するコントローラエリアネットワークバスであってよい。
ボディアクセサリー108a−108dの例として、エアーコンディショナー108a、アジャスタブルミラー108b、アジャスタブルシート108c、及びサンルーフ108dを含む。しかし、これらに限定されるものではない。
インフォテインメントアクセサリー110a−110fは、ソフトウェアプログラム及び機能のように、ヘッドユニット104に埋め込まれるか、又はヘッドユニット104で実行されるアクセサリーであり、そして、インフォテインメントネットワーク216を通してヘッドユニット104と通信する。インフォテインメントネットワーク216は、ヘッドユニット104を様々なインフォテインメントアクセサリー110a−110fと通信することを可能とする一つ以上のアプリケーションプログラムインターフェイスであってよい。
インフォテインメントアクセサリー110a−110fの例として、ラジオ110a、ナビゲーション110b、オーディオ制御器110c、アプリケーション(Apps)110d、音楽110e、及びテレビ110f、又は図示されていない他のアプリケーションを含む。しかし、それらに限定されるものではない。
無線アクセサリー109は、無線ネットワーク220を通して、Bluetooth Low Energyや他の近距離無線プロトコルのような、ヘッドユニット104と通信をする他のアクセサリーを含む。無線アクセサリー109は、自動車102のバックシートに図示されているが、実施形態ではそれに限定するものではない。無線アクセサリー109は、車の中の他に位置に置くことでき、他のアクセサリーの制御を提供してよい。
様々な実施形態において、無線アクセサリー109との通信のための自動車の車体通信ネットワーク218、インフォテインメントネットワーク216、及び無線ネットワーク220は、図1のアクセサリー通信ネットワーク106の一部である。
モバイル機器114−116は、一つ以上のボディアクセサリー108a−108d、インフォテインメントアクセサリー110a−110f、無線アクセサリー109、又はそれらの組み合わせに、アクセス又は制御するためのリクエストを、ヘッドユニット104に提供することができる。
ある実施形態では、モバイル機器114−116は、アクセサリーデータをヘッドユニット104にリクエストを送信すること無しに受信することができる。このような実施形態では、ヘッドユニット104は、アクセサリーから放送されたか、ヘッドユニット104によりアクセサリーからリクエストされたか、無線ネットワーク220を通して放送又は伝送された、アクセサリーデータを得るかもしれない。モバイル機器114−116は、ヘッドユニット104からのこの放送データを聴くことができる。
図3A〜3Eは、ここに記載された実施形態によるホスト装置及びヘッドユニットのシステム図の例を示す。図3A〜3Eは、ホスト装置124及びヘッドユニット104を含む。ホスト装置124及びヘッドユニット104は、通信ネットワーク122を通して通信する。
図3Bに図示されたように、ホスト装置124は、複数のアプリケーション308を格納する。それぞれのアプリケーション308は、複数のコンポーネント330−332を含む。ここに記載するように、アプリケーション308は、一つ以上のビューコンポーネント330、一つ以上のモデルコンポーネント331、及び一つ以上のコントローラコンポーネント332を有するビュー−モデル−コントローラ構造で構成されてよい。
しかしながら、実施形態はビュー−モデル−コントローラ構造で設計されたアプリケーションに限定されるものではない。むしろ、他のアプリケーション設計もまた、いくつかコンポーネントが互いに自律している限り利用することができ、別々の装置で実行することができる。
様々な実施形態では、アプリケーションは、同じ装置で実行される必要があるコンポーネント、ホスト装置124で実行される必要があるコンポーネント、又、ヘッドユニット104で実行される必要があるコンポーネント、又はこれらの組み合わせ、のような他のコンポーネントを含んでよい。
ここに記載されたように、ホスト装置124は、どのアプリケーションがヘッドユニット104に提供されるか、それらのアプリケーションのどのコンポーネントが、ヘッドユニット104で実行され、そしてホスト装置124で実行されるのかを、ヘッドユニット104に関連した現在の動作特性に基づいて、ダイナミックに決定する。
図3Cに図示された例では、第1のユーザー320はヘッドユニットを104使用中である。ここに記載する実施形態を採用すると、ホスト装置124は、第1のユーザーのために実行するアプリケーション310を決定する。この事例では、アプリケーション310は、アプリケーション302−304を含む。
ホスト装置124は、ヘッドユニット104に提供されるアプリケーション302−304を選択する。それらの選択されたアプリケーションのうち、ホスト装置124は、アプリケーション302のビューコンポーネント、アプリケーション303のビューコンポーネント、モデルコンポーネント、及びコントローラコンポーネント、並びに、アプリケーション304のビューコンポーネント及びコントローラコンポーネント、を選択してヘッドユニット104に提供する。
ヘッドユニット104はこれらのコンポーネントの各々を実行し、一方、ホスト装置124が、アプリケーション302のモデルコンポーネント及びコントローラコンポーネント、アプリケーション304のモデルコンポーネントを実行する。図示した実施形態では、コンポーネントの異なるタイプのそれぞれは、同じ装置で実行される。例えば、アプリケーション303のすべてのコントローラコンポーネントは、ヘッドユニット104で実行される。
実施形態では、与えられたタイプの一つ以上のコンポーネントが、ヘッドユニット104により実行され、与えられたタイプの他のコンポーネントは、図3Dに記載されたような、ホスト装置124により実行される。
ここに記載されたように、ホスト装置124は、ヘッドユニット104の現在の動作特性の変更を特定してよい。それらの変更に応じて、ホスト装置124は、どのコンポーネントがヘッドユニット104で実行されるか、どのコンポーネントがホスト装置124で実行されるか、の選択を変更することができる。
図3Dに図示したとおり、ホスト装置124は、アプリケーション302−304を再度選択してヘッドユニット104へ提供する。しかし、動作特性の変更により、ホスト装置124は、アプリケーション302のコントローラコンポーネントの実行を、ホスト装置124からヘッドユニット104に移動する。そして、アプリケーション304のコントローラコンポーネント、アプリケーション303のモデルコンポーネント、アプリケーション303のコントローラコンポーネントのいくつか(全てではない)の実行をヘッドユニット104からホスト装置124へ移動する。
その結果、ホスト装置124は、アプリケーション302のビューコンポーネント及びコントローラコンポーネント、アプリケーション303のビューコンポーネント、モデルコンポーネント、及びコントローラコンポーネントのサブセット、並びにアプリケーション304のビューコンポーネントを選択してヘッドユニット104に提供する。
ヘッドユニット104は、これらのコンポーネントのそれぞれを実行し、一方、ホスト装置124がアプリケーション302のモデルコンポーネント、アプリケーション303のコントローラコンポーネントの上記とは異なるサブセット、アプリケーション304のモデルコンポーネント及びコントローラコンポーネントを実行する。
この事例では、アプリケーション303のコントローラコンポーネントは異なる装置で実行される。いくつかはヘッドユニット104により実行され、その他はホスト装置124により実行される。
図3Eは、ヘッドユニット104、ホスト装置124、又はヘッドユニット104の動作特性の変更の結果としてのそれらの組み合わせ、で実行されているアプリケーションのコンポーネントの他の例を図示する。この事例では、ヘッドユニット104のユーザーは、第1のユーザーから第2のユーザー322に変更される。
ユーザーの変更についてここに記載された実施形態を採用することにより、ホスト装置124は、第1のユーザーのための実行するアプリケーション312を決定する。この事例では、アプリケーション312は、アプリケーション303及びアプリケーション305を含む。
ホスト装置124は、ヘッドユニット104に提供されるアプリケーション303及び305を選択する。それらの選択されたアプリケーションは、ホスト装置124が、アプリケーション303のビューコンポーネント、並びにアプリケーション305のビューコンポーネント、モデルコンポーネント、及びコントローラコンポーネント、を選択してヘッドユニット104に提供する。
ヘッドユニット104は、これらのコンポーネントのそれぞれを実行し、一方でホスト装置124がアプリケーション303のモデルコンポーネント及びコントローラコンポーネントを実行する。
自動車環境の上述の事例は、限定として解釈されるものではない。そして、ここで記載れた、複数の計算装置の間でダイナミックにアプリケーションコンポーネントを割り当てる実施形態を採用することにおいて、他の動作可能な環境を使用してもよい。
又、上述の事例におけるビュー、モデル、コントローラコンポーネントの使用もまた、限定として解釈されるものではない。そして、別々の装置で実行されそしてダイナミックに変更される、上述とは異なるコンポーネントを有する他の構成パターンも、また、ここに記載される実施形態を採用することにおいて、使用することができる。
当該開示のある態様の動作を、図4及び図5を参照して説明する。様々な実施形態の少なくとも一つにおいて、図4及び図5に記載されるプロセス400及び500は、それぞれホスト装置124、計算装置128、又はクラウド30のような一つ以上の計算装置で実行されてよい、又、それにより実施されてもよい。
図4は、ここに記載された実施形態にしたがって、どのアプリケーションコンポーネントをヘッドユニット104のようなヘッドユニットで実行するか、及び、どのアプリケーションコンポーネントをホスト装置で実行するか、をダイナミックに変更するためのプロセスの概要の一実施形態を一般的に示している論理フローダイアグラムである。
開始ブロックの後、プロセス400はブロック402から始まる。ブロック402ではヘッドユニットに関連する一つ以上の現在の動作特性が特定される。この動作特性は、ヘッドユニットがどのように動作しているか、誰がヘッドユニットを使用しているかに関わる、ヘッドユニットのいくつかの態様を含む。
この動作特性は、自動車の位置、ヘッドユニットの現在の負荷、ヘッドユニットと対話中のユーザー、ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、ネットワークの混雑や待ち時間、アプリケーションによる使用データ、電力の利用や容量、ヘッドユニットやアプリケーションのその他の動作態様、を含む。しかし、これらに限定されるものではない。
一つ以上の複数の動作特性、又は、動作特性のある組み合わせを、ヘッドユニットの現在の動作特性を特定するために、常時利用することができる。
プロセス400は、ブロック404に進む。ここでは、一つ以上のアプリケーションが、ヘッドユニットへ提供するための複数のアプリケーションから選択される。様々な実施形態では、ブロック410において、選択されたコンポーネントの第1のセットが、ヘッドユニットに提供されたときに、アプリケーションはヘッドユニットに提供される。
それでも、選択されたアプリケーションは、そのユーザーにより使用されるヘッドユニットで現在利用可能なアプリケーションであり、選択されなかったアプリケーションは、そのユーザーによるヘッドユニットでの使用は、現在利用不可である。
現在利用可能なアプリケーションは、まるで、アプリケーション全体が、ヘッドユニットで実行されているようにユーザーが対話できるアプリケーションである。様々な実施形態では、ホスト装置は複数のアプリケーションを格納してよい。しかし、それらのアプリケーションのサブセットだけがヘッドユニットに提供されてよく、いつでもユーザーがアクセス可能であってよい。これらのアクセス可能なアプリケーションは、ユーザーにとって現在利用可能なアプリケーションである。
様々な実施形態では、アプリケーションは、ブロック402で関連付けられた現在の動作特性に基づいて選択される。例えば、ユーザーAは、自動車を始動するためにユーザーAの識別名に関連したキーフォブを使用してよい。ヘッドユニットは、ホスト装置に識別名を提供してよい。ホスト装置は、ユーザーAのプロフィールを選択するために識別名を使用することができる。プロフィールは、第1アプリケーション、第2アプリケーション、第3アプリケーション、及び第4アプリケーションのうち、ユーザーAは、第2アプリケーションと第4アプリケーションを好むことを指し示してよい。従って、ホスト装置は、第2アプリケーションと第4アプリケーションを選択し、ヘッドユニットに提供する。
いろいろな他の現在の動作特性や、動作特性の組み合わせは、一つ以上のアプリケーションを選択するために使用されてよい。例えば、ある実施形態では、ヘッドユニットで使用するためか、ヘッドユニットから消去するための、一つ以上のアプリケーションを、ユーザーは手動で選択してよい。
プロセス400は、ブロック406へ続く。ここでは、選択されたアプリケーションのコンポーネントの第1のセットが、ヘッドユニットで実行されるために選択される。それぞれのアプリケーションは、複数のコンポーネントを含む。ある実施形態では、いくつかのコンポーネントが、互いに別々の計算装置で実行することを許可されてよい。
他の実施形態では、あるコンポーネントが、同じ計算装置にあることが要求されうる。更なる他の実施形態では、あるコンポーネントが、ユーザーへ最終画像のレンダリングをする計算装置で実行することが要求されうる。
様々な実施形態では、アプリケーションは、一つ以上のビューコンポーネント、一つ以上のモデルコンポーネント、一つ以上のコントローラコンポーネントと共に、ビュー−モデル−コントローラ構造で構成されてよい。
ある実施形態では、選択されたコンポーネントは、選択されたアプリケーションのビューコンポーネントの少なくとも一つ又はすべてを含み、各々の選択されたアプリケーションのモデルコンポーネント及びコントローラコンポーネントのすべて又は一部を含み、若しくは、いずれも含まなくてもよい。
ホスト装置は、どのコンポーネントがヘッドユニットで実行されるか、を決定し選択するために現在の動作特性を利用してよい。前の例に続いて、第2アプリケーションが非常に計算中心的で、第4アプリケーションがデータ中心的であると仮定する。
この状況では、第4アプリケーションのモデルコンポーネント、並びに、第2アプリケーションのコントローラコンポーネント及びモデルコンポーネントは選択されていないときに、第4アプリケーションのビュー及びコントローラコンポーネント及び第2アプリケーションのビューコンポーネントが、ヘッドユニットで実行される第1のセットから選択されてよい。このように、計算が重いコンポーネントの多くは、ヘッドユニットよりは、むしろホスト装置で実行される。
実行のために選択されたコンポーネントは、現在の動作特性の複数の異なるパラメータに依存してよい。例えば、複数の異なる閾値が、ホスト装置とヘッドユニットとの間のネットワーク帯域幅に基いて、どのコンポーネントが選択されるかを決定するために利用されてよい。
例えば、帯域幅が低くなればなるほど、ヘッドユニットで実行されるために選択されたコンポーネントの数は増える。このことにより、処理がホスト装置及びヘッドユニットで並行実行されている際のホスト装置及びヘッドユニット間のデータの転送量を低減することができる。これらの例は限定するものではなく、コンポーネントの第1のセットを選択するために他の測定基準やパラメータが利用されてよい。
プロセス400は、ブロック408へ続き、ここでは、選択されたアプリケーションのコンポーネントの第2のセットが、ホスト装置で実行されるために選択される。ブロック406にて記載したのと同様に、どのコンポーネントがホスト装置で実行されるかを、決定し選択するためにホスト装置は現在の動作特性を利用してよい。
様々な実施形態では、コンポーネントの第2のセットは、選択されたアプリケーションの、ブロック406で選択されなかったものであるすべてのコンポーネントを含む。そこで、上記の例では、第4アプリケーションのモデルコンポーネントと、第2アプリケーションのコントローラコンポーネント及びモデルコンポーネントが、ホスト装置で実行される第2のセットから選択される。
ある実施形態では、アプリケーションは、ヘッドユニットで必ず実行される、又はホスト装置で必ず実行されるコンポーネントを含んでよい。例えば、あるビューコンポーネントは、ヘッドユニットで画像をレンダリングする実際のハードウェアと対話することにより、ヘッドユニットそれ自身で実行するために要求されてよい。そして、それはホスト装置での実行のためには選択することができない。
少なくとも一つの実施形態では、選択されたアプリケーションのすべてのコンポーネントは、ヘッドユニットで実行されるためのコンポーネントの第1のセットにある。一方、コンポーネントの第2のセットは、ホスト装置で実行するために選択されたアプリケーションのコンポーネントを全く含まない空集合を含む。
他のある実施形態では、ホスト装置は、ここに記載されたモバイル機器26や他の計算装置28のような他の計算装置で実行される第3のセットを選択する。ブロック406で上述されたことと同様に、ホスト装置は、現在の動作特性を、どのコンポーネントを、当該他の計算装置で実行するか、を決定し選択するために利用してよい。
プロセス400は、次のブロック410に続き、ここでは、コンポーネントの第1のセットが、ヘッドユニットによる実行のために、ヘッドユニットへ提供される。様々な実施形態では、ホスト装置は、これらのコンポーネントをヘッドユニットに提供するために、プッシュする、ダウンロードする、又は他の対話をヘッドユニットと行う。
様々な実施形態では、ヘッドユニットのオペレーションシステムは、まるで、すべてのアプリケーションがヘッドユニットで実行されているかのようなユーザーエクスペリアンスとなるように、ヘッドユニットで実行されるコンポーネントの、ホスト装置で実行されているコンポーネントとの対話を調整する。
ある実施形態では、ヘッドユニットは、ホスト装置がブロック404で選択することができる複数のアプリケーションの各々の、すべてのコンポーネントを格納してよい。少なくとも、一つのそのような実施形態では、ホスト装置は、どのコンポーネントをヘッドユニットが実行するのか、どのコンポーネントをホスト装置が実行するのか、をヘッドユニットに通知する。
他のある実施形態では、コンポーネントの第3のセットがもう一つの計算装置で実行するために選択されるとき、ホスト装置は、その計算装置による実行のため当該他の計算装置に、それらのコンポーネントを提供する。
ある実施形態では、ヘッドユニットで実行されているコンポーネントの第1のセットは、他の計算装置で実行されているコンポーネントの第3のセットと、アプリケーションを組合わせて調整された実行を促進するために対話してよい。
プロセス400は、次のブロック412へ進む。そこでは、ヘッドユニットで実行されているコンポーネントの第1のセットに関連して、ホスト装置はコンポーネントの第2のセットを実行する。ここに記載されたように、アプリケーションは、少なくともいくつかのアプリケーションコンポーネントが、互いに異なる装置から、自律して実行することができるように設計されている。このように、アプリケーションは、コンポーネントがどの装置、すなわち、ヘッドユニット、ホスト装置、又は他の装置で、それらが実行されているかに気付かず、知らないままである。
様々な実施形態では、選択されたアプリケーションが、アプリケーションが設計されたように正しく機能することを可能とするために、ホスト装置で実装されているコンポーネントの第2のセットは、ヘッドユニットで実行されているコンポーネントの第1のセットと対話してよい。
ある実施形態では、コンポーネントの第3のセットがもう一つの計算装置で実行するために選択されるとき、選択されたアプリケーションが、アプリケーションが設計されたように正しく機能することを可能とするために、ホスト装置で実行されているコンポーネントの第2のセットは、他の計算装置で実行されているコンポーネントの第3のセットと対話してよい。
プロセス400は、ブロック414へ進み、これについては、図5に関して、更に詳細に記載される。しかし簡単にいれば、ホスト装置は、選択されたアプリケーションの実行、並びに、アプリケーションの少なくとも一部を実行しているヘッドユニット、ホスト装置、及び他のいかなる装置、に関連する現在の動作特性をモニタする。
ホスト装置は、ヘッドユニットでコンポーネントの第1のセットを実行していることに関連してコンポーネントの第2のセットもまた実行する一方で、動作特性を継続的にモニタできる。
様々な実施形態では、所定の時間において、又、情報や状態が変更されたとき、ヘッドユニットは、情報や状態の最新版を提供してよい。例えば、ヘッドユニットは、その物理的な位置をホスト装置に毎分1回提供してよい。しかし、新しいユーザーがヘッドユニットにより選択されるか、又は特定されたとき、ヘッドユニットは、ホスト装置の現在のユーザーの変更を提供することができる。
ホスト装置に提供されたこの情報は、どのコンポーネントがヘッドユニットによる実行のために選択されるかをダイナミックに変更するために、モニタされる。
プロセス400は、変更が現在の動作特性で生じたかどうかを決定するために、決定ブロック416に進む。様々な実施形態において、動作特性の値があらかじめ決められたしきい値を超えて変化するとき、その変更が生じてもよい。
例えば、自動車の位置が1キロメートル以上移動した、又はヘッドユニットの負荷が30%増加したならば、そのとき、そしてアプリケーションの分担した実行に影響するかもしれない変更が生じたとする。これらの例は、なんら限定するものではなく、ヘッドユニットによる実行のためのヘッドユニットに提供されるアプリケーション又はコンポーネントの選択の変更に使用されうる現在の動作特性に変更があることを判定するために、他のパラメータが使用されてよい。
現在の動作特性の変更が特定されたら、プロセス400はブロック404にループし、ブロック406及び408においてヘッドユニット又はホスト装置で実行される、他のアプリケーション又はコンポーネントの新しいセットを選択する。あるいは、プロセス400はブロック414にループし、動作特性の変更に対応するため動作特性のモニタを継続する。種々の実施形態では、ホスト装置が動作特性をモニタする間、選択されたアプリケーションは実行し続けることができる。
図5は、ヘッドユニット環境の動作特性をモニタするプロセスの一実施形態を一般的に示している論理フローダイアグラムである。このプロセスは、ここで記載される実施形態に従って、どのアプリケーション又はコンポーネントをヘッドユニットで実行するかについて変更するべきか否かに影響する変更を特定するためのものである。
プロセス500は、スタートブロックの後のブロック502で始まり、そこでは、自動車の位置がモニタされる。様々な実施形態では、自動車の位置の変更は、ヘッドユニットで実行されるコンポーネントの変更を促す動作特性の変更を示すものであってもよい。
例えば、自動車が、限定された又はセルラーネットワークがカバーしない領域の方向へ移動していると、ホスト装置は、ネットワークへの接続を失う前に、アプリケーションの追加のコンポーネントをヘッドユニットへ提供しようとしてもよい。ヘッドユニットで実行されているコンポーネントは、ホスト装置で実行されているコンポーネントと調和しているので、ヘッドユニットがセルラーネットワークアクセスを失ったならば、その調和が一時中断され、アプリケーションの機能を減らすことや一時停止をするかも知れない。
しかし、ホスト装置からヘッドユニットへ追加コンポーネントが提供されることにより、ヘッドユニットは、ホスト装置で実行されているコンポーネントと調和するために、セルラーネットワークの接続性に頼ることなく、アプリケーションを実行することができる。自動車の位置の他のタイプの変更もまた、モニタされてよい。
プロセス500は、ブロック504に進む。そこでは、ホスト装置とヘッドユニットの間のネットワーク接続性がモニタされる。様々な実施形態において、ヘッドユニットはホスト装置にハートビートメッセージを周期的に送信し、ネットワーク接続がまだ存在することを表示してもよい。他の実施形態では、他の動作特性の情報や状態の最新版を受信することもまた、ネットワークの接続性を示している。ある他の実施形態では、ホスト装置は、メッセージをヘッドユニットに送ることによって、ネットワークの接続性をテストし、ホスト装置は、メッセージが返るのに要する時間を計算してよい。
ネットワークの接続性が連続的に悪化するときは、ホスト装置が、コンポーネントをヘッドユニットへ更に移してもよい。しかし、ネットワークの接続性が改善したら、ホスト装置は、いくつかのコンポーネントの実行をヘッドユニットから取り戻してよい。
プロセス500は、ブロック506に進む。そこでは、ネットワークデータの利用がモニタされる。様々な実施形態では、ホスト装置は、ホスト装置とヘッドユニットとの間での双方向で伝送されたデータ量を算出する。ある実施形態では、ヘッドユニットは、ヘッドユニットと一つ以上の、図1のリモートデータサーバ126のようなデータサーバー間での双方向で伝送されたデータ量を調べてよい。
ホスト装置が、ヘッドユニットにより使用されているネットワーク帯域幅の総量を決定できるように、ヘッドユニットは、この調査データをホスト装置に提供してよい。ある実施形態では、利用されるネットワークデータの量が増加するとき、ホスト装置で実行されているコンポーネントとヘッドユニットで実行されているコンポーネントとの調和に使用されるネットワークデータの量を減少させるために、更なるコンポーネントが、ヘッドユニットでの実行のためにヘッドユニットに提供してよい。
プロセス500は、アプリケーション毎にそれらのアプリケーションの使用をモニタするための次のブロック508に進む。ヘッドユニットは、アプリケーション利用についての様々な測定基準をホスト装置に提供してよい。そのような測定基準は、ユーザーがアプリケーションを使用する時間の長さ、アプリケーションに使用されるコンピューティングリソースの量、使用頻度、自動車の位置と使用の相関関係、使用時刻、又は、ユーザーがどのようにアプリケーションを使用するかの他の測定可能な基準も、含んでいてよい。
このモニタされた利用は、ユーザーが、いつ、どの程度アプリケーションを使用するかを予測したり、どのアプリケーションが選択されるかを変更したりするのに用いられ、所望の時間ユーザーに提供される。
例えば、高速道路上で運転するときに、ユーザーが特定の音楽アプリケーションだけを使用すると仮定する。ホスト装置が、自動車が市街地で運転されていることを、図4のブロック402で最初に特定すれば、そのアプリケーションはブロック404で選択されなくてよい。その結果、その音楽アプリケーションは、現在、ユーザーが利用できない状態となる。
ホスト装置が、自動車を高速道路上にあると特定すれば、ここに記載されるように、音楽アプリケーションのどのコンポーネントがヘッドユニットで実行されるか、そして、音楽アプリケーションのどのコンポーネントがホスト装置で実行されるか、を選択することにより、その音楽アプリケーションを選択し、ヘッドユニットにその音楽アプリケーションを提供することができる。
プロセス500は、次のブロック510に進む。そこで、ヘッドユニットのユーザーの変更が特定される。ある実施形態では、自動車の搭乗者は、ヘッドユニットの異なるユーザーを選択するために、ヘッドユニットのユーザーインターフェイスを利用してよい。他の実施形態では、自動車のアクセサリーへのアクセスを開始するモバイル機器は、異なるユーザーを指し示してよい。ヘッドユニットは、新しいユーザーのプロフィールを選択し、ヘッドユニットに提供するための他のアプリケーションを選択することができるように、新しいユーザーの識別名をホスト装置に提供することができる。
プロセス500は、ブロック512に続く。そこでは、ヘッドユニットの負荷が、モニタされる。ここでモニタされた負荷は、プロセッサ利用のパーセンテージ、使用された又は利用可能なメモリ量、他のコンピューティングリソースの能力の利用を含んでよい。
現在の負荷が、あらかじめ決められたしきい値を超えて増加する時は、いくつかのコンポーネント、特に計算負荷が重いコンポーネントは、ヘッドユニットよりも、むしろホスト装置で実行されるべきであることを、ヘッドユニットの現在の負荷の変更は指し示してよい。その結果、ここで記載されたように、ホスト装置は、ヘッドユニットで実行されているコンポーネントの選択を変更ことができる。
ブロック512の後、プロセス500は終了するか、他の実行をするためのプロセスを呼び出すために戻るか、のいずれかとなる。
様々な実施形態において、一つ以上の現在の動作特性は、その動作特性の変更があるかを決定するために、単独で又は組む合わせで、モニタされて利用されてよいが、このような動作特性の変更とは、ヘッドユニットに提供されるアプリケーションの変更、又は、ヘッドユニットでどのコンポーネントを実行するのか及びホスト装置でどのコンポーネントを実行するのかの選択の変更をもたらすような変更である。
これらの変更は、ヘッドユニットが用いられている間、リアルタイム又はほぼリアルタイムで生じる可能性がある。そのように、ホスト装置は、ヘッドユニットに関連する現在の動作特性に基づいて、どこでそのアプリケーションのコンポーネントを実行するのかを、ダイナミックにモニタし調整する。加えて、上述の動作特性に限定するものではなく、ユーザーエクスペリエンス又はヘッドユニットの動作環境に影響を与える他の動作特性が、モニタされてもよい。
ヘッドユニットのユーザーのためにヘッドユニットで実行されるアプリケーションに関して、図4のプロセス400及び図5のプロセス500が記載されているが、実施形態はそれに限定されるものではない。
他の実施形態においては、プロセス400及びプロセス500は、どのアプリケーションコンポーネントを他の計算装置で実行するかをダイナミックに変更するよう実行されてよい。このような他の計算装置は、図2Aにおいて記載された計算装置28やモバイル機器26であり、それらは、ここに記載された実施形態のアプリケーションを実行するためにユーザーが使用するものである。
ある実施形態では、プロセス400及びプロセス500は、ホスト装置よりもむしろ、ヘッドユニットや他の計算装置で実行されてよい。
そのような少なくとも一つの一つの実施形態では、ヘッドユニットが、ヘッドユニット上でそのユーザーに提供するための一つ以上のアプリケーションを選択し、どのコンポーネントをヘッドユニットで実行するかを選択し、どの他のコンポーネントをホスト装置や他の装置で実行するかを選択する。そして、それらの他の機器に他のコンポーネントを提供し、動作特性に変更があるかを決定するために自分自身の現在の動作特性モニタし、それらの動作特性の変更に基いて、どのコンポーネントをそれぞれの装置で実行するかをダイナミックに変更する。
様々なフローチャートに記載された実施形態は、その文脈から明らかに違ったものであると指示されない限り、並列に、直列に、又それらの組み合わせで実行されてよいのは、勿論である。
従って、いろいろなフローチャートの中の、一つ以上のブロック又はブロックの組み合わせが、他のブロック又はブロックの組み合わせと平行して実施されてよい。また、一つ以上のブロック又はブロックの組み合わせが、そのフローチャートで図示された手順とは異なる手順で実施されてもよい。
図6は、ここに記載される実施形態のコンピューティングシステムの一実施例を記載するシステム図である。システム600は、ヘッドユニット104、ホスト装置124、アクセサリー108−111、及びモバイル機器114−116を含む。
ここに記載されるとおり、どのアプリケーションコンポーネントをヘッドユニット104で実行するのか、どのコンポーネントをホスト装置124で実行するのかをホスト装置124にダイナミックに選択させため一つ以上の特殊用途コンピュータシステムが使用される。
従って、ここに記載される様々な実施形態は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせで実行されてよい。ホスト装置124は、メモリ644、一つ以上の中央処理装置(CPUs)662、I/Oインターフェイス666、コンピュータが読み出し可能な媒体668、ネットワークインターフェイス670を含む。
メモリ644は、不揮発性及び/又は揮発性の格納技術の、一つ以上のいろいろなタイプを含む。例えば、メモリ644は、フラッシュメモリ、ハードディスクドライブ、光ドライブ、ソリッドステートドライブ、様々なタイプのランダムアクセスメモリ(RAM)、様々なタイプのリードオンリーメモリ(ROM)、その他のコンピュータが読み出し可能な格納媒体(プロセッサが読み出し可能な格納媒体も含む)、又は、他のメモリ技術、又はこれらのあらゆる組み合わせを含む。しかし、これらに限定されるものではない。
メモリ644は、動作を実施するためのCPU662で利用可能なコンピュータが読み出し可能な命令を含み、少なくとも、ここに記載されたある実施形態を含む、情報を格納するために利用される。
メモリ644は、その中に、ダイナミックアプリケーション管理モジュール646を含む、いろいろなモジュールを格納したものであって良い。ダイナミックアプリケーション管理モジュール646は、ヘッドユニット104に関連する動作特性をモニタし、どのコンポーネントをヘッドユニット104で実行するか、どのコンポーネントをホスト装置124で実行するか、を決定する。
ダイナミックアプリケーション管理モジュール646は、選択されたコンポーネントを、通信ネットワーク122をとおして、ヘッドユニット104に提供する。ダイナミックアプリケーション管理モジュール646は、ヘッドユニット104に関連した動作特性を特定したり、ヘッドユニット104で実行するコンポーネントの選択をダイナミックに変更するために使用される動作特性の変更を特定したりするために、通信ネットワーク122をとおして、ヘッドユニット104からの、様々なデータや情報を受信することができる。
メモリ644には、アプリケーション648も格納されている。アプリケーション648は、一つ以上のアプリケーションの複数のコンポーネントを含む。ここに記載されたように、ホスト装置124は、どのコンポーネントをヘッドユニット104で実行するか、どのコンポーネントをホスト装置124で実行するか、を決定する。このように、アプリケーション648のいくつかのコンポーネントは、ホスト装置124のCPU662により実行されてよく、そして、いくつかはアプリケーション614としてヘッドユニット104に提供され、ヘッドユニット104のCPU622により実行されてよい。
メモリ644は、他のプログラム650及び他のデータ652も格納してよい。他のデータ652は、ヘッドユニット104を使用するユーザーの一つ以上のユーザープロフィールを含んでよい。例えば、多くの人々がヘッドユニット104を含む自動車を運転している場合、プロフィールは、各々の異なるドライバー毎に格納されてよい。プロフィールは、一人以上の搭乗者についても、格納されてよい。
それぞれのプロフィールは、ユーザーが最も頻繁に使用するアプリケーションのリスト、直近使用されたアプリケーションの特定、ユーザーの好み、及び他の情報を含んでいてよい。これらのプロフィールは、ヘッドユニット104の動作特性を決定するために、ホスト装置124に利用されてよい。例えば、ある実施形態では、ユーザーは、ヘッドユニット104のユーザー識別名を選択又は入力することができ、又、ヘッドユニットは、自動車の起動に使用されるキー又はキーフォブに基づいてユーザー識別名を決定してよい。
ヘッドユニット104は、ホスト装置124にユーザー識別名を提供する。ホスト装置124は、他のデータ652の中の一致するユーザープロフィールを探索するためにユーザー識別名を使用する。ユーザープロフィールの情報は、少なくともヘッドユニットに関連する現在の動作特性の初期設定として使用することができる。
I/Oインターフェイス666は、いろいろな他の入力又は出力装置、例えば、オーディオインターフェイス、表示インターフェイス、他の動画インターフェイス、USBインターフェイス等のインターフェイスを含んでいてよい。他のコンピュータで読み出し可能な媒体668は、他のタイプの読み出し専用、又は消去可能なコンピュータが読み出し可能な媒体、例えば、消去可能なフラッシュドライブ、外部ハードドライブ等のインターフェイスを含んでいてよい。
ネットワークインターフェイス670は、他の計算装置と、例えば、通信ネットワーク122を通してヘッドユニット104と、通信するように構成される。
ここに記載されるとおり、一つ以上の特殊用途コンピュータシステムが、アプリケーションコンポーネントを実行し、ホスト装置124と通信するためのヘッドユニット104を実施するために使用される。従って、ここに記載される様々な実施形態は、ソフトウェア、ハードウェア、ファームウェアを単独で、又はこれらの組み合わせで、実施されてよい。このヘッドユニット104は、メモリ604、一つ以上の中央処理装置(CPUs)622、ディスプレイ624、I/Oインターフェイス626、他のコンピュータが読み出し可能な媒体628、及びネットワークインターフェイス630を含む。
メモリ604は、不揮発性及び/又は揮発性の格納技術の、一つ以上のいろいろなタイプを含む。例えば、メモリ604は、フラッシュメモリ、ハードディスクドライブ、光ドライブ、ソリッドステートドライブ、様々なタイプのランダムアクセスメモリ(RAM)、様々なタイプのリードオンリーメモリ(ROM)、その他のコンピュータが読み出し可能な格納媒体(プロセッサが読み出し可能な格納媒体も含む)、又は、他のメモリ技術、又はこれらのあらゆる組み合わせを含む。しかし、これらに限定されるものではない。
メモリ604は、動作を実施するためのCPU622で利用可能なコンピュータが読み出し可能な命令を含む情報を格納するために利用され、少なくとも、ここに記載された実施形態のいくつかを含む。
メモリ604は、ユーザー装置管理モジュール608及びアクセサリー管理モジュール610を含むいろいろなモジュールを、その中に格納してよい。
ユーザー装置管理モジュール608は、一つ以上のモバイル機器114−116と、モバイル機器通信ネットワーク120をとおして、通信してよい。このユーザー装置管理モジュール608は、アクセサリー108−110を制御するため、モバイル機器114−116からコマンドリクエスト受信することができ、アクセサリーデータや情報をモバイル機器114−116へ送信することができる。
アクセサリー管理モジュール610は、通信ネットワーク106をとおして、一つ以上のアクセサリー108−110と対話をすることができる。このアクセサリー管理モジュール610は、アクセサリー108−110からのアクセサリーデータや情報を受信することと、アクセサリー108−110を制御するためのコマンドリクエストを送信することができる。
メモリ604は、その中にアプリケーション614も格納していてよい。ここに記載されるように、アプリケーション614は、ホスト装置124によりヘッドユニット104に提供され、ヘッドユニット104で実行される、一つ以上のアプリケーションの一つ以上のコンポーネントを含む。
このアプリケーション614は、一つ以上のアクセサリーを含んでいてよい。これらのアクセサリーは、例えば、ナビゲーションアプリケーション、ラジオ及びオーディオアプリケーション、自動車環境制御アプリケーション、自動車性能や整備アプリケーション、又は他の自動車関連のアプリケーションを含む。
メモリ604は、他のプログラム618及び他のデータ620も含んでよい。他のデータ620は、アクセサリーデータやいろいろなアクセサリー108−110に関連する他のデータ618も格納する。例えば、他のデータ620は、音楽のプレイリストやラジオ局の好み、地図の経由地、ユーザーコンタクト情報、ヘッドアップディスプレイ及びレイアウトに関するユーザーの好みを格納していてよい。
ディスプレイ624は、コンテンツや情報をユーザーにレンダリングすることができる表示装置である。例えば、ディスプレイ624は、地図、ラジオ局情報、アプリケーション、自動車の環境制御、他のユーザーインターフェイスを表示してよい。ディスプレイ624は、液晶ディスプレイ、LED、又は他のタイプの表示装置、及びユーザーの手、タッチペンや、その他のものからの入力を受け付けることができるタッチスクリーンであってよい。
I/Oインターフェイス626は、オーディオインターフェイス、他の動画インターフェイス、USBインターフェイス等、種々の入出力インターフェイスを含んでいてよい。
他のコンピュータが読み出し可能な媒体628は、消去可能なフラッシュドライブ、外部ハードドライブ、その他のような、他のタイプの読み出し専用、又は消去可能なコンピュータが読み出し可能な媒体を含んでよい。
ネットワークインターフェイス630は、例えば、通信ネットワーク122をとおしてホスト装置124と、モバイル通信ネットワーク120をとおしてモバイル機器114−116と、アクセサリー通信ネットワークをとおしてアクセサリー108−110と、のように、他のコンピュータ装置と対話するように構成される。
説明を容易にするために、システム600は、ヘッドユニット104を参照して記載されている。しかし、上述の通り、他の計算装置28又はモバイル機器26は、別々の処理装置で実行されるダイナミックに割り当てられたアプリケーションコンポーネントの実施に際して使用されてもよい。そして、それらのシステムは、ヘッドユニット104に関して図示されたように、同様なコンピューティングリソース、例えば、処理装置、ディスプレイ、ネットワークインターフェイス、メモリ、他のインターフェイス等を含んでもよい。
上述の様々な実施形態は、更なる実施形態を提供するために組み合わせることができる。これらと他の変更は、上述の発明の詳細な説明の観点で実施形態を作成することができる。一般に、下記の請求項において、使用された文言は、請求の範囲を、明細書や請求の範囲に記載された、ある特定の実施形態に限定されるべきものではなく、そのような請求項が、名称を与えられる等価物のすべての可能な実施形態を含むと理解されるべきものである。従って、請求項の範囲は、上記開示によって、なんら限定されるものではない。

Claims (20)

  1. 自動車のヘッドユニットから遠隔するホスト装置で実行する方法であって、
    前記ヘッドユニットと現在の動作特性とを特定することと、
    一つ以上のビューコンポーネント、一つ以上のモデルコンポーネント、及び一つ以上のコントローラコンポーネントを含むアプリケーションのビューコンポーネントを前記ヘッドユニットで実行するために前記ヘッドユニットに提供することと、
    前記現在の動作特性に基いて、前記アプリケーションのモデルコンポーネントを、前記ヘッドユニットで実行するために、リアルタイムでダイナミックに選択することと、
    前記現在の動作特性に基いて、前記アプリケーションのコントローラコンポーネントを、前記ヘッドユニットで実行するために、リアルタイムでダイナミックに選択することと
    前記現在の動作特性が時間と共に変化したときに、前記ヘッドユニットで実行するために、前記選択されたモデルコンポーネント及び前記選択されたコントローラコンポーネントを前記ヘッドユニットにダイナミックに提供することと、
    前記アプリケーションの選択されなかったモデルコンポーネント及び前記アプリケーションの選択されなかったコントローラコンポーネントをホスト装置で実行することと、
    を備える方法。
  2. 前記現在の動作特性に基いて、複数のアプリケーションから前記アプリケーションを選択すること、を更に備える請求項1に記載の方法。
  3. 前記現在の動作特性は、前記自動車の位置、前記ヘッドユニットの現在の負荷、前記ヘッドユニットと対話しているユーザー、前記ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、及び前記アプリケーションによるデータ利用、のうち、少なくとも一つを含む、請求項1に記載の方法。
  4. 前記現在の動作特性の変化を特定することと、
    前記現在の動作特性の特定された変化に応じて、前記アプリケーションの前記モデルコンポーネントの選択を変更することと、
    前記現在の動作特性の特定された変化に応じて、前記アプリケーションの前記コントローラコンポーネントの選択を変更することと、を更に備える請求項1に記載の方法。
  5. 前記アプリケーションの前記モデルコンポーネントをダイナミックに選択することは、
    前記ヘッドユニットにより実行される前記アプリケーションのすべてのモデルコンポーネントを選択することと、
    前記ホスト装置上で前記アプリケーションのすべてのコントローラコンポーネントを実行することと、を含む請求項1に記載の方法。
  6. 前記アプリケーションの前記モデルコンポーネントをダイナミックに選択することは、
    前記ヘッドユニットにより実行される前記アプリケーションのすべてのコントローラコンポーネントを選択することと、
    前記ホスト装置上で前記アプリケーションのすべてのモデルコンポーネントを実行することと、を含む請求項1に記載の方法。
  7. 前記アプリケーションの前記モデルコンポーネントをダイナミックに選択することは、
    前記ヘッドユニットにより実行される前記アプリケーションのすべてのコントローラコンポーネントを選択することと、
    前記ヘッドユニットにより実行される前記アプリケーションのすべてのモデルコンポーネントを選択することと、
    前記ホスト装置では、前記アプリケーションのいずれのコンポーネントも実行しないことと、を含む請求項1に記載の方法。
  8. 第1段階において、前記現在の動作特性に基づいて、前記ヘッドユニットにより実行される前記アプリケーションの複数のコントローラコンポーネントのサブセットを選択することと、
    前記第1段階の後の第2段階において、前記現在の動作特性の変化に応じて、前記コントローラコンポーネントの前記サブセットの実行を中断するように、前記ヘッドユニットへ通知することと、前記ホスト装置上で前記コントローラコンポーネントの前記サブセットを実行することと、をさらに備える請求項1に記載の方法。
  9. 第1段階において、前記現在の動作特性に基いて、前記ヘッドユニットにより実行される前記アプリケーションの複数のモデルコンポーネントのサブセットを選択することと、
    前記第1段階の後の第2段階において、前記現在の動作特性の変更に応じて、前記モデルコンポーネントの前記サブセットの実行を中断するように、前記ヘッドユニットへ通知することと、前記ホスト装置上で前記モデルコンポーネントの前記サブセットを実行することと、をさらに備える請求項1に記載の方法。
  10. ホスト装置を備えるシステムであって、
    前記ホスト装置は、命令を格納するためのメモリと、前記命令を実行するプロセッサと、を含み、当該命令は、
    ユーザーの計算装置に関連する現在の動作特性を特定し、
    前記現在の動作特性に基づいて、前記計算装置の前記ユーザーのためのアプリケーションを選択し、
    前記現在の動作特性に基づいて、前記選択されたアプリケーションの複数のコンポーネントから、コンポーネントのセットを選択し、
    前記計算装置で実行するために、前記コンポーネントのセットを、前記計算装置に提供し、
    前記ホスト装置上で、前記選択されたアプリケーションの前記複数のコンポーネントから選択されなかったコンポーネントを実行することを含み、
    前記システムは、前記計算装置をさらに備え、
    前記計算装置は、命令を格納するためのメモリと、前記命令を実行するプロセッサと、を含み、当該命令は、前記ホスト装置により前記計算装置に提供された、前記選択されたアプリケーションの前記コンポーネントのセットを実行する命令であるシステム。
  11. 前記現在の動作特性は、前記計算装置の位置、前記計算装置の現在の負荷、前記計算装置と対話するユーザー、前記ユーザーによる複数のアプリケーションの利用、ネットワークの接続性、及び前記アプリケーションによるデータ利用、のうち、少なくとも一つを含む、請求項10に記載のシステム。
  12. 前記アプリケーションの前記複数のコンポーネントは、少なくとも一つのビューコンポーネント、少なくとも一つのモデルコンポーネント、及び少なくとも一つのコントローラコンポーネントを含む、請求項10に記載のシステム。
  13. 前記コンポーネントのサブセットは、少なくとも一つのビューコンポーネントを含む、請求項12に記載のシステム。
  14. 前記ホスト装置の前記プロセッサは、
    前記現在の動作特性の変化を特定し、
    前記現在の動作特性の前記特定された変更に基づいて、前記複数のコンポーネントから、コンポーネントの新しいセットを選択し、
    前記計算装置により実行させるために、前記計算装置に、前記コンポーネントの新しいセットを提供する、命令を更に実行する請求項10に記載のシステム。
  15. 前記計算装置の前記プロセッサは、
    前記計算装置による前記コンポーネントの前記セットの実行を中断し、
    前記ホスト装置により、前記計算装置に提供された前記コンポーネントの新しいセットを実行する、命令を更に実行する請求項14に記載のシステム。
  16. 命令を格納するためのメモリと、前記命令を実行するプロセッサと、を含む計算装置であって、当該命令は、
    自動車のヘッドユニットに関連する現在の動作特性を特定し、
    前記現在の動作特性に基づいて、前記ヘッドユニットで実行されるアプリケーションの複数のコンポーネントから、コンポーネントの第1のセットを選択し、
    前記現在の動作特性に基づいて、前記計算装置で実行されるアプリケーションの複数のコンポーネントから、コンポーネントの第2のセットを選択し、
    前記ヘッドユニットにより実行するために、前記コンポーネントの第1のセットを、前記ヘッドユニットに提供し、
    前記計算装置で、前記コンポーネントの第2のセットを実行する、
    命令である計算装置。
  17. 前記第1のセットは、前記アプリケーションの前記複数のコンポーネントを含み、前記第2のセットは、コンポーネントの空のセットである、請求項16に記載の計算装置。
  18. 前記プロセッサは、
    前記現在の動作特性に基づいて、複数の利用可能なアプリケーションから、複数のアプリケーションを選択し、
    前記現在の動作特性に基いて、前記ヘッドユニットで実行される、選択された各々のアプリケーションの複数のコンポーネントから、前記コンポーネントの第1のセットを選択し、
    前記現在の動作特性に基いて、前記計算装置で実行される、選択された各々のアプリケーションの複数のコンポーネントから、前記コンポーネントの第2のセットを選択する、請求項16に記載の計算装置。
  19. 前記アプリケーションの前記複数のコンポーネントは、少なくとも一つのビューコンポーネント、少なくとも一つのモデルコンポーネント、及び少なくとも一つのコントローラコンポーネントを含む、請求項16に記載の計算装置。
  20. 前記現在の動作特性の変化を特定し、
    前記現在の動作特性の前記特定された変化に応じて、前記コンポーネントの第1のセットの前記選択を変更し、
    前記現在の動作特性の前記特定された変化に応じて、前記コンポーネントの第2のセットの前記選択を変更する、ことを更に備える請求項16に記載の計算装置。
JP2018543651A 2016-02-19 2016-12-21 自動車及びクラウドのハイブリッド環境のためのダイナミックなアプリケーションの実行 Active JP6953415B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/048,385 US10232709B2 (en) 2016-02-19 2016-02-19 Dynamic application execution for automobile and cloud hybrid environments
US15/048,385 2016-02-19
PCT/US2016/068087 WO2017142620A1 (en) 2016-02-19 2016-12-21 Dynamic application execution for automobile and cloud hybrid environments

Publications (3)

Publication Number Publication Date
JP2019510404A true JP2019510404A (ja) 2019-04-11
JP2019510404A5 JP2019510404A5 (ja) 2020-01-16
JP6953415B2 JP6953415B2 (ja) 2021-10-27

Family

ID=59626199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018543651A Active JP6953415B2 (ja) 2016-02-19 2016-12-21 自動車及びクラウドのハイブリッド環境のためのダイナミックなアプリケーションの実行

Country Status (7)

Country Link
US (2) US10232709B2 (ja)
EP (1) EP3416861B1 (ja)
JP (1) JP6953415B2 (ja)
CN (2) CN113879326A (ja)
AU (2) AU2016393252B9 (ja)
CA (1) CA3013753A1 (ja)
WO (1) WO2017142620A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984383A (zh) * 2020-08-18 2020-11-24 薛东 基于云网融合和人工智能的业务数据处理方法及云端平台

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10232709B2 (en) * 2016-02-19 2019-03-19 Xevo Inc. Dynamic application execution for automobile and cloud hybrid environments
EP3953814A4 (en) * 2019-04-12 2022-12-14 Harman International Industries, Incorporated ELASTIC CALCULATION FOR IN-VEHICLE COMPUTING SYSTEMS
US11115482B1 (en) * 2020-03-31 2021-09-07 Xevo Inc. System and method for correlating keep-alive connection communications with unary connection communications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000268293A (ja) * 1999-03-02 2000-09-29 Daimlerchrysler Ag 分散型車両情報処理および車両制御システム
JP2007317121A (ja) * 2006-05-29 2007-12-06 Toyota Motor Corp 車載多機能装置、メタデータ
JP2013509033A (ja) * 2009-10-15 2013-03-07 エアビクティ インコーポレイテッド 自動車両ソフトウェアアプリケーション及びサービスの集中管理
JP2013152541A (ja) * 2012-01-24 2013-08-08 Nippon Telegr & Teleph Corp <Ntt> コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム
US20150229711A1 (en) * 2012-10-25 2015-08-13 Volkswagen Aktiengesellschaft Device and method for providing multimedia data in a motor vehicle

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8136138B2 (en) 2005-12-15 2012-03-13 Visteon Global Technologies, Inc. Display replication and control of a portable device via a wireless interface in an automobile
US9370029B2 (en) * 2009-10-15 2016-06-14 Airbiquity Inc. Efficient headunit communication integration
CN104115119B (zh) 2012-01-09 2018-05-04 哈曼国际工业有限公司 与信息娱乐主机单元的移动装置应用程序集成
US8914012B2 (en) * 2012-10-16 2014-12-16 Excelfore Corporation System and method for monitoring apps in a vehicle to reduce driver distraction
US9374423B2 (en) * 2012-10-16 2016-06-21 Excelfore Corporation System and method for monitoring apps in a vehicle or in a smartphone to reduce driver distraction
US9031710B2 (en) * 2012-11-07 2015-05-12 Cloudcar, Inc. Cloud-based vehicle information and control system
US9569984B2 (en) * 2012-12-11 2017-02-14 Abalta Technologies, Inc. Recording, monitoring, and analyzing driver behavior
US20150058251A1 (en) * 2013-08-02 2015-02-26 Tweddle Group Systems and methods of creating and delivering item of manufacture specific information to remote devices
US9374355B2 (en) * 2013-10-28 2016-06-21 GM Global Technology Operations LLC Programming vehicle modules from remote devices and related methods and systems
US9459340B2 (en) * 2014-01-06 2016-10-04 Ford Global Technologies, Llc Method and system for a head unit application host for a radar detector
US10029682B2 (en) * 2016-01-22 2018-07-24 Toyota Motor Engineering & Manufacturing North America, Inc. Surrounding vehicle classification and path prediction
US10232709B2 (en) * 2016-02-19 2019-03-19 Xevo Inc. Dynamic application execution for automobile and cloud hybrid environments

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000268293A (ja) * 1999-03-02 2000-09-29 Daimlerchrysler Ag 分散型車両情報処理および車両制御システム
JP2007317121A (ja) * 2006-05-29 2007-12-06 Toyota Motor Corp 車載多機能装置、メタデータ
JP2013509033A (ja) * 2009-10-15 2013-03-07 エアビクティ インコーポレイテッド 自動車両ソフトウェアアプリケーション及びサービスの集中管理
JP2013152541A (ja) * 2012-01-24 2013-08-08 Nippon Telegr & Teleph Corp <Ntt> コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム
US20150229711A1 (en) * 2012-10-25 2015-08-13 Volkswagen Aktiengesellschaft Device and method for providing multimedia data in a motor vehicle

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984383A (zh) * 2020-08-18 2020-11-24 薛东 基于云网融合和人工智能的业务数据处理方法及云端平台
CN111984383B (zh) * 2020-08-18 2021-05-14 上海悟景信息科技有限公司 基于云网融合和人工智能的业务数据处理方法及云端平台

Also Published As

Publication number Publication date
AU2021202389A1 (en) 2021-05-20
CN113879326A (zh) 2022-01-04
US20170240048A1 (en) 2017-08-24
EP3416861A4 (en) 2019-11-27
WO2017142620A1 (en) 2017-08-24
CN109070876B (zh) 2021-10-29
AU2016393252B2 (en) 2021-01-21
US10596907B2 (en) 2020-03-24
CA3013753A1 (en) 2017-08-24
JP6953415B2 (ja) 2021-10-27
EP3416861B1 (en) 2022-09-21
AU2016393252B9 (en) 2021-02-04
US20190210463A1 (en) 2019-07-11
EP3416861A1 (en) 2018-12-26
CN109070876A (zh) 2018-12-21
AU2016393252A1 (en) 2018-08-16
US10232709B2 (en) 2019-03-19

Similar Documents

Publication Publication Date Title
US11946756B2 (en) Determining matches using dynamic provider eligibility model
US10596907B2 (en) Dynamic application execution for automobile and cloud hybrid environments
US8386091B2 (en) Methods and apparatus for dynamic powertrain management
KR102317881B1 (ko) 분산형 컴퓨팅 네트워크, 특히 분산형 컴퓨팅 네트워크의 에지 클라우드 컴퓨터를 운영하기 위한 방법
US20230036199A1 (en) Methods and apparatus for wireless device application having vehicle interaction
TW202034278A (zh) 用於提供運輸服務的方法和系統
JP2022527299A (ja) 車両クラウドスライシング
US10516576B2 (en) Connection device and connection method using priority level information for a plurality of processes
KR20210133599A (ko) 차량의 무선 업데이트 장치 및 그 방법
WO2019035261A1 (ja) 制御装置、制御方法、およびコンピュータプログラム
JP7289623B2 (ja) 電動車両の動作方法、電動車両及び非一過性コンピュータ可読媒体
US10491670B2 (en) Method for lowering an energy demand of a vehicle
US20240086783A1 (en) Vehicle management device, vehicle management method, vehicle management system, and vehicle
US20170364138A1 (en) In-vehicle computing system with power conserving maintenance tasks
JP2018028518A (ja) ナビゲーションシステム及びコンピュータプログラム
US11544635B2 (en) User input configured dynamic shuttle
US20220261285A1 (en) In-vehicle device, vehicle management system, resource management method, and resource management program
KR102648810B1 (ko) 전기자동차 공조제어기 및 제어 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191129

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200930

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210319

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: 20210901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210929

R150 Certificate of patent or registration of utility model

Ref document number: 6953415

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150