(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-27
(45)【発行日】2022-02-04
(54)【発明の名称】無線システム、無線機器、通信プログラム、および通信方法
(51)【国際特許分類】
H04W 8/00 20090101AFI20220128BHJP
H04W 84/10 20090101ALN20220128BHJP
H04W 76/10 20180101ALN20220128BHJP
【FI】
H04W8/00 110
H04W84/10 110
H04W76/10
(21)【出願番号】P 2019214916
(22)【出願日】2019-11-28
(62)【分割の表示】P 2016010986の分割
【原出願日】2016-01-22
【審査請求日】2019-11-28
(31)【優先権主張番号】P 2015152749
(32)【優先日】2015-07-31
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】竹内 博是
(72)【発明者】
【氏名】井村 慶崇
【審査官】吉村 真治▲郎▼
(56)【参考文献】
【文献】特表2014-530524(JP,A)
【文献】特開2014-204142(JP,A)
【文献】特開2015-119215(JP,A)
【文献】特開2015-119455(JP,A)
【文献】特開2005-045368(JP,A)
【文献】特表2014-514847(JP,A)
【文献】特開2015-130657(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04B 7/24- 7/26
H04W 4/00-99/00
(57)【特許請求の範囲】
【請求項1】
無線通信を行うことが可能な複数の機器を含む無線システムであって、
前記複数の機器のうちの第1の機器は、
アプリケーションのための1のアプリケーションデータを取得する取得手段と、
ブロードキャスト又はマルチキャストパケットを無線で送信する送信手段と、
他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信手段と、
前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段と、を有し、
前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信し、
前記制御手段は、前記送信処理と前記受信処理とを実行している間、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れか1つを変化させる、無線システム。
【請求項2】
前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れか1つはランダムに設定される、請求項1に記載の無線システム。
【請求項3】
前記第1の機器は、前記送信処理および前記受信処理を交互に繰り返し実行する、請求項1又は2に記載の無線システム。
【請求項4】
前記送信処理と前記受信処理との間、前記送信処理と前記送信処理との間、および、前記受信処理と前記受信処理との間の少なくとも何れかには、前記送信処理および前記受信処理の何れも行われないスリープ期間が存在する、請求項1又は2に記載の無線システム。
【請求項5】
前記送信処理と前記受信処理との間には、前記送信処理および前記受信処理の何れも行われないスリープ期間が存在する、請求項3に記載の無線システム。
【請求項6】
前記スリープ期間は可変である、請求項4又は5に記載の無線システム。
【請求項7】
前記スリープ期間はランダムに設定される、請求項6に記載の無線システム。
【請求項8】
前記無線システムは、第2の機器を含み、
前記第1の機器と前記第2の機器とは接続を確立して無線通信を行い、
前記第1の機器の前記送信手段は、前記第2の機器と接続している状態で、前記複数のブロードキャスト又はマルチキャストパケットを送信する、請求項1から7の何れかに記載の無線システム。
【請求項9】
前記第2の機器をマスターとし、前記第1の機器をスレーブとして、当該第1の機器と第2の機器との間で接続が確立され、
前記第1の機器の送信手段は、スレーブとして前記第2の機器と接続された状態で、前記ブロードキャスト又はマルチキャストパケットを送信する、請求項8に記載の無線システム。
【請求項10】
前記無線システムは、第2の機器を含み、
前記第1の機器と前記第2の機器とは接続を確立して無線通信を行い、
前記第1の機器は、前記第2の機器と接続している状態で、前記送信処理及び/又は前記受信処理を実行する、請求項1に記載の無線システム。
【請求項11】
前記第2の機器をマスターとし、前記第1の機器をスレーブとして、当該第1の機器と第2の機器との間で接続が確立され、
前記第1の機器は、スレーブとして前記第2の機器と接続された状態で、前記送信処理及び/又は前記受信処理を実行する、請求項10に記載の無線システム。
【請求項12】
前記第1の機器と前記第2の機器とは、接続を確立した後、同期通信を繰り返し行い、
前記第1の機器の前記送信手段は、前記第2の機器との間の同期通信が行われるタイミングを除く期間において、前記複数のブロードキャスト又はマルチキャストパケットを送信する、請求項8から11の何れかに記載の無線システム。
【請求項13】
前記無線システムは、第3の機器と第4の機器とを含み、
前記第3の機器と前記第4の機器とは接続を確立し、当該接続を確立した後、同期通信を繰り返し行い、
前記第4の機器は、前記第3の機器との間の同期通信が行われるタイミングを除く期間において、前記第1の機器の送信手段によって送信された複数のブロードキャスト又はマルチキャストパケットを受信する、請求項12に記載の無線システム。
【請求項14】
前記第1の機器と前記第2の機器との間の同期通信と、前記第3の機器と前記第4の機器との間の同期通信と、のうちの少なくとも何れか一方の同期通信のタイミングを調整する調整手段をさらに備える、請求項13に記載の無線システム。
【請求項15】
前記第1の機器が前記調整手段を備える、請求項14に記載の無線システム。
【請求項16】
前記調整手段は、前記第1の機器と前記第2の機器との間の同期通信のタイミングと、前記第3の機器と前記第4の機器との間の同期通信のタイミングと、が近くなるように調整する、請求項14又は15に記載の無線システム。
【請求項17】
前記第1の機器の送信手段は、前記第2の機器からの指示なしで前記複数のブロードキャスト又はマルチキャストパケットを送信する、請求項8から16の何れかに記載の無線システム。
【請求項18】
前記第2の機器は、前記第1の機器との接続が確立された後、データの送信処理及び/又は受信処理を所定の時間間隔で繰り返し行う、請求項8から17の何れかに記載の無線システム。
【請求項19】
前記第1の機器は、所定期間に前記第1の機器において行われる複数回の前記送信処理及び/又は受信処理のうちの1回の処理に合わせて、前記第2の機器と通信を行う、請求項18に記載のシステム。
【請求項20】
前記第1の機器の前記送信手段は、次以降に行われる前記送信処理又は前記受信処理のタイミングを示すタイミング情報を、前記ブロードキャスト又はマルチキャストパケットに含めて送信する、請求項1に記載の無線システム。
【請求項21】
前記無線システムは、第3の機器を含み、
前記第3の機器は、
ブロードキャスト又はマルチキャストパケットを無線で送信する送信処理と、ブロードキャスト又はマルチキャストパケットを無線で受信する受信処理とを繰り返し行い、
前記第1の機器からの前記タイミング情報に基づいて、前記送信処理及び/又は前記受信処理を行うタイミングを調整する、請求項20に記載の無線システム。
【請求項22】
前記アプリケーションデータは、アプリケーションで利用可能なコンテンツを特定するためのデータである、請求項1から21の何れかに記載の無線システム。
【請求項23】
前記アプリケーションデータは、ゲームで利用可能なデータである、請求項1から22の何れかに記載の無線システム。
【請求項24】
前記無線システムは、第3の機器を含み、
前記第3の機器は、
前記第1の機器の送信手段によって送信された複数のブロードキャスト又はマルチキャストパケットを受信する受信手段と、
前記第1情報に基づいて、前記受信手段によって受信された複数のブロードキャスト又はマルチキャストパケットに基づいて、複数の前記分割されたデータを取得し、当該複数の分割されたデータを用いて、前記アプリケーションデータを再構築するデータ再構築手段と、
前記データ再構築手段によって再構築されたアプリケーションデータに基づいてアプリケーション処理を行う処理手段とを有する、請求項1から23の何れかに記載の無線システム。
【請求項25】
前記機器は、電波の周波数を切り替えながら前記無線通信を行う、請求項1から24の何れかに記載の無線システム。
【請求項26】
前記機器は、複数の異なる所定の周波数を切り替えながら前記無線通信を行う、請求項25に記載の無線システム。
【請求項27】
前記送信手段は、3つのチャネルを切り替えながら前記ブロードキャスト又はマルチキャストパケットを送信する、請求項25又は26に記載の無線システム。
【請求項28】
前記無線通信の規格は、Bluetooth Low Energyである、請求項1から27の何れかに記載の無線システム。
【請求項29】
前記無線通信の周波数帯は2.4GHz帯である、請求項1から28の何れかに記載の無線システム。
【請求項30】
Bluetooth Low Energy(BLE)規格に基づく無線通信を行うことが可能な複数の機器を含む無線システムであって、
前記複数の機器のうちの第1の機器は、
アプリケーションのための1のアプリケーションデータを取得する取得手段と、
アドバタイジングパケットを無線で送信する送信手段と、
他の機器からのアドバタイジングパケットを無線で受信する受信手段と、
前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段と、を有し、
前記送信手段は、前記アプリケーションデータを分割して複数のアドバタイジングパケットに分けて送信するとともに、当該アドバタイジングパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記アドバタイジングパケットに含めて送信し、
前記制御手段は、前記送信処理と前記受信処理とを実行している間、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れか1つを変化させる、無線システム。
【請求項31】
無線通信を行うことが可能な無線機器であって、
アプリケーションのための1のアプリケーションデータを取得する取得手段と、
ブロードキャスト又はマルチキャストパケットを無線で送信する送信手段と、
他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信手段と、
前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段と、を備え、
前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信し、
前記制御手段は、前記送信処理と前記受信処理とを実行している間、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れか1つを変化させる、無線機器。
【請求項32】
無線通信を行うことが可能な無線機器のプロセッサにおいて実行可能な通信プログラムであって、前記プロセッサを、
アプリケーションのための1のアプリケーションデータを取得する取得手段と、
ブロードキャスト又はマルチキャストパケットを無線で送信する送信手段と、
他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信手段と、
前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段として機能させ、
前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信し、
前記制御手段は、前記送信処理と前記受信処理とを実行している間、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れか1つを変化させる、通信プログラム。
【請求項33】
無線通信を行うことが可能な複数の機器を含む無線システムにおいて実行される通信方法であって、
前記複数の機器のうちの第1の機器は、
アプリケーションのための1のアプリケーションデータを取得する取得ステップと、
ブロードキャスト又はマルチキャストパケットを無線で送信する送信ステップと、
他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信ステップと、
前記送信ステップにおける送信処理と前記受信ステップおける受信処理とを繰り返し実行する制御ステップと、を含み、
前記送信ステップでは、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信し、
前記制御ステップでは、前記送信処理と前記受信処理とを実行している間、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れか1つを変化させる、通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の機器と通信を行うことが可能な無線システム、無線機器、通信プログラム、および通信方法に関する。
【背景技術】
【0002】
従来より、近距離での無線通信を行う機器が存在する(例えば、特許文献1)。例えば、Bluetooth(登録商標)規格による通信では、ある機器がマスターとなり別の機器がスレーブとなって1つのネットワークを構成し通信が行われる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の無線通信においては、ある機器と接続された状態の機器が、様々な機器と通信を行うということに関して改善の余地があった。
【0005】
それ故、本発明の目的は、様々な機器と通信をすることが可能な技術を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
第1の構成は、無線通信を行うことが可能な複数の機器を含む無線システムである。前記複数の機器のうちの第1の機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、他の機器との接続のために利用可能なブロードキャスト又はマルチキャストパケットを無線で送信する送信手段とを有する。前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信し、かつ、他の機器との接続のためのパケットか否かを示す第2情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信する。
【0008】
上記によれば、第1の機器は他の機器との接続のために利用可能なブロードキャスト又はマルチキャストパケットを用いて、アプリケーションデータを送信することができる。また、第1の機器はアプリケーションデータを分割して複数のパケットに分けて送信することができ、より大きなデータを送信することができる。
【0009】
ここで、「ブロードキャスト」は、不特定の機器(通信可能な範囲にある全ての機器)に対するブロードキャスト、及び、限定された不特定の機器に対するブロードキャストを含む。「限定された不特定の機器」とは、機器を唯一に特定しないものの(機器に割り当てられた固有のアドレスを特定しないものの)、共通の属性を持った機器又は共通の状態にある機器である。
【0010】
第2の構成は、無線通信を行うことが可能な複数の機器を含む無線システムである。前記複数の機器のうちの第1の機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、ブロードキャスト又はマルチキャストパケットを無線で送信する送信手段と、他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信手段と、前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段と、を有する。前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信する。
【0011】
上記によれば、第1の機器はアプリケーションデータを分割して複数のパケットに分けて送信することができ、より大きなデータを送信することができる。
【0012】
第1及び第2の構成において、前記第1の機器は、他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信手段をさらに有し、前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行してもよい。
【0013】
上記によれば、送信処理と受信処理とを繰り返すことにより、アプリケーションデータを他の機器に送信することができるとともに、他の機器からデータを受信することができる。
【0014】
第1及び第2の構成において、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れかは可変であってもよい。
【0015】
第1及び第2の構成において、前記送信処理の実行期間、前記送信処理を実行するタイミング、前記受信処理の実行期間、及び、前記受信処理を実行するタイミングのうち少なくとも何れかはランダムに設定されてもよい。
【0016】
上記によれば、送信処理及び受信処理が繰り返し行われることにより、例えば、自機と他の機器との間で、一方の機器の送信タイミングと、他方の機器の受信タイミングとが合うようにすることができる。
【0017】
第1及び第2の構成において、前記第1の機器は、前記送信処理および前記受信処理を交互に繰り返し実行してもよい。ここでの「送信処理および受信処理を交互に繰り返し実行する」場合には、送信処理と受信処理との間に休止期間を挟んで、送信処理と受信処理とが交互に行われてもよい。
【0018】
上記によれば、例えば、一方の機器の送信タイミングと、他方の機器の受信タイミングとが合うまでの時間を短縮することができる。
【0019】
第1及び第2の構成において、前記送信処理と前記受信処理との間、前記送信処理と前記送信処理との間、および、前記受信処理と前記受信処理との間の少なくとも何れかには、前記送信処理および前記受信処理の何れも行われないスリープ期間が存在してもよい。
【0020】
上記によれば、前記送信処理および前記受信処理の何れも行われないスリープ期間が設けられるため、消費電力を抑えることができる。
【0021】
第1及び第2の構成において、前記スリープ期間は可変であってもよい。
【0022】
第1及び第2の構成において、前記スリープ期間はランダムに設定されてもよい。
【0023】
上記によれば、送信処理及び受信処理が繰り返し行われることにより、例えば、自機の送信タイミングと、他の機器の受信タイミングとが合うようにすることができる。
【0024】
第1及び第2の構成において、前記無線システムは、第2の機器を含み、前記第1の機器と前記第2の機器とは接続を確立して無線通信を行ってもよい。前記第1の機器の前記送信手段は、前記第2の機器と接続している状態で、前記複数のブロードキャスト又はマルチキャストパケットを送信してもよい。
【0025】
上記によれば、第1の機器は第2の機器と接続している状態で、ブロードキャスト又はマルチキャストによって他の機器にアプリケーションデータを送信することができる。
【0026】
第1及び第2の構成において、前記第2の機器をマスターとし、前記第1の機器をスレーブとして、当該第1の機器と第2の機器との間で接続が確立され、前記第1の機器の送信手段は、スレーブとして前記第2の機器と接続された状態で、前記ブロードキャスト又はマルチキャストパケットを送信してもよい。
【0027】
上記によれば、スレーブとして第2の機器と接続された第1の機器は、ブロードキャストによって他の機器にアプリケーションデータを送信することができる。
【0028】
第2の構成において、前記無線システムは、第2の機器を含み、前記第1の機器と前記第2の機器とは接続を確立して無線通信を行い、前記第1の機器は、前記第2の機器と接続している状態で、前記送信処理及び/又は前記受信処理を実行してもよい。また、前記第2の機器をマスターとし、前記第1の機器をスレーブとして、当該第1の機器と第2の機器との間で接続が確立され、前記第1の機器は、スレーブとして前記第2の機器と接続された状態で、前記送信処理及び/又は前記受信処理を実行してもよい。
【0029】
第1及び第2の構成において、前記第1の機器と前記第2の機器とは、接続を確立した後、同期通信を繰り返し行ってもよい。前記第1の機器の前記送信手段は、前記第2の機器との間の同期通信が行われるタイミングを除く期間において、前記複数のブロードキャスト又はマルチキャストパケットを送信してもよい。
【0030】
上記によれば、第1の機器は、第2の機器との同期通信を行うとともに、他の機器にデータを送信することができる。
【0031】
第1及び第2の構成において、前記無線システムは、第3の機器と第4の機器とを含んでもよい。前記第3の機器と前記第4の機器とは接続を確立し、当該接続を確立した後、同期通信を繰り返し行ってもよい。前記第4の機器は、前記第3の機器との間の同期通信が行われるタイミングを除く期間において、前記第1の機器の送信手段によって送信された複数のブロードキャスト又はマルチキャストパケットを受信してもよい。
【0032】
上記によれば、第1の機器は、第3の機器と接続された第4の機器と通信することができる。
【0033】
第1及び第2の構成において、前記無線システムは、前記第1の機器と前記第2の機器との間の同期通信と、前記第3の機器と前記第4の機器との間の同期通信と、のうちの少なくとも何れか一方の同期通信のタイミングを調整する調整手段をさらに備えてもよい。
【0034】
上記によれば、第1の機器と第2の機器との間の同期通信のタイミングと、第3の機器と第4の機器との間の同期通信のタイミングとを調整することができ、通信の効率を向上させることができる。
【0035】
第1及び第2の構成において、前記第1の機器が前記調整手段を備えてもよい。
【0036】
上記によれば、第1の機器が上記同期通信のタイミングを調整することができる。
【0037】
第1及び第2の構成において、前記調整手段は、前記第1の機器と前記第2の機器との間の同期通信のタイミングと、前記第3の機器と前記第4の機器との間の同期通信のタイミングと、が近くなるように調整してもよい。
【0038】
上記によれば、第1の機器と第2の機器との間の同期通信のタイミングと、第3の機器と第4の機器との間の同期通信のタイミングとを合わせることができ、例えば、第1の機器と第4の機器との間の通信を効率的に行うことができる。
【0039】
第1及び第2の構成において、前記第1の機器の送信手段は、前記第2の機器からの指示なしで前記複数のブロードキャスト又はマルチキャストパケットを送信してもよい。
【0040】
上記によれば、第1の機器は、第2の機器からの指示なしで、他の機器と通信することができる。
【0041】
第1及び第2の構成において、前記第2の機器は、前記第1の機器との接続が確立された後、データの送信処理及び/又は受信処理を所定の時間間隔で繰り返し行ってもよい。
【0042】
上記によれば、第1の機器は、第2の機器と所定の時間間隔で通信を行うことができる。
【0043】
第1及び第2の構成において、前記第1の機器は、所定期間に前記第1の機器において行われる複数回の前記送信処理及び/又は受信処理のうちの1回の処理に合わせて、前記第2の機器と通信を行ってもよい。
【0044】
上記によれば、第1の機器は、所定期間において1回だけ第2の機器と通信するため、消費電力を抑えることができる。
【0045】
第1の構成において、前記第1の機器は、前記送信手段による送信処理とは異なるタイミングでブロードキャスト又はマルチキャストパケットを無線で受信する受信手段、を有し、前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し行ってもよい。前記送信手段は、次以降に自機で行われる前記送信処理及び/又は前記受信処理のタイミングを示すタイミング情報を、前記ブロードキャスト又はマルチキャストパケットに含めて送信してもよい。
【0046】
上記によれば、第1の機器は、自機が次以降に行う送信処理及び/又は受信処理のタイミングを他の機器に知らせることができる。
【0047】
第2の構成において、前記第1の機器の前記送信手段は、次以降に行われる前記送信処理又は前記受信処理のタイミングを示すタイミング情報を、前記ブロードキャスト又はマルチキャストパケットに含めて送信してもよい。
【0048】
上記によれば、第1の機器は、自機が次以降に行う送信処理及び/又は受信処理のタイミングを他の機器に知らせることができる。
【0049】
第1及び第2の構成において、前記無線システムは、第3の機器を含んでもよい。前記第3の機器は、ブロードキャスト又はマルチキャストパケットを無線で送信する送信処理と、ブロードキャスト又はマルチキャストパケットを無線で受信する受信処理とを繰り返し行い、前記第1の機器からの前記タイミング情報に基づいて、前記送信処理及び/又は前記受信処理を行うタイミングを調整してもよい。
【0050】
上記によれば、第3の機器は、第1の機器からのタイミング情報に基づいて、前記送信処理及び/又は前記受信処理を行うタイミングを調整することができる。
【0051】
第1及び第2の構成において、前記アプリケーションデータは、アプリケーションで利用可能なコンテンツを特定するためのデータであってもよい。
【0052】
上記によれば、第1の機器はコンテンツを特定するためのデータを送信することができる。
【0053】
第1及び第2の構成において、前記アプリケーションデータは、ゲームで利用可能なデータであってもよい。
【0054】
上記によれば、第1の機器はゲームで利用可能なデータを送信することができる。
【0055】
第1及び第2の構成において、前記無線システムは、第3の機器を含んでもよい。前記第3の機器は、受信手段と、データ再構築手段と、処理手段とを有する。受信手段は、前記第1の機器の送信手段によって送信された複数のブロードキャスト又はマルチキャストパケットを受信する。データ再構築手段は、前記第1情報に基づいて、前記受信手段によって受信された複数のブロードキャスト又はマルチキャストパケットに基づいて、複数の前記分割されたデータを取得し、当該複数の分割されたデータを用いて、前記アプリケーションデータを再構築する。処理手段は、前記データ再構築手段によって再構築されたアプリケーションデータに基づいてアプリケーション処理を行う。
【0056】
上記によれば、第3の機器は、第1の機器から複数のブロードキャスト又はマルチキャストパケットを受信することで、アプリケーションデータを再構築し、当該アプリケーションデータを用いて所定の処理を行うことができる。
【0057】
第1及び第2の構成において、前記機器は、電波の周波数を切り替えながら前記無線通信を行ってもよい。
【0058】
第1及び第2の構成において、前記機器は、複数の異なる所定の周波数を切り替えながら前記無線通信を行ってもよい。
【0059】
第1及び第2の構成において、前記送信手段は、3つのチャネルを切り替えながら前記ブロードキャスト又はマルチキャストパケットを送信してもよい。
【0060】
第1及び第2の構成において、前記無線通信の規格は、Bluetooth Low Energyであってもよい。
【0061】
第1及び第2の構成において、前記無線機器が行う無線通信の周波数帯は2.4GHz帯であってもよい。
【0062】
他の構成は、Bluetooth Low Energy(BLE)規格に基づく無線通信を行うことが可能な複数の機器を含む無線システムであってもよい。前記複数の機器のうちの第1の機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、アドバタイジングパケットを無線で送信する送信手段とを有してもよい。前記送信手段は、前記アプリケーションデータを分割して複数のアドバタイジングパケットに分けて送信するとともに、当該アドバタイジングパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第2情報を前記アドバタイジングパケットに含めて送信し、かつ、他の機器との接続のためのパケットか否かを示す第2情報を前記アドバタイジングパケットに含めて送信してもよい。
【0063】
第1及び第2の構成において、Bluetooth Low Energy(BLE)規格に基づく無線通信を行うことが可能な複数の機器を含む無線システムであってもよい。前記複数の機器のうちの第1の機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、アドバタイジングパケットを無線で送信する送信手段と、他の機器からのアドバタイジングパケットを無線で受信する受信手段と、前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段と、を有してもよい。前記送信手段は、前記アプリケーションデータを分割して複数のアドバタイジングパケットに分けて送信するとともに、当該アドバタイジングパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記アドバタイジングパケットに含めて送信してもよい。
【0064】
上記によれば、第1の機器は、アドバタイジングパケットを用いて比較的大きなサイズのアプリケーションデータをBLE規格に基づく通信において送信することができる。
【0065】
他の構成で、無線通信を行うことが可能な無線機器であってもよい。無線機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、他の機器との接続のために利用可能なブロードキャスト又はマルチキャストパケットを無線で送信する送信手段とを備えてもよい。前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第2情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信し、かつ、他の機器との接続のためのパケットか否かを示す第2情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信してもよい。
【0066】
他の構成は、無線通信を行うことが可能な無線機器であってもよい。無線機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、ブロードキャスト又はマルチキャストパケットを無線で送信する送信手段と、他の機器からのブロードキャスト又はマルチキャストパケットを無線で受信する受信手段と、前記送信手段による送信処理と前記受信手段による受信処理とを繰り返し実行する制御手段と、を備えてもよい。前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信してもよい。
【0067】
他の構成は、無線通信を行うことが可能な複数の機器を含む無線システムであって、前記複数の機器のうちの第1の機器は、アプリケーションのための1のアプリケーションデータを取得する取得手段と、他の機器に向けたブロードキャスト又はマルチキャストパケットを無線で送信する送信手段とを有してもよい。前記送信手段は、前記アプリケーションデータを分割して複数のブロードキャスト又はマルチキャストパケットに分けて送信するとともに、当該ブロードキャスト又はマルチキャストパケットに含まれる前記分割したデータが前記アプリケーションデータのどの部分かを示す第1情報を前記ブロードキャスト又はマルチキャストパケットに含めて送信する。
【0068】
他の構成は、上記無線機器のプロセッサにおいて実行されるプログラムであってもよい。また他の構成は、上記無線システム又は無線機器において実行される通信方法であってもよい。
【発明の効果】
【0069】
本発明によれば、ブロードキャストパケットを用いて様々な機器と通信を行うことができる。
【図面の簡単な説明】
【0070】
【
図2】BLE端末20の内部構成の一例を示すブロック図
【
図3】BLE規格で用いられるチャネルの一覧を示す図
【
図4】携帯端末10aとBLE端末20aとが接続されていない状態から接続された状態になるまでの通信の流れの一例を示す図
【
図5】接続状態における携帯端末10aとBLE端末20aとの通信の一例を示す図
【
図6】携帯端末10aとBLE端末20aとの間の接続が確立された後の接続状態における通信の一例を示す図
【
図7】本実施形態におけるBLEネットワークの接続形態の一例を示す図
【
図8】BLE端末20aとBLE端末20bとが接続されていない状態で通信する場合の一例を示す図
【
図9】BLE端末20において実行されるスキャンとアドバタイジングの実行期間が変化する様子を示す図
【
図10】スキャン及び/又はアドバタイジングの実行タイミングを示す情報をBLE端末20が送信することにより、スキャン及び/又はアドバタイジングの実行タイミングを調整する方法について説明するための図
【
図11】携帯端末10(セントラル)とBLE端末20(ペリフェラル)との間の接続の調整が行われる様子を示す図
【
図12】
図11の後の状態を示す図であり、携帯端末10(セントラル)とBLE端末20(ペリフェラル)との間の接続の調整が行われた後の各機器間の通信の一例を示す図
【
図13】携帯端末10とBLE端末20とが接続された状態において、BLE端末20同士が接続を確立する様子の一例を示す図
【
図14】
図13の後の状態を示す図であり、BLE端末20aとBLE端末20bとが接続された状態における通信の一例を示す図
【
図15】BLE端末20aとBLE端末20bとの間の通信を制限する方法の具体例を示す図
【
図16】BLE端末20aとBLE端末20bとが接続される場合において携帯端末10とBLE端末20との間の接続が調整された場合の通信の一例を示す図
【
図17】携帯端末10において行われる処理の一例を示すフローチャート
【
図19】BLE端末20aにおいて行われる処理の一例を示すフローチャート
【
図20】ステップS205の接続中処理の詳細フローチャート
【
図21】ステップS218のBLE端末間通信処理の詳細フローチャート
【
図22】ステップS239のBLE端末間接続中処理の詳細フローチャートであり、セントラル(マスター)として動作するBLE端末20aにおいて行われる処理を示す図
【
図23】ステップS239のBLE端末間接続中処理の詳細フローチャートであり、ペリフェラル(スレーブ)として動作するBLE端末20bにおいて行われる処理を示す図
【発明を実施するための形態】
【0071】
以下、図面を参照して、一実施形態に係る無線通信システムについて説明する。本実施形態の無線通信システムは、無線通信が可能な複数の機器を含むシステムであり、各機器は、例えば、Bluetooth Low Energy(Bluetooth 4.x。以下、「BLE」と略する)規格に基づく通信を行うものとする。まず、BLE規格の概要について説明する。
【0072】
(BLEの概要)
BLE規格は、クラシックBluetooth(登録商標)(Ver.1.x-3.x)よりも消費電力が低くなるように設計された通信規格である。BLEではクラシックBluetoothよりも最大送信電力が抑えられたり、無線通信の動作時間や動作回数を減らすことにより、消費電力が抑えられる。BLEでは、クラシックBluetoothと比較して、通信の時間間隔は長く、この時間間隔は変更可能である。また、BLEでは、クラシックBluetoothと同様に、1のマスターに対して複数のスレーブが接続可能なスター型のネットワークトポロジーが採用されている。
【0073】
図1は、一般的なBLEネットワークの一例を示す図である。
図1に示すように、通信可能な範囲には携帯端末10aと、BLE端末20とが存在し、これらの機器によってネットワークが形成される。BLEでは、通信可能な範囲は、例えば数m~数十mである。
【0074】
携帯端末10aは、例えば、携帯電話、スマートフォン、タブレット端末等の所定のアプリケーションを実行可能な携帯型の情報処理装置である。携帯端末10aは、例えば、CPU(又は/及び他のプロセッサ)と、RAMと、記憶装置(不揮発性メモリやハードディスク等)と、表示装置(液晶表示装置や有機EL表示装置等)と、入力部(ボタンやタッチパネル等)と、BLE規格に基づく通信を行うためのBLE通信モジュールと、バッテリーとを備える。携帯端末10aのCPUは、記憶装置に記憶された(又はネットワーク経由で取得した)様々なアプリケーションプログラムを実行することが可能である。例えば、携帯端末10aは、所定のアプリケーションとして、動画や静止画を再生可能なアプリケーション、メッセージアプリケーション、ブラウザアプリケーション、ゲームアプリケーション、BLE端末20から取得したデータを処理するアプリケーション等、様々なアプリケーションプログラムを実行可能である。携帯端末10aは、BLE端末20と比較して高度な情報処理を行うことが可能であり、そのため消費電力もBLE端末20と比較して高い。
【0075】
BLE端末20は、例えば、携帯型の機器であり、典型的には携帯端末10aよりも小さな機器である。BLE端末20は、典型的には携帯端末10よりも限定された機能しか有しておらず、比較的単純な処理を行う機器であってもよい。なお、BLE端末20は、携帯端末10aと同様の高度な情報処理を行う機器であってもよい。
【0076】
図2は、BLE端末20の内部構成の一例を示すブロック図である。
図2に示すように、BLE端末20は、例えば、制御回路21と、入力部22と、発光部23と、バイブレータ24と、BLE通信モジュール25とを備える。BLE端末20は、携帯型の比較的小さな機器であって消費電力が低い機器であり、例えばボタン電池によって比較的長期間(数ヶ月~数年)動作することが可能である。BLE端末20の各部は制御回路21上に実装されてもよい。例えば、BLE端末20は、入力部22に対して行われた入力に応じたデータをBLE通信モジュール25を用いて携帯端末10aに送信したり、携帯端末10aから送信されたデータをBLE通信モジュール25を用いて受信して、発光部23を発光させたり、バイブレータ24を振動させたりすることができる。なお、BLE端末20は、任意のアプリケーションプログラムを実行するためのCPU又は/及び他のプロセッサを備えてもよい。また、BLE端末20は、ディスプレイ、タッチパネル、スピーカ、マイク、カメラ等を備えてもよい。例えば、BLE端末20は、映像や音声に係るデータをBLE通信モジュール25を介して携帯端末10aとやり取りしてもよい。
【0077】
図1に示すように、携帯端末10aは、BLEネットワークにおけるセントラル(「マスター」とも言う)として機能し、BLE端末20は、ペリフェラル(「スレーブ」とも言う)として機能する。携帯端末10aは、複数のBLE端末20(20a、・・、20x)と接続を確立することが可能であり、各接続においてセントラルとなる。セントラルは、ペリフェラルのネットワークへの参加を管理したり、ペリフェラルとの接続のおける各種パラメータを設定したりする。
【0078】
ここで、BLE規格では、2.4GHz帯の電波が用いられる。具体的には、40のチャネルを用いて通信が行われる。
図3は、BLE規格で用いられるチャネルの一覧を示す図である。
図3に示すように、40のチャネルのうち、3つのチャネル37~39はアドバタイジングチャネルであり、その他のチャネル0~36は、データチャネルである。アドバタイジングチャネルは、機器の発見や接続のために用いられたり、又は、自機の存在を他の機器に知らせるために用いたり、後述するように他の機器と接続を確立せずにデータをやり取りするために用いられるチャネルである。データチャネルは、接続状態(接続された状態)において用いられるチャネルであり、接続状態にある2つの機器間でデータの送受信を行うために用いられる。なお、クラシックBluetoothでは、79のチャネルを有し、そのうち32チャネルが発見用のチャネルである。
【0079】
図4は、携帯端末10aとBLE端末20aとが接続されていない状態から接続された状態になるまでの通信の流れの一例を示す図である。
【0080】
各機器は接続されていない状態(非接続状態)から接続状態になるまでに、その状態を変化させる。具体的には、
図4に示すように、携帯端末10aは、所定の時間間隔でスキャンを繰り返す。スキャンを行っている状態をスキャニング状態といい、その状態の機器をスキャナという。具体的には、携帯端末10aは、スキャンと休止状態とを繰り返し、スキャンの実行中は、受信回路を作動させて他の機器からのアドバタイジングパケット(アドバタイジングPDU(プロトコル・データ・ユニット))の受信を試みる。
【0081】
一方、BLE端末20aは、所定の時間間隔(アドバタイジングインターバル)でアドバタイジングを繰り返す。アドバタイジングを行っている状態をアドバタイジング状態といい、その状態の機器をアドバタイザという。具体的には、BLE端末20aは、1回のアドバタイジング(アドバタイジングイベント)において、3つのチャネル37~39を切り替えながらアドバタイジングパケットを送信する。このように、電波の周波数を切り替えながらアドバタイジングパケットが送信される。電波の周波数が切り替えられることを「ホッピング」という。
【0082】
図4に示すように、携帯端末10aのスキャンのタイミングとBLE端末20aのアドバタイジングのタイミングとが一致すると、携帯端末10aは、BLE端末20aからのアドバタイジングパケットを受信する。携帯端末10aは、BLE端末20aからのアドバタイジングパケットを受信すると、BLE端末20aに対してスキャン要求を送信する。このスキャン要求に対してBLE端末20aがスキャン応答を返す。スキャン要求およびスキャン応答もまた、アドバタイジングチャネルを用いて送信される。スキャンの方式には「アクティブスキャン」と、「パッシブスキャン」とがあり、
図4では、「アクティブスキャン」の例が示されている。「パッシブスキャン」では、
図4に示す「スキャン要求」と「スキャン応答」は行われない。すなわち、パッシブスキャンでは、携帯端末10aは、BLE端末20aからのアドバタイジングパケットを受信すると、スキャン要求を送信せずに、コネクション要求をBLE端末20aに送信する。
【0083】
携帯端末10aは、アドバタイジングパケットを送信した機器と接続を行う場合、イニシエーティング状態(イニシエータ)となる。携帯端末10a(イニシエータ)は、アドバタイジングパケットを送信したBLE端末20aに対して、コネクション要求を送信する。イニシエータからコネクション要求が送信されると、接続が確立されて、2つの機器は接続状態となる。具体的には、携帯端末10aをマスター(セントラル)、BLE端末20aをスレーブ(ペリフェラル)とする2つの機器が接続状態となる。
【0084】
なお、イニシエータからのコネクション要求には、接続のための複数のパラメータが含まれる。具体的には、コネクション要求には、イニシエータのアドレス、アドバタイザのアドレス、アクセスアドレス、コネクションインターバル、スレーブレイテンシー、以降のホッピングに係る情報(ホップ数や使用するチャネルに係る情報)、接続監視タイムアウト(connection supervision timeout)等が含まれる。アクセスアドレスはランダムに決定されるものであり、接続を識別するためのものである。各機器は、接続相手にパケットを送信する場合、このアクセスアドレスをパケットに含めて送信する。各機器は、アクセスアドレスに基づいて、接続相手からのパケットかどうかを判断することができる。また、コネクションインターバル、スレーブレイテンシー、接続監視タイムアウトについては後述する。また、コネクション要求の後に、接続における暗号鍵を交換するためのペアリングやボンディングが行われてもよい。ペアリングでは、この接続において用いられる一時的な暗号鍵が生成・交換される。ボンディングでは、ペアリングの後に、永続的な暗号鍵の生成・交換が行われる。永続的な暗号鍵は各機器において不揮発性メモリ等に記憶される。
【0085】
アドバタイジングパケットは、通常、ブロードキャストで送信される。すなわち、不特定の機器が受信可能である。なお、「ブロードキャスト」には、限定された不特定の機器が処理可能なデータ送信も含まれる。ここで、「限定された不特定の機器」とは、機器を唯一に特定しないが(機器に割り当てられた固有のアドレスを特定しないが)、共通の属性を持った機器又は共通の状態にある機器である。「共通の属性を持った機器」とは、例えば、機種が同じ又はベンダーが同じ等、所定の属性を持った機器群を指す。こうした所定の属性を持つ機器へアドバタイジングパケットを送信するために、例えば、送信側の機器は、ベンダーや端末の機種を示す情報(ベンダーIDや機種番号等。以下、「属性情報」と言う。)をアドバタイジングパケットに含めて(又は付加して)送信する。受信側の機器では、当該受信側の機器が持つ属性情報と一致する場合には、当該アドバタイジングパケットを処理する。このようにして、送信側は限定された不特定の機器に対してデータを送信することができる。一方、「共通の状態にある機器」とは、例えば、現在の設定が同じ等、ある時点で所定の状態にある機器群を指す。例えば、送信されるアドバタイジングパケットに、限定された不特定の機器のみが処理可能であることを示すフラグが立てられる。受信側では、この限定された不特定の機器向けのアドバタイジングパケットを処理するかどうかの設定がなされている。不特定の機器向けのアドバタイジングパケットを処理する設定がなされた機器は、アドバタイジングパケットを受信すると、上記フラグが立っているかどうかを判断し、フラグが立っている場合には、当該アドバタイジングパケットを処理する。一方、不特定の機器向けのアドバタイジングパケットを処理する設定がなされていない機器は、アドバタイジングパケットを受信すると、上記フラグが立っているかどうかを判断し、フラグが立っている場合には、当該パケットを破棄する又は処理しない。このようにして、送信側は限定された不特定の機器に対してデータを送信することができる。このような「限定された不特定の機器」に対する送信も、限定されない不特定の機器に対する送信も含めて、ここでは「ブロードキャスト」ということにする。なお、アドバタイジングパケットは、いわゆる「マルチキャスト」によって送信されてもよい。
【0086】
また、アドバタイジングパケットには、複数のタイプがある。具体的には、アドバタイジングパケットのタイプとして、「ADV_IND」と、「ADV_DIRECT_IND」と、「ADV_NONCONN_IND」と、「ADV_SCAN_IND」とがある。「ADV_IND」と「ADV_DIRECT_IND」とは、接続可能であることを示すアドバタイジングパケットである。「ADV_IND」は、通常のアドバタイジングに用いられ、不特定の機器が接続可能であることを示すアドバタイジングパケットである。また、「ADV_DIRECT_IND」は、特定の機器が接続可能であることを示すアドバタイジングパケットであり、以前に接続したことのある機器と高速で接続するために用いられる。携帯端末10aは、「ADV_IND」又は「ADV_DIRECT_IND」のアドバタイジングパケットを受信した場合、当該パケットを送信したBLE端末20aに対して上記コネクション要求を送信する。
【0087】
また、「ADV_NONCONN_IND」及び「ADV_SCAN_IND」は、接続不可であることを示すアドバタイジングパケットである。「ADV_NONCONN_IND」及び「ADV_SCAN_IND」は、不特定の機器に対して情報(例えば、アプリケーションで用いられるデータや位置情報などのデータ)を送信するために用いられる。
【0088】
なお、一般的にはアドバタイジングよりもスキャンの方が消費電力が高くなる。これは、スキャンの実行中は、どのタイミングでもアドバタイジングパケットを受信できる状態にしておく(受信回路を作動させておく)必要があるからである。これに対して、アドバタイジングでは、1回のアドバタイジングイベントにおいて複数のアドバタイジングパケットが送信されるが、1のアドバタイジングパケットは極めて短い時間に送信されため、1回のアドバタイジングイベント中でも、アドバタイジングパケットを送信していない時間がある。アドバタイザは、アドバタイジングパケットを送信するときには送信回路を作動させるとともに電波を出力する必要があるため瞬間的に消費電力が高くなるものの、アドバタイジングパケットを送信するとき以外は、送信回路を作動させる必要もなければ電波も出力しないため、電力の消費は抑えられる。このため、ある一定の期間における消費電力は、スキャンの方がアドバタイジングよりも高くなる。
【0089】
図5は、接続状態における携帯端末10aとBLE端末20aとの通信の一例を示す図である。
図5に示すように、2つの機器が接続状態である場合、2つの機器との間でコネクションイベントと呼ばれる同期した通信(同期通信)が所定の時間間隔で行われる。コネクションイベントの間隔を「コネクションインターバル」という。コネクションインターバルは、接続が確立される際にマスターによって設定される。携帯端末10aとBLE端末20aとの接続におけるコネクションインターバルはCIa(例えば500m秒)である。コネクションインターバルは、7.5m秒~4秒の範囲で設定されてもよい。
【0090】
1回のコネクションイベントでは、1のデータチャネル(例えば、チャネル1)を用いて携帯端末10aとBLE端末20aとの間でデータの送受信が行われる。最初のコネクションイベントの発生からCIaが経過すると、チャネルが切り替えられて次のコネクションイベントが行われる。
図5に示す例では、最初のコネクションイベントではチャネル1が用いられ、2回目のコネクションイベントではチャネル3が用いられている。このホップするチャネルの数を「ホップ数」といい、
図5に示す例では、ホップ数は「2」である。このホップ数は、携帯端末10aとBLE端末20aとの間の接続が確立される際に設定される。
【0091】
コネクションイベントは、接続を確立した端末毎に行われる。例えば、携帯端末10aが、BLE端末20cとも接続された状態の場合、携帯端末10aとBLE端末20cとの間でも、コネクションイベントが所定の時間間隔で発生する。
図5に示す例では、携帯端末10aとBLE端末20cとの間の接続におけるコネクションインターバルはCIcである。携帯端末10aが複数のBLE端末20と接続される場合、各接続のコネクションイベントが時間的に重ならないように、携帯端末10aは、最初のコネクションイベントのタイミングを決定する。
【0092】
図6は、携帯端末10aとBLE端末20aとの間の接続が確立された後の接続状態における通信の一例を示す図である。
【0093】
図6に示すように、携帯端末10aとBLE端末20aとが接続された状態では、2つの機器は各コネクションイベントにおいて通信を行い、コネクションイベント以外の期間は通信を行わない。各機器は、例えば、コネクションイベント以外の期間においては、(他の機器と通信を行わなければ)受信回路および送信回路を作動させず、コネクションイベントのタイミングにおいて受信回路および送信回路を作動させて通信を行う。
【0094】
具体的には、前回のコネクションイベントのタイミングからコネクションインターバル(CIa)が経過した場合は、携帯端末10aはBLE端末20aに対してパケットを送信し、BLE端末20aは当該パケットに対する応答を携帯端末10aに送信する。ここで、各機器には時刻の計測誤差があるため、BLE端末20aは、この誤差を考慮して、コネクションイベントのタイミングを含む所定期間で携帯端末10aからのパケットの受信を試みる。具体的には、BLE端末20aは、前回のコネクションイベントのタイミング(実際にパケットを受信したタイミング)からCIaが経過する前のタイミングで受信回路を作動させ、携帯端末10aからのパケットを受信可能にする。また、BLE端末20aは、前回のコネクションイベントのタイミングからCIaが経過した後のタイミングにおいても携帯端末10aからのパケットを受信可能な状態にしておく。すなわち、BLE端末20aは、上記誤差を考慮して、前回のコネクションイベントのタイミングから理論上のCIaが経過した時点の前後の期間においてパケットを受信可能な状態にする。接続が確立される際に、携帯端末10a(マスター)の時刻の精度情報が携帯端末10aからBLE端末20aに送信される。BLE端末20aは、受信した携帯端末10aの精度情報と自機の時刻の精度情報とに基づいて、受信回路を作動させるタイミングを計算する。
【0095】
コネクションイベントにおいては、アプリケーションで用いられるデータ(アプリケーションデータ)の送受信が行われる。例えば、アプリケーションデータは、ゲームキャラクタやアイテムのデータ、それらのID、文字、記号、アプリケーションで再生されるコンテンツ(動画、静止画、音声)を示すデータ(コンテンツ自体やそのID)、各種センサからのデータ等であってもよい。アプリケーションデータは、1のパケットで送信されてもよいし、複数のパケットに分けて送信されてもよい。例えば、コンテンツのIDを受信した機器(携帯端末10a又はBLE端末20a)においては、その受信したIDをアプリケーションが解釈し、当該IDに対応するコンテンツ(動画、静止画、音声等)を再生する。IDに対応するコンテンツのデータは、IDを受信した機器が有する記憶装置に記憶されてもよいし、機器の外部に記憶されてもよい。例えば、IDを受信した機器(携帯端末10a又はBLE端末20a)が、携帯端末10a及びBLE端末20aとは異なるサーバ機器に対してIDを送信し、当該IDに対応するコンテンツのデータを当該サーバ機器からダウンロードしてもよい。そして、ダウンロードされたコンテンツのデータに基づいて、コンテンツが再生されてもよい。
【0096】
例えば、携帯端末10aは、BLE端末20aからアプリケーションデータを取得する場合、コネクションイベントにおいてBLE端末20aに対してデータの取得要求をデータパケット(データPDU)に含めて送信する。BLE端末20aは、この取得要求に応じたデータを応答パケットに含めて送信する。1のパケットにアプリケーションデータが収まらない場合は、BLE端末20aは、アプリケーションデータを分割し、複数の応答パケットに、分割したアプリケーションデータのそれぞれを含めて送信する。この応答パケットには、分割したアプリケーションデータと、シーケンス番号が含まれる。携帯端末10aは、分割されたアプリケーションデータをシーケンス番号順に並べることで、アプリケーションデータを再構築する。このように、複数回のコネクションイベントが行われることで、1のパケットに収まらないサイズのアプリケーションデータが、BLE端末20aから携帯端末10aに(または、携帯端末10aからBLE端末20aに)送信される。
【0097】
ここで、携帯端末10aとBLE端末20aとの間の接続には、スレーブレイテンシーが設定される。スレーブレイテンシーは、BLE端末20a(ペリフェラル)が無視(スキップ)することができるコネクションイベントの回数である。通常、各コネクションイベントにおいて携帯端末10a(セントラル)はBLE端末20aに対してパケットを送信し、BLE端末20aは当該パケットを受信したことに応じて応答パケットを返す。これにより、アプリケーションデータがやり取りされる。しかしながら、BLE端末20aは、送信すべきデータが無い場合、応答を返さなくてもよい。
【0098】
図6に示す例では、スレーブレイテンシーSLaは「4」に設定されている。
図6に示すように、時点t0におけるコネクションイベントにおいて、携帯端末10aからBLE端末20aにパケットが送信され、当該パケットに応じてBLE端末20aから携帯端末10aに応答パケットが送信される。CIaが経過した時点t1におけるコネクションイベントでは、携帯端末10aはBLE端末20aにパケットを送信するものの、BLE端末20aは、応答パケットを携帯端末10aに送信しなくてもよい。さらに次の時点t2、t3、t4においても、BLE端末20aは、応答パケットを携帯端末10aに送信しなくてもよい。一方、時点t4からCIaが経過した時点t5におけるコネクションイベントでは、BLE端末20aは応答パケットを携帯端末10aに送信する。さらに、その後の時点t6~t9におけるコネクションイベントでは、BLE端末20aは応答パケットを携帯端末10aに送信しなくてもよいが、時点t10におけるコネクションイベントでは、BLE端末20aは応答パケットを携帯端末10aに送信する。なお、BLE端末20aは、時点t1~t4、t6~t9におけるコネクションイベントにおいて、応答パケットを携帯端末10aに送信してもよい。すなわち、スレーブレイテンシーは、スレーブとしてのBLE端末20aがコネクションイベントを連続的に無視することができる最大回数である。このように、携帯端末10aは、所定の許容期間(スレーブレイテンシーが示すコネクションイベントの回数)にBLE端末20aからのパケットを受信しない場合がある。なお、この許容期間は、上述のようにコネクションイベントの回数によって表されてもよく、時間によって表されてもよい。
【0099】
スレーブレイテンシーは、BLE端末20a(ペリフェラル)に対して与えられた、携帯端末10a(セントラル)に対する応答を無視することができる権利と捉えることができる。BLE端末20aは、自機の判断で、各コネクションイベントにおいて携帯端末10aに対して応答を送信するかどうかを決定することができる。例えば、BLE端末20aは、他の処理や他の機器との通信を行う必要がある場合には、携帯端末10aへの応答を省略することができる。BLE端末20aは、スレーブレイテンシーの範囲内で携帯端末10aに対して応答を返す。
【0100】
携帯端末10aとBLE端末20aとの間で所定期間通信が行われなかった場合、2つの機器の間の接続は解除(切断)される(2つの機器が接続状態から非接続状態に遷移する)。2つの機器の間の接続が解除されるか否かは、接続監視タイムアウトに基づいて判断される。具体的には、前回の通信からの経過時間が接続監視タイムアウトを超えた(又は達した)場合、携帯端末10aとBLE端末20aとの接続は解除される。ここで、接続監視タイムアウトは、スレーブレイテンシーSLよりも大きな値に設定される。このため、例えば
図6において、携帯端末10aが5回目のコネクションイベント(t5)においてBLE端末20aからの応答パケットを受信しなかった場合でも、携帯端末10aおよびBLE端末20aはすぐに非接続状態に遷移しない。これは、例えば、スレーブレイテンシーが「4」に設定されている場合に、BLE端末20aが4回のコネクションイベント(t1~t4におけるコネクションイベント)を無視して、5回目のコネクションイベント(t5)において携帯端末10aに応答パケットを送信した場合でも、通信の状況により、その応答パケットを携帯端末10aが受信できないことも想定されるからである。仮に、5回目のコネクションイベントにおいてBLE端末20aが送信した応答パケットを携帯端末10aが受信できなかった場合に携帯端末10aとBLE端末20aとの接続が解除されると、頻繁に接続が解除されてしまう。このようなことを防止するために、接続監視タイムアウトは、スレーブレイテンシーSLよりも大きな値に設定され、通信が行われなかった期間が接続監視タイムアウトを超えた場合に、2つの機器は接続状態から非接続状態に遷移する(2つの機器の接続は解除される)。
【0101】
具体的には、携帯端末10aは、応答パケットを受信してからの経過時間を計測し、BLE端末20aから応答パケットを受信しない期間が接続監視タイムアウトを超えた場合(又は接続監視タイムアウトに達した場合)、接続状態から非接続状態に遷移する。また、BLE端末20aは、携帯端末10aからのデータパケットを受信しない期間が接続監視タイムアウトを超えた場合(又は接続監視タイムアウトに達した場合)、接続状態から非接続状態に遷移する(または、BLE端末20aは、携帯端末10に応答パケットを送信してからの経過時間を計測し、携帯端末10aに応答パケットを送信しない期間が接続監視タイムアウトを超えた場合、接続状態から非接続状態に遷移してもよい)。すなわち、携帯端末10a及びBLE端末20aは、接続先からのパケットを受信しない期間が接続監視タイムアウトを超えた(又は達した)場合、接続状態から非接続状態に遷移する。
【0102】
なお、前回の通信からの経過時間を計測し、コネクションイベントにおいて接続先からの通信を確認できない期間が接続監視タイムアウトを超えた(又は達した)場合、携帯端末10a又はBLE端末20aは接続状態から非接続状態に遷移せず、接続の中断があったと判断してもよい。例えば、接続の中断があったと判断した場合、携帯端末10a及び/又はBLE端末20aは、接続の中断状態に遷移してもよい。例えば、BLE端末20aは、接続の中断があったと判断した場合、携帯端末10aからのパケットの受信を試みるものの、携帯端末10aへのパケットの送信は行なわない状態に遷移してもよい。この場合において、このパケットの受信を試みるタイミングは、例えば、接続状態におけるコネクションインターバルよりも長い又は短い間隔であってもよし、ランダムであってもよい。あるいは、BLE端末20aは、接続の中断があったと判断した場合、携帯端末10aからのパケットの受信を試みずに、携帯端末10aに対してパケットを定期的に又はランダムに送信する状態に遷移してもよい。また、携帯端末10aは、接続の中断があったと判断した場合、例えば、接続状態において設定されていたコネクションインターバルと異なる間隔(例えばコネクションインターバルより長い間隔)でBLE端末20aにパケットを送信してもよいし、ランダムに決定したタイミングでBLE端末20aにパケットを送信してもよい。あるいは、携帯端末10aは、接続の中断があったと判断した場合、BLE端末20aにパケットを送信せず、BLE端末20aからのパケットの受信を試みてもよい。そして、中断状態に遷移した2つの機器は、(接続監視タイムアウトを超えた又は達した場合であっても)相手からのパケットを受信したことに基づいて再び接続状態に戻ってもよい。
【0103】
接続監視タイムアウトは、「(SL+1)×コネクションインターバル」の2倍以上に設定される。例えば、コネクションインターバルが500m秒、スレーブレイテンシーが4に設定される場合、接続監視タイムアウトとして、500m秒×(4+1)×2=5秒が設定されてもよい。なお、接続監視タイムアウトは、時間によって定められてもよいし、コネクションイベントの回数によって定められてもよい。例えば、コネクションインターバルが500m秒、スレーブレイテンシーが4に設定される場合、接続監視タイムアウトとして「(4+1)×2=10」が設定されてもよく、この場合は時間に換算すると「5秒」となる。この場合、例えば、
図6において、5回目のコネクションイベント(t5)において、携帯端末10aがBLE端末20aから応答パケットを受信しなかった場合でも、t6~t10におけるコネクションイベントは実行される(この期間、2つの機器の接続は維持される)。時点t10におけるコネクションイベントにおいて、携帯端末10aがBLE端末20aから応答パケットを受信した場合は、2つの機器の接続は維持される。一方、5回目のコネクションイベント(t5)において携帯端末10aがBLE端末20aから応答パケットを受信しなかった場合において、時点t10におけるコネクションイベントにおいても携帯端末10aがBLE端末20aから応答パケットを受信しなかった場合(すなわち、t1以降の全てのコネクションイベントにおいて携帯端末10aが応答パケットを受信しなかった場合)は、2つの機器の接続は解除される。なお、接続監視タイムアウトは、例えば100m秒~32秒の範囲で定められてもよい。
【0104】
なお、スレーブレイテンシーSLの定義範囲は例えば0~499である。しかしながら、BLE規格は時刻同期型の通信であるため、2つの機器のクロックの累積誤差がある値を超える前に2つの機器は同期される必要がある。クロックの累積誤差を考慮した必要な通信間隔を実効接続インターバルという。実行接続インターバルは、「(SL+1)×コネクションインターバル」で表され、上記接続監視タイムアウトの半分以下に設定されなければならない。このため、スレーブレイテンシーの最大値は、接続監視タイムアウトの制限を受ける。
【0105】
なお、スレーブレイテンシーに基づいて、携帯端末10aとBLE端末20aとの接続を解除するか否かが判断されてもよい。例えば、携帯端末10aは、BLE端末20aからの応答パケットが無かった期間がスレーブレイテンシーを超えた場合(または当該期間がスレーブレイテンシーに達した場合)、BLE端末20aとの接続を解除してもよい。
【0106】
このように、BLE端末20は、携帯端末10に対して送信すべきデータが無い場合、スレーブレイテンシーの範囲内で携帯端末10に対して応答パケットを送信しなくてもよい。また、仮に携帯端末10がBLE端末20から応答パケットを受信しなかった期間がスレーブレイテンシーを超えた場合でも、当該応答パケットを受信しなかった期間が接続監視タイムアウトを超えていない場合は、携帯端末10はBLE端末20との接続を解除することは無い。しかしながら、仮に携帯端末10がBLE端末20から応答パケットを受信しなかった期間が接続監視タイムアウトを超えていない場合でも、当該期間がスレーブレイテンシーを超えた場合は、2つの機器間のクロック誤差が累積され、2つの機器間で同期が取れなくなる可能性がある。2つの機器間で同期が取れなくなると、携帯端末10とBLE端末20とは互いに通信をすることができず、接続は解除されてしまう。したがって、BLE端末20(スレーブ)は、連続してコネクションイベントを無視する回数(マスターに応答パケットを返さない回数)がスレーブレイテンシーSLを超えないように携帯端末10に対して応答パケットを送信する。これにより、携帯端末10とBLE端末20とは前回の通信から遅くともSL+1回目のコネクションイベントにおいて同期を取ることができ、携帯端末10とBLE端末20との間の接続が解除されるリスクを回避することができる。
【0107】
なお、コネクションイベントにおいては、コネクションインターバルの変更が行われたり、スレーブレイテンシーの変更が行われたり、接続監視タイムアウトの変更が行われたりする。コネクションインターバルの変更は、携帯端末10a(セントラル)によって行われる。スレーブレイテンシーの変更は、BLE端末20a(ペリフェラル)からの要求(当該要求は応答パケットに含められる)によって行われる。BLE端末20aが携帯端末10aに対してコネクションインターバルの変更要求を送信してもよく、携帯端末10aがスレーブレイテンシーを変更してもよい。また、携帯端末10a及びBLE端末20aの双方がコネクションインターバル、スレーブレイテンシーおよび接続監視タイムアウトの変更のための要求を行うことが可能であってもよい。この場合は、コネクションインターバルの変更については、携帯端末10a(セントラル)の要求が優先され、スレーブレイテンシーの変更については、BLE端末20a(ペリフェラル)の要求が優先されてもよい。一方で、コネクションインターバル、スレーブレイテンシーおよび接続監視タイムアウトのいずれの変更についても、マスターである機器(携帯端末10a)の要求がスレーブの機器(BLE端末20a)よりも優先されるようにしてもよい。
【0108】
図4~
図6を参照して説明したように、BLE端末20は、接続のためのアドバタイジングパケットを繰り返しブロードキャストするアドバタイジングを行う。一例として、BLE端末20は、アドバタイジングを行ったすぐ後に(携帯端末10からのコネクション要求等を受信するために)受信状態にしばらく留まる。携帯端末10は当該アドバタイジングパケットを受信すると、コネクション要求をBLE端末20に送信する。コネクション要求には、接続のための各種パラメータ(コネクションインターバルやスレーブレイテンシー等)が含まれる。携帯端末10がコネクション要求を送信すると、携帯端末10とBLE端末20との接続が確立され、2つの機器は接続状態になる。
【0109】
接続状態になると、コネクションイベントのタイミングにおいて、携帯端末10は送信回路を作動させて、BLE端末20に対してデータパケットを送信する。すなわち、携帯端末10aは、コネクションイベントのタイミングが到来すると、BLE端末20aに対してデータパケットを送信する。具体的には、携帯端末10aは、データパケットに接続確立時に決定されたアクセスアドレスを含めて送信する。BLE端末20は、携帯端末10と同期して、携帯端末10からのパケットを受信するために受信回路を作動させる。BLE端末20は、携帯端末10からのパケットを受信したことに応じて当該パケットに対する応答を携帯端末10に送信する。この応答パケットにも上記アクセスアドレスが含まれる。ここで、BLE端末20は、携帯端末10からのパケットをスレーブレイテンシーによって定められる回数だけ無視することができる。BLE端末20は、あるコネクションイベントにおける携帯端末10からのパケットを無視する場合は、そのコネクションイベントのタイミングにおいて受信回路を作動させなくてもよい。また、携帯端末10は、BLE端末20からの応答が無かった期間が、接続監視タイムアウトを超えない場合は、BLE端末20との接続を維持する。一方、携帯端末10は、BLE端末20からの応答が無かった期間が、接続監視タイムアウトを超えた(又は達した)場合は、BLE端末20との接続を解除して非接続状態になる。非接続状態になると、2つの機器の間ではコネクションイベントは発生しない。BLE端末20が、再び、アドバタイジングを行って、携帯端末10がコネクション要求を送信すると、再び接続状態に移行する。
【0110】
このように、2つの機器との間で接続が確立される際は、コネクション要求が行われて(接続のためのパラメータがやり取りされて)、2つの機器は接続状態になる。2つの機器が接続状態である場合には、2つの機器の間で所定の時間間隔で通信が行われる。2つの機器が接続状態であるときは、接続の確立の際にやり取りされた情報に基づいて、2つの機器は通信を行う。接続状態は、接続が解除されるまで(例えば、BLE端末20からの応答が無かった期間が接続監視タイムアウトを超えるまで)維持される。携帯端末10においてユーザやアプリケーションからの接続を解除する旨の指示が行われた場合に、2つの機器の間の接続が解除されてもよい。一方、「非接続状態」では、上記コネクションイベントは発生しない。なお、非接続状態であっても、アドバタイジングパケットを用いたブロードキャストを行うことにより、2つの機器の間で通信が行われる場合がある。
【0111】
(本実施形態のBLEネットワーク)
次に本実施形態におけるBLEネットワークの接続形態について説明する。
図7は、本実施形態におけるBLEネットワークの接続形態の一例を示す図である。
【0112】
図7に示すように、本実施形態の無線機器システム1は、BLE規格に基づく無線通信が可能な複数の機器を含み、携帯端末10aと、携帯端末10bと、BLE端末20aと、BLE端末20bとを含む。
図7では、携帯端末10aをセントラルとし、BLE端末20aをペリフェラルとして、携帯端末10aとBLE端末20aとが、接続された状態である(接続A)。また、携帯端末10bをセントラルとし、BLE端末20bをペリフェラルとして、携帯端末10bとBLE端末20bとが、接続された状態である(接続B)。
【0113】
本実施形態では、
図7に示すような状態において、BLE端末20aとBLE端末20bとが通信可能な範囲に存在する場合、BLE端末20aとBLE端末20bとが通信することができる。具体的には、BLE端末20aとBLE端末20bとは、2つの機器間で接続を確立し、接続状態において互いに通信することができる。また、BLE端末20aとBLE端末20bとは、非接続状態においても通信することができる。例えば、BLE端末20aは、マスターである携帯端末10aからの指示無しでBLE端末20bと通信することができる。また、携帯端末10aのアプリケーションレイヤからの要求や携帯端末10aに対するユーザ操作によって、携帯端末10aからBLE端末20aに対して指示が行われ、当該指示に応じて、BLE端末20aとBLE端末20bとの間の通信が行われてもよい。
【0114】
まず、BLE端末20aとBLE端末20bとが接続されない状態において通信する場合について説明する。
【0115】
図8は、BLE端末20aとBLE端末20bとが接続されていない状態で通信する場合の一例を示す図である。
【0116】
図8に示すように、携帯端末10aとBLE端末20aとは接続された状態であり、コネクションインターバルCIa毎にコネクションイベントが発生する。携帯端末10aとBLE端末20aとの接続AにおけるコネクションインターバルCIaは、例えば、500m秒であってもよい。また、携帯端末10aとBLE端末20aとの接続AにはスレーブレイテンシーSLaが設定されており、例えば、SLa=「4」であるとする。
【0117】
また、携帯端末10bとBLE端末20bとは接続された状態であり、コネクションインターバルCIb毎にコネクションイベントが発生する。携帯端末10bとBLE端末20bとの接続BにおけるコネクションインターバルCIbは、例えば、500m秒であってもよい。また、携帯端末10bとBLE端末20bとの接続BにはスレーブレイテンシーSLbが設定されており、例えば、SLb=「5」であるとする。
【0118】
このような状態において、BLE端末20aとBLE端末20bとは、アドバタイジングとスキャンを繰り返し実行する。ここでは、一例として、アドバタイジングのタイプは、上記「ADV_NONCONN_IND」である。すなわち、接続不可であることを示すアドバタイジングパケットが、BLE端末20aとBLE端末20bとの間で送信される。これにより、BLE端末20aからBLE端末20b、及び、BLE端末20bからBLE端末20aに対してデータが送信される。
【0119】
具体的には、BLE端末20aは、携帯端末10aとの接続Aが解除されるリスクを回避するために、スレーブレイテンシーSLa内で携帯端末10aと通信を行う一方で、携帯端末10aとの通信を行わない間は、スキャンとアドバタイジングを繰り返し実行してBLE端末20bとの通信を試みる。例えば、BLE端末20aは、携帯端末10aとの間の接続Aにおけるコネクションイベントにおいて携帯端末10aに対して応答を返した後、次の4回のコネクションイベントにおいては携帯端末10aに対して応答を返さない。この4回のコネクションイベントが行われる期間において、BLE端末20aは、スキャンとアドバタイジングを繰り返し実行してBLE端末20bとの通信を試みる。すなわち、BLE端末20aは、スレーブレイテンシーSLaを上限として複数のコネクションイベントを無視し、その無視したコネクションイベントの間に、BLE端末20bと通信するためにスキャンとアドバタイジングを繰り返し実行する。
図8に示すように、スキャンとアドバタイジングの間には、休止期間が設けられる。なお、間に休止期間を挟んでスキャンとアドバタイジングとが交互に行われてもよいし(
図8)、間に休止期間を挟まずにスキャンとアドバタイジングとが交互に行われてもよい(図示せず)。また、スキャンとアドバタイジングとは必ずしも交互に行われなくてもよい。
【0120】
同様に、BLE端末20bは、携帯端末10bとの接続Bが解除されるリスクを回避するために、携帯端末10bと通信を行う一方で、携帯端末10bとの通信を行わない間は、スキャンとアドバタイジングを繰り返し実行する。例えば、BLE端末20bは、携帯端末10bとの間の接続Bにおけるコネクションイベントにおいて携帯端末10bに対して応答を返した後、次の5回のコネクションイベントにおいては携帯端末10bに対して応答を返さずに、スキャンとアドバタイジングを繰り返し実行する。
【0121】
BLE端末20aと20bのスキャンとアドバタイジングのタイミングが一致した場合は、BLE端末間で通信が行われる。例えば、BLE端末20aがスキャンを実行している間に、BLE端末20bがアドバタイジングを実行すると、BLE端末20bからBLE端末20aにデータが送信される。逆に、BLE端末20bがスキャンを実行している間に、BLE端末20aがアドバタイジングを実行すると、BLE端末20aからBLE端末20bにデータが送信される。このようにして、BLE端末20同士は、他の機器(携帯端末10)のスレーブとして当該他の機器と接続されている状態においても、互いに通信を行うことができる。
【0122】
なお、以下では、携帯端末10を「親」と呼び、BLE端末20を「子」と呼ぶことがある。「親」はセントラル(マスター)と同じ意味であり、「子」はペリフェラル(スレーブ)と同じ意味である。また、携帯端末10とBLE端末20との間の接続を「親子間接続」と呼び、BLE端末20aとBLE端末20bとの間の通信を「子同士通信」と呼ぶことがある。
【0123】
ここで、各BLE端末20のスキャンとアドバタイジングのタイミングが一致しなければ、BLE端末20同士は通信することができない。例えば、BLE端末20aがスキャンを実行している間にBLE端末20bがアドバタイジングを行わなければ、BLE端末20aはBLE端末20bからのデータを受信することはできない。
【0124】
BLE端末20aとBLE端末20bとが一定の時間間隔でスキャンとアドバタイジングとを繰り返し実行し、かつ、スキャンとアドバタイジングの長さが固定の場合、BLE端末20aのスキャン(又はアドバタイジング)のタイミングとBLE端末20bのアドバタイジング(又はスキャン)のタイミングとが一致することなく、2つの機器間で通信を行うことができないままとなる場合もありうる。そこで、本実施形態では、BLE端末20aのスキャン(又はアドバタイジング)のタイミングとBLE端末20bのアドバタイジング(又はスキャン)のタイミングとを一致させるために、各BLE端末20において実行されるスキャンとアドバタイジングの実行期間(実行時間の長さ)をランダムに変化させる。
【0125】
図9は、BLE端末20において実行されるスキャンとアドバタイジングの実行期間が変化する様子を示す図である。
【0126】
図9では、説明のためにBLE端末20aにおいて実行されるスキャンとアドバタイジングの実行期間を固定し、BLE端末20bにおいて実行されるスキャンとアドバタイジングの実行期間を可変にした場合の例が示されている。
【0127】
図9に示すように、BLE端末20aにおいては、スキャンとアドバタイジングが繰り返し実行され、スキャンの実行期間ST0と、アドバタイジングの実行期間AT0は固定である。また、スキャンもアドバタイジングも行われない休止期間も固定である。これに対して、BLE端末20bでは、スキャンの実行期間、およびアドバタイジングの実行期間はランダムである。例えば、1回目のスキャンの実行期間はST0であり、2回目のスキャンの実行期間はST1(>ST0)、3回目のスキャンの実行期間はST2となる。また、1回目のアドバタイジングの実行期間はAT1であり、2回目のアドバタイジングの実行期間はAT2(>AT1)である。また、
図9に示す例では、BLE端末20bにおいて休止期間もランダムである。このように、スキャンの実行期間、アドバタイジングの実行期間、及び、休止期間が変化することにより、BLE端末20aのスキャン(又はアドバタイジング)の実行期間と、BLE端末20bのアドバタイジング(又はスキャン)の実行期間とが重なるようになり、BLE端末20aとBLE端末20bとの間で通信が行われる。
【0128】
なお、
図9では、スキャンの実行期間、アドバタイジングの実行期間、および休止期間をランダムに変化させる例について説明したが、スキャンの実行期間、アドバタイジングの実行期間、および休止期間のうちの少なくとも何れか1つがランダムに変化してもよい。なお、これらの期間は、完全にランダムな乱数によって決定されてもよいし、いわゆる疑似乱数(ある程度の規則性を排除できない乱数)により決定されてもよく、これらの乱数はハードウェア又はソフトウェアによって生成されてもよい。また、スキャンの実行期間、及び、アドバタイジングの実行期間を固定して、スキャンの実行タイミング及び/又はアドバタイジングの実行タイミングを可変にしてもよい。すなわち、スキャンの実行期間(実行時間の長さ)、アドバタイジングの実行期間、休止期間、スキャンの実行タイミング、アドバタイジングの実行タイミングのうちの少なくとも何れかを可変にしてもよい。また、スキャンの実行期間、アドバタイジングの実行期間、および休止期間を一定のパターンで変化させてもよい。また、受信処理又は送信処理の一部として休止期間を設けてもよい。
【0129】
また、BLE端末間でスキャン及び/又はアドバタイジングに関する情報をやり取りすることで、スキャン及び/又はアドバタイジングの実行期間や実行タイミングが調整されてもよい。
図10は、スキャン及び/又はアドバタイジングの実行タイミングを示す情報をBLE端末20が送信することにより、スキャン及び/又はアドバタイジングの実行タイミングを調整する方法について説明するための図である。
【0130】
図10に示すように、例えば、BLE端末20aからのアドバタイジングパケットには、次に自機がアドバタイジング及び/又はスキャンを実行するタイミングを示すタイミング情報が含まれる。このBLE端末20aからのアドバタイジングパケットを受信したBLE端末20bは、当該アドバタイジングパケットに含まれるタイミング情報に基づいて、次に実行するアドバタイジング及び/又はスキャンの実行タイミングを調整する。
図10に示す例では、BLE端末20aからのアドバタイジングパケットを受信しない場合、BLE端末20bは、1回目のスキャンの後にタイミングT1でアドバタイジングを行うものとする。この場合において、BLE端末20aからのアドバタイジングパケットを受信したことに応じて、BLE端末20bは、タイミングT2で次のアドバタイジングを行う。具体的には、タイミングT0におけるBLE端末20aからのアドバタイジングパケットには、次にBLE端末20aがスキャンを実行するタイミングを示す情報として「T2」が含まれる。また、BLE端末20aは、タイミングT0におけるアドバタイジングパケットに、次に自機がアドバタイジングを実行するタイミングを示す情報として「T3」を含めて送信してもよい。BLE端末20bは、BLE端末20aが次に実行するスキャンのタイミングT2に合わせて、アドバタイジングを行う。また、BLE端末20aからの情報に応じて、BLE端末20bは、タイミングT3に合わせてスキャンを行ってもよい。これにより、BLE端末20aのスキャンの実行タイミングとBLE端末20bのアドバタイジングの実行タイミングとを一致させることができ、BLE端末20bからBLE端末20aにデータを送信することができる。BLE端末20bから送信されるアドバタイジングパケットにも、次のアドバタイジング及び/又はスキャンの実行タイミングを示すタイミング情報が含まれる。なお、BLE端末20bは、BLE端末20aからのアドバタイジングパケットを受信したことに応じて、BLE端末20bに対してスキャン要求を送信し、当該スキャン要求に応じてBLE端末20bがスキャン応答を送信する。このスキャン応答に上記タイミング情報が含まれてもよい。
【0131】
このようにして、BLE端末20は、次以降にアドバタイジング及び/又はスキャンを実行するタイミングを示す情報を、アドバタイジングパケットに含めて送信する。これにより、BLE端末20同士は、一方の機器がアドバタイジングを実行している間に他方の機器がスキャンを実行するようにアドバタイジング及び/又はスキャンの実行タイミングを調整することができる。なお、BLE端末20は、アドバタイジング及び/又はスキャンの実行期間(実行時間の長さ)を示す情報も含めて、アドバタイジングパケットを送信してもよい。BLE端末20は、他の機器から受信したアドバタイジングパケットに基づいて、次以降にアドバタイジング及び/又はスキャンを実行するタイミングと、その実行期間(実行時間の長さ)とを調整することができる。
【0132】
以上のように、BLE端末20間でアドバタイジング及び/又はスキャンの実行タイミングの調整が行われることで、BLE端末間の通信を効率よく行うことができる。各BLE端末20においてアドバタイジング及びスキャンの実行タイミングや実行時間がランダムに決定される場合は、一方のアドバタイジングの実行期間と他方のスキャンの実行期間とが偶然に重ならなければ2つの機器は互いに通信をすることができない。しかしながら、
図10に示した例では、一方のアドバタイジングの実行期間と他方のスキャンの実行期間とが重なるように、各BLE端末20がアドバタイジング及びスキャンのタイミングを調整するため、効率よく2つの機器間で通信を行うことができる。
【0133】
次に、BLE端末20同士の通信を行うための、携帯端末10とBLE端末20との間の接続(親子間接続)の調整について説明する。
【0134】
図11は、携帯端末10(セントラル)とBLE端末20(ペリフェラル)との間の接続の調整が行われる様子を示す図である。
【0135】
携帯端末10aとBLE端末20aとは接続された状態であり、携帯端末10bとBLE端末20bとは接続された状態である。携帯端末10aとBLE端末20aとの間の接続AのコネクションインターバルCIaは、例えば500m秒であり、スレーブレイテンシーSLaは例えば「4」である。携帯端末10bとBLE端末20bとの間の接続BのコネクションインターバルCIbは、例えば500m秒であり、スレーブレイテンシーSLbは例えば「5」である。
【0136】
図11に示すように、BLE端末20aとBLE端末20bとはアドバタイジングとスキャンとを繰り返し実行することで、互いに通信を行う。ここで、BLE端末20aがタイミングTa1における接続Aのコネクションイベントにおいて携帯端末10aに対して応答を返さなければ、コネクションイベントを無視した回数が、携帯端末10aとの接続AにおけるスレーブレイテンシーSLaを超えてしまう。このため、BLE端末20aは、タイミングTa1において携帯端末10aと通信を行う。BLE端末20aは携帯端末10aと通信を行っている間は、アドバタイジングもスキャンも行わない。また、BLE端末20bも、コネクションイベントを無視した回数が携帯端末10bとの間の接続BにおけるスレーブレイテンシーSLbを越えないように、タイミングTb1においては携帯端末10bと通信を行う一方で、アドバタイジングもスキャンも行わない。
【0137】
このように、BLE端末20(ペリフェラル)は、携帯端末10(セントラル)との通信を優先して行う。これにより、BLE端末20は、少なくともスレーブレイテンシーの範囲内で携帯端末10と通信を行うことができる。しかしながら、BLE端末20間の通信の効率は悪くなる。そこで本実施形態では、スレーブレイテンシーの範囲内で携帯端末10とBLE端末20との通信を行いつつ、BLE端末20間の通信の効率を上げるために、携帯端末10とBLE端末20との間の通信のタイミングが調整される。具体的には、携帯端末10aとBLE端末20aとの間の通信のタイミングTa(BLE端末20aが携帯端末10aに応答パケットを返すタイミング)と、携帯端末10bとBLE端末20bとの間の通信のタイミングTb(BLE端末20bが携帯端末10bに応答パケットを返すタイミング)とが近くなるように、これらの通信のタイミングが調整される。
【0138】
例えば、BLE端末20aは、コネクションインターバルCIaと、コネクションイベントを無視した回数と、スレーブレイテンシーSLaとに基づいて、次に携帯端末10aに応答パケットを送信するタイミングTa2を計算することができる。BLE端末20aは、次に携帯端末10aと通信を行うタイミングTa2を示す情報を、アドバタイジングパケットに含めて送信する。当該アドバタイジングパケットをBLE端末20bが受信すると、BLE端末20bは、タイミングTa2と近いタイミングTb2において、携帯端末10bと通信を行う(携帯端末10bに応答パケットを送信する)。ここで、BLE端末20bは、タイミングTb2において携帯端末10bと通信を行わなかったとしても、コネクションイベントを無視する回数がスレーブレイテンシーSLbの範囲内であるため、タイミングTb2において携帯端末10bと通信を行わなくてもよい。しかしながら、BLE端末20bは、BLE端末20aから受信したタイミングTa2を示す情報に基づいて、タイミングTb2においてBLE端末20aとの通信のためのスキャン及びアドバタイジングを行わず、携帯端末10bと通信を行う。
【0139】
このように、携帯端末10とBLE端末20との間の通信のタイミングが調整される。
【0140】
図12は、
図11の後の状態を示す図であり、携帯端末10(セントラル)とBLE端末20(ペリフェラル)との間の接続の調整が行われた後の各機器間の通信の一例を示す図である。
図11で示したような調整が行われた後は、
図12に示すように、携帯端末10aとBLE端末20aとの間の通信のタイミング(Ta3~Ta5)と、携帯端末10bとBLE端末20bとの間の通信のタイミング(Tb3~Tb5)とが近くなる。
図12に示す例では、BLE端末2bは、スレーブレイテンシーSLbが到来する前に、携帯端末10bと通信を行う。これにより、BLE端末20は、携帯端末10に対してスレーブレイテンシーの範囲内で応答パケットを返すことによって携帯端末10との接続が解除されるリスクを回避しつつ、BLE端末20同士で効率よく通信を行うことができる。
【0141】
次に、BLE端末20同士が接続を確立して、接続状態で通信を行う場合について説明する。
図13は、携帯端末10とBLE端末20とが接続された状態において、BLE端末20同士が接続を確立する様子の一例を示す図である。
【0142】
図13に示すように、
図11と同様、携帯端末10aとBLE端末20aとは接続された状態であり、携帯端末10bとBLE端末20bとは接続された状態である。この状態において、BLE端末20a及びBLE端末20bは、
図8に示すようなスキャンとアドバタイジングとを繰り返し実行する。上述のように、繰り返し行われるスキャン及びアドバタイジングの実行期間はランダムに変化する(
図9参照)。
図13に示すように、例えば、BLE端末20aがスキャンを実行している間に、BLE端末20bは、接続可能であることを示すアドバタイジングパケット(「ADV_IND」)を不特定の機器にブロードキャストする。BLE端末20aは、当該アドバタイジングパケットを受信する。すると、BLE端末20aは、BLE端末20bに対してコネクション要求を送信する。そして、BLE端末20aをセントラル(マスター)とし、BLE端末20bをペリフェラル(スレーブ)としてBLE端末20aとBLE端末20bとの間の接続C(子同士の接続)が確立される。子同士の接続においては、BLE端末20a及びBLE端末20bの両方がセントラルになりうるが、スキャナ(イニシエータ)がセントラルになるため、
図13の例では、BLE端末20aが、BLE端末20bとの接続Cにおいてはセントラルとなる。
【0143】
BLE端末20aとBLE端末20bとの間の接続Cが確立される際には、上述と同様に、コネクションインターバルCIcやスレーブレイテンシーSLcが決定される。例えば、スレーブレイテンシーSLcとして、「4」が決定される。BLE端末20aとBLE端末20bとの間の接続CにおけるコネクションインターバルCIcは、親子間接続のコネクションインターバルCIa(又はCIb)に応じて決定されてもよい。
【0144】
例えば、BLE端末20aは、携帯端末10aとBLE端末20aとの間の接続AにおけるコネクションインターバルCIaよりも小さな値(例えば、250m秒)を、CIcとして設定してもよい。CIcがCIaよりも短くなるように設定されることにより、BLE端末20aとBLE端末20bとの間の通信を頻繁に行うことができ、BLE端末20aとBLE端末20bとの間でより多くの情報をやり取りすることができる。逆に、BLE端末20aは、CIaよりも大きな値(例えば、1秒)をCIcとして設定してもよい。この場合は、携帯端末10aとBLE端末20aとの間の通信をより優先して行うことができる。
【0145】
また、BLE端末20aとBLE端末20bとの間の接続CにおけるスレーブレイテンシーSLcは、親子間接続におけるSLa(又はSLb)に応じて決定されてもよい。例えば、BLE端末20aは、SLaよりも大きな値をSLcとして決定してもよい。逆に、BLE端末20aは、SLaよりも小さな値をSLcとして決定してもよい。また、BLE端末20aは、接続AにおけるCIa及びSLaに基づいて、CIc及び/又はSLcを設定してもよい。また、BLE端末20aは、携帯端末10aとの接続における通信の状況(上記CIa、SLa、携帯端末10aとの間の接続Aにおける通信量、携帯端末10aとの間の接続Aにおける電波の状態等)に応じて、CIc及び/又はSLcを決定してもよい。
【0146】
図14は、
図13の後の状態を示す図であり、BLE端末20aとBLE端末20bとが接続された状態における通信の一例を示す図である。
【0147】
図14に示すように、BLE端末20aとBLE端末20bとが接続された状態では、BLE端末20aとBLE端末20bとの接続Cにおけるコネクションイベントが繰り返し発生し、2つの機器間でデータの送受信が行われる。ここで、携帯端末10aとBLE端末20aとの間の通信が行われる間は、BLE端末20aは、BLE端末20bとの間の通信を制限する。すなわち、BLE端末20aは、携帯端末10aとの接続Aにおけるコネクションイベントが発生するタイミングにおいては、携帯端末10aとの通信を優先的に行い、BLE端末20bとの通信を行わない。同様に、携帯端末10bとBLE端末20bとの間の通信が行われる間は、BLE端末20bは、BLE端末20aとの間の通信を制限する。すなわち、BLE端末20は、親子間の通信を子同士の通信よりも優先して行う。BLE端末20aとBLE端末20bとの間の通信が制限される期間は、スレーブレイテンシーSLcの範囲内の期間である。このように、スレーブレイテンシーSLcの範囲内でBLE端末20aとBLE端末20bとの間の通信を制限することで、携帯端末10aとBLE端末20aとの間の接続A、及び、携帯端末10bとBLE端末20bとの間の接続Bが解除されるリスクを回避しつつ、BLE端末20aとBLE端末20bとの間の接続Cが解除されるリスクを回避することができる。
【0148】
図15は、BLE端末20aとBLE端末20bとの間の通信を制限する方法の具体例を示す図である。
【0149】
図15に示すように、BLE端末20aは、携帯端末10aと通信を行うタイミングTaよりも前のタイミングTc1におけるコネクションイベントにおいて、コネクションインターバルを、現在のCIcよりも長いCIc2に変更する。BLE端末20aとBLE端末20bとの間の接続Cにおいては、BLE端末20aがセントラルであるため、BLE端末20aは、自由にコネクションインターバルCIcを変更することができる。コネクションインターバルがCIcからCIc2に変更されると、BLE端末20aとBLE端末20bとの間の接続Cにおける次のコネクションイベントは、携帯端末10aとの通信(タイミングTaにおける通信)が行われた後に発生することになる。このため、携帯端末10aとBLE端末20aとの間の通信が行われる間は、BLE端末20aはBLE端末20bと通信を行わないようにすることができる。このように、BLE端末20aは、親である携帯端末10aとの間の接続Aにおけるコネクションイベントのタイミングが、BLE端末20bとの間の接続Cにおけるコネクションイベントのタイミングと被らないように(例えば、携帯端末10aとの間の接続Aにおけるコネクションイベントを優先させるために)、現在のコネクションインターバルを任意に変更することができる。
【0150】
また、携帯端末10bとBLE端末20bとの間の通信が行われる場合には、BLE端末20bは、BLE端末20aとの通信を行わず、携帯端末10bと通信を優先して行う。
図15に示す例では、BLE端末20bは、携帯端末10bと通信を行うために、BLE端末20aとBLE端末20bとの間の接続Cにおけるコネクションイベントを1回だけスキップしている。BLE端末20aとBLE端末20bとの間の接続CにおけるスレーブレイテンシーSLcは「4」であるため、BLE端末20bは、1回のコネクションイベントをスキップすることができる。BLE端末20aとBLE端末20bとの間の接続Cにおける次のコネクションイベント(タイミングTc2)では、BLE端末20aは、BLE端末20bに対して、コネクションインターバルをCIc2からCIcに戻す旨を通知する。
【0151】
なお、BLE端末20bは、接続CにおけるスレーブレイテンシーSLcを変更することができる。例えば、BLE端末20bは、現在のスレーブレイテンシーSLcよりも長い期間BLE端末20aとの通信を行わないようにする必要があると判断した場合には、接続Cにおけるコネクションイベントにおいて、スレーブレイテンシーSLcの変更の要求をBLE端末20aに送信する。例えば、BLE端末20bが携帯端末10bに対して大量のデータを送信する必要がある場合には、BLE端末20bは、SLcを現在よりも長くするようにスレーブレイテンシーの変更要求をBLE端末20aに送信する。また、BLE端末20bは、CIcを現在よりも長くするように、コネクションインターバルの変更要求をBLE端末20aに送信してもよい。
【0152】
このように、BLE端末20aとBLE端末20bとの間の接続CにおけるコネクションインターバルCIcやスレーブレイテンシーSLcを変更することで、BLE端末20aとBLE端末20bとの間の通信を制限することができる。これにより、BLE端末20同士の通信よりも携帯端末10とBLE端末20との間の通信を優先することができ、スレーブレイテンシーの範囲内で親子間の通信を行うことができる。例えば、BLE端末20aは、携帯端末10aとの接続を維持することが困難な場合は、BLE端末20bとの接続を解除してもよい。すなわち、親子間の接続を維持することが困難な場合は、子同士の接続が解除されてもよい。親子間の接続を維持することが困難かどうかの判断は、例えば、親子間の接続におけるスレーブレイテンシー、親子間の接続における電波の強度、エラー率等に基づいて行われてもよい。例えば、BLE端末20は、携帯端末10との接続におけるコネクションイベントを無視した回数がスレーブレイテンシーSLを超える場合、親子間の接続を維持することが困難(親子間の接続が解除されるリスクが高い)と判断してもよいし、コネクションイベントを無視した回数が「SL+所定数」を超える場合、親子間の接続を維持することが困難と判断してもよい。また、親子間で大量のデータを短時間で交換する必要がある場合には、BLE端末20は、CIcやSLcを変更することで子同士の通信を行わないようにしてもよい。例えば、携帯端末10aにおいて、所定のアプリケーション(例えばゲームアプリケーション)が行われ、携帯端末10aとBLE端末20bとの間で頻繁に通信を行う必要がある場合には、BLE端末20aは、携帯端末10aとの通信を優先して行ってもよい(BLE端末20bとの通信を行わないようにしてもよい)。
【0153】
図16は、BLE端末20aとBLE端末20bとが接続される場合において携帯端末10とBLE端末20との間の接続が調整された場合の通信の一例を示す図である。
【0154】
図16に示すように、BLE端末20aとBLE端末20bとが接続された状態であり、コネクションインターバルCIc毎に子同士の接続Cにおけるコネクションイベントが発生する。また、
図12において説明したように、携帯端末10aとBLE端末20aとの通信のタイミング(Ta3~Ta5)と、携帯端末10bとBLE端末20bとの通信のタイミング(Tb3~Tb5)とが調整されて、これら2つの通信のタイミングがほぼ一致した状態となっている。この場合において、BLE端末20a(20b)は、携帯端末10a(10b)との通信を行うタイミングを含む所定期間は、子同士の通信を制限する。BLE端末20aが携帯端末10aと通信を行うタイミング(Ta3~Ta5)と、BLE端末20bが携帯端末10bと通信を行うタイミング(Tb3~Tb5)とがほぼ一致するため、子同士はほぼ同じタイミングで子同士の通信を制限することになる。このような調整が行われることで、BLE端末20は携帯端末10との接続が解除されるリスクを回避しつつ、BLE端末20間で効率よく通信を行うことができる。
【0155】
[各機器の処理の詳細]
(携帯端末10の処理)
次に、携帯端末10およびBLE端末20において行われる処理の詳細について説明する。
図17は、携帯端末10において行われる処理の一例を示すフローチャートである。
図18は、
図17のステップS108の詳細フローチャートである。携帯端末10は、
図17及び
図18に示す処理を実行するためのプロセッサを備えており、当該プロセッサはBLE通信モジュールとして実装されている。なお、以下では携帯端末10のBLE通信モジュール(プロセッサ)が
図17及び
図18に示す処理を実行するものとして説明するが、
図17及び
図18に示す処理の一部又は全部は、携帯端末10のCPU又は他のプロセッサが通信プログラムを実行することによって行われてもよい。
【0156】
以下では、携帯端末10aとBLE端末20aとの間で接続が確立される場合について説明するが、携帯端末10bとBLE端末20bとの間の接続においても同様の流れである。
【0157】
図17に示すように、携帯端末10a(のBLE通信モジュール)は、まず、スキャンを実行するタイミングか否かを判定する(ステップS100)。スキャンを実行するタイミングと判定した場合(ステップS100:YES)、携帯端末10aは、スキャンを実行する(ステップS101)。具体的には、携帯端末10aは、3つのチャネル37~39を切り替えながらスキャンを実行する。携帯端末10aは、一定の時間間隔でスキャンを実行してもよいし、スキャンを実行するタイミング、スキャンを実行する時間の長さをランダムに決定してもよい。スキャンを実行するタイミングでないと判定した場合(ステップS100:NO)、携帯端末10aは、再びステップS100の処理を行う。
【0158】
ステップS101に続いて、携帯端末10aは、アドバタイザ(BLE端末20a)からアドバタイジングパケットを受信したか否かを判定する(ステップS102)。アドバタイジングパケットを受信しなかった場合(ステップS102:NO)、携帯端末10aは、ステップS100の処理を再び実行する。
【0159】
ステップS102においてアドバタイザからアドバタイジングパケットを受信したと判定した場合、携帯端末10aは、受信したアドバタイジングパケットに基づいて、接続可能であることを示すアドバタイジングパケットか否かを判定する(ステップS103)。具体的には、ステップS103においては、携帯端末10aは、受信したアドバタイジングパケットが、「ADV_IND」又は「ADV_DIRECT_IND」か否かを判定する。
【0160】
接続可能であることを示すアドバタイジングパケットと判定しなかった場合(ステップS103:NO)、携帯端末10aは、アドバタイジングパケットに含まれるデータを取得する(ステップS104)。具体的には、携帯端末10aは、アドバタイジングパケットのタイプが「ADV_NONCONN_IND」である場合、アドバタイジングパケットに含まれるデータを取得する。
【0161】
接続可能であることを示すアドバタイジングパケットと判定した場合(ステップS103:YES)、携帯端末10aは、アドバタイジングパケットを送信したBLE端末20aにコネクション要求を送信する(ステップS105)。このコネクション要求には、携帯端末10aのアドレス、BLE端末20aのアドレス、アクセスアドレス、コネクションインターバルCIa、スレーブレイテンシーSLa、ホップ数、接続監視タイムアウト等の情報が含まれる。上述のようにアクセスアドレスは、接続を識別するためのものであり、接続毎に携帯端末10aがランダムに決定する。なお、受信したアドバタイジングパケットのタイプが「ADV_SCAN_IND」である場合、携帯端末10aは、当該アドバタイジングパケットを送信したアドバタイザに対して、スキャン要求を送信する。携帯端末10aは、スキャン要求に対するスキャン応答を受信した場合、ステップS105においてコネクション要求を送信する。
【0162】
コネクション要求を送信した後、携帯端末10aは、携帯端末10aは、BLE端末20aとの接続Aを確立する(ステップS106)。
【0163】
ステップS106の後、携帯端末10aは、接続中処理を行う(ステップS107)。このステップS107の処理は、携帯端末10aとBLE端末20aとの接続Aにおける通信を行うための処理であり、携帯端末10aとBLE端末20aとが接続状態を維持している間、繰り返し実行される。以下、
図18を参照して、携帯端末10aの接続中処理の詳細について説明する。
【0164】
図18に示すように、携帯端末10aは、時間カウンタを加算する(ステップS110)。具体的には、携帯端末10aは、一定の時間間隔でステップS110の処理を実行し、ステップS110の処理を実行する毎に時間カウンタを1ずつ増加させる。携帯端末10aは、時間カウンタの値に基づいて、前回のコネクションイベントを実行してからコネクションインターバルCIaが経過したか否かを判定する(ステップS111)。
【0165】
前回のコネクションイベントからコネクションインターバルCIaが経過したと判定した場合(ステップS111:YES)、携帯端末10aは、BLE端末20aとの接続Aにおけるコネクションイベントに係る処理(ステップS112~S120)を実行する。具体的には、携帯端末10aは、BLE端末20aに送信すべき送信データがあるか否かを判定する(ステップS112)。例えば、アプリケーションからの要請によって携帯端末10aが、アプリケーションデータをBLE端末20aから取得する必要がある場合は、ステップS112においてYESと判定される。また、携帯端末10aがアプリケーションデータをBLE端末20aに送信する必要がある場合は、ステップS112においてYESと判定される。
【0166】
ステップS112においてYESと判定した場合、携帯端末10aは、パケットに当該送信データを含める(ステップS113)。例えば、BLE端末20aからアプリケーションデータを取得する場合には、携帯端末10aは、送信データとして、BLE端末20aからデータを取得するための取得要求をパケットに含める。
【0167】
ステップS113の処理を実行した場合、又は、ステップS112でNOと判定した場合、携帯端末10aは、パケットをBLE端末20aに送信する(ステップS114)。具体的には、携帯端末10aは、データチャネル0~36のうちの何れかを用いてデータパケットをBLE端末20aに送信する。ステップS113の処理が実行された場合には、パケットのペイロードにはアプリケーションデータが含まれ、ステップS113の処理が実行されなかった場合には、ペイロードにはデータは含まれない。なお、このデータパケットには、接続が確立される際にランダムに決定されたアクセスアドレスが含まれる。このアクセスアドレスに基づいてBLE端末20aは、携帯端末10aからのデータパケットを受信することができる。また、携帯端末10aが、コネクションインターバルCIaを変更する場合には、新たなCIaの情報がパケットに含められてBLE端末20aに送信される。
【0168】
ステップS114に続いて、携帯端末10aは、接続状態のBLE端末20aから応答パケットを受信したか否かを判定する(ステップS115)。BLE端末20aから応答パケットを受信した場合(ステップS115:YES)、携帯端末10aは、受信したデータの処理を行う(ステップS116)。ここでは、携帯端末10a(のBLE通信モジュール)は、BLE端末20aから上記取得要求に応じたデータを受信した場合、当該データをアプリケーションに渡す。
【0169】
ステップS116の処理の後、携帯端末10aは、変数Nに「0」を設定するとともに、変数Tをリセットし(ステップS117)、再びステップS110に戻る。ここで、「N」は、携帯端末10aとBLE端末20aとの間の接続AにおいてBLE端末20aから応答パケットを受信しなかったコネクションイベントの回数を示す。すなわち、「N」は、BLE端末20aがコネクションイベントを無視(スキップ)した回数を示す。また、変数「T」は、携帯端末10aがBLE端末20aから応答パケットを受信してからの経過時間を示す変数である。携帯端末10aは、BLE端末20aとの接続を解除するか否かをこの変数「T」を用いて判定する。例えば、「T」は、時間経過に応じて加算されてもよいし、ステップS110の処理が行われる毎に1ずつ加算されてもよい。
【0170】
一方、BLE端末20aから応答パケットを受信しなかった場合(ステップS115:NO)、携帯端末10aは、「N」に1を加算する(ステップS118)。そして、携帯端末10aは、「T」が接続Aにおける接続監視タイムアウト以上か否かを判定する(ステップS119)。Tが接続監視タイムアウト以上と判定した場合には、携帯端末10aは、BLE端末20aとの接続Aを解除する(ステップS120)。一方、Tが接続監視タイムアウト以上と判定しなかった場合には、携帯端末10aは、処理をステップS110に戻す。
【0171】
(BLE端末20aの処理)
次に、
図19~
図23を参照してBLE端末20において行われる処理の詳細について説明する。
図19は、BLE端末20aにおいて行われる処理の一例を示すフローチャートである。ここでは、BLE端末20aが
図19~
図22の処理を行い、BLE端末20bが
図23の処理を行う場合を想定する。BLE端末20は、
図19~
図23に示す処理を実行するためのプロセッサを備えており、当該プロセッサはBLE通信モジュール25として実装されている。以下では、BLE端末20のBLE通信モジュール25(プロセッサ)が
図19~
図23に示す処理を実行するものとして説明する。なお、BLE端末20はアプリケーションを実行可能なCPU及び/又は他のプロセッサ(BLE通信モジュール25として実装されているかどうかに関わらない)を備えてもよく、当該CPU及び/又は他のプロセッサが通信プログラムを実行することによって
図19~
図23に示す処理の一部又は全部が行われてもよい。
【0172】
図19に示すように、BLE端末20aは、アドバタイジングを実行するタイミングか否かを判定する(ステップS200)。アドバタイジングを実行するタイミングでないと判定した場合(ステップS200:NO)、BLE端末20aは、再びステップS200の処理を実行する。
【0173】
アドバタイジングを実行するタイミングであると判定した場合(ステップS200:YES)、BLE端末20aは、アドバタイジングを行う(ステップS201)。具体的には、BLE端末20aは、ステップS201において3つのチャネル37~39を切り替えながらアドバタイジングパケットを送信する。ここでは、BLE端末20aは、自機の周辺に存在する不特定の他の機器と接続をするためのアドバタイジングパケット(上記「ADV_IND」)を送信するものとする。
【0174】
次に、BLE端末20aは、携帯端末10a(イニシエータ)から上記ステップS105において送信されたコネクション要求を受信したか否かを判定する(ステップS202)。他の機器からコネクション要求を受信しなかった場合(ステップS202:NO)、BLE端末20aは、ステップS200の処理を再び実行する。
【0175】
コネクション要求を受信した場合(ステップS202:YES)、BLE端末20aは、コネクション要求に含まれるCI、SL、接続監視タイムアウト、ホップ数、アクセスアドレス等を設定して、接続状態に遷移し、BLE端末20aと携帯端末10aとの間の接続Aが確立される(ステップS203)。接続Aが確立された後、BLE端末20aは、接続中処理を行う(ステップS204)。接続中処理は、携帯端末10aとBLE端末20aとの接続Aが維持されている間、繰り返し実行される。以下、BLE端末20aの接続中処理の詳細について説明する。
【0176】
(BLE端末20の接続中処理)
図20は、ステップS205の接続中処理の詳細フローチャートである。
【0177】
図20に示すように、BLE端末20aは、時間カウンタを加算する(ステップS210)。具体的には、BLE端末20aは、一定の時間間隔でステップS210の処理を実行し、ステップS210の処理を実行する毎に時間カウンタを1ずつ増加させる。BLE端末20aは、時間カウンタの値に基づいて、接続Aにおける前回のコネクションイベントから(携帯端末10aからパケットを受信してから)コネクションインターバルCIaが経過したか否かを判定する(ステップS211)。なお、BLE端末20aは、実際にはステップS211において、前回のコネクションイベントからCIaよりも所定時間(上記時刻の計測誤差を考慮して算出される時間)だけ短い時間が経過したか否かを判定する。
【0178】
前回のコネクションイベントからコネクションインターバルCIaが経過したと判定した場合(ステップS211:YES)、BLE端末20aは、接続Aにおけるコネクションイベントをスキップするか否かを判定する(ステップS212)。具体的には、「N」がスレーブレイテンシーSLa以上の場合、BLE端末20aは、ステップS212においてNOと判定する。ここで、「N」は、BLE端末20aがコネクションイベントをスキップした回数(連続して携帯端末10aに対して応答パケットを送信しなかったコネクションイベントの回数)を示す。すなわち、BLE端末20aは、連続して携帯端末10aに応答パケットを返さなかった回数NがスレーブレイテンシーSLaに達した場合、今回のコネクションイベントにおいて携帯端末10aに応答パケットを返すと判定する。
【0179】
また、「N」がスレーブレイテンシーSLa未満である場合でも、BLE端末20aは、ステップS212においてNOと判定することがある。例えば、
図11や
図16で示した親子間の接続の調整のためにスレーブレイテンシーSLaに到達する前に携帯端末10aに応答を送信する場合は、BLE端末20aは、ステップS212においてNOと判定する。また、BLE端末20aは、携帯端末10aに送信すべきデータがある場合も、ステップS212においてNOと判定する。なお、ステップS212の処理では、BLE端末20aは、まず、送信すべきデータ(アプリケーションデータや
図11等で示した親子間の接続の調整のためのデータ)があるか否かを判定し、その判定結果がNOである場合に、NがSLa以上か否かを判定してもよい。すなわち、BLE端末20aは、携帯端末10aに送信すべきデータがある場合は、今回のコネクションイベントにおいて携帯端末10aに当該送信すべきデータを含む応答パケットを送信するために、ステップS212においてNOと判定し、携帯端末10aに送信すべきデータがない場合でも、NがSLa以上であれば空の応答パケットを送信するためにステップS212においてNOと判定してもよい。
【0180】
ステップS212においてNOと判定した場合、BLE端末20aは、データチャネル0~36のうちの何れかを用いて携帯端末10aからパケットを受信する(ステップS213)。続いて、BLE端末20aは、データチャネル0~36のうちの何れかを用いて携帯端末10aに応答パケットを送信する(ステップS214)。ステップS214では、BLE端末20aは、携帯端末10aに送信すべきアプリケーションデータがある場合は当該データを含めてパケットを送信する。
【0181】
次に、BLE端末20aは、受信したデータの処理を行う(ステップS215)。ステップS215の処理では、上記携帯端末10aから所定のデータを受信した場合、BLE端末20aのBLE通信モジュールは、当該受信したデータをアプリケーションに渡す。そして、BLE端末20aは、変数Nに「0」を設定し(ステップS216)、再びステップS210に戻る。
【0182】
なお、上記ステップS213の処理は、ステップS212の処理の前に行なわれてもよい。すなわち、BLE端末20aは、コネクションイベントのタイミングが到来すると、まず、携帯端末10aからのデータパケットを受信し(ステップS213)、次に、ステップS212において今回のコネクションイベントをスキップするか否かを判定してもよい。例えば、BLE端末20aは、ステップS213において携帯端末10aからデータパケットを受信し、次に、ステップS212の処理を実行する。このステップS212の処理では、上述のように、BLE端末20aは、携帯端末10aに送信すべきデータ(アプリケーションデータ等)があるか否かの判定と、NがSL以上か否かの判定とを行う。そして、BLE端末20aは、これらの判定結果に基づいて、今回のコネクションイベントをスキップするか否かを判定する。
【0183】
一方、BLE端末20aは、ステップS212でYESと判定した場合、すなわち、今回のコネクションイベントをスキップすると判定した場合、「N」に1を加算し(ステップS217)、次にステップS218の処理を実行する。
【0184】
ステップS211でNOと判定した場合、又は、ステップS217を実行した場合、BLE端末20aは、BLE端末間通信処理を行う(ステップS218)。ステップS218のBLE端末間通信処理は、携帯端末10aとの接続Aにおけるコネクションインターバルの間(S211でNO)、又は、接続Aのコネクションイベントをスキップすると判定した場合(S212でYES)、実行される。BLE端末間通信処理は、BLE端末20aが携帯端末10aと接続している状態において、他のBLE端末20bと通信(子同士の通信)を行うための処理である。BLE端末間通信処理は、携帯端末10aからの指示が無くても実行される。なお、BLE端末間通信処理を実行するか否かの設定が、携帯端末10aから命令に基づいて行われてもよい。
【0185】
なお、BLE端末20aは、
図20の処理を実行中に、前回携帯端末10aと通信を行ってからの経過時間が接続監視タイムアウト以上か否かを判定する。例えば、BLE端末20aは、前回携帯端末10aからパケットを受信してからの経過時間が接続監視タイムアウト以上か否かを判定する。あるいは、BLE端末20aは、前回携帯端末10aに対して応答パケットを送信してからの経過時間が接続監視タイムアウト以上か否かを判定してもよい。そして、前回の携帯端末10aとの通信からの経過時間が接続監視タイムアウト以上の場合には、BLE端末20aは、携帯端末10aとの接続を解除し、接続状態から非接続状態に移行して、
図20の処理を終了する。この接続監視タイムアウトは、接続の確立時に携帯端末10aによって決定されて通知される。
【0186】
以下、ステップS218におけるBLE端末間通信処理の詳細について説明する。
【0187】
(BLE端末通信処理)
図21は、ステップS218のBLE端末間通信処理の詳細フローチャートである。
図21においては、BLE端末20aが携帯端末10aと接続している状態において、BLE端末20bと通信する例について説明する。
【0188】
図21に示すように、BLE端末20aは、アドバタイジングを実行するタイミングか否かを判定する(ステップS231)。例えば、アドバタイジングを実行するタイミングとして、一定のタイミングが設定されてもよいし、
図9で示したように、アドバタイジングを実行するタイミングがランダムに決定されてもよい。また、
図10で説明したように、他の機器から受信したアドバタイジングパケットに基づいてアドバタイジングを実行するタイミングが決定されてもよい。
【0189】
アドバタイジングを実行するタイミングと判定した場合(ステップS231:YES)、BLE端末20aは、アドバタイジングを行う(ステップS232)。具体的には、BLE端末20aは、ステップS232において、3つのアドバタイジングチャネル37~39を切り替えながら複数のアドバタイジングパケットを送信する。
【0190】
例えば、BLE端末20aは、他のBLE端末20bとコネクションを確立せずに通信を行う場合、アドバタイジングパケットのタイプとして「ADV_NONCONN_IND」を設定し、アプリケーションデータを含めてブロードキャストでパケットを送信する。アプリケーションデータのサイズが、1のアドバタイジングパケットが送信可能なデータのサイズを超えている場合、BLE端末20aは、アプリケーションデータを分割して、複数のアドバタイジングパケットに分けて送信する。この場合、BLE端末20aは、分割したそれぞれのデータが、アプリケーションデータにおけるどの位置(何番目)かを示す情報をそれぞれのアドバタイジングパケットに含めて送信する。例えば、アプリケーションデータが75オクテットである場合、BLE端末20aは、アプリケーションデータを3つに分けて、25オクテットずつの分割データにする。これら3つの分割データは、先頭から順に1,2,3番と定義され、この順で送信される。なお、受信側でデータが受信できない可能性を考慮して、3つの分割データは繰り返し(複数回)送信されてもよい。具体的には、BLE端末20aは、1番目の分割データ(アプリケーションデータの先頭から1/3の部分)と、シーケンス番号(1番)とを含む1のアドバタイジングパケットを送信する。次に、BLE端末20は、2番目の分割データ(アプリケーションデータの中央部分)と、シーケンス番号(2番)とを含む1のアドバタイジングパケットを送信する。そして、BLE端末20aは、3番目の分割データ(アプリケーションデータの後から1/3の部分)と、シーケンス番号(3番)とを含む1のアドバタイジングパケットを送信する。これら3つのアドバタイジングパケットをBLE端末20bが受信し、シーケンス番号にしたがって分割データを並べることで、BLE端末20bは、BLE端末20aから送信されたアプリケーションデータを再構築することができる。なお、BLE端末20aは、スキャン要求が可能であることを示すアドバタイジングパケット(「ADV_SCAN_IND」)を送信してもよい。この場合は、アドバタイジングパケットを受信したBLE端末20bからスキャン要求が送信され、それに応じてBLE端末20aはスキャン応答を送信する。BLE端末20a、このスキャン応答にさらにデータを含めることができる。これにより、BLE端末20aは、1のアドバタイジングパケットを送信したことによって、さらにスキャン応答を送信することができ、より多くのデータをBLE端末20bに送信することができる。
【0191】
また、BLE端末20aは、他のBLE端末20bと接続を確立して通信を行う場合は、ステップS232において、アドバタイジングパケットのタイプとして「ADV_IND」を設定し、アドバタイジングパケットをブロードキャストで送信する。この場合において、スキャンを実行中の他のBLE端末20bがBLE端末20aからのアドバタイジングパケットを受信した場合、BLE端末20bは、コネクション要求をBLE端末20aに送信する。これにより、BLE端末20aとBLE端末20bとの間で接続が確立される。
【0192】
なお、ステップS232において送信されるアドバタイジングパケットには、
図10を参照して説明したタイミング情報(次以降のアドバタイジング及び/又はスキャンのタイミングを示す情報)が含まれる場合がある。また、アドバタイジングパケットには、
図11を参照して説明したタイミングTa2の情報が含まれる場合もある。上述のように、これらの情報を受信したことに基づいて、BLE端末20bは、次以降のアドバタイジングのタイミングやスキャンのタイミングを調整する。これにより、目的のアドバタイジングパケット(例えば、未だ取得できていないシーケンス番号に係るアドバタイジングパケット)をより短期で取得することができるようになる。
【0193】
ステップS231でNOと判定した場合、又は、ステップS232の処理を行った場合、BLE端末20aは、スキャンを実行するタイミングか否かを判定する(ステップS233)。例えば、スキャンを実行するタイミングとして、一定のタイミングが設定されてもよいし、
図9で示したように、スキャンを実行するタイミングがランダムに決定されてもよい。また、
図10で説明したように、他の機器から受信したアドバタイジングパケットに含まれるタイミング情報に基づいてスキャンを実行するタイミングが決定されてもよい。
【0194】
スキャンを実行するタイミングと判定した場合(ステップS233:YES)、BLE端末20aは、スキャンを行う(ステップS234)。例えば、BLE端末20aは、ステップS234において、BLE端末20bからアドバタイジングパケットを受信する。BLE端末20bからのアドバタイジングパケットのタイプによって、BLE端末20aのその後の動作が異なる。
【0195】
例えば、BLE端末20bから受信したアドバタイジングパケットのタイプが、「ADV_IND」である場合、すなわち、BLE端末20bと接続可能である場合(ステップS235:YES)、BLE端末20aは、接続処理を行う(ステップS236)。ステップS236の接続処理は、
図17のステップS105~S106と同様の処理である。すなわち、BLE端末20aは、BLE端末20bに対してコネクション要求を送信し、BLE端末20bからその応答を受信することで、BLE端末20bとの間で接続Cを確立する。このとき、BLE端末20aはセントラル(マスター)となり、BLE端末20bはペリフェラル(スレーブ)となる。また、このステップS236においては、BLE端末20aは、BLE端末20aとBLE端末20bとの間の接続Cに関するパラメータ(アクセスアドレス、コネクションインターバルCIc、スレーブレイテンシーSLc、ホップ数、接続監視タイムアウト等)を決定してBLE端末20bに通知する。
【0196】
一方、例えば、BLE端末20bから受信したアドバタイジングパケットのタイプが、「ADV_NONCONN_IND」である場合、BLE端末20aは、ステップS235においてNOと判定する。すなわち、「ADV_NONCONN_IND」の場合は、非接続のアドバタイジングであるため、BLE端末20aは、アドバタイジングパケットに含まれるデータを取得する(ステップS237)。このアドバタイジングパケットには、BLE端末20bが他の不特定の機器に送信したデータ(例えば、アプリケーションデータ)が含まれている場合があり、BLE端末20aは、アドバタイジングパケットに含まれるデータを取得する。このデータが分割されたアプリケーションデータである場合は、BLE端末20aは、上述のように、アドバタイジングパケットに含まれるシーケンス番号に基づいて、アプリケーションデータを再構築する。
【0197】
なお、ステップS234において受信されるアドバタイジングパケットには、
図10を参照して説明したタイミング情報(次以降のアドバタイジング及び/又はスキャンのタイミングを示す情報)が含まれる場合がある。また、アドバタイジングパケットには、
図11に示すタイミングTb(BLE端末20bが携帯端末10bに応答パケットを送信するタイミング)の情報が含まれる場合もある。上述のように、これらの情報を受信したことに基づいて、BLE端末20aは、次以降のアドバタイジングのタイミングやスキャンのタイミングを調整する。
【0198】
上記ステップS232のアドバタイジング、及び、ステップS234のスキャンが繰り返し行われることで、BLE端末20aとBLE端末20bとが接続されていない状態においても、2つの機器間でデータを送受信することができる。また、ステップS232のアドバタイジング、及び、ステップS234のスキャンが繰り返し行われることで、BLE端末20aとBLE端末20bとの間で接続を確立することができる。
【0199】
BLE端末20aとBLE端末20bとが接続を確立して通信を行うか、接続を確立せずに通信を行うかは、例えばアプリケーションの要請によって決まる。例えば、データを確実に送受信する必要がある場合は、BLE端末20aは、アドバタイジングパケットのタイプとして「ADV_IND」を設定する。また、データを複数の機器に同時に送信する必要がある場合、BLE端末20aは、アドバタイジングパケットのタイプとして「ADV_NONCONN_IND」を設定し、アドバタイジングパケットを送信する。
【0200】
ステップS236の処理を実行した場合、ステップS237の処理を実行した場合、又は、ステップS233でNOと判定した場合、BLE端末20aは、ステップS238の処理を実行する。
【0201】
ステップS238において、BLE端末20aは、BLE端末20bと接続された状態か否かを判定する。上記ステップS232のアドバタイジング、及び、ステップS234のスキャンが繰り返し行われた結果、BLE端末20aとBLE端末20bとが接続された状態である場合は、BLE端末20aは、BLE端末間接続中処理を行う(ステップS239)。
【0202】
ステップS239のBLE端末間接続中処理は、BLE端末20aが携帯端末10aと接続された状態であり(
図15の接続A)、かつ、BLE端末20bと接続された状態(
図15の接続C)である場合に行われる処理である。以下、ステップS239のBLE端末間接続中処理の詳細について説明する。
【0203】
(BLE端末20aのBLE端末間接続中処理)
図22は、ステップS239のBLE端末間接続中処理の詳細フローチャートであり、セントラル(マスター)として動作するBLE端末20aにおいて行われる処理を示す図である。
【0204】
図22では、携帯端末10aとBLE端末20aとが接続された状態であり、この接続AのパラメータとしてコネクションインターバルがCIa、スレーブレイテンシーがSLaに設定されていることを前提とする。また、BLE端末20aとBLE端末20bとが接続された状態であり、この接続CのパラメータとしてコネクションインターバルがCIc、スレーブレイテンシーがSLcに設定されていることとする。
【0205】
図22に示すように、BLE端末20aは、時間カウンタに基づいて、コネクションインターバルCIcが経過したか否かを判定する(ステップS241)。具体的には、BLE端末20aは、BLE端末20aとBLE端末20bとの間の接続Cにおける前回のコネクションイベントのタイミングからCIcが経過したか否かを判定する。なお、BLE端末20aは接続毎に時間カウンタを設定してもよいし、共通の時間カウンタを用いて各接続のコネクションイベントを実行するタイミングを判定してもよい。すなわち、携帯端末10aとBLE端末20aとの接続Aのための時間カウンタ(
図20のステップS211の判定に用いられる時間カウンタ)と、BLE端末20aとBLE端末20bとの接続Cのための時間カウンタ(ステップS241の判定に用いられる時間カウンタ)とが異なっていてもよいし、同じでもよい。
【0206】
コネクションインターバルCIcが経過していないと判定した場合(ステップS241:NO)、BLE端末20aは、
図22に示す処理を終了する。
【0207】
コネクションインターバルCIcが経過したと判定した場合(ステップS241:YES)、BLE端末20aは、BLE端末20aとBLE端末20bとの間の通信を制限するか否かを判定する(ステップS242)。具体的には、BLE端末20aは、現時点から所定時間内に携帯端末10aと通信する必要がある場合には、BLE端末20aとBLE端末20bとの間の通信を制限すると判定する。すなわち、現時点から所定時間内にBLE端末20aが携帯端末10aに対して応答を送信しなければ、携帯端末10aとBLE端末20aとの接続AにおけるスレーブレイテンシーSLaを超える場合には、BLE端末20aは、BLE端末20bとの間の通信を制限する。具体的には、BLE端末20aは、「N」の値がスレーブレイテンシーSLa以上の場合、BLE端末20aとBLE端末20bとの間の通信を制限すると判定する。
【0208】
BLE端末20aとBLE端末20bとの間の通信を制限すると判定した場合(ステップS242:YES)、BLE端末20aは、コネクションインターバルCIcを変更する(ステップS243)。具体的には、BLE端末20aは、次に発生するBLE端末20aとBLE端末20bとの間の接続Cにおけるコネクションイベントが、携帯端末10aとBLE端末20aとの接続Aにおけるコネクションイベントと時間的に重ならないように、CIcを現在よりも大きな値(CIc2)に変更する(
図15参照)。
【0209】
ステップS243の処理を実行した場合、又は、ステップS242でNOと判定した場合、BLE端末20aは、BLE端末20bに送信すべき送信データ(例えばアプリケーションデータ)があるか否かを判定し(ステップS244)、送信データがある場合には(ステップS244:YES)、パケットに送信データを含める(ステップS245)。
【0210】
ステップS245の処理を実行した場合、又は、ステップS244でNOと判定した場合、BLE端末20aは、データチャネルを用いてBLE端末20bにパケットを送信する(ステップS246)。ステップS245の処理が行われた場合は、パケットのペイロードには送信データが含まれ、ステップS245の処理が行われなかった場合には、パケットのペイロードには送信データは含まれない。なお、ステップS243でCIcがCIc2に変更された場合には、変更後のCIc2の情報がパケットに含まれる。これにより、BLE端末20aとBLE端末20bとの間の接続Cにおける次のコネクションイベントは、CIc2の経過後に発生することになる。
【0211】
なお、変更されたCIc2は、携帯端末10aとBLE端末20aとの間のコネクションイベントが終了した後にCIcに戻される。携帯端末10aとBLE端末20aとの間のコネクションイベントが終了した後に発生するBLE端末20aとBLE端末20bとの間の接続Cにおけるコネクションイベントにおいて、BLE端末20aは、CIcの情報をBLE端末20bに送信する(
図15参照)。
【0212】
ステップS242~S246の処理が行われることにより、
図15で示したように、携帯端末10aとBLE端末20aとの間の通信が行われる間、BLE端末20aとBLE端末20bとの間の通信を制限することができる。
【0213】
ステップS246の後、BLE端末20aは、BLE端末20bから応答パケットを受信したか否かを判定する(ステップS247)。BLE端末20bから応答パケットを受信した場合(ステップS247:YES)、BLE端末20aは、受信したデータの処理を行う(ステップS248)。ステップS248において、例えば、BLE端末20b(のBLE通信モジュール)は、受信したデータをアプリケーション層に渡す。そして、BLE端末20aは、変数Mに「0」を設定するとともに、変数「S」をリセットし(ステップS249)、
図22に示す処理を終了する。「M」は、BLE端末20aとBLE端末20bとの間の接続CにおいてBLE端末20bから応答パケットを受信しなかったコネクションイベントの回数を示す。また、「S」は、BLE端末20aがBLE端末20bから応答パケットを受信してからの経過時間を示す変数である。BLE端末20aは、BLE端末20bとの接続を解除するか否かをこの変数「S」を用いて判定する。例えば、「S」は、時間経過に応じて加算されてもよいし、ステップSS241の処理が行われる毎に1ずつ加算されてもよい。
【0214】
一方、BLE端末20bから応答パケットを受信しなかった場合(ステップS247:NO)、BLE端末20aは、「M」に1を加算する(ステップS250)。次に、BLE端末20aは、「S」が接続Cにおける接続監視タイムアウト以上か否かを判定する(ステップS251)。「S」が接続監視タイムアウト以上と判定した場合(ステップS251:YES)、BLE端末20aは、BLE端末20bとの接続Cを解除して(ステップS252)、
図22に示す処理を終了する。「S」が接続監視タイムアウト以上と判定しなかった場合(ステップS251:NO)、BLE端末20aは、ステップS252の処理を行わずに(接続Cを解除せずに)、
図22に示す処理を終了する。
【0215】
(BLE端末20bのBLE端末間接続中処理)
図23は、ステップS239のBLE端末間接続中処理の詳細フローチャートであり、ペリフェラル(スレーブ)として動作するBLE端末20bにおいて行われる処理を示す図である。
【0216】
図23では、携帯端末10bとBLE端末20bとが接続された状態であり、この接続BのパラメータとしてコネクションインターバルがCIb、スレーブレイテンシーがSLbに設定されていることを前提とする。また、BLE端末20aとBLE端末20bとが接続された状態であり、この接続CのパラメータとしてコネクションインターバルがCIc、スレーブレイテンシーがSLcに設定されていることとする。
【0217】
図23に示すように、BLE端末20bは、時間カウンタに基づいて、コネクションインターバルCIcが経過したか否かを判定する(ステップS261)。具体的には、BLE端末20bは、BLE端末20aとBLE端末20bとの間の接続Cにおける前回のコネクションイベントのタイミングからCIcが経過したか否かを判定する。なお、BLE端末20bは接続毎に時間カウンタを設定してもよいし、共通の時間カウンタを設定してもよい。
【0218】
コネクションインターバルCIcが経過していないと判定した場合(ステップS261:NO)、BLE端末20bは、
図23に示す処理を終了する。
【0219】
コネクションインターバルCIcが経過したと判定した場合(ステップS261:YES)、BLE端末20bは、BLE端末20aとBLE端末20bとの間の通信を制限するか否かを判定する(ステップS262)。具体的には、BLE端末20bは、現時点から所定時間内に携帯端末10bと通信する必要がある場合には、BLE端末20aとBLE端末20bとの間の通信を制限すると判定する。すなわち、現時点から所定時間内にBLE端末20bが携帯端末10bに対して応答を送信しなければ、携帯端末10bとBLE端末20bとの接続BにおけるスレーブレイテンシーSLbを超える場合には、BLE端末20bは、BLE端末20aとの間の通信を制限する。
【0220】
BLE端末20aとBLE端末20bとの間の通信を制限すると判定した場合(ステップS262:YES)、BLE端末20bは、変数「M」がスレーブレイテンシーSLc以上か否かを判定する(ステップS263)。「M」は、BLE端末20aとBLE端末20bとの間の接続Cにおけるコネクションイベントにおいて、BLE端末20bが応答パケットを送信しなかった(コネクションイベントをスキップした)回数を示す。「M」がスレーブレイテンシーSLc以上と判定した場合(ステップS263:YES)、BLE端末20bは、ステップS264に処理を進める。一方、「M」がスレーブレイテンシーSLc未満と判定した場合(ステップS263:NO)、BLE端末20bは、
図23の処理を終了する。
【0221】
ステップS262でNOと判定した場合、又は、ステップS263でYESと判定した場合、BLE端末20bは、BLE端末20aとの接続Cにおけるコネクションイベントをスキップするか否かを判定する(ステップS264)。
【0222】
ステップS262及びステップS263の処理から明らかなように、BLE端末20bは、携帯端末10bとの通信を優先させるためにBLE端末20aとの通信を制限する。具体的には、BLE端末20bは、携帯端末10bとの通信がスレーブレイテンシーSLbの範囲内で行われるように、BLE端末20aとの通信を制限する(すなわち、接続Cのコネクションイベントをスキップする)。しかしながら、BLE端末20bは、今回のコネクションイベントにおいてBLE端末20aに対して応答を送信しなければBLE端末20aとの接続CにおけるスレーブレイテンシーSLcを超える場合(ステップS263:YES)、BLE端末20aとの通信を制限せずに、ステップS264に処理を進める。これにより、BLE端末20bは、携帯端末10bとの通信を優先しつつも、BLE端末20aとの接続Cが解除されるリスクを回避することができる。
【0223】
ステップS264において、BLE端末20bは、接続Cにおける今回のコネクションイベントをスキップするか否かを判定する。
【0224】
ステップS264においてNOと判定した場合、BLE端末20bは、
図20のステップS214~ステップS216と同様に、接続Cにおけるコネクションイベントを実行する。具体的には、BLE端末20bは、データチャネルを用いてBLE端末20aからパケットを受信し(ステップS265)、当該パケットの受信に応じてBLE端末20aに対して応答を送信する(ステップS266)。この応答には、SLcの変更要求が含められてもよい。そして、BLE端末20bは、BLE端末20aからのデータの処理を行い(ステップS267)、変数Mに「0」を設定し(ステップS268)、
図23に示す処理を終了する。
【0225】
一方、ステップS264においてYESと判定した場合、BLE端末20bは、「M」に1を加算し(ステップS269)、
図23に示す処理を終了する。
【0226】
ここで、親子間の接続(携帯端末10bとBLE端末20bとの間の接続B)と、子同士の接続(BLE端末20同士の接続C)とで、一方の通信を制限した場合には、他方の接続が解除されるリスクがある場合には、BLE端末20bは、親子間の接続を優先する。例えば、「N」の値がスレーブレイテンシーSLbと等しい場合、すなわち、BLE端末20bが携帯端末10bに対して応答パケットを返さなかった回数がスレーブレイテンシーSLbと等しい場合、BLE端末20bは、ステップS264においてYESと判定する。例えば、ステップS263でYESと判定した場合であっても、BLE端末20bは、ステップS264においてYESと判定する(この場合、M>SLcとなるため、子同士の接続Cは解除されるリスクが高くなる)。すなわち、BLE端末20bは、親子間の接続Bが解除されるリスクを回避するために、子同士の接続Cにおける通信を制限する。
【0227】
このように、本実施形態では、親子間の接続を子同士の接続よりも優先させる。これにより、親子間の接続中に子同士が接続される場合でも、親子間の接続が解除されるリスクを回避することができる。なお、他の実施形態では、親子間の接続よりも子同士の接続を優先させてもよい。また、現在の通信の状況に応じて、親子間の接続を優先させるか、子同士の接続を優先させるかが決定されてもよい。例えば、親子間の接続の通信量よりも子同士の接続の通信量の方が多い場合には、子同士の接続を優先させてもよい。
【0228】
なお、BLE端末20bは、
図23の処理を実行中に、前回BLE端末20aと通信を行ってからの経過時間が接続監視タイムアウト以上か否かを判定する。例えば、BLE端末20bは、前回BLE端末20aからパケットを受信してからの経過時間が接続監視タイムアウト以上か否かを判定する。あるいは、BLE端末20aは、前回BLE端末20aに対して応答パケットを送信してからの経過時間が接続監視タイムアウト以上か否かを判定してもよい。そして、前回BLE端末20aと通信を行ってからの経過時間が接続監視タイムアウト以上の場合には、BLE端末20bは、BLE端末20aとの接続を解除し、接続状態から非接続状態に移行して、
図23の処理を終了する。この接続監視タイムアウトは、接続の確立時にBLE端末20aによって決定されて通知される。
【0229】
以上のように、本実施形態では、BLE端末20aは、携帯端末10a(親)と接続した状態で、携帯端末10bと接続された状態のBLE端末20b(子)と通信を行う。すなわち、あるネットワークにスレーブとして参加しているBLE端末20aは、別のネットワークにスレーブとして参加しているBLE端末20bと通信を行う。具体的には、BLE端末20aは、BLE端末20bと接続していない状態でアドバタイジングパケットをブロードキャスト(非限定の不特定の機器又は限定された不特定の機器へのブロードキャスト)で送受信することにより、BLE端末20bと互いに通信を行う。また、BLE端末20aは、BLE端末20bと接続を確立し、接続状態で互いに通信を行う。
【0230】
また、本実施形態では、親子間の接続が維持されるように、子同士の通信が制御される。すなわち、子は、親子間の接続を維持するための通信(親子間のコネクションイベント)が発生するタイミングでは、子同士の通信を行わずに、親子間の通信を優先的に行う。例えば、BLE端末20は、親子間の接続を維持するための通信のタイミングと、子同士の通信のタイミングとが一致する場合、子同士の通信を制限して(子同士の通信を行わずに)、親子間の通信を優先的に行う。また、BLE端末20は、親子間の接続を維持するための通信が行われるタイミングを含む所定期間は、子同士の通信を制限してもよい。
【0231】
また、BLE端末20は、子同士の通信の効率を向上させるために、親子間の接続を維持するための通信のタイミングを調整する。具体的には、携帯端末10aとBLE端末20aとの接続Aを維持するための通信のタイミングと、携帯端末10bとBLE端末20bとの接続Bを維持するための通信のタイミングとが近くなるように、これらの通信のタイミングが調整される。このような調整が行われることにより、BLE端末20は、親子間の接続を維持した状態で、子同士で効率よく通信を行うことができる。
【0232】
子同士の通信では、アプリケーションデータが互いに送受信される。アプリケーションデータとしては、例えば、ゲームキャラクタやアイテム等のゲームにおいて用いられるデータ(キャラクタやアイテムの実データやIDを示すデータ)、ゲーム名やゲームID等であってもよい。また、アプリケーションで用いられるデータとしては、アプリケーションで再生される、文字データ、画像データ、動画データ、音声データ、広告のためのデータ等であってもよい。また、アプリケーションデータとして、BLE端末20の位置情報(GPS情報)、BLE端末20に設けられたセンサ(例えば、加速度センサや角速度センサ等の慣性センサ、温度センサ、湿度センサ、血圧や脈拍等の人体の生体情報を取得可能なセンサ等)等からの出力情報であってもよい。子同士の通信で受信したアプリケーションデータに基づいてBLE端末20が所定の処理を行ってもよいし、受信したアプリケーションデータは、携帯端末10に送信されて携帯端末10において当該データに基づく所定の処理が行われてもよい。
【0233】
なお、上記フローチャートにおける各ステップの処理は、単なる一例に過ぎず、各ステップの処理順序を入れ替えてもよいし、各ステップの処理が実行されなくてもよい。また、上記フローチャートにおける処理に他の処理が付加されてもよい。
【0234】
また、上記実施形態では、各機器は、BLE規格に基づく通信を行うものとしたが、BLEに限らずクラシックBluetoothに基づく通信が行われてもよい。また、他の規格(例えば、IEEE802.11シリーズ等)に基づく通信が行われてもよい。また、その他の任意の規格に基づく通信が行われてもよい。なお、上記BLE規格に基づく通信では、接続状態において、接続確立時に生成された共通のアクセスアドレスを用いて2つの機器間で通信が行われる。他の規格に基づく通信においては、例えば、接続が確立された後の接続状態では、機器固有のアドレスを用いて通信が行われる。すなわち、送信側は、受信側の機器のアドレスを指定してパケットを送信する(ユニキャスト)。
【0235】
また、上記実施形態では、親子間の通信を子同士の通信よりも優先的に行ったが、他の実施形態では、子同士の通信を親子間の通信よりも優先的に行ってもよい。例えば、携帯端末10aとBLE端末20aとが常に接続されている状態である場合において、BLE端末20aとBLE端末20bとがある期間だけ通信可能な範囲にある場合を想定する。例えば、携帯端末10aとBLE端末20aとを携帯するユーザAが移動しており、携帯端末10bとBLE端末20bとを携帯するユーザBが移動している場合において、ユーザAとユーザBとがすれ違うケースが考えられる。この場合、携帯端末10aとBLE端末20aとは常に近距離に位置し、携帯端末10bとBLE端末20bとは常に近距離に位置するため、携帯端末10aとBLE端末20aとは常に通信可能であり、携帯端末10bとBLE端末20bとは常に通信可能である。しかしながら、BLE端末20aとBLE端末20bとは、すれ違う間だけ通信可能な範囲にあり、BLE端末20aとBLE端末20bとがデータをやり取りするためには、短期間にデータをやり取りする必要がある。このような場合は、子同士(BLE端末20a及びBLE端末20b)の通信を親子間(携帯端末10a及びBLE端末20a、あるいは、携帯端末10b及びBLE端末20b)の通信よりも優先的に行ってもよい。例えば、子同士は、接続を確立せずに通信を行ってもよく、接続を確立して通信を行ってもよい。子同士の通信を行っている間に、親子間のコネクションイベントが発生した場合でも子同士の通信が優先されてもよい。親子間の通信が行われない期間がスレーブレイテンシーを超えることがあっても、子同士の通信を優先させてもよい。すなわち、例えば、携帯端末10aとBLE端末20aとの接続において、BLE端末20aは、携帯端末10aに対して応答を返さなければ携帯端末10aとの接続におけるスレーブレイテンシーを超える場合であっても、BLE端末20bとの通信を優先的に行ってもよい。このような場合では、親子間の接続は、子同士の通信が完了した後(ユーザAとユーザBとが離れた後)すぐにでも再開できる。上述のように、通信が行われない期間がスレーブレイテンシーを超えても接続監視タイムアウト以内であれば親子間の接続は維持される。また、例えば、BLE端末20aは、BLE端末20bとの通信が完了した後(BLE端末20bとの通信が不可能になった後)、BLE端末20bとの通信を優先したことによって携帯端末10aとの接続が解除された場合であっても、「ADV_DIRECT_IND」のタイプのアドバタイジングパケットを送信することで、携帯端末10aと高速に接続を確立することができる。しかしながら、子同士の通信は、ユーザAとユーザBとがすれ違う間にしかできないため、子同士の通信を親子間の通信よりも優先的に行ってもよい。
【0236】
また、上記実施形態では、子同士の接続におけるコネクションインターバルCIcやスレーブレイテンシーSLcを変更することによって子同士の通信を制限し、子同士の通信を制限した期間において親子間の通信を行うようにした(
図15)。他の実施形態では、例えば、コネクションインターバル及び/又はスレーブレイテンシーに加えて、接続監視タイムアウトを変更してもよい。また、コネクションインターバル及び/又はスレーブレイテンシーに代えて、接続監視タイムアウトを変更してもよい。子同士の接続における接続監視タイムアウトを変更する(現在の値よりも長くする)ことによって、子同士の通信が比較的長い時間行われなれない場合でも子同士の接続が解除されないようにし、子同士の通信が行われない期間において、親子間の通信を行ってもよい。
【0237】
この明細書に記載されている処理の一部又は全部は、携帯端末又はBLE端末のCPU及び/又は他のプロセッサが通信プログラムを実行することによって行われてもよい。また、上記処理の一部又は全部は、携帯端末又はBLE端末が備えるASIC(Application Specific Integrated Circuit)によって行われてもよい。
【符号の説明】
【0238】
1 無線通信システム
10a、10b 携帯端末
20a、20b BLE端末
25 BLE通信モジュール