【解決手段】各々が表示装置を有する複数のHMIデバイスに関する情報を記憶する記憶部と、前記複数のHMI装置から少なくとも1つのHMI装置を選択する選択部と、車載装置のソフトウェアを更新する更新部と、前記更新に関する通知メッセージを前記1つのHMI装置に転送する転送部と、を備えるソフトウェア更新装置。
【発明を実施するための形態】
【0008】
(第1の実施の形態)
図1は、第1の実施の形態に係るソフトウェア更新システムの構成を模式的に示す図である。ソフトウェア更新システム1は、車両2、サーバ3、およびスマートフォン4を含む。車両2、サーバ3、およびスマートフォン4は、ネットワーク5を介して相互に接続される。なお、
図1では車両2およびスマートフォン4を1台ずつ図示しているが、ソフトウェア更新システム1は複数の車両2およびスマートフォン4を含んでいてよい。
【0009】
車両2には、ソフトウェア更新装置21、第1制御装置22、第2制御装置23、およびナビゲーション装置24が搭載される。ソフトウェア更新装置21、第1制御装置22、および第2制御装置23は、CANネットワーク25を介して相互に接続される。ソフトウェア更新装置21およびナビゲーション装置24は、USBネットワーク26を介して相互に接続される。
【0010】
ソフトウェア更新装置21は、第1制御装置22、第2制御装置23、およびナビゲーション装置24において動作するソフトウェアを、サーバ3により配信された新しいソフトウェアに更新する。第1制御装置22および第2制御装置23は、例えば車両2のエンジンなどを制御する、車両2のいわゆるECU(車載装置)である。ナビゲーション装置24は、出発地から目的地までの経路を、例えば画面に表示した道路地図や音声等により運転者に案内する装置である。
【0011】
サーバ3は、内部の記憶装置に車両2で動作するソフトウェアを保持する。サーバ3は、ネットワーク5を介して車両2およびスマートフォン4とデータ通信を行い、車両2にソフトウェアを配信する。スマートフォン4は、ユーザにより入力される種々の情報に基づき、ネットワーク5を介して車両2やサーバ3とデータ通信を行う。なお、スマートフォン4は、例えばフィーチャーフォンやタブレット端末など、他のHMI(Human Machine Interface)端末であってもよい。ネットワーク5は、例えばインターネット等の電気通信網である。
【0012】
図2は、ソフトウェア更新装置21のハードウェア構成を模式的に示す図である。ソフトウェア更新装置21は、記憶部211、制御部212、時刻管理部213、WAN I/F214、CAN I/F215、USB I/F217、BT(Bluetooth(登録商標)) I/F218、およびストレージ219を有する。記憶部211、制御部212、時刻管理部213、WAN I/F214、CAN I/F215、USB I/F217、BT I/F218、およびストレージ219は、バス216により相互に接続される。
【0013】
制御部212は、ソフトウェア更新装置21で扱う情報の出入りを制御し、記憶部211に保存されているソフトウェアの記述に従い動作する中央処理装置(CPU)である。記憶部211は、制御部212が扱う情報を一時的に保存し、バス216を介してデータをやり取りするメモリーである。時刻管理部213は、ソフトウェア更新装置21の動作を制御する時刻情報を管理する。ストレージ219は、ソフトウェア更新装置21のソフトウェアを保存し、記憶部211に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ219は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。ソフトウェア更新装置21は、ストレージ219に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、ソフトウェア更新装置21の動作を変更することが可能である。
【0014】
WAN I/F214は、情報を無線で送受信するインタフェースである。無線による情報の送受信は、例えばLTE、Wi-Fiなどの規格に則って行われる。CAN I/F215は、車両2で使用される専用のネットワークであるCAN(Controller Area Network)のインタフェースである。CAN I/F215は、CANネットワーク25と接続して車両2内の他の装置(例えば第1制御装置22や第2制御装置23)と通信する。USB I/F217はUSB規格のインタフェースであり、USBネットワーク26を介してナビゲーション装置24と通信する。
【0015】
図3は、サーバ3のハードウェア構成を模式的に示す図である。サーバ3は、記憶部31、制御部32、ストレージ34、およびWAN I/F35を有する。記憶部31、制御部32、ストレージ34、およびWAN I/F35は、バス36により相互に接続される。
【0016】
制御部32は、サーバ3で扱う情報の出入りを制御し、記憶部31に保存されているソフトウェアの記述に従い動作する中央処理装置(CPU)である。記憶部31は、制御部32が扱う情報を一時的に保存し、バス36を介してデータをやり取りするメモリーである。ストレージ34は、ソフトウェア更新装置21のソフトウェアを保存し、記憶部211に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ34は、例えばファイルシステムを搭載するハードディスク、SSD、ホログラフィックディスクなどである。サーバ3は、ストレージ34に保存されているソフトウェアで動作する。WAN I/F35は、情報を無線で送受信するインタフェースである。無線による情報の送受信は、例えばLTE、Wi-Fiなどの規格に則って行われる。
【0017】
図4は、スマートフォン4のハードウェア構成を模式的に示す図である。スマートフォン4は、記憶部41、制御部42、入力部43、表示部44、ストレージ45、WAN I/F46、およびBT I/F47を有する。記憶部41、制御部42、入力部43、表示部44、ストレージ45、WAN I/F46、およびBT I/F47は、バス48により相互に接続される。
【0018】
制御部42は、スマートフォン4で扱う情報の出入りを制御し、記憶部41に保存されているソフトウェアの記述に従い動作する中央処理装置(CPU)である。記憶部41は、制御部42が扱う情報を一時的に保存し、バス48を介してデータをやり取りするメモリーである。入力部43は、スマートフォン4のユーザからの入力を受ける入力デバイスである。入力部43は、例えばタッチペンや指接触型タッチパネル、キーボード等の入力装置である。表示部44は、スマートフォン4の情報をユーザに表示する表示装置である。表示部44は、例えば液晶パネルやタッチパネル等の、デジタル情報を表示できる表示デバイスである。ストレージ45は、スマートフォン4のソフトウェアを保存し、記憶部41に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ45は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。スマートフォン4は、ストレージ45に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、スマートフォン4の動作を変更することが可能である。
【0019】
WAN I/F46は情報を無線で送受信するインタフェースである。無線による情報の送受信は、例えばLTE、Wi-Fiなどの規格に則って行われる。BT I/F47は、情報を無線で送受信するインタフェースである。BT I/F47は、無線による情報の送受信に加えて、他のBT I/Fとの間で無線を用いて距離を測定することができる。
【0020】
図5は、第1制御装置22および第2制御装置23のハードウェア構成を模式的に示す図である。以下、第1制御装置22について説明する。なお、第2制御装置23は、第1制御装置22と同一の構成を有しているので、説明を省略する。
【0021】
第1制御装置22は、記憶部221、制御部222、ストレージ223、およびCAN I/F224を有する。記憶部221、制御部222、ストレージ223、およびCAN I/F224は、バス225により相互に接続される。
【0022】
制御部222は、第1制御装置22で扱う情報の出入りを制御し、記憶部221に保存されているソフトウェアの記述に従い動作する中央処理装置(CPU)である。記憶部221は、制御部222が扱う情報を一時的に保存し、バス2025を介してデータをやり取りするメモリーである。ストレージ223は、第1制御装置22のソフトウェアを保存し、記憶部221に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ223は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。第1制御装置22は、ストレージ223に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、ソフトウェア更新装置21の動作を変更することが可能である。
【0023】
CAN I/F215は、車両2で使用される専用のネットワークであるCAN(Controller Area Network)のインタフェースであり、CANネットワーク25と接続してソフトウェア更新装置21と通信する。このインタフェースを介してソフトウェアを受信し、ストレージ223に格納されているソフトウェアを書き換えることが可能である。制御部222は、車両におけるECUである。
【0024】
図6は、ナビゲーション装置24のハードウェア構成を模式的に示す図である。
ナビゲーション装置24は、記憶部241、制御部242、入力部244、表示部245、ストレージ246、およびUSB I/F247を有する。記憶部241、制御部242、入力部244、表示部245、ストレージ246、およびUSB I/F247は、バス248により相互に接続される。
【0025】
制御部242は、ナビゲーション装置24で扱う情報の出入りを制御し、記憶部241に保存されているソフトウェアの記述に従い動作する中央処理装置(CPU)である。記憶部241は、制御部242が扱う情報を一時的に保存し、バス248を介してデータをやり取りするメモリーである。入力部244は、ナビゲーション装置24のユーザからの入力を受ける入力デバイスである。入力部244は、例えばタッチペンや指接触型タッチパネル、キーボード、コマンダー等の入力装置である。表示部245は、ナビゲーション装置24の情報をユーザに表示する表示装置である。表示部245は、例えば液晶パネルやタッチパネルなどのデジタル情報を表示できる表示デバイスである。
【0026】
ストレージ246は、ナビゲーション装置24のソフトウェアを保存し、記憶部241に保持されている情報を電源を切っても保持し続ける記憶装置である。ストレージ246は、例えばファイルシステムを搭載するハードディスクやSSD、または、ファイルシステムを搭載しないフラッシュメモリなどの記憶素子である。ナビゲーション装置24は、ストレージ246に保存されているソフトウェアで動作する。このソフトウェアを更新することにより、ナビゲーション装置24の動作を変更することが可能である。USB I/F247は情報をUSBで送受信するインタフェースであり、ソフトウェア更新装置21と通信する。
【0027】
図7は、ソフトウェア更新システム1のソフトウェア構成を模式的に示す図である。
スマートフォン4は、第2映像出力部404、第2接触入力部405、および第6通信部401を有する。第2映像出力部404は、例えば液晶やブラウン管、電子ペーパーなど、映像を表示するデバイスである。第2接触入力部405は、例えばタッチパネルなど、人間の接触を検知する入力デバイスである。
【0028】
サーバ3は、配信部301、転送部303、第4通信部304、および第5通信部305を有する。配信部301は、サーバ3のストレージ34に格納されているパッケージ80を、第4通信部304およびネットワーク5を介してソフトウェア更新装置21に配信する。ここで、パッケージ80とは、第1制御装置22やナビゲーション装置24などの他デバイス用のソフトウェアである。
【0029】
転送部303は、ソフトウェア更新装置21、第1制御装置22、第2制御装置23、ナビゲーション装置24、およびスマートフォン4が出力する各種の情報を、第4通信部304および第5通信部305を用いて他のデバイスに転送する。ここで、各種の情報とは、例えばメッセージ、映像、接触情報などである。第4通信部304は、無線・有線などの通信ネットワークへのインタフェースである。第4通信部304は、ソフトウェア更新装置21と接続して通信を行う。第5通信部305は、無線・有線などの通信ネットワークへのインタフェースである。第5通信部305は、スマートフォン4と接続して通信を行う。
【0030】
ソフトウェア更新装置21は、受信部201、更新部202、HMI管理部200、車両管理部208、第1通信部204、第2通信部205、および第3通信部206を有する。
【0031】
受信部201は、配信部301により送出されるパッケージ80を、第2通信部205を経て受信する。受信部201により受信されたパッケージ80は、ストレージ219に保存される。更新部202は、パッケージ80に含まれる更新情報83に基づき、ナビゲーション装置24のソフトウェアを更新する。
【0032】
HMI管理部200は、ソフト更新を契機にHMIデバイスを選択する判断を行う。HMI管理部200は、ソフトウェア更新装置21、第1制御装置22、第2制御装置23、およびナビゲーション装置24が出力するメッセージや映像などの情報を、第2通信部205を介して転送部303に転送する。HMI管理部200は、HMI登録部251、HMI管理DB252、HMI選択部253、および転送部254を有する。HMI管理部200が有するこれらの各部については後に詳述する。
【0033】
車両管理部208は、第1通信部204を介して、車両情報を第1制御装置22または第2制御装置23から取得する。車両管理部208は、取得した車両情報を保持するとともに、車両情報の状態に応じて受信部201、更新部202、およびHMI管理部200の動作を制御する。例えば、車両管理部208は、車両2のエンジンがかかったり、イグニッションがオンになったことに応じて、受信部201を動作させ、パッケージ80のダウンロードを開始する。例えば、車両管理部208は、車両2のイグニッションがオフになったことに応じて更新部202を動作させ、第1制御装置22、第2制御装置23、およびナビゲーション装置24のソフトウェアの更新を開始する。
【0034】
ナビゲーション装置24は、第1映像出力部243および第1接触入力部249を有する。第1映像出力部243は、例えば液晶やブラウン管、電子ペーパーなどの映像を表示するデバイスである。第1接触入力部249は、例えばタッチパネルなど人間の接触を検知する入力デバイスである。
【0035】
配信部301は、デバイス管理サーバ部61、デバイス管理サーバツリーDB(データベース)62、ソフトウェア更新管理DB64、およびダウンロードサーバ部63を有する。受信部201は、デバイス管理クライアント部71、デバイス管理クライアントツリーDB72、およびダウンロードクライアント部73を有する。ソフトウェアの車両2へのダウンロード動作は、配信部301を構成する各部の働きと、受信部201を構成する各部の働きにより実現される。
【0036】
デバイス管理サーバ部61は、デバイス管理クライアント部71と規定のメッセージをやり取りし、所定の手順を実施することでサーバ3と車両2との間でソフトウェア更新の処理を実現する。具体的なやり取りについては後に詳述する。デバイス管理サーバ部61は、例えばOMA(Open Mobile Alliance)において定義されるDM(Device Management)サーバである。デバイス管理クライアント部71は、例えばOMAにおいて定義されるDMクライアントである。なお、OMA DMとは、携帯電話のソフトウェア更新で使用される技術であり、ツリーDBと呼ばれるツリー状のデータベースへのアクセスを介してサーバとクライアント間でソフトウェア更新に必要な情報をやりとりする仕組みである。デバイス管理サーバツリーDB62、デバイス管理クライアントツリーDB72、およびソフトウェア更新管理DB64については後に詳述する。
【0037】
ダウンロードサーバ部63は、ネットワーク5を介して、ソフトウェア更新に使用するソフトウェアの情報を一塊にしたパッケージ80を提供する。ダウンロードサーバ部63は、例えばHTTP、FTP等のプロトコルによりパッケージ80を提供する。ダウンロードクライアント部73は、ダウンロードサーバ部63に接続し、ネットワーク5を介してパッケージ80を受信するクライアントである。
【0038】
更新部202は、シーケンス実行部76、更新情報処理部77、およびプロトコル処理部78を含む。これらの各部については、パッケージ80の構造と併せて後に詳述する。
【0039】
図8は、デバイス管理クライアントツリーDB72の構造を模式的に示す図である。デバイス管理クライアントツリーDB72は、情報をツリー構造に従って格納するデータベースである。デバイス管理クライアントツリーDB72は、ツリー構造を構成する複数の要素を格納している。それら複数の要素には、root要素101、DevInfo要素102、VIN1要素103、DevDetail要素104、SCOMO要素105、Download要素106、Package3要素107、PkgURL要素108、Status要素109、Operation要素110、Download要素111、Inventory要素120、Delivered要素121、Package3要素122、Status要素123、Operation要素124、Install要素125、Deployed要素130、第1制御装置要素131、Status要素132、Version要素133、第2制御装置要素134、Status要素135、version要素136、ナビゲーション装置要素137、Status要素138、およびVersion要素139の各要素が含まれる。
【0040】
DevInfo要素102の配下には、車両の識別子であるVIN1要素103のようなデバイスの特徴情報が配置される。DevDetail要素104の配下には、車両2の付属情報が配置される。SCOMO要素105の配下には、ソフトウェア更新で使用する要素が配置される。
【0041】
Download要素106の配下には、ダウンロードに関する要素が配置される。
図8の例では、Download要素106とその配下の要素が、Package3要素122により示されるソフトウェアをPkgURL要素108により示されるURLからダウンロードせよ、という指示を示している。Status要素109は、ダウンロード中の状態を保持する要素である。Operation要素110の配下のDownload要素111をサーバ側から指定することにより、クライアント側のダウンロードクライアント部73を動作させ、サーバ側からパッケージ80のダウンロードを指示することができる。
【0042】
なお、このPackage3要素107の配下の要素は、すべてデバイス管理サーバ部61側からネットワーク5を介してデバイス管理クライアントツリーDB72に追加されたものである。この追加のシーケンスについては後述する。
【0043】
Inventory要素120は、ダウンロードされたパッケージ80を展開してソフトウェア更新処理を行うための要素である。Delivered要素121の配下の要素には、ダウンロードサーバ部63から取得したパッケージ80の情報が格納される。Package3要素122はダウンロードされたパッケージ80の名称を示す。Status要素123はインストール時のステータスを示す。Operation要素124の配下のInstall要素125をサーバ側から指定することにより、クライアント側の更新部202を動作させ、パッケージ80に指定されたデバイスのソフトウェアのインストールを開始する。
【0044】
Deployed要素130の配下の要素には、インストールされたソフトウェアの情報が格納される。第1制御装置要素131はインストールしたソフトウェアの名称を示す。Status要素132はインストール動作のステータスを示す。Version要素133は第1制御装置22が保持しているソフトウェアのバージョン番号(例えば1.0)を示す。同様に、第2制御装置要素134はインストールしたソフトウェアの名称を示し、Status要素135はインストール動作のステータスを示し、Version要素136は第2制御装置23が保持しているソフトウェアのバージョン番号(例えば1.1)を示す。同様に、ナビゲーション装置要素137はインストールしたソフトウェアの名称を示し、Status要素138はインストール動作のステータスを示し、Version要素139はナビゲーション装置24が保持しているソフトウェアのバージョン番号(例えば1.4)を示す。
【0045】
図9は、デバイス管理サーバツリーDB62の構造を模式的に示す図である。デバイス管理サーバツリーDB62は、情報をツリー構造に従って格納するデータベースである。デバイス管理サーバツリーDB62は、複数の車両2についての情報を保持する。デバイス管理サーバツリーDB62は、ツリー構造を構成する複数の要素を格納している。それら複数の要素には、root要素150、VIN1要素151、DevInfo要素154、VIN1要素180、DevDetail要素155、SCOMO要素156、その他情報要素158、Download要素157、Package1要素159、PkgURL要素160、Status要素161、Operation要素162、Download要素163、VIN2要素152、DevInfo要素164、DevDetail要素165、SCOMO要素166、およびその他情報要素167の各要素が含まれる。
【0046】
VIN1要素151およびVIN2要素152は、それぞれ異なる車両2の識別子を示す。VIN1要素151、VIN2要素152それぞれの配下には、
図8で説明したデバイス管理クライアントツリーDB72のroot要素101の配下の情報が格納される。つまり、VIN要素で指定される車両2のソフトウェア更新状況がすべてVIN要素の配下の要素に格納される構造となっている。このように、デバイス管理クライアント部71およびデバイス管理サーバ部61の間で、データが同期制御されているので、サーバ3は、複数の車両2のソフトウェア更新状況を把握することができる。
【0047】
図10は、ソフトウェア更新管理DB64の構造を模式的に示す図である。ソフトウェア更新管理DB64は、車両2のソフトウェア更新をどのように行うかを、車両2のベンダーが設定するためのデータベースである。ソフトウェア更新管理DB64は、複数のレコードを有する。各々のレコードは、車両ID181、ECUID182、Version183、Package184、およびPkgURL185の各項目を有する。
【0048】
車両ID181は、ソフトウェア更新の対象となる車両2の識別子を示す。ECUID182は、車両ID181により特定される車両2の第1制御装置22、第2制御装置23、またはナビゲーション装置24を示す識別子である。Version183は、各装置に対して適用されるべき更新ソフトウェアのバージョン番号である。例えば第1制御装置22の場合は1.0、第2制御装置23の場合は1.1、ナビゲーション装置24の場合は1.5のバージョンのソフトウェアに更新することを示す。Package184は、ソフトウェア更新する場合に、更新先のパッケージ80の名称を示す。PkgURL185は、そのパッケージ80をどのサーバからどのようにしてダウンロードをするかを決定するURL情報である。
図8および
図10の例では、ナビゲーション装置24のVersion183が1.5であるのに対し、デバイス管理クライアントツリーDB72のナビゲーション装置要素137のVersion139が1.4である。これは、ナビゲーション装置24のソフトウェアをバージョン1.4からバージョン1.5に更新すべきであることを示している。
【0049】
図11は、ソフトウェア更新処理におけるメッセージのやり取りを示すシーケンス図である。ソフトウェア更新を行うとき、デバイス管理クライアント部71はデバイス管理サーバ部61にVIN情報を送信し(ステップ301)、ソフト更新管理DB64の車両ID181(
図10)を参照する。VIN情報とは、車両2を識別する情報である。デバイス管理サーバ部61は、デバイス管理サーバツリーDB62のVIN要素180に受信したVIN情報を格納する。
【0050】
次に、デバイス管理サーバ部61は、デバイス管理クライアント部71に対しバージョン情報取得要求を送信する(ステップ302)。デバイス管理クライアント部71は、バージョン情報をデバイス管理クライアントツリーDB72のツリー構造から取得して(ステップ351)、デバイス管理サーバ部61にバージョン情報を送信する(ステップ303)。ここで言うバージョン情報とは、Deployed要素130配下のVersion要素132、Version要素136、Version要素139といった、ソフトウェアのバージョン情報のことである。デバイス管理サーバ部61では、受け取ったバージョン情報と、ソフトウェア更新管理DB64のバージョン情報とを比較して、どのデバイスのソフトウェアを更新するかを判断する(ステップ352)。
【0051】
次にデバイス管理サーバ部61は、ソフトウェア更新情報をデバイス管理クライアント部71に送信する(ステップ304)。ソフトウェア更新情報とは、具体的には、
図9のDownload要素157以下のツリー構造全体を指し、どこからパッケージ80をダウンロードするかを示すPkgURL要素160などの情報を含む。このPackage3要素159やPkgURL要素160は、あらかじめソフトウェア更新管理DB64のPackage要素184やPkgURL要素185から取得された情報である。デバイス管理クライアント部71は、受信したソフトウェア更新情報をデバイス管理クライアントツリーDB72に追加する(ステップ353)。具体的には、受信したソフトウェア更新情報を
図9のデバイス管理サーバツリーDB62の配下のSCOMO要素205の配下にDownload要素106として追加する。その後、デバイス管理クライアント部71は、デバイス管理サーバ部61に応答を返す(ステップ305)。
【0052】
デバイス管理サーバ部61は、ユーザにソフトウェア更新をしてよいかどうかを問い合わせるため、ソフトウェア更新許可要求メッセージAをデバイス管理クライアント部71に送信する(ステップ306)。デバイス管理クライアント部71は、HMI管理部200に入力要求を送信する(ステップ354)。HMI管理部200は、現在選択されているHMIデバイス(例えばナビゲーション装置24)にメッセージを表示し、第1接触入力部243からユーザからの応答を受け取る。このとき、ナビゲーション装置24の表示部245に表示されるイメージを
図12に例として示す。HMI管理部200は、応答をデバイス管理クライアント部71に返す(ステップ355)。デバイス管理クライアント部71は、許可か不許可かの情報をデバイス管理サーバ部61に送信する(ステップ307)。
【0053】
デバイス管理サーバ部61は、ソフトウェア更新装置21にパッケージ80をダウンロードさせるために、デバイス管理クライアント部71にダウンロード実行指示を送信する(ステップ308)。デバイス管理クライアント部71は、デバイス管理クライアントツリーDB72に更新中であることを設定して(ステップ361)、ダウンロードクライアント部73に対し、ダウンロードの実行を指示する(ステップ356)。このとき、ダウンロード先のURLは、ステップ353で設定したソフト更新情報に含まれるPkgURL要素160である。またデバイス管理クライアント部71は、同時に、デバイス管理サーバ部61に更新中であることを通知する(ステップ364)。デバイス管理サーバ部61は、デバイス管理サーバツリーDB62に更新中であることを設定する(ステップ359)。
【0054】
ダウンロードクライアント部73は、ダウンロード先のURLを指定してダウンロードサーバ部63にパッケージ80を要求し(ステップ309)、パッケージ80をダウンロードする(ステップ310)。ダウンロードクライアント部73は、デバイス管理クライアント部71にダウンロードが終わったことを通知する(ステップ357)。デバイス管理クライアント部71は、ダウンロードが終了したことをデバイス管理サーバ部61に送信する(ステップ311)。また、デバイス管理クライアントツリーDB72のStatus要素109にダウンロード状況(ここではダウンロードが正常終了したこと)を設定する(ステップ358)。デバイス管理サーバ部61は、デバイス管理サーバツリーDB62にダウンロードが終了したことを設定する(ステップ360)。
【0055】
図13は、
図11から引き続き、ソフトウェア更新処理におけるメッセージのやり取りを示すシーケンス図である。デバイス管理サーバ部61は、本当にソフトウェア更新してもよいかをユーザに確認するためのソフトウェア更新許可要求メッセージBをデバイス管理クライアント部71に送信する(ステップ312)。デバイス管理クライアント部71は、HMI管理部200に対し入力要求を送信する(ステップ359)。HMI管理部200は、現在選択されているHMIデバイス(例えばナビゲーション装置24)にメッセージを表示し、第1接触入力部249からユーザからの応答を受け取る。HMI管理部200は、応答をデバイス管理クライアント部71に返すステップ(360)。デバイス管理クライアント部71は、許可か不許可かの情報をデバイス管理サーバ部61に送信する(ステップ313)。
【0056】
デバイス管理サーバ部61は、ソフトウェア更新の実行を指示するメッセージをデバイス管理クライアント部71に送信する(ステップ314)。デバイス管理クライアント部71は、デバイス管理クライアントツリーDB72のStatus要素(例えばStatus要素138)を更新する(ステップ363)。デバイス管理クライアント部71は、後述のソフトウェア更新処理390を実行するため、更新部202に更新開始メッセージを送信する(ステップ317)。デバイス管理クライアント部71は、同時に、デバイス管理サーバ部61に更新を開始した旨を送信する(ステップ366)。このとき、ソフトウェア更新処理390からHMI管理部200に、ソフトウェアの更新を開始したことを通知するが、この処理については
図17および
図18で後述する。このタイミングで、メッセージが表示されるHMIデバイスがナビゲーション装置24からスマートフォン4に変更される。
【0057】
デバイス管理サーバ部61は、デバイス管理サーバツリーDB62のStatus要素(例えばStatus要素138)を更新する(ステップ359)。ソフトウェア更新処理390が終了すると、デバイス管理クライアント部71は、デバイス管理サーバ部61にソフト更新が完了したことを通知し(ステップ315)、デバイス管理クライアントツリーDB72のStatus要素(例えばStatus要素138)を設定する(ステップ361)。デバイス管理サーバ部61は、ソフトウェア更新が終了したことを保存するため、デバイス管理サーバツリーDB62のStatus要素(例えばStatus要素138)を更新する(ステップ362)。デバイス管理サーバ部61は、ソフトウェア更新が完了したことをユーザに通知するためのメッセージをデバイス管理クライアント部71に送信する(ステップ316)。デバイス管理クライアント部71は、HMI管理部200に対して完了通知を送り(ステップ363)、ユーザにソフトウェア更新が終わったことを報知する。このとき、スマートフォン4の表示部44に表示されるイメージを
図14に例として示す。以上の処理の流れにより、ソフト更新処理のメッセージのやり取りが完了する。
【0058】
図15は、パッケージ80の構造を模式的に示す図である。パッケージ80は、ソフトウェア更新の際、ダウンロードサーバ部63からダウンロードクライアント部73へ受け渡される。
【0059】
パッケージ80は、ヘッダ部81、シーケンス情報82、および更新情報83を含む。ヘッダ部81は、後述のシーケンス情報82と更新情報83が、どのようにパッケージ内に格納されているかを記述する情報である。ヘッダ部81は、例えばシーケンス情報82のサイズおよび更新情報83のサイズなどの情報を含む。ヘッダ部81には更に、車両2を識別するVIN情報や、シーケンス情報82および更新情報83の圧縮形式を示す情報、シーケンス情報82および更新情報83を復号するための鍵情報などが含まれていてもよい。
【0060】
シーケンス情報82は、更新部202の動作を規定するスクリプトである。このスクリプトは、後述の
図16、
図17に示す更新部202での処理を、どの順序で実行し、どの順序で判断するかをプログラムとして記述する。シーケンス情報82は、例えばJavaScript(登録商標)やRubyのようなプログラム言語、シェルやバッチのようなジョブ制御言語、ISO 13209に規定されるOTX(Open Test sequence eXchange format)などにより記述される。以下の説明では、シーケンス情報82はOTXにより記述されることを想定する。
【0061】
更新情報83は、第1制御装置22、第2制御装置23、およびナビゲーション装置24を動かしているソフトウェアのバイナリコード情報、ソフトウェア更新で使用している手続き情報、車両2の診断情報などを含む。更新情報83は、例えばISO 22901に既定されるODX(Open Diagnostics data eXchange)により表現される。手続き情報には、例えばソフトウェアのバージョン情報などが含まれる。
【0062】
図7に示した更新部202の各部とパッケージ80との関係について説明する。更新部202は、シーケンス実行部76、更新情報処理部77、およびプロトコル処理部78を含む。シーケンス実行部76は、シーケンス情報82を解釈し、インタプリタとしてスクリプトを実行する。更新情報処理部77は、更新情報83から作成したバイナリコードを、ソフトウェア更新の対象となるデバイスに送信する。プロトコル処理部78は、更新情報処理部77でデバイスに送ったバイナリコードをデバイスのストレージに格納するための手続きを実行する。
【0063】
図16は、更新部202の動作の一例を示すシーケンス図である。なお、前述の通り、
図15に示したシーケンス情報82の内容により、更新部202の動作は変化する。以下の説明では、第1制御装置22のソフトウェア更新を行う場合のシーケンスについて述べる。
【0064】
デバイス管理サーバ部61は、デバイス管理クライアント部71にソフトウェア更新の実行を指示するメッセージを送信する(ステップ314)。デバイス管理クライアント部71は、更新部202のシーケンス実行部76に対し、更新処理の開始を指示する(ステップ400)。シーケンス実行部76は、更新情報処理部77に対して、更新処理の開始を通知し(ステップX1)、その後、シーケンス情報82を読み込んでプログラムとして解釈し(ステップ274)、シーケンスとして実行する。更新情報処理部77は、パッケージ80のヘッダ部81に含まれる車両2のVIN情報を読み出して(ステップX2)、シーケンス実行部76に送信する(ステップX3)。シーケンス実行部76は、ステップX3で受信したVIN情報と、ステップ301で取得したVIN1とが一致するかどうかを調べ(ステップ401)、一致しなければ更新処理を中断し(ステップ402)、HMI管理部200に異常である旨を送信する(ステップ412)。他方、一致した場合には第1制御装置22と通信して、バージョンを要求し(ステップ404)、バージョンを取得する(ステップ405)。更新情報処理部77は、パッケージ80の更新情報83に含まれるバージョン情報を読み出して(ステップX4)、シーケンス実行部76に送信する(ステップX5)。シーケンス実行部76は、ステップX5で受信したバージョン情報が、ステップ405で取得したバージョンと一致するかどうかを調べ(ステップ405)、一致しない場合には更新処理を中断し(ステップ407)、HMI管理部200に異常である旨を送信する(ステップ412)。他方、一致した場合には、車両管理部208に車両情報を要求し(ステップ408)、車両2から各種情報を取得する(ステップ409)。ここでいう各種情報とは、例えば、イグニッションの状態やエンジンの状態を示す情報である。車両管理部208は、第1制御装置22および第2制御装置23などと通信して取得した上記の車両情報を保持している。
【0065】
シーケンス実行部76は、ステップ409で取得した車両情報を調べて(ステップ410)、ソフトウェア更新に問題がある状態であれば更新処理を中断し(ステップ411)HMI管理部200に異常である旨を送信する(ステップ412)。他方、問題がなければ、シーケンス実行部76は第1制御装置22と通信し、DTC情報を要求し(ステップ413)、DTC情報を取得する。DTC情報とは、車両2の診断情報の一種であり、Diagnostic Trable Codeの略である。DTC情報を調査することにより、車両2に何らかの問題の有無を調査することができる。シーケンス実行部76はDTC情報を調査し(ステップ415)、問題がある場合には(ステップ416)その旨をHMI管理部200に送信し異常表示を行う(ステップ417)。異常表示412および異常表示417をデバイス管理クライアント部71が受け取ったときには、デバイス管理サーバ部61に異常終了した旨の応答を送信する(ステップ418)。
【0066】
ステップ415で異常がなかった場合、更新部202は、第1制御装置22のソフト更新をするために認証処理を実行する。認証処理において、シーケンス実行部76は、第1制御装置22に認証要求を送信し(ステップ419)応答としてチャレンジ情報を受け取る(ステップ420)。シーケンス実行部76は、決められた方法に従いチャレンジ情報からレスポンス情報を生成し(ステップ421)、第1制御装置22に送信する。シーケンス実行部76は、第1制御装置22から認証情報を受け取り(ステップ423)、認証に失敗したならば(ステップ424)、デバイス管理クライアント部71は、HMI管理部200にその旨を送信し異常表示を行う(ステップ425)。デバイス管理クライアント部71は、同時に、デバイス管理サーバ部61に認証に失敗した旨の応答を送信する(ステップ426)。
【0067】
図17は、
図16から引き続き、更新部202の動作の一例を示すシーケンス図である。認証に成功したならば、シーケンス実行部76は、更新情報処理部77に対して、パッケージ80に基づくソフトウェア更新を行うよう指示する(ステップX7)。更新情報処理部77は、第1制御装置22が固有に保持する学習値を退避する設定になっているかどうかを調べ(ステップ430)、退避しないならば中断し(ステップ431)、デバイス管理クライアント部71はHMI管理部200にその旨を送信し異常表示を行う(ステップ432)。デバイス管理クライアント部71は、同時に、デバイス管理サーバ部61に学習値を退避しない旨の応答を送信する(ステップ433)。更新情報処理部77は、第1制御装置22と通信して学習値を要求し(ステップ434)、学習値を取得して(ステップ435)、ストレージ219に取得した学習値を保存する(ステップ436)。
【0068】
更新情報処理部77は、第1制御装置22のソフト更新のために、Block消去を要求し(ステップ437)、パッケージ80の更新情報83に含まれるバイナリコードの書き込みを要求する(ステップ438)。複数回のソフトウェア更新、あるいは別のBlockのソフトウェア更新を行う場合には(ステップ439)、ステップ437に戻る。
【0069】
更新処理がすべて終了したら、更新情報処理部77は、ステップ436で保持した学習値を第1制御装置22に書き戻すために学習値書き込み要求を送信する(ステップ442)。更新情報処理部77は、第1制御装置22にリセットを要求し(ステップ440)、デバイス管理クライアント部71にソフトウェア更新の終了を通知する(ステップ441)。デバイス管理クライアント部71は、デバイス管理サーバ部61にソフトウェア更新が完了した旨を通知する(ステップ315)。デバイス管理サーバ部61は、ソフトウェア更新が完了した旨のメッセージを表示する指示をデバイス管理クライアント部71に送信し(ステップ316)、デバイス管理クライアント部71はHMI管理部200にそのメッセージを送信して表示する(ステップ363)。以上の動作により、第1制御装置22のソフトウェア更新が実行される。
【0070】
なお、ソフトウェア更新の対象となるデバイスは、第1制御装置22ではなく、第2制御装置23やナビゲーション装置24であってもよい。その場合には、上記説明内の第1制御装置22をそれぞれ第2制御装置23やナビゲーション装置24に置き換えればよい。
【0071】
HMI管理部200について、
図7を参照して説明する。HMI管理部200は、HMI登録部251、HMI管理DB252、HMI選択部253、および転送部254を有する。
【0072】
HMI登録部251は、ソフトウェア更新システム1に接続するHMIデバイスの各種情報を、後述のHMI管理DB252に登録する機能である。ソフトウェア更新システム1に接続するHMIデバイスには、例えばナビゲーション装置24のように車両2に取り付けられソフトウェア更新装置21とUSBネットワーク17で接続する装置や、スマートフォン4のようにネットワーク5を介して車両2のソフトウェア更新装置21と通信する装置が含まれる。
【0073】
登録方法は、例えばナビゲーション装置24の第1映像出力部243および第1接触入力部249を用いて実現したユーザインタフェースを用いる方法や、スマートフォン4がネットワーク5を介して車両2に接続したことを契機にする方法がある。前者の方法では、例えば第1映像出力部243の画面上に登録するHMIデバイスの一覧を表示して、第1接触入力部249でユーザの入力を受け付けてHMIデバイスを選択し、選択されたHMIデバイスをHMI管理DB252に登録する。後者の方法では、例えばスマートフォン4が車両2に接続したときに、スマートフォン4が自身の各種情報をHMI管理部200に送信し、HMI登録部251がスマートフォン4をHMIデバイスとしてHMI管理DB252に登録する。
【0074】
HMI管理DB252は、HMI登録部251により収集したHMIデバイスの情報を管理するデータベースである。HMI管理DB252の詳細については後述する。HMI選択部253は、HMI管理DB252が保持しているHMIデバイスの情報の中から、ソフトウェア更新などを契機として1つのHMIデバイスを選択し、転送部254に転送先として設定する。例えば、ステップ492で入手したHMIデバイスのIPアドレスをHMI選択部253に設定する。転送部254は、HMI管理部200が受信する情報を、HMI選択部253が選択したHMIデバイスへ転送する。HMI管理部200が受信する情報とは、例えばソフトウェア更新装置21、第1制御装置22、第2制御装置23、ナビゲーション装置24などが出力するメッセージや映像などである。例えば転送部254は、メッセージや映像を、第2通信部205を介してサーバ3の転送部303に転送したり、第3通信部206を介してナビゲーション装置24に転送したりする。
【0075】
図18は、HMI管理DB252の構造を模式的に示す図である。HMI管理DB252は、0個以上の複数のレコードから構成されるデータベースである。1つのレコードは、1つのHMIデバイスに関する情報を示す。すなわち、1つのレコードは1つのHMIデバイスに対応している。各々のレコードは、デバイス種別520、送信先アドレス530、入力デバイスフラグ540、使用中フラグ550、および車外フラグ560を含む。
【0076】
デバイス種別520は、HMIデバイスがどのようなものかを一意に示す情報である。デバイス種別520は、例えばIVI(ナビゲーション装置やスマートフォン)、HMD(ヘッドマウントディスプレイ)、HUD(ヘッドアップディスプレイ)などを示す情報である。送信先アドレス530は、このHMIデバイスに情報を表示するためには、どこに情報を送ればよいかを示すあて先情報である。送信先アドレス530は、例えばIPアドレスやMACアドレスである。送信先アドレス530により示されるあて先に情報を送信することにより、対応するHMIデバイスに情報が表示される。
【0077】
入力デバイスフラグ540は、HMIデバイスが入力デバイスである、あるいは入力デバイスの機能を持つか否かを示すフラグである。使用中フラグ550は、HMIデバイスが現在使用中であるか否かを示すフラグである。車外フラグ560は、HMIデバイスが車外にあるデバイスであるか、車内にあるHMIデバイスかを示すフラグである。
【0078】
図18の例では、HMI管理DB252には3つのHMIデバイスが登録されている。1つ目のHMIデバイスはIVI521であり、送信先アドレス531は「192.168.0.5」というIPアドレス、入力デバイスフラグ541は「○」つまり入力デバイスであり、使用中フラグ551は「×」つまり使用中ではなく、車外フラグ561は「×」つまり車内にある。2つ目のHMIデバイスはスマホ522であり、送信先アドレス532は「192.168.1.5」というIPアドレス、入力デバイスフラグ542は「○」つまり入力デバイスであり、使用中フラグ551は「○」つまり使用中であり、車外フラグ563は「○」つまり車外にある。3つ目のHMIデバイスはHMD523であり、送信先アドレス533は「192.168.2.5」というIPアドレス、入力デバイスフラグ543は「×」つまり入力デバイスではなく、使用中フラグ551は「×」つまり使用中ではなく、車外フラグ563は「×」つまり車内にある。
【0079】
複数のHMIデバイスに対応して、ソフト更新時出力されるメッセージを、適切なHMIデバイスに転送することにより表示する仕組みを実現する動作について、
図7を用いて説明する。
【0080】
スマートフォン4の第6通信部401は、前述のデバイス種別420、送信先アドレス430、および入力デバイスフラグ440を第2通信部205を介してHMI管理部200のHMI登録部251に送信する。HMI登録部251は、受信したデバイス種別520、送信先アドレス530、および入力デバイスフラグ540からレコードを生成してHMI管理DB252に登録する。ナビゲーション装置24も同様に、前述のデバイス種別420、送信先アドレス430、および入力デバイスフラグ440を第3通信部206を介してソフトウェア更新装置21のHMI登録部251に送信する。HMI登録部251は、受信したデバイス種別520、送信先アドレス530、および入力デバイスフラグ540からレコードを生成してHMI管理DB252に登録する。以上のような動作により、複数のHMIデバイスをソフトウェア更新システム1に登録することができる。
【0081】
サーバ3は、第4通信部304を介して配信部301と受信部201との間で通信を行い、パッケージ80を配信する。ソフトウェア更新装置21の更新部202は、パッケージ80を読み込み、第1通信部204を介して第1制御装置22、第2制御装置23、およびナビゲーション装置24のソフトウェアを更新する。このとき、更新部202は、HMI管理部200のHMI選択部253に対し、ソフトウェアを更新した旨を伝える。HMI選択部253は、これを契機に、HMI管理DB252に登録されているレコードの中から適合したレコードを選択し、選択したレコードから送信先アドレス530を取得する。HMI選択部253は、取得した送信先アドレス530を転送部254に設定する。転送部254は、HMI管理部200に到達したメッセージや映像などの情報を送信先アドレス530に送信して、転送処理を行う。
【0082】
図11、
図13、
図16、
図17の各シーケンス内において、HMI管理部200が送受信するデータ、具体的には、
図11の入力要求354、応答355、
図13の入力要求359、応答360、および完了通知363、
図16の異常表示412、異常表示417、および異常表示425、
図17の異常表示432および完了通知363は、転送部254によりHMI管理部200が選択した送信先アドレス430に送信される。
【0083】
図19は、HMI管理DB252に登録されているレコードの中から適合したレコードを選択するHMI選択部253の動作のフローチャートである。HMI選択部253は、HMIデバイスを切り替える必要が生じたかどうかを調べる(ステップ1007)。例えばソフトウェア更新などにより、HMIデバイスを切り替える必要が生じたならば、切り替える必要が生じたHMIデバイスのIPアドレスを取得する(ステップ1008)。本実施の形態では、IPアドレスは更新部202から得ることができる。HMI選択部253は、HMI管理DB252のレコードを検索し、そのIPアドレスに一致するレコードを取得する(ステップ1009)。もし、そのレコードの使用中フラグ550が「×」、つまりHMIデバイスが使用中ではなかった場合、HMI選択部253は処理をステップ1000に進める。他方、レコードの使用中フラグ550が「○」、つまりHMIデバイスが使用中だった場合、その使用中フラグ550を暫定的に「△」にし(ステップ1011)、マーキングを行う。
【0084】
HMI選択部253は、HMI管理DB252のレコードを検索し、使用フラグ550が「×」であるレコードを選択する(ステップ1012)。使用フラグ550が「×」であるレコードが複数見つかった場合、HMI選択部253はさらに入力デバイスフラグ540を調べ、「○」であるレコードを選択する(ステップ1012)。HMI選択部253は、選択したレコードの使用中フラグ550を「○」に変更し(ステップ1013)、選択したレコードから送信先アドレス530を取得する(ステップ1014)。HMI選択部253は、取得した送信先アドレス530を転送部254に設定する(ステップ1015)。HMI選択部253は、使用フラグ550が「△」であるレコードを検索し(ステップ1016)、そのレコードの使用フラグ550を「×」に変更し、処理をステップ1000に進める。
【0085】
図20は、転送部254の動作を示すフローチャートである。転送部254は、HMI選択部253からHMIデバイスを切り替える必要が生じたことを指示されたかどうかを調べる(ステップ2001)。例えばソフトウェア更新などに起因して、HMIデバイスを切り替える必要が生じたことが指示される。HMIデバイスを切り替える必要が生じたことが指示されていないならば、転送部254はステップ2004を実行する。HMIデバイスを切り替える必要が生じていたならば、転送部254は、切り替える必要があるHMIデバイスのIPアドレスを取得する(ステップ2002)。次に転送部254は、そのIPアドレスを記憶部211のメモリに保存する(ステップ2003)。
【0086】
転送部254は、HMI管理部200にメッセージや映像が送られてきたかどうかを調べ(ステップ2004)、送られていなければステップ2001を実行する。送られていた場合には、このメッセージを受信し(ステップ2005)、ステップ2003で保存した送信先のIPアドレスを第2通信部205または第3通信部206に設定する(ステップ2006)。転送部254は、到着したメッセージを第2通信部205または第3通信部206に設定してメッセージを送信する。その後、転送部254はステップ2001を実行する。
【0087】
以上のような動作により、ソフトウェア更新の際に出力されるメッセージは、適切なHMIデバイスに転送され、そのHMIデバイスにより表示される。
【0088】
上述した実施の形態によれば、次の作用効果が得られる。
(1)HMI選択部253は、複数のHMIデバイスから1つのHMIデバイスを選択する。転送部254は、HMI管理部200に送られてきたソフトウェア更新に関するメッセージや映像を、HMI選択部253により選択されたHMIデバイスに転送する。このようにしたので、更新に関するメッセージを適切なHMIデバイスに転送することができる。
【0089】
(2)HMI選択部253は、例えばソフトウェア更新などに起因して、HMIデバイスを切り替える必要が生じたとき、複数のHMIデバイスから1つのHMIデバイスを選択する。このようにしたので、常に更新に関するメッセージを転送するにふさわしいHMIデバイスを選択することができる。
【0090】
(3)転送部254は、車両1の診断情報の一種であるDTC情報を、HMI選択部253により選択されたHMIデバイスに転送する。このようにしたので、車両2の状態をユーザに確実に通知することができる。
【0091】
(4)転送部254は、HMI選択部253からHMIデバイスを切り替える必要が生じたかどうかを調べ、例えばソフトウェア更新などに起因して、HMIデバイスを切り替える必要が生じた場合、HMI選択部253は、複数のHMIデバイスから1つのHMIデバイスを選択する。すなわち、HMI選択部253は、複数のHMIデバイスのうちのいずれか1つのソフトウェアが更新される場合、更新対象のHMIデバイスとは別の1つのHMIデバイスを選択する。このようにしたので、ソフトウェア更新のタイミングでHMIデバイスを切替え、ソフトウェア更新システムの発するメッセージを、適切なHMIデバイスに表示することが可能になる。
【0092】
(第2の実施の形態)
図21は、第2の実施の形態に係るソフトウェア更新システム1aのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム1aは、
図7に示した第1の実施の形態に係るソフトウェア更新システム1と同様の構成を有しているが、更にソフトウェア更新装置21に接触確認部3001が追加されている。
【0093】
接触確認部3001は、スマートフォン4の第2接触入力部405にユーザが触れたことを検知する。換言すると、接触確認部3001は、第2接触入力部405の入力情報が変化したことを検知する。接触確認部3001は、スマートフォン4においてユーザの接触が検知されたことを検知すると、HMI管理部200にそのスマートフォンのIPアドレスを通知する。この通知を契機に、
図19のステップ1007において肯定判定が為され、HMI選択部253が動作して新しいHMIデバイスを選択する動作が開始される。
【0094】
以上の動作により、ユーザが接触したことを契機にユーザが使用するHMIデバイスを切り替える仕組みを実現することができる。
【0095】
上述した実施の形態によれば、第1の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
(1)HMI選択部253は、複数のHMIデバイスのうち、接触確認部3001によりユーザが触れたことが検知された1つのHMIデバイスを選択する。このようにしたので、ユーザが接触している、すなわち使用中であるHMIデバイスに対し、ソフトウェア更新時のメッセージを表示することが可能となる。
【0096】
(第3の実施の形態)
図22は、第3の実施の形態に係るソフトウェア更新システム1bのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム1bは、
図7に示した第1の実施の形態に係るソフトウェア更新システム1と同様の構成を有しているが、更にスマートフォン4にHMI設定部3002が追加されている。
【0097】
HMI設定部3002は、第2映像出力部404および第2接触入力部405を使って、使用するHMIデバイスを設定する。HMI設定部3002は、第2映像出力部404および第2接触入力部405により実現されるGUI(グラフィカルユーザインタフェース)により、ユーザに対して、使用するHMIデバイスを設定するインタフェースを提供する。例えば、HMI設定部3002によって、第2映像出力部404に、使用可能なHMIデバイスが一覧表示される。ユーザが第2接触入力部405により特定のHMIデバイスを選択(指定)すると、HMI設定部3002は、選択(指定)されたHMIデバイスのIPアドレスをソフトウェア更新装置21のHMI管理部200に通知する。この通知を契機に、
図19のステップ1007において肯定判定が為され、HMI選択部253が動作して新しいHMIデバイスを選択する動作が開始される。
【0098】
以上の動作により、ユーザがGUIを用いて明示的にHMIデバイスを選択したことを契機に、ユーザが使用するHMIデバイスを切り替える仕組みを実現することができる。
【0099】
上述した実施の形態によれば、第1の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
(1)HMI選択部253は、複数のHMIデバイスのうち、ユーザにより指定された1つのHMIデバイスを選択する。このようにしたので、ユーザが指定したHMIデバイスに対し、ソフトウェア更新時のメッセージを表示することが可能となる。
【0100】
(第4の実施の形態)
図23は、第4の実施の形態に係るソフトウェア更新システム1cのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム1cは、
図7に示した第1の実施の形態に係るソフトウェア更新システム1と同様の構成を有しているが、更にソフトウェア更新装置21にHMI生存確認部3003が追加されている。
【0101】
HMI生存確認部3003は、現在メッセージを表示可能なHMIデバイスを検出する。HMI生存確認部3003は、ソフトウェア更新システム1cに接続するすべてのHMIデバイスに対し、現在メッセージを表示可能かどうかを問い合わせる。HMI生存確認部3003は、表示不可能であるHMIデバイスを検知したことを契機に、HMI管理部200のHMI管理DB252を調べ、現在使用できるHMIデバイスを検出する。HMI生存確認部3003は、現在使用できるHMIデバイスのIPアドレスをHMI管理部200に通知する。この通知を契機に、
図19のステップ1007において肯定判定が為され、HMI選択部253が動作して新しいHMIデバイスを選択する動作が開始される。
【0102】
以上の動作により、例えばソフトウェア更新中である、あるいはユーザが使用中である、などの理由でHMIデバイスが使用できないことを検知したことを契機、ユーザが使用するHMIデバイスを切り替える仕組みを実現することができる。
【0103】
上述した実施の形態によれば、第1の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
(1)HMI選択部253は、HMIデバイスのソフトウェアが更新中である場合、他のHMIデバイスを選択する。このようにしたので、ユーザが利用可能なHMIデバイスのみを確実に選択することができる。
【0104】
(2)HMI選択部253は、複数のHMIデバイスのうち、HMI生存確認部3003により使用可能な状態であると検知された1つのHMIデバイスを選択する。このようにしたので、HMIデバイスから明示的に使用できないことを通知する必要なく、現在使用可能なHMIデバイスに対し、ソフトウェア更新時のメッセージを表示することが可能となる。
【0105】
(第5の実施の形態)
図24は、第5の実施の形態に係るソフトウェア更新システム1dのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム1dは、
図7に示した第1の実施の形態に係るソフトウェア更新システム1と同様の構成を有しているが、更にスマートフォン4に距離測定部3004が追加されている。また、ソフトウェア更新装置21に距離判断部3005が追加されている。
【0106】
距離測定部3004は、スマートフォン4と車両2との距離を測定する。例えば、距離測定部3004は車両2との間で常に(または間欠的に)無線通信を行い、その電波強度からスマートフォン4と車両2との距離を測定する。
【0107】
距離判断部3005は、距離測定部3004により測定された距離が一定以上になったことを検知する。換言すると、距離判断部3005は、スマートフォン4を持ったユーザが、車両2から一定以上の距離だけ離れたことを検知する。距離判断部3005は、スマートフォン4と車両2との距離が一定以上になったことを検知すると、HMI管理部200にそのスマートフォンのIPアドレスを通知する。この通知を契機に、
図19のステップ1007において肯定判定が為され、HMI選択部253が動作して新しいHMIデバイスを選択する動作が開始される。
【0108】
以上の動作により、ユーザが車両2から一定距離以上離れたことを契機に、ユーザが使用するHMIデバイスを切り替える仕組みを実現することができる。
【0109】
なお、距離測定部3004による距離の測定は、上述した無線通信の電波強度を用いる方法とは異なる方法により為されてもよい。また、距離測定部3004による距離の測定は、スマートフォン4と車両2との距離が予め定められた距離以上になったか否かを判断できる程度の精度であればよい。
【0110】
上述した実施の形態によれば、第1の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
(1)HMI選択部253は、距離判断部3005により車両2から一定以上の距離だけ離れたことが検知されたHMIデバイスとは異なるHMIデバイスを選択する。このようにしたので、ユーザが確実に利用可能なHMIデバイスにソフトウェア更新に関する通知メッセージを表示することができる。例えばユーザが車両2内にいるときにはナビゲーション装置24に、ユーザが車両2から距離を取ったときにはスマートフォン4にメッセージを表示することが可能となる。
【0111】
(第6の実施の形態)
図25は、第6の実施の形態に係るソフトウェア更新システム1eのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム1eは、
図7に示した第1の実施の形態に係るソフトウェア更新システム1と同様の構成を有しているが、更にソフトウェア更新装置21に車両状態判断部3006が追加されている。
【0112】
車両状態判断部3006は、車両管理部208から車両状態を取得し、車両2のエンジンがかかっているか否かを検知する。車両状態判断部3006は、車両状態の変化を検知すると、HMI管理部200のHMI管理DB252を調べ、新しいHMIデバイスのIPアドレスをHMI管理部200に通知する。この通知を契機に、
図19のステップ1007において肯定判定が為され、HMI選択部253が動作して新しいHMIデバイスを選択する動作が開始される。
【0113】
以上の動作により、車両2の車両状態の変化を契機にユーザが使用するHMIデバイスを切り替える仕組みを実現することができる。
【0114】
なお、車両状態判断部3006は、車両2のエンジンがかかっているか否かではなく、例えば、イグニッションのオンオフを検知してもよい。
【0115】
上述した実施の形態によれば、第1の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
(1)HMI選択部253は、車両状態判断部3006により車両状態が変化したことが検知されたとき、1つのHMIデバイスを選択する。このようにしたので、車両状態の変化に伴いユーザが使用するHMIデバイスを切り替えることができる。例えば、車両2の電源がオンのときにはナビゲーション装置24に、車両2の電源がオフのときにはスマートフォン4にメッセージを表示することが可能となる。
【0116】
(第7の実施の形態)
図26は、第7の実施の形態に係るソフトウェア更新システム1fのソフトウェア構成を模式的に示す図である。このソフトウェア更新システム1fは、
図7に示した第1の実施の形態に係るソフトウェア更新システム1と同様の構成を有しているが、更にソフトウェア更新装置21にHMI応答確認部3007が追加されている。
【0117】
HMI応答確認部3007は、HMI管理部200の転送部254がHMIデバイスに送信したメッセージに対し、応答が一定時間以内に返ってきているか否かを検出する。HMI応答確認部3007は、HMIデバイスにより送信されたメッセージに対して、一定時間以内に応答を返さなかった場合、HMI管理部200のHMI管理DB252を調べて現在使用できるHMIデバイスを検出する。HMI応答確認部3007は、使用できるHMIデバイスのIIPアドレスをHMI管理部200に通知する。この通知を契機に、
図19のステップ1007において肯定判定が為され、HMI選択部253が動作して新しいHMIデバイスを選択する動作が開始される。
【0118】
転送部254は、HMIデバイスに直近に送信したメッセージを保持する機能を有する。HMI選択部253が新しいHMIデバイスを選択したタイミングで、転送部254は、保持しておいた直近のメッセージを新しいHMIデバイスに送信する。なお、HMI応答確認部3007は、一定時間応答がないことを検出するために、時刻管理部213をタイマーとして使用する。
【0119】
以上の動作により、HMIデバイスにメッセージを送信し、ユーザがそのメッセージに対する応答を一定時間返さなかった場合、ユーザが使用するHMIデバイスを切り替え、そのHMIデバイスに改めてメッセージを再送する仕組みを実現することができる。
【0120】
上述した実施の形態によれば、第1の実施の形態と同様の作用効果に加えて、更に次の作用効果が得られる。
(1)HMI選択部253は、転送部254により通知メッセージがHMIデバイスに転送された後、一定時間内に応答が確認されなかった場合、他のHMIデバイスを選択し直し、転送部254は、HMI選択部253により選択し直されたHMIデバイスに、通知メッセージを再び転送する。このようにしたので、HMIデバイスがメッセージを表示したが、ユーザが一定時間反応しなかった場合に、別のHMIデバイスに同じ通知メッセージを表示し直すことが可能となる。
【0121】
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。