(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-30
(45)【発行日】2022-06-07
(54)【発明の名称】車両用クラウドボンディングシステムおよび方法
(51)【国際特許分類】
G06F 21/44 20130101AFI20220531BHJP
H04W 76/10 20180101ALI20220531BHJP
H04W 8/00 20090101ALI20220531BHJP
H04W 12/00 20210101ALI20220531BHJP
【FI】
G06F21/44
H04W76/10
H04W8/00 110
H04W12/00
(21)【出願番号】P 2020540819
(86)(22)【出願日】2019-03-26
(86)【国際出願番号】 JP2019012954
(87)【国際公開番号】W WO2019189230
(87)【国際公開日】2019-10-03
【審査請求日】2020-07-24
(32)【優先日】2018-03-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-03-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500164385
【氏名又は名称】デンソー インターナショナル アメリカ インコーポレーテッド
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100106149
【氏名又は名称】矢作 和行
(74)【代理人】
【識別番号】100121991
【氏名又は名称】野々部 泰平
(74)【代理人】
【識別番号】100145595
【氏名又は名称】久保 貴則
(72)【発明者】
【氏名】ゴルシュ カイル
【審査官】青木 重徳
(56)【参考文献】
【文献】韓国公開特許第10-2015-0009869(KR,A)
【文献】特表2014-531642(JP,A)
【文献】特表2018-503911(JP,A)
【文献】米国特許出願公開第2009/0270036(US,A1)
【文献】特表2015-510743(JP,A)
【文献】特表2017-512388(JP,A)
【文献】国際公開第2017/182879(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/44
H04W 76/10
H04W 8/00
H04W 12/00
(57)【特許請求の範囲】
【請求項1】
複数の共用車両の内の1台の車両(100)とデバイス(104)をペアリングするための方法であって、
デバイスからアドバタイズメントメッセージを受信すること
、
アドバタイズメントメッセージを受信したことに応じて、デバイスとペアリングする試みを開始すること、
および、
デバイスが複数の共用車両の少なくとも1台の車両とペアリングされることに応じて、デバイス固有のデバイス情報とペアリングに使用されたセキュリティ情報(212)が、複数の共用車両及びデバイスがアクセス可能な共用車両データベース(132)に保存されること、を備え、
ペアリングする試みは、
共用車両データベースに保存されている情報に基づいて、デバイスが複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがあるかどうかを判定すること、および
デバイスが複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがあることに応じて、共用車両データベース
から、以前のペアリングに使用されたセキュリティ情報を
取得し、
取得されたセキュリティ情報を使用して、デバイスを車両とペアリングす
ること、を含む方法。
【請求項2】
デバイスが車両と以前にペアリングされたことがあることに応じて、
セキュリティ情報を検索するために、車両制御モジュール(112)のローカル記憶にアクセスすること、および
セキュリティ情報に基づいて、デバイスを車両とペアリングする試みを開始すること、をさらに備える請求項1に記載の方法。
【請求項3】
車両制御モジュールのローカル記憶は、認証モジュール(504)に保存される、請求項2に記載の方法。
【請求項4】
セキュリティ情報は、(i)PINコード(216)、(ii)リンクキー(220)、及び(iii)チャレンジ(224)を含む、請求項1乃至3のいずれか1項に記載の方法。
【請求項5】
共用車両データベースは、複数のエントリを含み、各エントリは、異なる車両の車両IDによって示される異なる車両に対応している、請求項1乃至4のいずれか1項に記載の方法。
【請求項6】
共用車両データベースの各エントリは、(i)アクセス情報(204)、(ii)デバイスアドレス(208)、及び(iii)セキュリティ情報(212)を含む、請求項5に記載の方法。
【請求項7】
アクセス情報は、デバイスアドレスがエントリに対応する車両IDへのアクセスを許可されているかどうかを示す、請求項6に記載の方法。
【請求項8】
デバイスを介してアクセス可能なアプリケーションは、管理者がアプリケーションに正しいアクセスコードを入力したことに応じて、各エントリのアクセス情報を更新し、変更する、請求項7に記載の方法。
【請求項9】
デバイスは、ヒューマンマシンインターフェース(HMI)(400)を含み、HMIは、管理者にユーザ選択可能な情報を表示するように構成されたタッチスクリーンである、請求項8に記載の方法。
【請求項10】
デバイスは複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがないことに応じて、
認証モジュール(504)を介して、デバイスにPINコードを送信すること、
認証モジュールを介して、PINコードに基づいてリンクキーを生成すること、
デバイスのデバイスアドレスを受信したことに応じて、認証モジュールを介して、デバイスにチャレンジを送信すること、
(i)リンクキー、(ii)デバイスアドレス、(iii)チャレンジの少なくとも1つに基づいて、デバイスが信頼できるデバイスであるかどうかを判定すること、
デバイスが信頼できるデバイスであると判定したことに応じて、デバイスと車両とをペアリングすること、および
認証モジュールおよび共用車両データベースに、(i)PINコード、(ii)リンクキー、(iii)デバイスアドレス、および(iv)チャレンジをセキュリティ情報として保存すること、を含む手動ペアリングを要求することをさらに備える請求項1に記載の方法。
【請求項11】
デバイス(104)を複数の共用車両の内の1台の車両(100)とペアリングする、車両の車両制御システムであって、
デバイスからアドバタイズメントメッセージを受信するように構成されたデバイス通信モジュール(508)と
、
アドバタイズメントメッセージを受信したことに応じて、デバイスとペアリングする試みを開始する車両制御モジュールと、
複数の共用車両及びデバイスがアクセス可能であり、デバイスが複数の共用車両の少なくとも1台の車両とペアリングされることに応じて、デバイス固有のデバイス情報とペアリングに使用されたセキュリティ情報(212)を保存する共用車両データベース(132)と、を備え、
車両制御モジュールは、
共用車両データベースに保存されている情報に基づいて、デバイスが複数の共用車両のうちの少なくとも1台の車両と以前にペアリングされたことがあるかを判定するように構成されたオーバーライドモジュール(500)を含み、
オーバーライドモジュールは、デバイスが複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがあることに応じて
、共用車両データベース
から、以前のペアリングに使用されたセキュリティ情報を取得し、
取得されたセキュリティ情報を使用して、デバイスを車両とペアリングす
るシステム。
【請求項12】
デバイスが車両と以前にペアリングされたことがあることに応じて、
セキュリティ情報を検索するために、車両制御モジュール(112)のローカル記憶にアクセスし、および
セキュリティ情報に基づいて、デバイスを車両とペアリングする試みを開始する、請求項11に記載のシステム。
【請求項13】
車両制御モジュールのローカル記憶は、認証モジュールに保存される、請求項12に記載のシステム。
【請求項14】
セキュリティ情報は、(i)PINコード(216)、(ii)リンクキー(220)、及び(iii)チャレンジ(224)を含む、請求項11乃至13のいずれか1項に記載のシステム。
【請求項15】
共用車両データベースは、複数のエントリを含み、各エントリは、異なる車両の車両IDによって示される異なる車両に対応している、請求項11乃至14のいずれか1項に記載のシステム。
【請求項16】
共用車両データベースの各エントリは、(i)アクセス情報(204)、(ii)デバイスアドレス(208)、及び(iii)セキュリティ情報(212)を含む、請求項15に記載のシステム。
【請求項17】
アクセス情報は、デバイスアドレスがエントリに対応する車両IDへのアクセスを許可されているかどうかを示す、請求項16に記載のシステム。
【請求項18】
デバイスを介してアクセス可能なアプリケーションは、管理者がアプリケーションに正しいアクセスコードを入力したことに応じて、各エントリのアクセス情報を更新し、変更する、請求項17に記載のシステム。
【請求項19】
デバイスは、ヒューマンマシンインターフェース(HMI)(400)を含み、HMIは、管理者にユーザ選択可能な情報を表示するように構成されたタッチスクリーンである、請求項18に記載のシステム。
【請求項20】
デバイスは複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがないことに応じて、認証モジュールは、
認証モジュールを介して、デバイスにPINコードを送信すること、
認証モジュールを介して、PINコードに基づいてリンクキーを生成すること、
デバイスのデバイスアドレスを受信したことに応じて、認証モジュールを介して、デバイスにチャレンジを送信すること、
(i)リンクキー、(ii)デバイスアドレス、(iii)チャレンジの少なくとも1つに基づいて、デバイスが信頼できるデバイスであるかどうかを判定すること、
デバイスが信頼できるデバイスであると判定したことに応じて、デバイスと車両とをペアリングすること、および
認証モジュールおよび共用車両データベースに、(i)PINコード、(ii)リンクキー、(iii)デバイスアドレス、および(iv)チャレンジをセキュリティ情報として保存すること、を含む手動ペアリングを要求する請求項11に記載のシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2018年3月27に出願された米国仮出願番号62/648786と、2019年3月20日に出願された米国特許出願番号16/358895に基づくものである。上記の出願の全ての内容は、参照によって本明細書に組み入れられる。
【技術分野】
【0002】
本開示は、デバイスと車両の自動ペアリングに関し、より具体的には、ブルートゥース接続などの無線接続を介して共用車両データベースに含まれる車両とデバイスを自動的にペアリングすることに関する。
【背景技術】
【0003】
従来、スマートフォンなどのブルートゥース対応デバイスは、ブルートゥース機能を備えた車両などの別のブルートゥース対応デバイスとペアリングすることができる。例えば、スマートフォンを車両とペアリングするために、ユーザは、車両によって生成され、車両に表示されるPINをスマートフォンに入力するように促される。ユーザがスマートフォンにPINコードを入力すると、スマートフォンはPINコードに基づいてリンクキーを生成する。次に、スマートフォンは、スマートフォンに割り当てられた固有のデバイスアドレスを車両に送信し、車両はランダムチャレンジをスマートフォンに送信する。車両も、送信された値に基づいてリンクキーを生成する。車両とスマートフォンは、生成されたリンクキー、チャレンジ、およびデバイスアドレスを使用して、デバイスを認証し、ペアリングする。つまり、同じ値のPINコード、デバイスアドレス、およびチャレンジを使用してリンクキーを生成した場合、スマートフォンと車両によって生成されるリンクキーは一致するはずである。リンクキーが一致すれば、スマートフォンと車両がペアリングされる。
【0004】
スマートフォンが新しいブルートゥース対応デバイスに遭遇するたびに、ユーザは2つのデバイスを手動でペアリングして、信頼できる接続を作成する必要がある。信頼できる接続が作成されると、以後、スマートフォンが信頼できるデバイスの所定の範囲内にあるときに、スマートフォンは自動的に信頼できるデバイスとペアリングする。
【0005】
ここで提供される背景技術の説明は、本開示の文脈を一般的に提示するためのものである。この背景技術の欄に記載されている範囲での本発明者の研究、および出願時に先行技術としてみなされない可能性がある説明の側面は、明示的にも黙示的にも本開示に対する先行技術として認容されない
【発明の概要】
【0006】
デバイスを複数の共用車両の内の1台の車両とペアリングする方法である。この方法は、デバイスからアドバタイズメントメッセージを受信すること、および、アドバタイズメントメッセージを受信したことに応じて、デバイスとペアリングする試みを開始することを含む。この方法はさらに、デバイスが複数の共用車両の少なくとも1台の車両とペアリングされることに応じて、デバイス固有のデバイス情報とペアリングに使用されたセキュリティ情報(212)が、複数の共用車両及びデバイスがアクセス可能な共用車両データベース(132)に保存されることを含む。ペアリングする試みは、共用車両データベースに保存されている情報に基づいて、デバイスが複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがあるかどうかを判定することを含む。デバイスが複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがあることに応じて、方法は、共用車両データベースから、以前のペアリングに使用されたセキュリティ情報を取得することを含む。方法は、取得されたセキュリティ情報を使用して、デバイスを車両とペアリングする。
【0007】
デバイスを複数の共用車両の内の1台の車両とペアリングする、車両の車両制御システムである。システムは、デバイスからアドバタイズメントメッセージを受信するように構成されたデバイス通信モジュールを含み、アドバタイズメントメッセージを受信したことに応じて、車両制御モジュールが、デバイスとペアリングする試みを開始する。システムは、複数の共用車両及びデバイスがアクセス可能であり、デバイスが複数の共用車両の少なくとも1台の車両とペアリングされることに応じて、デバイス固有のデバイス情報とペアリングに使用されたセキュリティ情報を保存する共用車両データベースを備える。車両制御モジュールは、共用車両データベースに保存されている情報に基づいて、デバイスが複数の共用車両のうちの少なくとも1台の車両と以前にペアリングされたことがあるかどうかを判定するように構成されたオーバーライドモジュールを含む。オーバーライドモジュールは、デバイスが複数の共用車両の少なくとも1台の車両と以前にペアリングされたことがあることに応じて、共用車両データベースから、以前のペアリングに使用されたセキュリティ情報を取得する。システムは、取得されたセキュリティ情報を使用して、デバイスを車両とペアリングする。
【0008】
本開示のさらなる適用可能範囲は、詳細な説明、特許請求の範囲、および図面から明らかとなろう。詳細な説明および特定の例は、例示のみを目的とするものであり、本開示の範囲を限定することを意図するものではない。
【図面の簡単な説明】
【0009】
本開示は、詳細な説明および添付の図面からより完全に理解されるであろう。
【
図1】
図1は、本開示による、車両における自動ペアリングシステムを示す。
【
図2】
図2は、本開示による共用車両データベースに含まれるエントリを示す。
【
図3】
図3は、本開示による自動ペアリングシステムのデバイスのブロック図を示す。
【
図4】
図4は、本開示による自動ペアリングシステムのデバイスのアプリケーションソフトウェアのブロック図を示す。
【
図5】
図5は、本開示による自動ペアリングシステムの車両制御モジュールのブロック図を示す。
【
図6】
図6は、本開示による自動ペアリングシステムのデバイスのフローチャートを示す。
【
図7】
図7は、本開示による自動ペアリングシステムの車両制御モジュールのフローチャートを示す。
【0010】
図面において、参照番号は、類似および/または同一の要素を特定するために再使用される場合がある。
【発明を実施するための形態】
【0011】
次に、添付の図面を参照して、例示的な実施形態をより詳しく説明する。
【0012】
本開示は、共用車両に渡って、2つのペアリングされたデバイス間の信頼できる接続を模倣することに関する。具体的には、共用車両は、デバイスがアクセスを許可されている車両のグループである。例えばブルートゥース接続を介してデバイスが共用車両のグループに含まれる車両の1台とペアリングされると、デバイスは、当該デバイスが車両の所定の範囲内にある限り、その車両および共用車両のグループに含まれる任意の車両と自動的にペアリングされる。ペアリングされると、ブルートゥース接続は、パッシブエントリ/パッシブスタートシステム(PEPS)を操作する方法を提供し、並びにブルートゥース接続の従来の利点を提供する。例えば、ユーザは、車両を介してハンズフリー通話を操作したり、車両を介してデバイス上の連絡先にアクセスしたり、車両のサウンドシステム上でデバイスからオーディオファイルをストリーミングしたりするために、車両内でブルートゥース接続が望ましいと感じるかもしれない。本開示は、スマートフォンなどの携帯デバイスと車両との間にブルートゥース接続を確立することを説明するが、他の無線接続およびプロトコルが使用されてもよい。例えば、Wi-FiまたはWi-Fiダイレクト、超広帯域(UWB)、および/またはインパルス無線(IR)UWB通信を使用して無線接続が確立され得る。
【0013】
図1を参照すると、本開示による車両100の自動ペアリングシステムが示されている。デバイス104は、ブルートゥース接続108を介して車両100の車両制御モジュール112に接続される。デバイス104は、スマートフォン、スマートウォッチ、ウェアラブル電子デバイス、キーフォブ、タブレットデバイス、または車両100の所有者、運転者、乗員、および/または車両100の整備士のような車両100のユーザに関連付けられた他のデバイスなどの任意のブルートゥース対応通信デバイスであってもよい。上述したように、ブルートゥース接続108は、ブルートゥースローエナジー(BLE)接続であってもよい。あるいは、ブルートゥース接続108の代わりに、Wi-Fi、Wi-Fiダイレクト、UWB、および/またはIRUWB接続が使用されてもよい。
【0014】
デバイス104および車両100は、それぞれ、第1のWiFi接続120および第2のWiFi接続124を介してネットワーク116に接続する。車両100はさらに、まとめて128と呼ばれる複数のセンサ128-1、128-2、128-3、128-4、128-5、および128-6を含む。
図1は、6個のセンサ128-1~128-6を備えた自動ペアリングシステムを示しているが、任意の数のセンサが使用され得る。例えば、自動ペアリングシステムは、7個、8個、9個、10個、11個、12個、またはそれ以上のセンサを含むことができる。このように、本開示は6個のセンサを利用する例を提供するが、本開示に従って追加のまたはより少ないセンサを使用することができる。
【0015】
センサ128のそれぞれは、アンテナに接続されたブルートゥースローエナジー(BLE)チップセットを含む。アンテナは、センサ128の内部に配置されてもよい。あるいは、アンテナは、センサ128の外部に配置されてもよい。センサ128は、アンテナを使用してBLE信号を受信し、具体的には、BLE物理層コントローラ600を使用してBLE物理層メッセージを受信する。センサ31は、チャネルマップ復元モジュールによって生成されるチャネルマップを使用して、BLE物理層メッセージを観察し、例えば、受信信号強度を含む関連信号の物理的特性の測定を行い、受信信号強度指標(RSSI)を決定することができる。追加的または代替的に、センサ128は、例えば、到着角に関するデータを含む、関連信号の物理的特性の他の測定値を決定することができる。追加的または代替的に、センサ128は、互いに通信して、および/または、車両インターフェースを介して車両制御モジュール112と通信して、複数のセンサによって受信された信号の到着時間差、到着時間、または到着角度データを決定することができる。追加的または代替的に、センサ128は、デバイス104との間で送受信される信号に関する往復飛行時間情報を測定し、決定することができる。RSSI、到着角度情報、到着時間差、往復飛行時間情報などのような、デバイス104とセンサ128との間で送信される通信信号に関する、測定および決定された情報に基づいて、車両制御モジュール112は、車両100へのアクセス、車両100のドアのアンロック、車両100のトランクの開扉を許可するかを判定する目的で、車両100に対するデバイス104の位置を決定することができる。
【0016】
いくつかの実施形態では、車両制御モジュール112は、ブルートゥース接続108を介してデバイス104とペアリングする。例えば、デバイス104と車両制御モジュール112は、信頼関係を確立するためにペアリングプロセスを行う。ペアリングプロセスは、ブルートゥースの仕様で説明されているブルートゥースペアリング、デバイス104と車両100のインターフェースを使用して、車両制御モジュール112とデバイス104との間で追加のセキュリティ情報が交換されるペアリング、デバイスアドレス、デバイスID解決キー、予約ID、および暗号化キーがクラウドインフラストラクチャを介して交換されるペアリング、および/または、車両を使用するための証明書が車両に提示され、その証明書は車両の所有者のデバイス、および/または、車両メーカ又は信頼できるサードパーティなどの信頼できるセキュリティ署名機関によって署名されるペアリングを含むことができる。証明書の場合、証明書は、使用事例における制限(ジオフェンシング、バレットモードの制限など)、有効期間、運転のパフォーマンスや行動について所有者に報告する必要があるかどうかなどを含むことができる。
【0017】
述べられたように、車両制御モジュール112は、第2のWiFi接続124を介してネットワーク116に接続する。さらに、デバイス104は、第1のWiFi接続120を介してネットワーク116と接続する。デバイス104と車両制御モジュール112の両方がネットワーク116と接続し、クラウドインフラストラクチャを使用してセキュリティ情報を交換する。後に説明されるように、それぞれのデバイスのセキュリティ情報は、以前にペアリングされたデバイスと共用車両との間で自動ペアリングプロセスを確立するために、共用車両のためのネットワーク116においてアクセス可能である。
【0018】
ネットワーク116は、共用車両データベース132とも通信する。共用車両データベース132は、共用車両に関する情報を含む。共用車両は、ファミリーネットワーク、レンタル会社ネットワーク、配送会社ネットワークなどで指定されてもよい。共用車両データベース132は、特定のデバイスに対するアクセス許可を含む。すなわち、共用車両データベース132の各共用車両は、どのデバイスが共用車両へのアクセスを許可されるかを示すデータを含む。このようにして、共用車両データベースの管理者は、特定の共用車両に対するアクセス許可を認めるか、または無効にすることができる。例えば、デバイス104は、管理者が特定の車両へのアクセスを認可および/または無効とすることができるアプリケーションをダウンロードすることができる。
【0019】
たとえば、レンタル会社の場合、管理者は特定のデバイスに特定の共用車両へのアクセスを特定の時間枠で許可することができる。アクセスは、特定の時間枠が満了したか、日付が経過した後に期限切れになるように設定され得る。共用車両データベース132は、デバイスアドレスによって示される特定のデバイスが特定の共用車両へのアクセスを許可されることを適切な期間にわたって示す。特定の共用車両が車両100であり、特定のデバイスがデバイス104である場合、車両制御モジュール112は、ネットワーク116を介して共用車両データベース132にアクセスすることができ、デバイス104が定められた期間だけ所定の車両100にアクセスすることを許可することができる。
【0020】
デバイス104と車両100を自動的にペアリングすることで、ユーザは車両100のパッシブエントリ/パッシブスタート(PEPS)システムを操作すること、並びに、ブルートゥースペアリングのすべての利点を利用することが可能になる。例えば、デバイス104と車両100がブルートゥース接続108を介してペアリングされると、ユーザは車両100を介してハンズフリー通話を操作し、デバイス104の連絡先にアクセスし、デバイス104からオーディオファイルをストリーミングすることができる。
【0021】
一実施形態では、デバイス104と車両100をペアリングするために、デバイス104は、(
図3の車両通信モジュールに含まれる)アンテナを介して、BLE信号、例えば、アドバタイズメントメッセージをアドバタイズする。デバイス104が車両100の所定の範囲内に入ると、車両100のセンサ128に含まれるアンテナ(および車両制御モジュール112に含まれるアンテナ)は、アドバタイズメントメッセージを受信し、ディスカバリメッセージを送信する。デバイス104は、デバイスアドレスなどのデバイス情報の要求とともにディスカバリメッセージを受信することができる。あるいは、車両100は、アドバタイズメントメッセージ内のデバイス情報を受信してもよい。
【0022】
デバイスアドレスの受信に応じて、車両制御モジュール112は、チャレンジレスポンススキームを使用してデバイス104を認証することができる。車両制御モジュール112は、共用車両データベース132に含まれるデータに基づいて、デバイス104が車両100へのアクセスを許可されているかどうかを判定することができる。さらに、後述するように、デバイス104が以前に車両100とペアリングされたことがある(かつ、ペアリングが意図的に断たれていない)場合、車両制御モジュール112とデバイス104は、以前にデバイス104と車両100をペアリングするために使用されたのと同じセキュリティ情報を使用することができる。加えて、デバイス104が車両100または共用車両データベース132に含まれる任意の他の車両とペアリングされると、車両制御モジュール112は、セキュリティ情報を共用車両データベース132に送信して、共用車両をデバイス104にペアリングする将来の使用のためにセキュリティ情報を記憶する。
【0023】
セキュリティ情報は、PINコード、リンクキー、および/またはデバイス104の対応するデバイスアドレスおよび車両100の対応する車両IDに使用されるチャレンジを含むことができる。このように、セキュリティ情報は、ユーザがデバイス104を手動でペアリングする必要なしに、デバイス104と自動的にペアリングするために、共用車両データベース132内の別の車両によって使用され得る。すなわち、別の車両は、デバイス104が最初にペアリングされた車両100を模倣することができる。PEPSシステムとブルートゥースペアリングに関する付加的な考察は、2017年10月11に出願された米国特許出願番号15/730265に含まれており、その出願は参照により本明細書に組み込まれる。
【0024】
図2を参照すると、本開示による共用車両データベース132に含まれるエントリ200が示されている。共用車両データベース132の各エントリ200は、それぞれの共用車両の車両IDに対応する。さらに、各エントリ200は、アクセス情報204、デバイスアドレス208、およびセキュリティ情報212を含む。セキュリティ情報212は、オプションとして、PINコード216、リンクキー220、およびチャレンジ224を含んでもよい。アクセス情報204は、デバイスアドレス208が、エントリ200に対応する車両、例えば
図1の車両100へのアクセスを現在許可されているかどうかを示す。説明したように、アクセス情報204は、
図4のアプリケーションソフトウェア300によってさらに示されるように、アプリケーションを通じて調整されてもよい。PINコード216、リンクキー220、およびチャレンジ224は、デバイスアドレス208に対応するデバイス、例えば、
図1のデバイス104と、共用車両データベース内の任意の車両、例えば、共用車両データベース132におけるエントリの1つに対応する任意の車両との間の以前のペアリングの結果として記憶される。
【0025】
図1の車両制御モジュール112は、共用車両データベース132にアクセスし、(
図5に含まれる)認証モジュールに、デバイス104がペアリングを試みているそれぞれの車両に対応する、共用車両データベース132のエントリ200内のセキュリティ情報212を使用して、デバイス104を認証することを命令するかどうかを決定することができる。
図1のデバイス104は、デバイス104またはアプリケーションをダウンロードした任意の他のデバイスでのアプリケーションを通じて受信されたアクセス許可に基づいて、共用車両データベース132を更新することができる。アプリケーションは、さらに、デバイス104が共用車両データベース132のエントリ200に対応する車両と最初にペアリングされるときに、共用車両データベース132のエントリを更新することができる。すなわち、アプリケーション(および車両制御モジュール112)は、デバイス104のアクセス許可、並びに、手動ペアリングイベント中に生成されたセキュリティ情報212を更新することができる。さらに、管理者は、共用車両データベース132に追加される新しい車両のためのアプリケーションを通じて新しいエントリを作成することができる。
【0026】
図3を参照すると、本開示による自動ペアリングシステムのデバイス104のブロック図が示されている。デバイス104は、記憶モジュール304内のアプリケーションソフトウェア300、車両通信モジュール308、および、デバイスネットワーク通信モジュール312を含み得る。
【0027】
車両通信モジュール308は、アンテナに接続されたBLEチップセットを含むことができる。記憶モジュール304は、コンピュータ可読記憶モジュールまたはデバイスであり得る。デバイス104は、オプションとして、GPSモジュールまたは他のデバイスロケーションサービスを含むこともできる。車両通信モジュール308は、車両100の車両制御モジュール112がデバイス104のアプリケーションソフトウェア300と通信することを可能にする。
【0028】
ユーザがデバイス104を車両100とペアリングすることを望み、デバイス104が車両100または共用車両データベース132内の任意の他の共用車両とペアリングされたことがない場合、ユーザは手動で車両100とデバイス104をペアリングするように指示される。デバイス104が車両100に手動でペアリングされると、デバイス104と車両100は、2つのデバイスをペアリングするために使用されたセキュリティ情報212をローカルに記憶することができ、それは将来のペアリングを自動化する。さらに、車両100が共用車両データベース132内の車両としてリストに載っている場合、デバイス104のアプリケーションソフトウェア300は、対応するセキュリティ情報212を共用車両データベース132に保存することができる。例えば、デバイス104は、車両IDに対応する、共用車両データベース132の(
図2に示される)エントリ200に含まれ得る、PINコード216、リンクキー220、およびチャレンジ224に基づいて車両の1台とペアリングされる。エントリ200は、それぞれのデバイスアドレスも含む。このようにして、デバイス104が共用車両データベース132に含まれる第2の車両とペアリングしようとし、共用車両データベースがデバイス104は第2の車両へのアクセスを許可されていることを示すとき、アプリケーションソフトウェア300は車両100(より具体的には、車両制御モジュール112)に、第2の車両とデバイス104とをペアリングするために共用車両データベース132内に含まれるセキュリティ情報212を使用するように指示することができる。
【0029】
デバイス104が以前に車両100と手動でペアリングされている場合、デバイス104は自動的にペアリングする。上述のように、デバイス104が車両100の所定の範囲内に入ると、デバイス104によって送信されるアドバタイズメントメッセージに応じて、デバイス104は、車両100と自動的にペアリングする。最初に接続されると、車両制御モジュール112は、共用車両データベース132に従って、デバイス104が車両100へのアクセスを許可されているかどうかを判定する。次に、車両100とデバイス104は、車両100とデバイス104をペアリングするために、ローカルに記憶されたセキュリティ情報212にアクセスする。セキュリティ情報212は、デバイス104が以前に手動で車両100とペアリングされた場合、車両100およびデバイス104にローカルに記憶されている。
【0030】
あるいは、デバイス104が手動で車両100とペアリングされたことはないが、デバイス104が共用車両データベース132に含まれる車両の少なくとも1台とペアリングされたことがある場合、車両100とデバイス104は、上述したように、2つのデバイスをペアリングするために、共用車両データベース132内のセキュリティ情報212にアクセスすることができる。つまり、車両100が、デバイス104のデバイスアドレス208、アクセス情報204に応じた必要なアクセス許可、および共用車両データベース132内の(デバイス104が共用車両データベース132内の1台の車両と以前にペアリングされたことを示す)セキュリティ情報212を含むエントリ200と一致する場合、(
図5に示される)認証モジュールは、記憶されたセキュリティ情報212に基づいてデバイス104と車両100をペアリングすることができる。
【0031】
図4を参照すると、本開示による自動ペアリングシステムのデバイス104におけるアプリケーションソフトウェア300のブロック図が示されている。アプリケーションソフトウェア300は、ヒューマンマシンインターフェース(HMI)400、アクセス許可モジュール404、比較およびアップロードモジュール408、およびセキュリティ情報モジュール412を含むことができる。HMI400は、ユーザが情報を入力できるデバイス104上のディスプレイであってもよく、例えば、HMI400は、タッチスクリーン、プッシュボタン、またはユーザがデバイス104を介して情報を入力するための別のシステムであってもよい。
【0032】
アクセス許可モジュール404は、デバイス104が共用車両データベース132によって車両100へのアクセスを許可されているかどうかを判定する。例えば、アプリケーションソフトウェア300は、共用車両データベース132に含まれる車両へのアクセスを制御するため、並びに、どの車両が含まれるかを管理するために、使用されてもよい。具体的には、管理者は、HMI400を使用し、アプリケーションソフトウェア300を通じて、共用車両データベース132に車両を追加または削除してもよい。アプリケーションソフトウェア300は、管理者が車両へのアクセスを委任できるアドミニストレータ部分を含んでもよい。アプリケーションソフトウェア300は、共用車両データベース132へのアクセスを管理することを可能にするために認証コードを必要とする場合がある。例えば、アクセス許可モジュール404は、(デバイスネットワーク通信モジュール312を通じて)共用車両データベース132に従う現在のアクセス(例えば、許可、無効、または無許可)を検索することができる。次いで、管理者、または必要な認証コードを持つ個人は、HMI400を通じて特定の車両を選択し、現在のアクセスを確認して、特定の車両に対する現在のアクセスを変更することができる。あるいは、管理者は特定の車両に対する現在のアクセスを変更しなくてもよい。
【0033】
比較およびアップロードモジュール408は、HMI400を介して車両100に対する現在のアクセスへの変更をアップロードするとともに、共用車両データベース132内の車両の1台と新しいデバイスとの間のペアリングに使用されるセキュリティ情報212をアップロードする。新しいデバイスと車両100のペアリングは、車両通信モジュール308を介して行われる。
【0034】
上述したように、ブルートゥース接続を使用して新しいデバイスを車両100とペアリングするためには、デバイスアドレス208と車両ID情報だけでなく、PINコード216、リンクキー220、チャレンジ224などのセキュリティ情報212の転送が必要となることがある。別の車両におけるペアリングを模倣するために、比較およびアップロードモジュール408は、デバイスネットワーク通信モジュール312およびネットワーク116を介して、すべてのセキュリティ情報212を共用車両データベース132に保存する。そして、新しいデバイスが共用車両データベース132に含まれる別の車両に遭遇し、別の車両へのアクセスが許可されたとき、セキュリティ情報モジュール412と車両制御モジュール112は、保存されたセキュリティ情報212を検索して、模倣された信頼できる新しいデバイスとの接続を生成し、ユーザが新しいデバイスを手動でペアリングすることを必要とせずに、別の車両と通じて、ブルートゥースペアリングのすべての利点と機能を提供する。
【0035】
セキュリティ情報モジュール412は、デバイス104が特定の車両とペアリングされたときに、セキュリティ情報212をローカルに記憶する。任意の車両とペアリングするために、セキュリティ情報モジュール412は、ローカルに記憶されたか、または共用車両データベース132から検索された、関連するセキュリティ情報212を送信する。
【0036】
図5を参照すると、本開示による自動ペアリングシステムの車両制御モジュール112のブロック図が示されている。車両制御モジュール112は、オーバーライドモジュール500、認証モジュール504、デバイス通信モジュール508、および車両ネットワーク通信モジュール512を含むことができる。デバイス通信モジュール508は、ブルートゥースチップセット516およびアンテナ520を含む。デバイス通信モジュール508は、ブルートゥース接続108を介してデバイス104と接続する。
【0037】
オーバーライドモジュール500は、デバイス104からデバイスアドレスを受信し、デバイス104が以前に車両100とペアリングされたことがあるかを判定する。デバイス104が以前に車両100とペアリングされたことがある場合、認証モジュール504は、共用車両データベース132がデバイス104は車両100へのアクセスを許可されていることを示しさえすれば、ローカルに記憶されたセキュリティ情報212を使用する。あるいは、セキュリティ情報212は、共用車両データベース132からアクセスされてもよく、認証モジュール504も、それを、2つのデバイスをペアリングするために使用することができる。
【0038】
車両100が以前にデバイス104とペアリングされたことがない場合、オーバーライドモジュール500は、共用車両データベース132の関連エントリ200(すなわち、エントリ200に対応する車両ID)を特定し、デバイスアドレス208が車両100へのアクセスを有しているかどうかを判定する。さらに、オーバーライドモジュール500は、エントリ200に保存されたセキュリティ情報212を識別する。適切なセキュリティ情報212が共用車両データベース132にアップロードされている場合、オーバーライドモジュール500は、保存されたセキュリティ情報212を使用してデバイス104とペアリングするように認証モジュール504に指示する。すなわち、デバイス104を手動でペアリングする代わりに、認証モジュール504は、保存されたPINコード216、リンクキー220、および/またはチャレンジ224を使用してデバイス104を認証するように指示される。別の実施形態では、記憶されたセキュリティ情報212は、以前にペアリングされたインジケータを含むことができ、認証をバイパスして、デバイス104を車両100とペアリングするように指示する。
【0039】
いくつかの実施形態では、認証モジュール504は、デバイス104が手動で車両100とペアリングされたときにセキュリティ情報212を記憶する。セキュリティ情報212を認証モジュール504にローカルに保存すると、デバイス104は、今後、車両100と容易にペアリングすることができ、手動のペアリングまたは共用車両データベース132へのアクセスの必要性を防ぐことができる。あるいは、セキュリティ情報212は、常に共用車両データベース132に記憶されてもよい。つまり、共用車両データベース132は、デバイス104が共用車両データベース132内の少なくとも1台の車両と以前にペアリングされたことがありさえすれば、デバイス104を車両100とペアリングするために常に使用されてもよい。
【0040】
図6を参照すると、本開示による自動ペアリングシステムのデバイス104用のフローチャートが示されている。制御は、デバイス104がBLE信号をアドバタイズする604で始まる。デバイス104がブルートゥース対応車両、例えば車両100の所定の範囲内にある場合、デバイス104は車両100からディスカバリメッセージを受信することができる。制御は、車両IDが決定される608に続く。車両IDは、ディスカバリメッセージに含まれるか、または別個に要求され、デバイス104で受信されてもよい。車両IDを決定した後、共用車両データベース132に従って車両100へのデバイス104のアクセス許可を判定する612に続く。すなわち、前述したように、アクセス許可モジュール404が、共用車両データベース132内の車両IDに対応するエントリ200に基づいて、デバイス104が車両100へのアクセスを許可されているかどうかを判定する。
【0041】
616で、デバイスが車両100へのアクセスを許可されている場合、制御は620に続き、そうでない場合、制御は終了する。必要に応じて、HMI400およびアプリケーションソフトウェア300を介して、必要なアクセスコードを持っている場合、ユーザはデバイス104のアクセスを許可してもよい。すなわち、制御終了の代わりに、車両100へのアクセスを得るために、デバイス104は、必要なアクセスコードを入力するようにユーザを促すことができる。そして、ユーザが正しい認証コードを入力した場合、制御は、共用車両データベース132がデバイス104を車両100とペアリングするのに十分なセキュリティ情報212を含むかどうかの判定を継続することができる。
【0042】
620で、デバイス104が車両100へのアクセスを許可されていると制御が判定すると、比較およびアップロードモジュール408は、車両100の車両IDを共用車両データベース132に含まれるエントリと比較する。624で、比較およびアップロードモジュール408は、デバイス104が以前に車両100とペアリングされたことがあるかどうかを判定する。デバイス104が以前に車両100とペアリングされたことがある場合、比較およびアップロードモジュール408は、628でローカルに記憶されたセキュリティ情報212を使用して車両100とペアリングするようにセキュリティ情報モジュール412に命令し、制御は終了する。
【0043】
624で、デバイス104は以前に車両100とペアリングされたことはない場合、制御は632に続き、比較およびアップロードモジュール408は、デバイス104が共用車両データベース132に含まれる車両と以前にペアリングされたことがあるかどうかを判定する。デバイス104が共用車両データベース132内の車両と以前にペアリングされたことがある場合、制御は634に続く。634では、比較およびアップロードモジュール408が、共用車両データベース132にアクセスし、車両IDおよびデバイスアドレスに対応するセキュリティ情報212を使用して、デバイス104を車両100とペアリングするように、セキュリティ情報モジュール412に指示を送信する。セキュリティ情報モジュール412が適切なセキュリティ情報212を使用するように命令された後、制御は終了する。
【0044】
632において、デバイス104が共用車両データベース132に含まれるいずれの車両ともペアリングされたことがない場合、制御は638に続き、HMI400を介して、デバイス104を車両100と手動でペアリングするようにユーザに促す。642で、デバイスがペアリングされると、セキュリティ情報モジュール412はセキュリティ情報212をローカルに保存し、そして、セキュリティ情報212は、646にて、比較およびアップロードモジュール408を介してデバイス104のそれぞれのデバイスアドレスとともに共用車両データベース132に保存される。セキュリティ情報212が646で保存された後、またはデバイス104が642でペアリングに失敗した場合、制御は終了する。
【0045】
図7を参照すると、本開示による自動ペアリングシステムの車両制御モジュール112用のフローチャートが示されている。制御は、アンテナ520および/またはセンサ128がBLE信号をスキャンする704で始まる。708で、アンテナ520および/またはセンサ128がデバイス104からアドバタイズメントメッセージを受信すると、デバイス通信モジュール508はディスカバリメッセージを送信する。制御は712に続き、オーバーライドモジュール500が、車両IDを共用車両データベース132のエントリと比較する。オーバーライドモジュール500は、716で、デバイス104が以前に車両100とペアリングされたことがあるかどうかを判定する。すなわち、デバイスアドレス208を含む車両IDに対応するエントリ200が存在する場合、車両100は以前にデバイス104とペアリングされたことがある。あるいは、オーバーライドモジュール500は、認証モジュール504に含まれるローカルに保存されたセキュリティ情報212に基づいて、車両100が以前にデバイス104とペアリングされたことがあるかどうかを判定してもよい。つまり、車両100が以前にデバイス104とペアリングされたことがある場合、認証モジュール504は、将来的に車両100をデバイス104とペアリングするためのセキュリティ情報212を保存する。
【0046】
716で、デバイス104が以前に車両100とペアリングされたことがある場合、制御は720に続き、ローカルに保存されたセキュリティ情報212を使用してデバイス104を車両100とペアリングする。すなわち、認証モジュール504に保存されたセキュリティ情報212が、デバイス104を車両100とペアリングするために使用される。デバイス104がペアリングされた後、制御は終了する。
【0047】
716で、デバイス104が車両100と以前にペアリングされたことはないと判定された場合、制御は724に続き、オーバーライドモジュール500は、デバイス104が共用車両データベース132に含まれる車両と以前にペアリングされたことがあるかどうかを判定する。デバイス104が共用車両データベース132内のいかなる車両ともペアリングされたことがない場合、制御は728に続き、認証モジュール504はデバイス104と車両との手動ペアリングを要求する。制御は730に続き、オーバーライドモジュール500は、それぞれのセキュリティ情報212をローカルに保存し、および、対応するエントリ200に含めるために、それぞれのセキュリティ情報212を共用車両データベース132に送信するように、認証モジュール504に命じる。その後、制御は終了する。
【0048】
724が真である場合、制御は732に続き、オーバーライドモジュール500は、共用車両データベース132からセキュリティ情報212を検索する。736で、オーバーライドモジュール500は、認証モジュール504をオーバーライドして、共用車両データベース132に保存されたセキュリティ情報212を使用するように認証モジュール504に命じる。制御は740に続き、デバイス104は、共用車両データベース132内のセキュリティ情報212に基づいて車両100とペアリングされる。制御は730に続き、それぞれのセキュリティ情報212をローカルにおよび共用車両データベース132に保存する。その後、制御は終了する。
【0049】
前述の説明は、本質的に単なる例示にすぎず、本開示、その適用、または使用を限定することを決して意図するものではない。本開示の広範な教示は様々な形態で実施することができる。したがって、本開示は特定の例を含むが、図面、明細書、および添付の特許請求の範囲を検討すれば他の変更態様が明らかになるので、本開示の真の範囲はそのように限定されるべきではない。本開示の原理を変更することなく、方法内の1つまたは複数のステップが異なる順序で(または同時に)実行されてもよいことを理解されたい。さらに、各々の実施形態は特定の特徴を有するものとして上記に説明されているが、本開示の任意の実施形態に関して説明されたこれらの特徴のうちの任意の1つまたは複数は、任意の他の実施形態に実装されることが可能であり、および/または、組み合わせが明示的に説明されていなくとも、任意の他の実施形態の特徴と組み合わせることが可能である。言い換えれば、説明された実施形態は相互に排他的ではなく、1つまたは複数の実施形態の相互の入れ替えは、本開示の範囲内にとどまる。
【0050】
要素間(例えば、モジュール間、回路要素間、半導体層間など)の空間的および機能的関係は、「接続され」、「係合され」、「結合され」、「隣接して」、「の隣に」、「の上に」、「上」、「下」、および「配置され」を含む、様々な用語を用いて説明される。第1および第2要素間の関係が、上記開示において説明されているとき、「直接」であると明示的に記載されていない限り、その関係は第1および第2要素間に他の介在要素が存在しない直接的な関係であり得るが、第1および第2要素間に1つまたは複数の介在要素が(空間的または機能的に)存在する間接的な関係でもあり得る。明細書で使用されるように、A、B、およびCのうちの少なくとも1つとのフレーズは、非排他的論理和を使用する、論理(AまたはBまたはC)を意味すると解釈されるべきであり、「Aの少なくとも1つ、Bの少なくとも1つ、およびCの少なくとも1つ」を意味すると解釈されるべきではない。
【0051】
図面において、矢じりで示される、矢印の方向は、概して、説明にとって重要な情報(データまたは命令など)の流れを示す。例えば、要素Aと要素Bが様々な情報を交換するが、要素Aから要素Bに送信される情報が説明に関連する場合、矢印は要素Aから要素Bを指すことがある。この一方向の矢印は、他の情報が要素Bから要素Aに送信されないことを意味しない。さらに、要素Aから要素Bに送信される情報に対して、要素Bは、要素Aに、情報の要求または情報の受信確認を送信するかもしれない。
【0052】
以下の定義を含む本出願では、用語「モジュール」または用語「コントローラ」は、用語「回路」と置き換えられてもよい。「モジュール」という用語は、特定用途向け集積回路(ASIC)、デジタル,アナログ,またはアナログ/デジタル混合ディスクリート回路、デジタル,アナログ,またはアナログ/デジタル混合集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行するプロセッサ回路(共有、専用、またはグループ)、プロセッサ回路によって実行されるコードを記憶するメモリ回路(共有、専用、またはグループ)、説明された機能を提供する他の適切なハードウェアコンポーネント、あるいは、システムオンチップなどにおける上記のいくつかまたはすべての組み合わせ、を指すか、一部であるか、または含むことができる。
【0053】
モジュールは、1つ以上のインターフェース回路を含むことができる。いくつかの例では、インターフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、またはそれらの組み合わせに接続される有線または無線インターフェースを含むことができる。本開示の任意の所与のモジュールの機能は、インターフェース回路を介して接続される複数のモジュール間で分散されてもよい。例えば、複数のモジュールが負荷分散を可能にし得る。さらなる例では、サーバ(リモート、またはクラウドとしても知られる)モジュールは、クライアントモジュールに代わっていくつかの機能を達成してもよい。
【0054】
モジュールの一部またはすべてのハードウェア機能は、ハードウェア記述のための言語、例えば、IEEE規格1364-2005(一般に「Verilog」と呼ばれる)およびIEEE規格1076-2008(一般に「VHDL」と呼ばれる)を使用して定義されてもよい。ハードウェア記述言語は、ハードウェア回路を製造および/またはプログラムするために使用されてもよい。いくつかの実施形態では、モジュールの一部またはすべての機能は、以下に説明するコードと、ハードウェア記述との両方を包含する言語、例えばIEEE1666-2005(一般的に「SystemC」と呼ばれる)によって定義されてもよい。
【0055】
上記で使用される、コードという用語は、ソフトウェア、ファームウェア、および/またはマイクロコードを含むことができ、プログラム、ルーチン、機能、クラス、データ構造、および/またはオブジェクトを指すことがある。共有プロセッサ回路との用語は、複数のモジュールからのコードの一部または全部を実行する単一のプロセッサ回路を包含する。グループプロセッサ回路との用語は、追加のプロセッサ回路と組み合わせて、1つまたは複数のモジュールからのコードの一部または全部を実行するプロセッサ回路を包含する。複数のプロセッサ回路への言及は、個別のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、またはこれらの組み合わせを包含する。共有メモリ回路との用語は、複数のモジュールからのコードの一部または全部を保存する単一のメモリ回路を包含する。グループメモリ回路との用語は、追加のメモリと組み合わせて、1つまたは複数のモジュールからのコードの一部または全部を保存するメモリ回路を包含する。
【0056】
メモリ回路との用語は、コンピュータ可読媒体との用語のサブセットである。本明細書で使用されるコンピュータ可読媒体との用語は、(搬送波上などの)媒体を通って伝播する一時的な電気信号または電磁信号を含まない。したがって、コンピュータ可読媒体との用語は、有形の非一時的なものと見なすことができる。非一時的なコンピュータ可読媒体の非限定的な例は、(フラッシュメモリ回路、消去可能プログラマブル読み出し専用メモリ回路、またはマスク読み出し専用メモリ回路などの)不揮発性メモリ回路、(SRAM回路やDRAM回路などの)揮発性メモリ回路、(アナログまたはデジタル磁気テープ、またはハードディスクドライブなどの)磁気記憶媒体、および(CD、DVD、またはブルーレイディスクなどの)光記憶媒体である。
【0057】
本出願に記載されている装置および方法は、コンピュータプログラムで具現化された1つまたは複数の特定の機能を実行するように汎用コンピュータを構成することによって作成された専用コンピュータによって部分的または完全に実施され得る。上記の機能ブロックおよびフローチャート要素は、ソフトウェアの仕様として役立ち、熟練した技術者またはプログラマーの日常業務によってコンピュータプログラムに変換することができる。
【0058】
コンピュータプログラムは、少なくとも1つの非一時的なコンピュータ可読媒体に格納されるプロセッサ実行可能命令を含む。コンピュータプログラムはまた、格納されたデータを含むかまたはそれに依存することができる。コンピュータプログラムは、専用コンピュータのハードウェアと相互作用する基本入出力システム(BIOS)、専用コンピュータの特定のデバイスと相互作用するデバイスドライバ、1つ以上のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーションなどを含んでも良い。
【0059】
コンピュータプログラムは、(i)HTML(ハイパーテキストマークアップ言語)、XML(拡張マークアップ言語)、またはJSON(JavaScriptオブジェクト表記法)のような解析される記述テキスト、(ii)アセンブリコード、(iii)コンパイラによってソースコードから生成されるオブジェクトコード、(iv)インタプリタによる実行のためのソースコード、(v)ジャストインタイムコンパイラによるコンパイルおよび実行のためのソースコードなどを含むことができる。単なる例として、ソースコードは、C、C++、C#、Objective-C、Swift、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5(ハイパーテキストマークアップ言語第5改訂版)、Ada、ASP(Active Server Pages)、PHP(ハイパーテキストプリプロセッサ)、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、VisualBasic(登録商標)、Lua、MATLAB、SIMULINK、およびPython(登録商標)を含む言語の構文法を使って書くことができる。