(57)【特許請求の範囲】
【請求項１】
遠隔制御ターゲット電子デバイスを遠隔的に制御するための無線制御システム中のメモリーをプログラムする方法であって、
無線制御システムを再プログラムするために設けられた無線制御システムから離れた位置に位置する遠隔デバイスから無線制御システムにおいてアプリケーションコードを受信することであって、アプリケーションコードは無線制御システムが少なくとも１つの遠隔制御ターゲット電子デバイスと通信することを許容するコードであることと、
無線制御システムが、プログラムされたアプリケーションコードを使って、そうでなければ無線制御システムとペアにされていない少なくとも１つの遠隔制御ターゲット電子デバイスを遠隔的に操作することが可能となるように、無線制御システムにおいて、無線制御システムのメモリーの少なくとも一部中にアプリケーションコードをプログラムすることと、
を含み、
前記アプリケーションコードは、前記無線制御システムを制御するように構成されるソフトウェアを含み、
前記メモリーの少なくとも一部中に前記アプリケーションコードをプログラムすることは、前記メモリーに記憶されたソフトウェアの少なくとも一部を再書き込みすることを含み、
前記メモリーの少なくとも一部中に前記アプリケーションコードをプログラムすることによって、前記無線制御システムが以前は適合していなかった前記ターゲット電子デバイスとあらたに適合するようにする、
方法。
【請求項２】
無線制御システム上のプログラミングモードに入ることと、
無線制御システムにおいて、無線制御システムと遠隔デバイスの間の通信を認証することと、
無線制御システムにおいて、前記通信の認証の結果に関するステータスを指し示すことと、
を更に含む、請求項１のメモリーをプログラムする方法。
【請求項３】
アプリケーションコードは、共通鍵で暗号化されてヘッダー情報が添付されている、請求項２のメモリーをプログラムする方法。
【請求項４】
遠隔デバイスにおいて、ヘッダー情報を抽出することと、
遠隔デバイスにおいて、データの少なくとも最初のブロックを共通鍵で復号することと、
遠隔デバイスにおいて、無線制御システムに送るために遠隔デバイス中のプログラムコードバッファー中にデータを格納することと、
を更に含む、請求項３のメモリーをプログラムする方法。
【請求項５】
無線制御システムにおいて、遠隔デバイスからデータの少なくとも最初のブロックを受信することと、
無線制御システムにおいて、データの少なくとも最初のブロックの完全性を検証することと、
無線制御システムにおいて、データの少なくとも最初のブロックの送信の終りを決定することと、
無線制御システムにおいて、無線制御システムのメモリーの少なくとも一部をアプリケーションコードでプログラムすることと、
を更に含む、請求項４のメモリーをプログラムする方法。
【請求項６】
遠隔デバイスにおいて、アプリケーションコードが前記少なくとも１つの遠隔制御ターゲット電子デバイスと適合することを検証することと、
遠隔デバイスにおいて、データの終りに到達するまで少なくとも１つのデータブロックを無線制御システムに送ることと、
を更に含む、請求項４のメモリーをプログラムする方法。
【請求項７】
メモリーをプログラムするためのシステムであって、
遠隔制御ターゲット電子デバイスを遠隔的に制御するための、少なくともトランシーバー回路とメモリーを含んだ無線制御システムと、
無線制御システムを再プログラムするために設けられた無線制御システムから離れた位置に位置する、少なくともトランシーバー回路とメモリーを含んだ遠隔デバイスと、を含み、
遠隔デバイスのメモリー中に格納されたアプリケーションコードが、無線制御システムに送られ、無線制御システムのトランシーバー回路によって受信され、アプリケーションコードは無線制御システムが少なくとも１つの遠隔制御ターゲット電子デバイスと通信することを許容するコードであり、
無線制御システムが、プログラムされたアプリケーションコードを使って、そうでなければ無線制御システムとペアにされていない少なくとも１つの遠隔制御ターゲット電子デバイスを遠隔的に操作することが可能となるように、無線制御システムのトランシーバー回路によって受信されたアプリケーションコードが、無線制御システムのメモリーの少なくとも一部中にプログラムされ、
前記アプリケーションコードは、前記無線制御システムを制御するように構成されるソフトウェアを含み、
前記アプリケーションコードが、前記メモリーの少なくとも一部中にプログラムされることは、前記メモリーに記憶されたソフトウェアの少なくとも一部を再書き込みすることを含み、
前記アプリケーションコードが、前記メモリーの少なくとも一部中にプログラムされることによって、前記無線制御システムが以前は適合していなかった前記ターゲット電子デバイスとあらたに適合するようにする、
システム。
【請求項８】
無線制御システムが、
無線制御システム上のプログラミングモードに入り、
無線制御システムと遠隔デバイスの間の通信を認証し、
前記通信の認証の結果に関するステータスを指し示す、
請求項７のメモリーをプログラムするためのシステム。
【請求項９】
アプリケーションコードは、共通鍵で暗号化されてヘッダー情報が添付されている、請求項８のメモリーをプログラムするためのシステム。
【請求項１０】
遠隔デバイスが、
ヘッダー情報を抽出し、
データの少なくとも最初のブロックを共通鍵で復号し、
無線制御システムに送るために遠隔デバイス中のプログラムコードバッファー中にデータを格納する、
請求項９のメモリーをプログラムするためのシステム。
【請求項１１】
無線制御システムが、
遠隔デバイスからデータの少なくとも最初のブロックを受信し、
データの少なくとも最初のブロックの完全性を検証し、
データの少なくとも最初のブロックの送信の終りを決定し、
無線制御システムのメモリーの少なくとも一部をアプリケーションコードでプログラムする、
請求項１０のメモリーをプログラムするためのシステム。
【請求項１２】
遠隔デバイスが、
アプリケーションコードが前記少なくとも１つの遠隔制御ターゲット電子デバイスと適合することを検証し、
データの終りに到達するまで少なくとも１つのデータブロックを無線制御システムに送る、
請求項１０のメモリーをプログラムするためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権の主張］この出願は、２０１０年２月４日に出願された米国仮出願番号61/301,507の恩恵を主張し、その内容全体がここで引用により組み込まれる。
【０００２】
発明は、メモリーを再プログラムするシステムと方法、特に、訓練可能なトランシーバーのメモリー中に在駐しているソフトウェアを無線で再プログラムすること、に関する。
【背景技術】
【０００３】
車庫扉開閉器、保安ゲート、家庭用警報、照明、コンピューター等のような機器やデバイスを制御するための従来のシステムは、それぞれの機器および／またはデバイスを操作するための個別の遠隔コントロールを使用する。この従来のシステムでは、複数のデバイスまたは機器を制御することばかりか、機器やデバイスの操作を単一の制御可能なシステム中に整理統合することさえ困難である。例えば、車庫扉開閉器メカニズムは無線周波数の制御信号に応答して車庫扉を開いたり閉じたりする。制御信号は典型的には、車庫開閉器と共に販売された遠隔コントロールから生成されて送信される。制御信号は、車庫扉開閉器メカニズムが関連付けられた制御信号を発行している遠隔コントロールのみに応答するように、予めセットされた搬送周波数と制御コードを有する。このタイプのシステムと関連付けられた問題は、操作されるためには扉開閉器が特定の予め決められた制御信号を受信しなければならないことである。つまり、各機器およびデバイスが特定の予め決められた制御信号を受信しなければならない。従って、複数の機器および／またはデバイスを制御することを所望しているユーザは、複数の遠隔コントロールを持つことが要求される。
【０００４】
進化し続けるテクノロジー主導の社会では、（制御するデバイスから離れて位置する機器および電子デバイスのような）複数の遠隔電子デバイスを整理統合されたやり方で操作することが可能である無線通信システムへの高まる需要がある。複数の機器およびデバイスが中央または単一の遠隔デバイスと通信することを可能とする無線通信システムは現存する。１つのそのようなシステムは、Johnson Control’s Inc.によって所有されたHomelink（登録商標）であり、そこでは訓練可能なトランシーバーが受信した制御信号の特性を「学習」することができるので、訓練可能なトランシーバーは以降、学習された特性を有する信号を遠隔的に制御されたデバイスまたは機器に生成して送信し得る。例えば、１つのそのようなシステムが、ここで引用によって組み込まれる米国特許第5,903,226号に開示されている。図１は、トランシーバー回路５４を有する例示的無線制御システム１２と、これもまたトランシーバー回路５３を有する遠隔電子システム（遠隔デバイス）１８を描く。別のそのようなシステムは、これもまたここで引用によって組み込まれる欧州特許第0 935 226 B1号に開示されている。
【０００５】
訓練可能なトランシーバーが操作するためには、各信号が典型的にはユーザ起動されたスイッチと関連付けられるか、またはユーザが（例えば、操作されるべきデバイスと関連付けられた訓練可能なトランシーバー上のボタンを押すことによって）関連付けられたスイッチを選択することによって訓練可能なトランシーバー上の学習された信号の１つを選択する。訓練可能なトランシーバーが異なる長さと持続時間の様々な信号の信号特性を学習するためには、各送信チャネルについて訓練可能なトランシーバー内で提供されて割り当てられたメモリーの量が、学習されるべき最大の信号の特性を格納するのに十分でなければならない。
【０００６】
加えて、訓練可能なトランシーバーが通信システム中で適正に働くためには、それは遠隔電子デバイスと、特に訓練可能なトランシーバーが時間の経過に渡って通信する可能性が高い潜在的に多数の遠隔電子デバイスと、適合していなければならない。当然ながら、訓練可能なトランシーバーが適合性のためにプログラムされ得るようにそれらの遠隔電子デバイスのどれをユーザが制御することを所望し得るかは予測することが困難である。しかも、新たな遠隔電子デバイスが開発されるにつれて、訓練可能なトランシーバーが最初にプログラムされた後で、新たな遠隔電子デバイスが無線通信システム中での使用に適合するように訓練可能なトランシーバーを更新するためのプロセスは現在のところ無い。
【発明の概要】
【０００７】
発明は、メモリーを再プログラムするシステムと方法、特に、訓練可能なトランシーバーのメモリー中に在駐しているアプリケーションコードのようなソフトウェアを無線で再プログラムすること、に関する。メモリーの無線再プログラミングは、訓練可能なトランシーバー中のソフトウェアが、製品への直接または有線接続がそうでなければ利用可能ではない遠隔位置から、更新されるかまたは置き換えられることを許容する。
【０００８】
発明の一実施形態では、遠隔デバイスを使って無線制御システム中のメモリーをプログラムする方法であって、遠隔デバイスからアプリケーションコードを受信することと、  無線制御システムが、プログラムされたアプリケーションコードを使って、そうでなければ無線制御システムとペアにされていない少なくとも１つの遠隔電子デバイスを操作するように、無線制御システムのメモリーの少なくとも一部中にアプリケーションコードをプログラムすることと、を含んだ方法がある。
【０００９】
発明の一側面では、方法は、無線制御システム上のプログラミングモードに入ることと、無線制御システムと遠隔デバイスの間の通信を認証することと、認証通信のステータスを指し示すことと、を含む。
【００１０】
発明の別の側面では、アプリケーションコードは、共通鍵で暗号化されてヘッダー情報に添付されている。
【００１１】
発明の更に別の側面では、方法は、ヘッダー情報を抽出することと、データの少なくとも最初のブロックを共通鍵で復号することと、無線制御システムに送るために遠隔デバイス中のプログラムコードバッファー中にデータを格納することと、を含む。
【００１２】
発明のもっと別の側面では、無線制御システムが、遠隔デバイスからデータの少なくとも最初のブロックを受信することと、データの少なくとも最初のブロックの完全性を検証することと、データの少なくとも最初のブロックの送信の終りを決定することと、  無線制御システムのメモリーの少なくとも一部をアプリケーションコードでプログラムすることと、を更に含む。
【００１３】
発明の別の側面では、遠隔デバイスが、アプリケーションコードが遠隔電子デバイスと適合することを検証することと、データの終りに到達するまで少なくとも１つのデータブロックを無線制御システムに送ることと、を含む。
【００１４】
発明の別の実施形態では、メモリーをプログラムするためのシステムであって、少なくともトランシーバー回路とメモリーを含んだ無線制御システムと、少なくともトランシーバー回路とメモリーを含んだ遠隔デバイスと、を含み、遠隔デバイスのメモリー中に格納されたアプリケーションコードが、無線制御システムに送られ、トランシーバー回路によって受信され、無線制御システムが、プログラムされたアプリケーションコードを使って、そうでなければ無線制御システムとペアにされていない少なくとも１つの遠隔電子デバイスを操作するように、トランシーバー回路によって受信されたアプリケーションコードが、無線制御システムのメモリーの少なくとも一部中にプログラムされる、システムがある。
【００１５】
発明が、例示的図面を参照して以下に記載される。
【図面の簡単な説明】
【００１６】
【図１】図１は、従来技術に従った例示的無線制御システムと遠隔電子システムを描く。
【図２Ａ】図２Ａは、発明に従ったメモリーの再プログラミングの例示的フローチャートを描く。
【図２Ｂ】図２Ｂは、発明に従った例示的メモリーデバイスとツールを描く。
【図２Ｃ】図２Ｃは、発明に従った入力デバイスの拡大図を伴った例示的無線制御システムを描く。
【図３】図３は、発明に従ったツールと通信している例示的無線制御システムを描く。
【図４Ａ】図４Ａは、発明に従った訓練可能なトランシーバーとツールの間の通信を描く。
【図４Ｂ】図４Ｂは、発明に従った訓練可能なトランシーバーとツールの間の通信を描く。
【図５】図５は、発明に従って変換されて暗号化されたコードの例示的フローを描く。
【図６】図６は、発明に従ったメモリーをプログラムするためのツール中に挿入された暗号化されたコードを描く。
【図７Ａ】図７Ａは、ツールから見たときのデータの受信と送信の例示的フロー図を描く。
【図７Ｂ】図７Ｂは、ツールから見たときのデータの受信と送信の例示的フロー図を描く。
【図８Ａ】図８Ａは、訓練可能なトランシーバーから見たときのデータの受信と送信の例示的フロー図を描く。
【図８Ｂ】図８Ｂは、訓練可能なトランシーバーから見たときのデータの受信と送信の例示的フロー図を描く。
【図９】図９は、無線通信システム中のメモリーの例示的概略図を描く。
【発明を実施するための形態】
【００１７】
発明は、メモリーを再プログラムするシステムと方法、特に、訓練可能なトランシーバーのメモリー中に在駐しているアプリケーションコードのようなソフトウェアを無線で再プログラムすること、に関する。メモリーの無線再プログラミングは、訓練可能なトランシーバー中のソフトウェアが、製品への直接または有線接続がそうでなければ利用可能ではない遠隔位置から、更新されるかまたは置き換えられることを許容する。
【００１８】
発明の一実施形態では、訓練可能なトランシーバーのメモリー中に在駐しているソフトウェアが（有線でかまたは無線で）再プログラムされる。例示的実施形態では、暗号化されたプログラムコードが、訓練可能なトランシーバーから離れた位置において位置しているデバイス（または「ツール」）からの無線周波数（ＲＦ）リンクを介してのように、無線で転送される。離れた位置は、有線または無線送信が行われることができるあらゆる距離にあっても良い。メモリーの１つのエリア（ブートローダーコードと呼ばれる）中に在駐しているソフトウェアを使っている訓練可能なトランシーバーが、プログラムコードを復号して処理し、それがメモリーの別のエリア（アプリケーションコードと呼ばれる）中にプログラムされるようにする。このプログラミングは、現在メモリー中に在駐しているアプリケーションコードの完全なかまたは部分的な再プログラミングであっても良い。より詳細な記載が図面を参照して以下に続く。
【００１９】
図２Ａは、発明に従ったメモリーの再プログラミングの例示的フローチャートを描く。
【００２０】
（図５を参照して以下で説明されるように）好ましくは暗号化されているプログラムコードは、ＵＳＢフラッシュドライブ、コンピューター、携帯電話、ＰＤＡ等のようなメモリー中に格納されることができる。プログラムコードは、以下のように、訓練可能なトランシーバーを再プログラムするのに使われるツールに挿入されるかまたは送信される。
【００２１】
ステップ（１）では、暗号化されたプログラムコード（AppCode.enc）を格納しているフラッシュドライブのようなデバイスが、ツール中に挿入される。例えば、ツールＲＴ中に挿入されているフラッシュドライブＵＳＢの例示的実施形態を描いた図２Ｂを参照。ツールＲＴは、フラッシュドライブＵＳＢからデータを抽出し、ツールＲＴ中での格納と後の使用のためにデータをバイナリプログラムデータ（AppCode.bin）に復号する。ステップ（２）では、訓練可能なトランシーバー１２が、例えば図２Ｃに描かれているように訓練可能なトランシーバー１２上のボタンＢ１、Ｂ２、Ｂ３のシーケンスを押すことによって、プログラミングモード中に置かれる。一旦デバイスがプログラミングモード中に置かれれば、ステップ（３）で、ツールＲＴと訓練可能なトランシーバー１２の間で認証シーケンスが起こる。認証シーケンス中に転送されるのは、例えばパート番号（ＥＰＮ）、シリアル番号（ＳＮ）、および現行のアプリケーションバージョン（もし適用可能であれば）とブートローダーバージョンを含んだ、アプリケーションコードの再プログラミングに関するデータである。（典型的には様々なキーとカウンターが計算された後で）一旦認証されると、訓練可能なトランシーバー１２は、アプリケーションがプログラムされることについて準備完了であることをツールＲＴに通知する。
【００２２】
ツールＲＴは、アプリケーションプログラムコード全体が転送されるまで、一度に１ＲＦデータフレームずつフラッシュドライブ上に格納された暗号化されたアプリケーションプログラムコードを転送し始める。ＲＦ送信が例示的実施形態中で記載されるが、発明はそのようなタイプの送信に限定はされず、容易に理解されるようにあらゆる形の無線通信が使われても良いことが、了解される。訓練可能なトランシーバー１２からの肯定応答（ＡＣＫ）もまた、転送中にエラーが起こらなかったことを確かなものとするために、データフレームの各送信中にツールＲＴに送り返される。もしデータフレームの送信中にエラーが起これば（例えば、チェックサムが失敗すれば）、送信が不成功であると見做されるまで、設定された数の「再試行」が処理される。転送中に起こるあらゆるエラーは、ステップ（４）において図２に描かれるように、訓練可能なトランシーバー上のディスプレイおよび／またはツールＲＴのディスプレイ上に表示されても良い。ディスプレイ３６ａは、例えばＬＥＤかまたは応答を表示するためのあらゆるその他の手段であっても良い。例えば、訓練可能なトランシーバー１２がプログラムメモリーＡＣに書き込んでいる間、訓練可能なトランシーバー上のＬＥＤがオンとオフに点滅してプロセスが行われていることを示しても良く、またはデータがメモリーに書き込まれていることをスクリーンが表示しても良い。ディスプレイ３６ａはまた、データの転送の成功かまたは不成功の完了を指し示しても良い。例えば、ＬＥＤが数字コードを点滅してエラーのタイプと追加のプログラミングが必要であることを示しても良く、または緑色光が成功した完了を指し示しても良い。
【００２３】
図３は、図２Ｂと２Ｃに従ったツールと通信している例示的無線制御システムを描く。無線制御システム（訓練可能なトランシーバーとも呼ばれる）１２とツールＲＴの各々は例示的実施形態では、オペレーター入力デバイス３２／３２ａと、ディスプレイ３６／３６ａと、制御回路３０／３０ａと、メモリー３１／３１ａと、トランシーバー回路５４／５４ａを含む。ツールはまた、ＵＳＢ格納デバイスのための入力のような、データを受信するための入力を含む。これらの記載は例示的な性質のものであり、ツールと訓練可能なトランシーバー（即ち、無線制御システム）は開示された実施形態に限定はされないことが、了解される。例えば、訓練可能なトランシーバーとツールは、実施形態中で描写されたデバイスの各々を含む必要はなく、またその他のデバイスへの接続のために提供されたインターフェースのような追加の特徴を含んでいても良い。
【００２４】
図４Ａと４Ｂは、発明に従った訓練可能なトランシーバーとツールの間の通信を描く。アプリケーションコードは、訓練可能なトランシーバー１２のアプリケーションコードブロックＡＣメモリー３１中に在駐する（図９参照）。訓練可能なトランシーバー１２のプログラミング中に、例えば新しいかまたは適合していない遠隔電子デバイスと共に動作するように訓練可能なトランシーバーメモリー３１中のアプリケーションコードを更新するために、アプリケーションコードブロック中のデータ（アプリケーションコード）が、ツールＲＴから送信されたアプリケーションコードで更新されるかまたは置き換えられる。送信されたアプリケーションコードを構築する一部として、およびコードの格納を確かにするために、関係のあるデータがアプリケーションコードから分析されて暗号化され（例えば、共通鍵で）、図５に描かれ以下でより詳細に記載されるように、パート（タイプ）番号のような情報がアプリケーションコードファイルのヘッダーに追加される（５）。暗号化されたプログラムコード（AppCode.enc）はそれから、後の使用のために、ツールＲＴかまたはツールＲＴによってアクセスされることができる（フラッシュドライブのような）別のメモリーデバイス中に格納される。例えば、これもまた以下でより詳細に記載される図６を参照。データを暗号化するのにあらゆる暗号化技術が使われても良く、暗号化は記載された例示的実施形態に限定されないことが、了解される。
【００２５】
訓練可能なトランシーバー１２のメモリー３１を再プログラムするには、ＵＳＢフラッシュドライブ上に格納されたアプリケーションコードを読み取ることが可能な（前述したツールＲＴのような）デバイスＲＴが使われる。ツールＲＴは、例えば、ＵＳＢフラッシュドライブ上に格納された暗号化されたアプリケーションコードを適正に復号し得る据え置き型ユニットまたはコンピューターであっても良い。当業者によって容易に理解されるように、ツールは、アプリケーションコードを読み取り復号すると共にアプリケーションコードを訓練可能なトランシーバーに送信するあらゆるデバイスであっても良いことが、了解される。一旦暗号化されたデータ（AppCode.enc）がフラッシュドライブＵＳＢから受信されると、ツールＲＴは、１０において、暗号化されたデータのヘッダーファイルからパート（タイプ）番号のような情報を抽出し、（例えば、共通鍵を使って）データの最初のブロックを復号する。当業者によって理解されるように、データのブロックとは対照的に、ファイル全体が復号されることができることが、了解される。訓練可能なトランシーバー１２がツールＲＴと通信するために、訓練可能なトランシーバー１２は、１５において、例えば、入力デバイス３２上のボタンシーケンスを選択することによって、プログラムモード（「ブートローダーモード」）中に置かれる。プログラムモード中に入ると、固有鍵（例えば、訓練可能なトランシーバーと関連付けられた各ツールのための鍵）が訓練可能なトランシーバーによって生成される。訓練可能なトランシーバーの、パート（タイプ）番号、シリアル番号、アプリケーションバージョンおよびブートローダーバージョン（暗号化されていない）のような情報がそれからツールに送られる（２０）。２５において、ツールＲＴは、訓練可能なトランシーバー１２と同期するために、アプリケーションコードが訓練可能なトランシーバーのパート（タイプ）番号と適合することを検証する。もしパート番号が適合しなければ（即ち、パート番号が検証されなければ）、通信は終了する。そうでなければ、３０において固有鍵がツールＲＴによって計算され、３５においてランダムカウンター値（ＡＥＳ＿ＣＴＲ）が作成され、チャレンジが４０において認証のために作成される。
【００２６】
チャレンジは、アドレスレンジと共に、４５において訓練可能なトランシーバー１２に送られ、訓練可能なトランシーバー１２は、（５０において）ＡＥＳ＿ＣＴＲ値とプログラミングアドレスレンジを検証してメモリー３１中に格納する。肯定応答（ＡＣＫ）が、５５においてツールＲＴに送り返され、それぞれ６０と６５において、ツールＲＴと訓練可能なトランシーバー１２でＡＥＳ＿ＣＴＲ値を使って暗号ストリームが計算される。この時点で、ツールＲＴと訓練可能なトランシーバー１２は、適合性を確認して、送信リンクを検証している。
【００２７】
７０において、暗号化されたデータ（ＥＤａｔａ）が、暗号ストリームとＸＯＲされたプログラムデータの最初のブロックを使って作成され、（７５において）ＲＦデータフレームが作成される。ＥＤａｔａは、プログラムコードと、訓練可能なトランシーバーを再プログラムするのに要求される関連付けられた情報を含む。ＥＤａｔａは、データに関する追加の情報（例えば、長さとチェックサム）が様々なコマンド（ＣＭＤｓ）と共に送信中に含まれることができるように、ＲＦデータフレーム内部に置かれる。ＲＦデータフレームは、（８０において）ツールＲＴから訓練可能なトランシーバー１２に送られ、そこでそれは、（８５において）例えばチェックサムを使って完全性についてチェックされる。もしチェックサムが検証されれば、９０において、チェックサム肯定応答（ＡＣＫ）がツールに送り返される一方で、ツールＲＴは、（９５において）データを処理している訓練可能なトランシーバー１２からの「準備完了」肯定応答を待つ。訓練可能なトランシーバー１２は、ＲＦデータフレームからＥＤａｔａを抽出し、それが暗号ストリームを使って復号されるようにデータを処理し、例えばアドレスと長さのようなＥＤａｔａ中に埋め込まれた追加の情報を使用する。新たな／更新されたプログラムコードはそれから、１００において、アプリケーションコードブロックＡＣ中のメモリーに書き込まれる。１０５−１１５において、乱数ＡＥＳ＿ＣＴＲがそれからツールＲＴおよび訓練可能なトランシーバー１２上でインクリメントされ、別の暗号ストリームが計算される。この時点で、プロセスは、（１２０において）プログラムデータの次のブロックで別のＥＤａｔａを作成し、暗号ストリームとＸＯＲするためにループして戻り、（１２５において）ＲＦデータフレームが作成され、（１３０において）ＲＦデータフレームが訓練可能なトランシーバー１２に送られる。このプロセスは、訓練可能なトランシーバー１２によって最後のデータブロックが受信されるまで継続し、その時には、（１３５において）完全なチェックサムと共に、エンドオブデータ（ＥＯＤ）コマンドがツールＲＴによって訓練可能なトランシーバー１２に送られる。訓練可能なトランシーバー１２においてＥＯＤコマンドが受信された時、（１４０において）完全なプログラムされたチェックサムが計算され、受信されたチェックサムで検証され、（１４５において）ＡＣＫがツールＲＴに送られ、（１５０において）それがデータ転送プロセスを完了する。アプリケーションコードはここで格納される。
【００２８】
図５は、発明に従って変換されて暗号化されたコードの例示的フローを描く。プログラムコード（AppCode.hex）２００は、最初に１６進コードとしてプログラムされるが、そのような実施形態に限定はされない。あらゆる形のコードが使われても良いことが了解される。AppCode.hexが変換／暗号化ツール２０５（それはコンピューターやツールＲＴのような、データを変換して暗号化することが可能なあらゆるデバイスであっても良い）によって受信された時、２１０においてターゲットとされた訓練可能なトランシーバー１２のパート番号が入れられる。AppCode.hexファイルが関係のあるデータについて分析され、ツールＲＴ中に２１５においてバイナリーファイル（AppCode.bin）として格納される。AppCode.binファイル２２０がＡＥＳと共通鍵２２５を使って暗号化され、パート番号がファイルのヘッダーに添付されて、暗号化されたアプリケーションコード（AppCode.enc）２３５として（例えばフラッシュドライブＵＳＢ上に）２３０において格納される。
【００２９】
図６は、発明に従ったメモリーをプログラムするためのツール中に挿入された暗号化されたコードを描く。格納されたAppCode.encファイル２３５が、ツールＲＴに送信される（または、もしツールＲＴによって作成されたものならそれは既にメモリー中に在駐している）。ここで、ヘッダー中のパート番号が２４０において抽出され、データの最初のブロックが２４５において共通鍵を使って復号される。データはそれから、２５０において訓練可能なトランシーバー１２への後の送信のためにメモリー中に格納される。
【００３０】
図７Ａと７Ｂは、図４Ａと４Ｂで記載されたようなツールから見たときのデータの受信と送信の例示的フロー図を描く。一旦プログラムコードがツールＲＴから訓練可能なトランシーバー１２への送信について準備完了となる（２５５）と、ツールＲＴは、２６０においてステータスメッセージが訓練可能なトランシーバー１２から受信されたかどうかを決定する。もしそうでなければ、ツールＲＴは、ステータスメッセージを待つ。もしステータスメッセージが受信されていれば、ツールＲＴは、２６５においてもし送信されたメッセージに含まれたパート番号がマッチするかを決定する。もしそうでなければ、２７０においてプロセスエラーが起こる。もしターゲットがマッチすれば、２８０において固有鍵が計算され、２８５においてランダムカウンターＡＥＳ−ＣＴＲが作成され、２９０においてチャレンジが認証用に作成されてアドレスレンジと共に送信される。３００において一旦肯定応答（ＡＣＫ）が訓練可能なトランシーバー１２から受信されれば、３１０において暗号ストリームがＡＥＳ＿ＣＴＲを使って計算される。もしＡＣＫが受信されなければ、３０５においてプロセスエラーが起こる。一旦ＡＣＫが受信されて準備完了であれば、３２５においてＥＤａｔａが作成され、３３０においてＲＦデータフレームが作成され、３３５においてＲＦデータフレームが送信される。もし「準備完了」ＡＣＫが受信されなければ、３２０においてプロセスエラーが起こる。そうでなければ、ツールＲＴは、ＲＦデータフレームのチェックサムが受信されたことのＡＣＫを待ち、それが「準備完了」であるか（３５０）そうでないか（３６０）を決定する。そうでなければ、３６０においてプロセスエラーが起こる。もし「準備完了」であれば、３７０においてエンドオブデータ（ＥＯＤ）が起こったかどうかが決定される。もしそうでなければ、３６５においてＡＥＳ＿ＣＴＲがインクリメントされて新たな暗号ストリームが計算される。プロセスは、３２５においてＥＤａｔａを作成することに戻る。そうでなければ、ＥＯＤコマンドが完全なチェックサム（ＣＳ）と共に訓練可能なトランシーバー１２に送信され、それは３８０においてＡＣＫが検証される。もし検証されれば、３９０においてプロセスは完了し、そうでなければ３８５においてエラーが起こっている。
【００３１】
図８Ａと８Ｂは、図４Ａと４Ｂに従った訓練可能なトランシーバーから見たときのデータの受信と送信の例示的フロー図を描く。４００においてブートローダーモードが、例えばオペレーター入力デバイス３２上のボタンシーケンスの選択によって、入れられる。４０５において固有鍵が計算され、４１０において訓練可能なトランシーバー１２が情報（例えば、パート番号、シリアル番号等）を送信する。訓練可能なトランシーバーはそれから、４１５においてチャレンジがツールＲＴによって受信されたかどうかを決定する。もしそうでなければ、４２０においてプロセスエラーが起こる。もしそうであれば、４２５においてチャレンジが検証される。もし検証されなければ、４３０においてプロセスエラーが起こる。他方でもし検証されれば、４４０におけるＡＥＳ＿ＣＴＲ値と共に、４３５においてアドレスレンジが格納され、４４５においてＡＣＫがツールＲＴに送信される。４５０において暗号ストリームがそれからＡＥＳ＿ＣＴＲを使って計算され、４５５においてＡＣＫがツールＲＴに送信される。お返しに、４６０においてＲＦデータフレームがツールＲＴから受信され、データフレームがチェックサム（ＣＳ）を使ってチェックされる。もしＣＳが有効でなければ、４７０においてプロセスエラーがある。もしＣＳが有効であれば、４８０においてＣＳの検証を肯定応答するＡＣＫ送信がツールＲＴに送られる。４８５において、データフレームの送信の終りを示すＥＯＤコマンドも受信されたかどうかが決定される。もしそうであれば、４９５において完全なＣＳが受信されて検証され、５００においてＣＳの検証を示すＡＣＫが送信され、５０５においてプロセスが終了する。そうでなければ、もしＥＯＤコマンドが受信されなければ、４９０においてＥＤａｔａがＲＦデータフレームから抽出され、データが処理され、メモリーがプログラムされる。５１０においてＡＥＳ＿ＣＴＲがインクリメントされ、次の暗号ストリームが計算され、それは訓練可能なトランシーバー１２が「準備完了」であることのＡＣＫの送信によって続かれる。プロセスは、４６０において追加のＲＦデータフレームを受信することに戻る。
【００３２】
図９は、無線通信システム中のメモリーの例示的概略図を描く。訓練可能なトランシーバーはメモリー３１を有し、それはブートローダーコードＢＬＣとアプリケーションコードＡＣを含むが、それらに限定はされない。ブートローダーコードＢＬＣは、ツールＲＴから受信された時にアプリケーションコードＡＣの再プログラミングを制御するコードを含み、アプリケーションコードＡＣは訓練可能なトランシーバー１２が遠隔電子デバイス１８と通信することを許容するコードである。アプリケーションコードＡＣは、訓練可能なトランシーバーが、システムに追加されて、訓練可能なトランシーバーと通信することが以前はできなかった新たな遠隔電子デバイスと動作すること、およびそれら自体が更新されていても良い遠隔電子デバイスと動作することを許容するために、更新される（部分的再プログラム）かまたは全体的に更新される（完全な再プログラム）。
【００３３】
例示的実施形態が図面中に描かれ、ここに記載されたが、これらの実施形態は例としてのみ供されていることが理解されるべきである。例えば、代替的実施形態が商業用マーケットでの使用のために好適であっても良く、そこではオフィス照明、保安システム、コンピューター、テレビ、駐車庫扉、またはあらゆるその他の機器またはデバイスが制御される。従って、記載された特徴は特定の実施形態に限定されず、それにも拘わらず添付された請求項の範囲内に入る様々な変形にまで拡張される。
【００３４】
当業者はここで、ここでの広い教示内容が様々な形で実装されることができることを、前述の記載から了解することができる。従って、記載された特徴はその特定の例との関係で記載されたが、その他の変形が図面と本明細書の精査により当業者に明らかとなるであろうから、特徴の真の範囲はそのように限定されるべきではない。
【図１】
0005879271.tif 000002
【図２Ａ】
0005879271.tif 000003
【図２Ｂ】
0005879271.tif 000004
【図２Ｃ】
0005879271.tif 000005
【図３】
0005879271.tif 000006
【図４Ａ】
0005879271.tif 000007
【図４Ｂ】
0005879271.tif 000008
【図５】
0005879271.tif 000009
【図６】
0005879271.tif 000010
【図７Ａ】
0005879271.tif 000011
【図７Ｂ】
0005879271.tif 000012
【図８Ａ】
0005879271.tif 000013
【図８Ｂ】
0005879271.tif 000014
【図９】
0005879271.tif 000015