しかしながら、従来の無線通信においては、一方の機器で行われた操作の情報を他方の機器に効率的(消費電力を抑えることを含む)に送信することに関して改善の余地があった。
それ故、本発明の目的は、一方の機器で行われた操作の情報を他方の機器に効率的(消費電力を抑えることを含む)に送信することが可能な技術を提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。
一実施形態では、無線通信を行うことが可能な複数の機器を含む無線システムであって、当該無線システムは第1の機器と第2の機器とを含む。前記第1の機器は、接続確立手段と、ユーザによって操作される操作手段と、蓄積手段と、送信手段とを備える。接続確立手段は、前記第2の機器と接続を確立する。蓄積手段は、前記操作手段に対して行われた複数の操作を蓄積する。送信手段は、前記第2の機器と接続された状態において、前記蓄積手段によって蓄積された複数の操作を示す操作結果情報を前記第2の機器に無線で送信する。
上記によれば、第1の機器は操作手段に対して行われた複数の操作を蓄積し、当該蓄積した複数の操作を示す操作結果情報を第2の機器に送信することができる。これにより、例えば、第1の機器と第2の機器とが頻繁に通信されなくても、第1の機器において行なわれた複数の操作を第2の機器にまとめて送信することができ、消費電力を抑えることができる。
上記実施形態では、前記蓄積手段は、第1のタイミングで行われた操作と当該第1のタイミングとは異なる第2のタイミングで行われた操作とを含む複数の操作を蓄積してもよい。
上記によれば、第1の機器は操作手段に対して異なるタイミング行われた複数の操作を蓄積し、当該蓄積した複数の操作を示す操作結果情報を第2の機器に送信することができる。これにより、例えば、第1の機器と第2の機器とが頻繁に通信されなくても、第1の機器において異なるタイミングで行なわれた複数の操作を第2の機器にまとめて送信することができ、消費電力を抑えることができる。
また、上記実施形態によれば、第1の機器において行なわれた各操作のタイミングを第2の機器は正確に知ることができる。すなわち、第1の機器からの情報が第2の機器に届くまでには遅延が発生し、この遅延にはバラつきがある。このため、例えば、操作手段に対して操作が行われる毎に当該操作の情報が逐次第2の機器に送信されると、第2の機器に操作の情報が届くまでの遅延のバラつきによって、第2の機器は、第1の機器において行なわれた各操作のタイミングを正確に知ることができない。しかしながら、上記実施形態では、第1のタイミングで行われた操作と第2のタイミングで行われた操作の情報が第2の機器に送信されるため、第2の機器は、第1のタイミングの操作と第2のタイミングの操作とがどの程度ずれているのかを正確に知ることができる。
上記実施形態では、前記第1の機器および前記第2の機器の少なくとも何れか一方は、前記第1の機器と前記第2の機器との間の通信の時間間隔を設定する間隔設定手段を備えてもよい。前記第1の機器と前記第2の機器とは、互いに接続された状態において前記間隔設定手段によって設定された時間間隔で無線通信を行う。前記第1の機器の送信手段は、前記間隔設定手段によって設定された時間間隔で行われる通信において前記操作結果情報を前記第2の機器に送信する。
上記によれば、第1の機器と第2の機器とは設定された所定の時間間隔で通信を行う。第1の機器は、複数の操作を蓄積し、所定の時間間隔で行われる通信において、蓄積した複数の操作を第2の機器に送信することができる。これにより、第1の機器において操作が行われる毎に第2の機器に当該操作の情報が送信される場合よりも電力消費を抑制することができるとともに、第1の機器において行われた複数の操作を第2の機器に送信することができる。
上記実施形態では、前記間隔設定手段は、前記第1の機器と前記第2の機器との間の接続が確立される際に前記時間間隔を設定してもよい。
上記によれば、接続が確立される際に時間間隔を設定することができ、例えば、あるタイミングで接続が確立される際の時間間隔と、別のタイミングで接続が確立される際の時間間隔とを異ならせることができる。
上記実施形態では、前記間隔設定手段は、予め定められた所定の範囲で前記時間間隔を設定してもよい。
上記によれば、予め定められた範囲で時間間隔を設定することができる。これにより、必要に応じて時間間隔を短くしたり、長くしたりすることができる。
上記実施形態では、前記間隔設定手段は、前記時間間隔を第1の時間間隔から当該第1の時間間隔とは異なる第2の時間間隔に変更してもよい。
上記によれば、上記時間間隔を変更することができる。
上記実施形態では、前記間隔設定手段は、前記第1の機器と前記第2の機器との接続中に、前記時間間隔を変更してもよい。
上記によれば、接続中に前記時間間隔を変更することができ、必要に応じて適切な時間間隔を設定して第1の機器と第2の機器との通信を行うことができる。
上記実施形態では、前記第1の機器および前記第2の機器の少なくとも何れか一方は、所定のアプリケーションを実行するアプリケーション実行手段を備えてもよい。前記間隔設定手段は、前記アプリケーション実行手段によって実行されるアプリケーションの種類、及び/又は、アプリケーションの実行状況に応じて、前記時間間隔を設定してもよい。
上記によれば、例えば、実行されるアプリケーションの種類によって時間間隔を異ならせることができる。また、アプリケーションの実行状況に応じて、時間間隔を異ならせることができる。ここで、アプリケーションの実行状況は、アプリケーションの実行開始からの経過時間、ユーザの操作に基づくアプリケーションの状態であってもよい。例えば、ゲームアプリケーションでは実行中のシーンやステージ、エリア、ミッション等、アプリケーションが休止状態か否か等であってもよい。
上記実施形態では、前記間隔設定手段は、前記アプリケーション実行手段によって実行されるアプリケーションの種類、及び/又は、アプリケーションの実行状況に応じて、前記時間間隔を変更してもよい。
上記によれば、既に設定されている時間間隔を、アプリケーションの種類及び/又はアプリケーションの実行状況に応じて変更することができ、アプリケーションの種類や実行状況に応じて、適切な時間間隔に変更することができる。
上記実施形態では、前記所定のアプリケーションは、複数の部分を有し、前記間隔設定手段は、実行されるアプリケーションの部分に応じて、前記時間間隔を変更してもよい。
上記によれば、アプリケーションの部分に応じて、時間間隔を変更することができる。例えば、ゲームアプリケーションが行われる場合に、ゲームのシーンに応じて時間間隔を変更することができる。
上記実施形態では、前記間隔設定手段は、前記所定のアプリケーションが実行されている状態から休止状態に移行する場合、前記時間間隔を変更してもよい。
上記によれば、アプリケーションが休止状態に移行する場合に、時間間隔を設定することができる。例えば、アプリケーションが休止状態になる場合に、時間間隔を長くすることができ、休止状態において電力消費を抑制することができる。
上記実施形態では、前記間隔設定手段は、前記第1の機器の前記操作手段に対する操作の頻度に応じて、前記時間間隔を設定してもよい。
上記によれば、操作手段に対する操作の頻度に応じて、前記時間間隔を設定することができる。例えば、操作手段が頻繁に操作される場合には、時間間隔を短くすることができ、操作に対する遅延を抑制することができる。
上記実施形態では、前記第2の機器も操作手段を備えてもよい。前記間隔設定手段は、前記第1の機器の操作手段および前記第2の機器の操作手段のうちの少なくとも何れか一方に対する操作の頻度に応じて、前記時間間隔を設定してもよい。
上記によれば、第1の機器及び/又は第2の機器の操作手段に対する操作の頻度に応じて、第1の機器と第2の機器との間の通信の時間間隔を設定することができる。
上記実施形態では、前記第1の機器には機能の異なる複数の種類があり、前記間隔設定手段は、前記第1の機器の種類に応じて、前記時間間隔を設定してもよい。
上記によれば、第2の機器と接続される第1の機器の種類に応じて、時間間隔を異ならせることができる。例えば、第1の機器が有する機能に応じて、時間間隔を異ならせることができる。
上記実施形態では、前記第2の機器には機能の異なる複数の種類があり、前記間隔設定手段は、前記第2の機器の種類に応じて、前記時間間隔を設定してもよい。
上記によれば、第2の機器の種類に応じて、第1の機器と第2の機器との間の通信の時間間隔を異ならせることができる。
上記実施形態では、前記第1の機器および前記第2の機器の少なくとも何れか一方は、所定のアプリケーションを実行するアプリケーション実行手段を備えてもよい。前記所定のアプリケーションは複数の機器を用いて実行され、前記間隔設定手段は、前記所定のアプリケーションが行われる機器の数に応じて、前記時間間隔を設定してもよい。
上記によれば、複数の機器を用いてアプリケーションが実行される場合に、機器の数に応じて上記時間間隔を設定することができる。例えば、複数の機器を用いてゲームが行われる場合には、当該ゲームに参加するプレイヤの数によって時間間隔を設定することができる。
上記実施形態では、前記無線システムは、前記第1の機器および第2の機器とは異なる第3の機器を含んでもよい。前記第2の機器は、前記第3の機器と通信を行う。前記間隔設定手段は、前記第2の機器と前記第3の機器との間の通信の状況に応じて、前記第1の機器と第2の機器との間の通信における前記時間間隔を設定してもよい。
上記によれば、第2の機器と第3の機器との通信の状況によって、第1の機器と第2の機器との間の通信の時間間隔を設定することができる。ここで、「第2の機器と第3の機器との通信の状況」は、第2の機器と第3の機器との通信の有無、第2の機器と第3の機器との通信の頻度、第2の機器と第3の機器との間で送受信されるデータの量等であってもよい。
上記実施形態では、前記第2の機器をマスターとし、前記第1の機器をスレーブとして、前記第1の機器と前記第2の機器との接続が確立され、マスターとして動作する前記第2の機器が前記間隔設定手段を備えてもよい。
上記によれば、マスターとして動作する第2の機器が前記時間間隔を設定することができる。
上記実施形態では、前記第1の機器および前記第2の機器の少なくとも何れか一方は、前記第1の機器と前記第2の機器との接続における許容期間を設定する許容期間設定手段を備えてもよい。前記第2の機器は、前記第1の機器と接続された状態において、所定の時間間隔で所定のパケットを前記第2の機器に送信する。また、第1の機器は、前記第2の機器と接続された状態において、前記許容期間に基づいて、前記第2の機器からの前記所定のパケットに対する応答を前記第2の機器に返すか否かを判定する。
上記によれば、第1の機器と第2の機器との間の接続には許容期間が設定される。第1の機器は、第2の機器に対する応答を送信するかどうかを判定することができる。これにより、第1の機器は、無駄な通信を省略して電力消費を抑制することができる。ここで、許容期間は、例えば、後述するスレーブレイテンシーのように所定の時間間隔で行われる第1の機器と第2の機器との間の通信の回数(例えば、コネクションイベントの回数)によって定められてもよいし、時間によって定められてもよい。
上記実施形態では、前記第1の機器は、前記操作結果情報を、前記所定のパケットの対する応答に含めて送信してもよい。
上記によれば、第1の機器は、操作結果情報を所定のパケットに対する応答に含めて送信することができる。これにより、第1の機器は、操作結果情報を第2の機器に送信することができるとともに、第1の機器に応答を返すことができる。
上記実施形態では、前記第1の機器は、前記操作手段に対する操作の有無に応じて、前記操作結果情報を前記応答に含めて前記第2の機器に送信するか否かを判定し、前記操作手段に対する操作があった場合、前記操作結果情報を含む前記応答を前記第2の機器に送信すると判定してもよい。また、第1の機器は、前記操作手段に対する操作がなかった場合であっても前記応答を送信しない期間と前記許容期間とに基づいて、前記応答を前記第2の機器に送信すると判定してもよい。
上記によれば、操作手段に対する操作が有った場合には当該操作に応じた操作結果情報を前記応答に含めて第2の機器に送信することができる。また、例えば、操作手段に対する応答が無かった場合でも、前記応答を送信しない期間が前記許容期間を超える場合は前記応答を第2の機器に送信することができる。これにより、第1の機器は第2の機器との接続を維持しつつ、消費電力を抑えながら必要に応じて操作結果情報を第2の機器に送信することができる。
上記実施形態では、前記第1の機器および前記第2の機器の少なくとも何れか一方は、所定のアプリケーションを実行するアプリケーション実行手段を含んでもよい。前記許容期間設定手段は、前記アプリケーション実行手段によって実行されるアプリケーションの種類、及び/又は、アプリケーションの実行状況に応じて、前記許容期間を設定してもよい。
上記によれば、例えば、実行されるアプリケーションの種類によって許容期間を異ならせることができる。また、アプリケーションの実行状況に応じて、許容期間を異ならせることができる。
前記第1の機器および前記第2の機器の少なくとも何れか一方は、前記第1の機器と前記第2の機器との接続における接続維持期間を設定する接続維持期間設定手段を備えてもよい。前記第2の機器は、前記第1の機器と接続された状態において、所定の時間間隔で所定のパケットを前記第1の機器に送信する。また、第2の機器は、前記第1の機器と接続された状態において、前記第1の機器から前記所定のパケットに対する応答が無い期間と前記接続維持期間とに基づいて、前記第1の機器との接続を切断するかを判定する。
上記によれば、第2の機器は、第1の機器から前記応答が無い期間と前記接続維持期間とに基づいて、第1の機器との接続を維持するか、切断するかを判定することができる。例えば、第2の機器は、第1の機器からの応答が無い期間が前記接続維持期間を超えた場合、第1の機器との接続を切断してもよい(すなわち、第1の機器および第2の機器は接続状態から非接続状態に移行してもよい)。なお、接続維持期間は、例えば後述する接続監視タイムアウトのように時間によって定められてもよいし、所定の時間間隔で行なわれる第1の機器と第2の機器との間の通信の回数(例えば、コネクションイベントの回数)によって定められてもよい。
上記実施形態では、第3のタイミングで前記第1の機器と前記第2の機器との間の通信が行われてから前記間隔設定手段によって設定された時間間隔が到来した第4のタイミングで前記第1の機器と前記第2の機器の間の通信が行われてもよい。前記蓄積手段は、前記第3のタイミングから前記第4のタイミングまでの期間において前記操作手段に対して行われた複数の操作(第1のタイミングでの操作及び第2のタイミングでの操作)を蓄積してもよい。前記第1の機器の送信手段は、前記第4のタイミングで行われる通信において、前記蓄積手段によって蓄積された複数の操作を示す操作結果情報を前記第2の機器に送信してもよい。
上記によれば、第3のタイミングから第4のタイミングまでの操作を蓄積し、蓄積した操作を示す操作結果情報を第4のタイミングにおいて第2の機器に送信することができる。
上記実施形態では、前記第2の機器は、前記第1の機器の前記送信手段によって送信された操作結果情報に基づいて所定の処理を実行してもよい。
上記によれば、第2の機器は、第1の機器において行われた操作に基づいて所定の処理を行うことができる。例えば、第2の機器は、第1の機器において行われた操作に基づいて、当該操作の判定やゲーム処理を行うことができる。
上記実施形態では、前記第1の機器は、ユーザに対する出力を行う出力手段を更に備えてもよい。前記第2の機器は、前記所定の処理の実行結果を前記第1の機器に送信してもよい。前記第1の機器は、前記所定の処理の実行結果を受信し、当該実行結果に応じた出力を前記出力手段を用いて行ってもよい。
上記によれば、第1の機器は、第2の機器において行われた所定の処理の実行結果に応じて、ユーザに対して出力を行うことができる。例えば、ユーザに対する出力を行う出力手段としては、文字や画像を表示する表示装置、LED等の発光装置、音声を出力するスピーカ、振動を発生させるバイブレータ等が用いられてもよい。
上記実施形態では、前記第2の機器は、ユーザに対する出力を行なう出力手段を備え、当該出力手段を用いて前記所定の処理の実行結果に応じた出力を行ってもよい。
上記によれば、第2の機器は、第1の機器において行われた操作に基づいて、例えば画像や音声を出力することができる。
上記実施形態では、前記第1の機器と前記第2の機器とは、互いに接続された状態において所定の時間間隔で無線通信を行ってもよい。前記第2の機器は、前記所定の時間間隔で行われる通信において、前記所定の処理の実行結果を前記第1の機器に送信してもよい。
上記によれば、第2の機器は、所定の時間間隔で行われる通信において、所定の処理の実行結果を前記第1の機器に送信することができる。
上記実施形態では、前記第2の機器は、第1演出情報を前記第1の機器に送信してもよい。前記第1の機器は、前記第1演出情報を前記第2の機器から受信する受信手段と、前記受信手段によって受信された前記第1演出情報に基づいて第1演出を実行する第1演出実行手段とを備えてもよい。
上記によれば、第1の機器は、第2の機器から第1演出情報を受信したことに基づいて第1演出を実行することができる。
上記実施形態では、前記蓄積手段は、前記第1演出に応じて行われた前記複数の操作を蓄積してもよい。
上記によれば、第1の機器のユーザは、第1演出の応じた操作を行うことができ、当該第1演出に応じた複数の操作が第1の機器において蓄積される。
上記実施形態では、前記第2の機器は、所定の時間間隔で前記第1の機器に送信する接続を維持するための所定のパケットに、前記第1演出情報を含めて送信してもよい。前記第1の機器は、前記所定のパケットに対する応答に前記操作結果情報を含めて当該応答を前記第2の機器に送信してもよい。
上記によれば、接続を維持するための所定のパケットが第2の機器から第1の機器に所定の時間間隔で送信される。第2の機器は、当該所定のパケットに前記第1演出情報を含めて送信することができる。これにより、第2の機器は、所定のパケットを送信するだけで第1の機器との接続を維持するとともに、第1演出情報を第1の機器に送信することができる。
上記実施形態では、前記第2の機器は、操作判定手段と、処理手段とを備えてもよい。操作判定手段は、前記操作結果情報に基づいて、前記第1演出に応じた操作が前記第1機器において行われたか否かを判定する。処理手段は、前記操作判定手段による判定結果に基づいて所定の処理を行う。
上記によれば、第2の機器から第1の機器に第1演出情報が送信され、第1の機器において第1演出情報に基づく第1演出が行われる。第1演出に応じた操作が第1の機器において行われたか否かによって、第2の機器は所定の処理を行う。これにより、例えば、第1の機器と第2の機器とを用いたインタラクティブなアプリケーションを行うことができる。
上記実施形態では、前記第1の機器と前記第2の機器とは、互いに接続された状態において所定の時間間隔で無線通信を行ってもよい。前記第2の機器は、前記所定の時間間隔で行われる通信において前記第1演出情報を前記第1の機器に送信してもよい。前記第1の機器は、前記第1演出情報に基づく前記第1演出を、前記所定の時間間隔を跨いで実行してもよい。
上記によれば、第1の機器と第2の機器との通信が所定の時間間隔で行われ、第1の機器は、所定の時間間隔を跨いで第1演出を行う。これにより、第1の機器と第2の機器との間の通信の時間間隔よりも長い演出を第1の機器に行わせることができる。
上記実施形態では、前記第1演出情報には優先度が設定されてもよい。前記第1の機器は、優先度の高い前記第1演出情報に基づく演出を優先度の低い前記第1演出情報に基づく演出よりも優先して実行してもよい。
上記によれば、第2の機器から送信される第1演出情報に優先度を設定することができる。
上記実施形態では、前記第2の機器は、操作条件と第2演出情報とを前記第1の機器に送信してもよい。前記第1の機器は、前記操作条件と前記第2演出情報とを受信する受信手段と、前記操作条件を満たす操作が前記操作手段を用いて行われた場合、前記第2演出情報に基づいて第2演出を実行する第2演出実行手段とを備えてもよい。
上記によれば、第2の機器から操作条件と第2演出情報とを同時に第1の機器に送信することができ、第1の機器は、操作条件を満たす操作が行われた場合に、第2演出情報に基づいて第2演出を行うことができる。
上記実施形態では、前記第1の機器と前記第2の機器とは、互いに接続された状態において所定の時間間隔で無線通信を行ってもよい。前記第2の機器は、前記所定の時間間隔で行われる通信において前記操作条件を前記第1の機器に送信してもよい。前記操作条件は、前記所定の時間間隔を跨いで満たされる条件であってもよい。
上記によれば、第1の機器と第2の機器との通信が所定の時間間隔で行われ、操作条件は、所定の時間間隔を跨いで満たされる条件である。これにより、第1の機器と第2の機器との間の通信の時間間隔よりも長い期間において、操作条件を満たす操作が行われたか否かを判定することができる。
上記実施形態では、前記第2演出情報には優先度が設定されてもよい。前記第1の機器は、優先度の高い前記第2演出情報に基づく演出を優先度の低い前記第2演出情報に基づく演出よりも優先して実行してもよい。
上記によれば、第2の機器から送信される第2演出情報に優先度を設定することができる。
上記実施形態では、前記第1の機器は、振動、光、音の少なくとも何れか1つを用いて前記演出を行ってもよい。
上記によれば、比較的小さなデータで第1の機器に演出を行わせることができる。
上記実施形態では、前記操作手段は、操作ボタンであってもよい。前記蓄積手段は、前記操作ボタンに対して行われた複数回の操作を蓄積してもよい。前記送信手段は、前記操作ボタンに対して行われた複数回の操作を示す操作結果情報を前記第2の機器に送信してもよい。
上記によれば、第1の機器において、操作ボタンに対する複数の操作を蓄積して、第2の機器に当該複数の操作を示す操作結果情報を送信することができる。
上記実施形態では、前記操作手段は、タッチパネルであってもよい。前記蓄積手段は、前記タッチパネルに対して行われた第1の操作と、当該第1の操作とは別のタイミングで行われた第2の操作とを蓄積してもよい。前記送信手段は、前記タッチパネルに対して行われた前記第1の操作及び第2の操作を示す操作結果情報を前記第2の機器に送信してもよい。
上記によれば、第1の機器のタッチパネルに対して行なわれた複数の操作を蓄積して、第2の機器に送信することができる。ここで、タッチパネルに対する第1の操作は、例えばタッチパネルに対するタッチオンからタッチオフまでの一連の操作であってもよく、複数のタッチ位置として検出される。また、タッチパネルに対する第2の操作は、第1の操作とは異なるタイミングで行なわれた一連の操作であり、複数のタッチ位置として検出される。例えば、ユーザによってタッチパネル(画面)上で横方向に直線が描かれ、続いて円が描かれた場合、横方向の直線は「タッチパネルに対する第1の操作」であり、円は「タッチパネルに対する第2の操作」である。このようなタッチパネルに対して行なわれた複数の操作が第1の機器において蓄積され、当該蓄積された複数の操作が、第2の機器にまとめて送信される。
上記実施形態では、前記第1の機器及び前記第2の機器のうちの何れか一方の機器は、接続を確立するためのデータをブロードキャストで送信するブロードキャスト手段を備えてもよい。前記第1の機器及び前記第2の機器のうちの他方の機器が前記ブロードキャストで送信されたデータを受信したことに応じて、前記一方の機器と前記他方の機器との間の接続が確立されてもよい。
上記によれば、一方の機器からブロードキャストで接続を確立するためのデータを送信することにより、他方の機器と接続を確立することができる。
上記実施形態では、前記第1の機器が前記ブロードキャスト手段を備えてもよい。前記接続確立手段は、前記第2の機器をマスターとして、前記第1の機器をスレーブとして前記第2の機器と接続を確立してもよい。
上記によれば、スレーブとして動作する第1の機器から接続を確立するためのデータをブロードキャストで送信することができる。
上記実施形態では、前記第2の機器が前記間隔設定手段を備えてもよい。前記第2の機器の前記間隔設定手段は、前記第1の機器から前記ブロードキャストで送信されたデータを受信したことに応じて、前記時間間隔を設定し、当該設定した時間間隔を前記第1の機器に通知してもよい。
上記によれば、マスターとして動作する第2の機器が前記時間間隔を設定することができる。
上記実施形態では、前記第1の機器と前記第2の機器とは、互いに接続された状態において所定の時間間隔で通信を行ってもよい。前記第1の機器は、前記第2の機器と接続を確立する際に、前記第2の機器の時刻の精度情報を受信し、前記第2の機器からデータを受信する際に、前記所定の時間間隔と前記精度情報とに基づいて、前記第2の機器からのデータの受信を試みてもよい。
上記によれば、第1の機器は、第2の機器の時刻の精度情報を受信することができ、当該精度情報に基づいて、第2の機器からのデータを受信することができる。
上記実施形態では、前記第1の機器および第2の機器は、電波の周波数を切り替えながら前記無線通信を行ってもよい。
上記によれば、周辺に電波を送信する機器があっても電波の干渉を避けることができる。
上記実施形態では、前記第1の機器と前記第2の機器との間の通信の規格は、Bluetooth Low Energyであってもよい。
上記によれば、BLE規格を用いて第1の機器および第2の機器の消費電力を抑えることができる。
他の実施形態では、無線通信を行うことが可能な無線機器であって、無線機器は、ユーザによって操作される操作手段と、蓄積手段と、送信手段とを備えてもよい。蓄積手段は、前記操作手段に対して第1のタイミングで行われた操作と当該第1のタイミングとは異なる第2のタイミングで行われた操作とを含む複数の操作を蓄積する。送信手段は、前記蓄積手段によって蓄積された複数の操作を示す操作結果情報を前記他の機器に無線で送信する。
他の実施形態では、複数の機器の間で接続を確立することにより所定のゲーム処理を行う無線システムであって、当該無線システムは第1の機器と第2の機器とを含んでもよい。前記第2の機器は、間隔設定手段と、許容期間設定手段と、接続維持期間設定手段と、第2送信手段と、第2受信手段と、第2制御手段と、判定手段とを備える。間隔設定手段は、所定の時間間隔を設定する。許容期間設定手段は、所定の許容期間を設定する。接続維持期間設定手段は、所定の接続維持期間を設定する。第2送信手段は、前記第1の機器と接続された状態において、前記間隔設定手段によって設定された所定の時間間隔で所定のパケットを前記第1の機器に送信する。第2受信手段は、前記所定のパケットに対する応答パケットを前記第1の機器から受信する。前記第2制御手段は、前記応答パケットに基づいて前記ゲーム処理を制御する。判定手段は、前記第1の機器から前記応答パケットを受信しなかった期間と前記接続維持期間とに基づいて、前記第1の機器との接続を維持するか、前記第1の機器との接続を切断するかを判定する。前記第1の機器は、第1受信手段と、第1制御手段と、応答判定手段と、第1送信手段とを備える。第1受信手段は、前記所定の時間間隔で送信される前記所定のパケットを前記第2の機器から受信する。第1制御手段は、前記所定のパケットに基づいて前記ゲーム処理を制御する。応答判定手段は、前記ゲーム処理の実行状況に応じて、前記応答パケットを前記第2の機器に送信するか否かを判定する。第1送信手段は、前記応答判定手段によって前記応答パケットを送信すると判定された場合、前記応答パケットを前記第2の機器に送信する。前記所定の時間間隔、前記所定の許容期間、及び、前記所定の接続維持期間のうちの少なくとも何れか1つは、前記ゲーム処理に応じて設定される。
上記によれば、第1の機器と第2の機器とが接続を確立し、第1の機器と第2の機器との間でゲーム処理を行う。具体的には、第1の機器と第2の機器とは、設定された所定の時間間隔、所定の許容期間、所定の接続維持期間(これらを接続パラメータという)に基づいて通信を行う。また、ゲーム処理は、第2の機器からの所定のパケット、第1の機器からの応答パケットに基づいて行なわれる。そして、ゲーム処理に応じて、3つの接続パラメータ(所定の時間間隔、所定の許容期間、所定の接続維持期間)のうち少なくとも何れか1つが設定される。これにより、ゲーム処理に応じて、接続パラメータを設定することができ、ゲームに応じたパラメータを設定することができる。
なお、ここで接続パラメータを「設定する」とは、新たな接続を確立する際に新たにパラメータを設定すること、及び、接続された状態でパラメータを新たな値に変更することの両方を意味してもよい。また、「所定の許容期間」は、時間によって定められてもよいし、例えば後述するスレーブレイテンシーのように所定の時間間隔で行なわれる第1の機器と第2の機器との間の通信の回数によって定められてもよい。また、「所定の接続維持期間」は、例えば後述する接続監視タイムアウトのように時間によって定められてもよいし、所定の時間間隔で行なわれる第1の機器と第2の機器との間の通信の回数によって定められてもよい。すなわち、ここでいう「期間」は、概念的に、時間だけでなく通信の回数も含まれる。
上記実施形態では、前記第1の機器と前記第2の機器とが接続された状態において、前記第2の機器がマスターであり、前記第1の機器がスレーブであってもよい。
上記によれば、第2の機器をマスター、第1の機器をスレーブとして2つの機器が接続され、マスター・スレーブ間の通信によってゲーム処理を行うことができる。
また、上記実施形態では、前記第1の機器と前記第2の機器とが接続された状態において、前記第1の機器の前記応答判定手段は、前記許容期間に基づいて、前記応答パケットを前記第2の機器に送信するか否かを判定してもよい。
上記によれば、第1の機器は、ゲーム処理の実行状況に加えて、許容期間に基づいて応答パケットを第2の機器に送信するか否かを判定することができる。例えば、第1の機器は、ゲーム処理の実行状況によって第2の機器に送信すべきデータがある場合には、応答パケットに当該データを含めて第2の機器に送信することができる。また、第1の機器は、送信すべきデータが無い場合であっても、第2の機器に応答パケットを送信しない期間が前記許容期間を超える場合には、応答パケットを第2の機器に送信すると判断することができる。これにより、ゲーム処理を進めることができるとともに、第1の機器の消費電力を抑えることができる。
上記実施形態では、前記第1の機器および第2の機器は、電波の周波数を切り替えながら無線通信を行ってもよい。
上記によれば、前記第1の機器および第2の機器は、電波の周波数を切り替えながら無線通信を行うことによりゲーム処理を実行することができる。このため、例えば、特定の周波数でノイズが発生した場合でも他の周波数に切り替えて通信を行うことができるため、ゲーム処理を進めることができる。
上記実施形態では、前記第2送信手段は、所定の情報を前記所定のパケットに含めて前記第1の機器に送信することが可能であってもよい。また、前記第1機器は、前記第1受信手段によって受信された所定のパケットに含まれる前記所定の情報に基づく操作を行うための操作手段をさらに備えてもよい。前記第1送信手段は、前記操作手段に対して行われた操作を示す操作結果情報を前記応答パケットに含めて前記第2の機器に送信することが可能であってもよい。
上記によれば、第1の機器が備える操作手段を用いた操作によって第1の機器と第2の機器との間でゲーム処理を実行することができ、2つの機器間でインタラクティブなゲームを行なうことができる。
上記実施形態では、前記第1の機器は、ユーザに対する出力を行なう出力手段を更に備えてもよい。前記第2送信手段は、前記ゲーム処理手段によるゲーム処理の結果を前記第1の機器に送信し、前記第1の機器は、前記出力手段を用いて前記ゲーム処理の結果に基づく出力を行ってもよい。
また、他の実施形態では、複数の機器の間で接続を確立することにより所定のゲーム処理を行う無線システムに含まれる無線機器であってもよい。当該無線機器は、所定の時間間隔を設定する間隔設定手段と、所定の許容期間を設定する許容期間設定手段と、所定の接続維持期間を設定する接続維持期間設定手段と、前記無線システムに含まれる他の機器と接続された状態において、前記間隔設定手段によって設定された所定の時間間隔で所定のパケットを前記他の機器に送信する送信手段と、前記所定のパケットに対する応答パケットを前記他の機器から受信する受信手段と、前記応答パケットに基づいて前記ゲーム処理を制御する制御手段と、前記他の機器から前記応答パケットを受信しなかった期間と前記接続維持期間とに基づいて、前記他の機器との接続を維持するか、前記他の機器との接続を切断するかを判定する判定手段と、を備える。そして、前記所定の時間間隔、前記所定の許容期間、及び、前記所定の接続維持期間のうちの少なくとも何れか1つは、前記ゲーム処理に応じて設定されてもよい。
また、他の実施形態では、複数の機器の間で接続を確立することにより所定のゲーム処理を行う無線システムに含まれる無線機器であってもよい。当該無線機器は、所定の時間間隔を設定する間隔設定手段と、所定の許容期間を設定する許容期間設定手段と、所定の接続維持期間を設定する接続維持期間設定手段と、前記無線システムに含まれる他の機器から前記所定の時間間隔で送信される所定のパケットを受信する受信手段と、前記所定のパケットに基づいて前記ゲーム処理を制御する制御手段と、前記他の機器から前記所定のパケットを受信しなかった期間と前記接続維持期間とに基づいて、前記他の機器との接続を維持するか、前記他の機器との接続を切断するかを判定する判定手段と、前記ゲーム処理の実行状況に応じて、前記所定のパケットに対する応答パケットを前記他の機器に送信するか否かを判定する応答判定手段と、前記応答判定手段によって前記応答パケットを送信すると判定された場合、前記応答パケットを前記他の機器に送信する送信手段と、を備える。前記応答判定手段は、前記許容期間に基づいて、前記応答パケットを前記他の機器に送信するか否かを判定してもよい。また、前記所定の時間間隔、前記所定の許容期間、及び、前記所定の接続維持期間のうちの少なくとも何れか1つは、前記ゲーム処理に応じて設定されてもよい。
上記によれば、第2の機器におけるゲーム処理の結果を第1の機器に送信することができ、第1の機器において当該ゲーム処理の結果に基づく出力を行うことができる。なお、ユーザに対する出力を行う出力手段としては、文字や画像を表示する表示装置、LED等の発光装置、音声を出力するスピーカ、振動を発生させるバイブレータ等が用いられてもよい。
他の実施形態では、操作手段を有する他の機器と無線通信を行うことが可能な無線機器であってもよい。前記無線機器は、間隔設定手段と、接続確立手段と、送信手段とを備える。間隔設定手段は、所定の時間間隔を設定する。接続確立手段は、前記他の機器と接続を確立する。送信手段は、前記接続確立手段によって接続が確立された後、前記間隔設定手段によって設定された前記所定の時間間隔で所定のパケットを前記他の機器に送信する。前記送信手段は、前記操作手段に対する操作に関する操作条件と、当該操作条件が満たされたときに前記他の機器において行われる演出の内容を示す演出情報とを、前記所定のパケットに含めて送信する。
上記によれば、無線機器は、操作条件と、当該操作条件を満たす操作が行われた場合に実行される演出を示す演出情報とをまとめて他の機器に送信することができる。
上記実施形態では、前記演出情報には、あるタイミングで送信された演出情報に基づく演出と別のタイミングで送信された演出情報に基づく演出とで、どちらを優先して前記他の機器に行わせるかを示す優先度が設定されてもよい。
上記実施形態では、前記操作条件は、前記操作手段に対する操作を受け付ける期間を含んでもよい。
上記実施形態では、前記演出情報は、前記他の機器において行われる演出のパターンを示す情報であってもよい。
上記実施形態では、前記操作条件は、前記所定の時間間隔を跨いで満たされる条件であってもよい。
上記実施形態では、前記演出情報に基づく演出は、振動、発光、および音の少なくとも何れか1つであってもよい。
上記実施形態では、上記無線機器は、前記他の機器から当該他の機器の操作手段に対して行われた複数の操作を示す操作結果情報を受信する受信手段と、前記受信手段によって受信された操作結果情報に基づいて所定の処理を実行する実行手段とを備えてもよい。
上記実施形態では、前記接続確立手段は、前記他の機器からブロードキャストで送信された接続を確立するためのデータを受信したことに応じて、前記他の機器と接続を確立してもよい。
上記実施形態では、前記無線機器と前記他の機器とは、電波の周波数を切り替えながら前記無線通信を行ってもよい。
上記実施形態では、前記無線機器と前記他の機器との間の無線通信の規格は、Bluetooth Low Energyであってもよい。
他の実施形態では、第1の機器と第2の機器との間で無線通信を行う無線システムであって、当該無線システムは、前記第1の機器または第2の機器の操作手段に対する操作に基づいて所定のゲーム処理を実行してもよい。前記第2の機器は、間隔設定手段と、許容期間設定手段と、接続維持期間設定手段と、第2送信手段と、第2受信手段と、第2制御手段と、判定手段と、を備える。間隔設定手段は、所定の時間間隔を設定する。許容期間設定手段は、所定の許容期間を設定する。接続維持期間設定手段は、所定の接続維持期間を設定する。第2送信手段は、前記間隔設定手段によって設定された所定の時間間隔で所定のパケットを前記第1の機器に送信する。第2受信手段は、前記所定のパケットに対する応答パケットを前記第1の機器から受信する。第2制御手段は、前記応答パケットに基づいて前記ゲーム処理を制御する。判定手段は、前記第1の機器から前記応答パケットを受信しなかった期間と前記接続維持期間とに基づいて、前記第1の機器との接続を維持するか、前記第1の機器との接続を切断するかを判定する。また、前記第1の機器は、第1受信手段と、第1制御手段と、応答判定手段と、第1送信手段と、を備える。第1受信手段は、前記所定の時間間隔で送信される前記所定のパケットを前記第2の機器から受信する。第1制御手段は、前記所定のパケットに基づいて前記ゲーム処理を制御する。応答判定手段は、前記許容期間に基づいて、前記応答パケットを前記第2の機器に送信するか否かを判定する。第1送信手段は、前記応答判定手段によって前記応答パケットを送信すると判定された場合、前記応答パケットを前記第2の機器に送信する。前記所定の時間間隔、前記所定の許容期間、及び、前記所定の接続維持期間のうちの少なくとも何れか1つは、前記ゲームの種類、及び/又は、前記ゲーム処理の実行状況、前記第1の機器または第2の機器の操作手段に対する操作の頻度、前記第1の機器または第2の機器の種類、および、前記無線システムに含まれる機器の数、のうちの少なくとも何れか1つに基づいて設定される。
上記によれば、ゲーム処理の実行状況、ゲームの種類、操作手段に対する操作の頻度、機器の種類や数等様々な状況によって前記時間間隔、許容期間、接続維持期間(これらを接続パラメータという)のうちの少なくとも何れか1つを設定することができる。なお、接続パラメータを「設定する」とは、新たな接続を確立する際に新たにパラメータを設定すること、及び、接続された状態でパラメータを新たな値に変更することの両方を意味してもよい。また、ここでいう「期間」は、概念的に、時間だけでなく通信の回数も含まれる。
他の実施形態は、上記無線機器(無線システム)に含まれる機器のそれぞれであってもよいし、各機器において実行されるプログラムであってもよい。また上記実施形態は、上記無線機器(無線システム)において実行される通信方法であってもよい。
本発明によれば、消費電力を抑えつつ通信を行うことができる。
以下、図面を参照して、一実施形態に係る無線通信システムについて説明する。本実施形態の無線通信システムは、無線通信が可能な複数の機器を含むシステムであり、各機器は、例えば、Bluetooth Low Energy(Bluetooth 4.x。以下、「BLE」と略する)規格に基づく通信を行うものとする。まず、BLE規格の概要について説明する。
(BLEの概要)
BLE規格は、クラシックBluetooth(登録商標)(Ver.1.x−3.x)よりも消費電力が低くなるように設計された通信規格である。BLEではクラシックBluetoothよりも最大送信電力を抑えたり、無線通信の動作時間や動作回数を減らしたりすることにより、消費電力が抑えられる。BLEでは、クラシックBluetoothと比較して、通信の時間間隔は長く、この時間間隔は変更可能である。また、BLEでは、クラシックBluetoothと同様に、1のマスターに対して複数のスレーブが接続可能なスター型のネットワークトポロジーが採用されている。
図1は、携帯端末10と、BLE端末20とを含む一般的なBLEネットワークの一例を示す図である。図2は、携帯端末10の内部構成の一例を示すブロック図である。図3は、BLE端末20の内部構成の一例を示すブロック図である。
図1に示すように、通信可能な範囲には携帯端末10と、BLE端末20とが存在し、これらの機器によってネットワークが形成される。BLEでは、通信可能な範囲は、例えば数m〜数十m以内である。
携帯端末10は、例えば、携帯電話、スマートフォン、タブレット端末等の所定のアプリケーションを実行可能な携帯型の情報処理装置である。図2に示すように、携帯端末10は、例えば、CPU(又は/及び他のプロセッサ)11と、RAM12と、記憶装置(不揮発性メモリやハードディスク等)13と、表示装置(液晶表示装置や有機EL表示装置等)14と、入力装置15と、BLE規格に基づく通信を行うためのBLE通信モジュール16と、バイブレータ17と、スピーカ18とを備える。また、携帯端末10は、図示しないバッテリーを備える。携帯端末10のCPU11は、RAM12と協働して、記憶装置13に記憶された(又はネットワーク経由で取得した)様々なアプリケーションプログラムを実行することが可能である。例えば、携帯端末10は、所定のアプリケーションとして、動画や静止画を再生可能なアプリケーション、メッセージアプリケーション、ブラウザアプリケーション、ゲームアプリケーション、BLE端末20から取得したデータを処理するアプリケーション等、様々なアプリケーションプログラムを実行可能である。携帯端末10は、入力装置15として、例えば、入力ボタン、タッチパネル、加速度センサや角速度センサ等の慣性センサ、カメラ、マイク等を備えてもよい。また、携帯端末10は、GPS(Global Positioning System)機能を備えてもよい。携帯端末10は、BLE端末20と比較して高度な情報処理を行うことが可能であり、そのため消費電力もBLE端末20と比較して高い。
BLE端末20は、例えば、携帯型の機器であり、典型的には携帯端末10よりも小さな機器である。BLE端末20は、典型的には携帯端末10よりも限定された機能しか有しておらず、比較的単純な処理を行う機器であってもよい。なお、BLE端末20は、携帯端末10と同様の高度な情報処理(アプリケーション)を実行可能な機器であってもよい。
図3に示すように、BLE端末20は、例えば、制御回路21と、入力ボタン22と、LED23と、バイブレータ24と、BLE通信モジュール25とを備える。BLE端末20は、携帯型の比較的小さな機器であって消費電力が低い機器であり、例えばボタン電池によって比較的長期間(数ヶ月〜数年)動作することが可能である。BLE端末20の各部は制御回路21上に実装されてもよい。例えば、BLE端末20は、携帯端末10から送信されたデータをBLE通信モジュール25を用いて受信して、LED23を発行させたり、バイブレータ24を振動させたりする。また、BLE端末20は、入力ボタン22に対して行われた操作に応じたデータをBLE通信モジュール25を用いて携帯端末10に送信する。なお、BLE端末20は、任意のアプリケーションプログラムを実行するためのCPU又は/及び他のプロセッサを備えてもよい。また、BLE端末20は、表示装置、スピーカ、マイク、カメラ等を備えてもよい。例えば、BLE端末20は、映像や音声に係るデータをBLE通信モジュール25を介して携帯端末10とやり取りしてもよい。また、BLE端末20は、ユーザからの入力を受け付ける入力手段として、入力ボタンの他にもタッチパネルや各種センサ(加速度センサ、角速度センサ等)等を備えてもよい。
図1に示すように、携帯端末10は、BLEネットワークにおけるセントラル(「マスター」とも言う)として機能し、BLE端末20は、ペリフェラル(「スレーブ」とも言う)として機能する。携帯端末10は、複数のBLE端末20(20a、・・、20x)と接続を確立することが可能であり、各接続においてセントラルとなる。セントラルは、ペリフェラルのネットワークへの参加を管理したり、ペリフェラルとの接続のおける各種パラメータを設定したりする。
ここで、BLE規格では、2.4GHz帯の電波を用いて通信が行われる。具体的には、40のチャネルを用いて通信が行われる。BLE規格では、40のチャネルのうち、3つのチャネル37〜39はアドバタイジングチャネルであり、その他のチャネル0〜36は、データチャネルである。アドバタイジングチャネルは、機器の発見や接続のために用いられたり、又は、自機の存在を他の機器に知らせるために用いたり、後述するように他の機器と接続を確立せずにデータをやり取りするために用いられるチャネルである。データチャネルは、接続状態(接続された状態)において用いられるチャネルであり、接続状態にある2つの機器間でデータの送受信を行うために用いられる。なお、クラシックBluetoothでは、79のチャネルを有し、そのうち32チャネルが発見用のチャネルである。
図4は、携帯端末10とBLE端末20とが接続されていない状態から接続された状態になるまでの通信の流れの一例を示す図である。
各機器は接続されていない状態(非接続状態)から接続状態になるまでに、その状態を変化させる。具体的には、図4に示すように、携帯端末10は、所定の時間間隔でスキャンを繰り返す。スキャンを行っている状態をスキャニング状態といい、その状態の機器をスキャナという。具体的には、携帯端末10は、スキャンと休止状態とを繰り返し、スキャンの実行中は、受信回路を作動させて他の機器からのアドバタイジングパケット(アドバタイジングPDU(プロトコル・データ・ユニット))の受信を試みる。携帯端末10は、スキャンの期間及び/又は休止状態の期間を変化させながらスキャンを実行してもよい。
一方、BLE端末20は、アドバタイジングインターバルの間隔でアドバタイジングを繰り返す。アドバタイジングを行っている状態をアドバタイジング状態といい、その状態の機器をアドバタイザという。具体的には、BLE端末20は、1回のアドバタイジング(アドバタイジングイベント)において、3つのチャネル37〜39を切り替えながらアドバタイジングパケットを送信する。このように、電波の周波数を切り替えながらアドバタイジングパケットが送信される。電波の周波数が切り替えられることを「ホッピング」という。
図4に示すように、携帯端末10のスキャンのタイミングとBLE端末20のアドバタイジングのタイミングとが一致すると、携帯端末10は、BLE端末20からのアドバタイジングパケットを受信する。携帯端末10は、BLE端末20からのアドバタイジングパケットを受信すると、BLE端末20に対してスキャン要求を送信する。このスキャン要求に対してBLE端末20がスキャン応答を返す。スキャン要求およびスキャン応答もまた、アドバタイジングチャネルを用いて送信される。スキャンの方式には「アクティブスキャン」と、「パッシブスキャン」とがあり、図4では、「アクティブスキャン」の例が示されている。「パッシブスキャン」では、図4に示す「スキャン要求」と「スキャン応答」は行われない。すなわち、パッシブスキャンでは、携帯端末10は、BLE端末20からのアドバタイジングパケットを受信すると、スキャン要求を送信せずに、コネクション要求をBLE端末20に送信する。
携帯端末10は、アドバタイジングパケットを送信した機器と接続を行う場合、アドバタイジングパケットを送信したBLE端末20に対して、コネクション要求を送信する。携帯端末10がBLE端末20にコネクション要求を送信すると、携帯端末10とBLE端末20との間の接続が確立される(携帯端末10及びBLE端末20の両者が「接続状態」に遷移する)。具体的には、携帯端末10がマスター(セントラル)となり、BLE端末20がスレーブ(ペリフェラル)となって、2つの機器が接続状態となる。ここでは、「接続が確立される」とは、2つの機器が接続状態に遷移したことを意味するものとする。例えば、携帯端末10はBLE端末20に対してコネクション要求を送信すると接続状態に遷移する。ここで、コネクション要求をBLE端末20が受信できなかった場合、BLE端末20は接続状態に遷移しない。BLE端末20が接続状態に遷移していなければ、携帯端末10は、その後のコネクションイベントにおけるデータパケットに対する応答をBLE端末20から受信できない。したがって、この場合、携帯端末10は、接続状態から非接続状態に遷移する。
なお、携帯端末10から送信されるコネクション要求には、接続のための複数のパラメータが含まれる。具体的には、コネクション要求には、携帯端末10のアドレス、BLE端末20のアドレス、アクセスアドレス、コネクションインターバル、スレーブレイテンシー、ホッピングに係る情報(ホップ数や使用するチャネルに係る情報)、接続監視タイムアウト(connection supervision timeout)等が含まれる。アクセスアドレスはランダムに決定されるものであり、接続を識別するためのものである。各機器は、接続相手にデータチャネルを用いてパケット(データパケット)を送信する場合、このアクセスアドレスをデータパケットに含めて送信する。各機器は、アクセスアドレスに基づいて、接続相手からのデータパケットかどうかを判断することができる。また、コネクションインターバル、スレーブレイテンシー、接続監視タイムアウトについては後述する。また、コネクション要求の後に、接続における暗号鍵を交換するためのペアリングやボンディングが行われてもよい。ペアリングでは、この接続において用いられる一時的な暗号鍵が生成・交換される。ボンディングでは、ペアリングの後に、永続的な暗号鍵の生成・交換が行われる。永続的な暗号鍵は各機器において不揮発性メモリ等に記憶される。
図5は、接続状態における携帯端末10とBLE端末20との通信の一例を示す図である。図5に示すように、2つの機器が接続状態である場合、2つの機器との間でコネクションイベントと呼ばれる同期した通信(同期通信)が所定の時間間隔で行われる。コネクションイベントの間隔を「コネクションインターバル(CI)」という。コネクションインターバルは、接続が確立される際にマスターによって設定される。携帯端末10とBLE端末20との接続におけるコネクションインターバルは、例えば500m秒である。コネクションインターバルは、7.5m秒〜4秒の範囲で設定されてもよい。
1回のコネクションイベントでは、1のデータチャネル(例えば、チャネル1)を用いて携帯端末10とBLE端末20との間でデータの送受信が行われる。あるコネクションイベントの次のコネクションイベントにおいては、周波数がホップする。例えば、あるコネクションイベントにおいてチャネル1が用いられた場合には、次のコネクションイベントにおいてチャネル3が用いられる。このコネクションイベント毎にホップするチャネルの数を「ホップ数」という。このホップ数は、携帯端末10とBLE端末20との間の接続が確立される際に設定される。
具体的には、前回のコネクションイベントのタイミングからコネクションインターバル(CI)が経過した場合、携帯端末10はBLE端末20に対してデータパケットを送信する。そして、このコネクションイベントにおいて、BLE端末20は、応答パケットを携帯端末10に送信する。携帯端末10及びBLE端末20は、コネクションイベントのタイミング以外は、無線通信を休止しデータの送受信を行わない。ここで、各機器には時刻の計測誤差があるため、BLE端末20は、この誤差を考慮して、コネクションイベントのタイミングを含む所定期間で携帯端末10からのデータパケットの受信を試みる。携帯端末10(マスター)の時刻の精度情報は、上記コネクション要求に含まれて、携帯端末10からBLE端末20に送信される。BLE端末20は、受信した携帯端末10の精度情報と自機の時刻の精度情報とに基づいて、受信回路を作動させるタイミングを計算する。
なお、クラッシックBluetoothにおいても周波数のホッピングは行われるが、クラッシックBluetoothでは0.625m秒のタイムスロット毎に周波数のホッピングが行われる。クラッシックBluetoothでは、0.625m秒のタイムスロットにおいて、例えばマスターはスレーブに対してパケットを送信する。このとき、マスターは、あるチャネルを用いてスレーブにパケットを送信し、これと同期してスレーブは、同じチャネルを用いてマスターからのパケットの受信を試みる。次のタイムスロット(0.625ms後)において、スレーブは、別のチャネルを用いてマスターに対して応答を返す。
これに対して、BLEでは、上述のように、1回のコネクションイベントにおいて、マスターからスレーブにパケットが送信されるとともに、スレーブからマスターに対して応答パケットが送信される。また、コネクションイベントの間隔(CI)は可変であり、例えば、携帯端末10及び/又はBLE端末20において実行されるアプリケーションの種類によって異なる。
ここで、図5に示すように、携帯端末10とBLE端末20との間の接続には、スレーブレイテンシーが設定される。スレーブレイテンシーは、BLE端末20(スレーブ)が無視(スキップ)することができるコネクションイベントの回数である。通常、各コネクションイベントにおいて携帯端末10はBLE端末20に対してデータパケットを送信し、BLE端末20は当該データパケットを受信したことに応じて応答パケットを返す。これにより、アプリケーションデータがやり取りされる。しかしながら、BLE端末20は、送信すべきデータが無い場合、スレーブレイテンシーによって定められる期間では、応答パケットを返さなくてもよい。これにより、BLE端末20の消費電力を低減することができる。
図5に示す例では、スレーブレイテンシーSLは「4」に設定されている。図5に示すように、時点t0におけるコネクションイベントにおいて、携帯端末10からBLE端末20にパケットが送信され、当該パケットに応じてBLE端末20から携帯端末10に応答パケットが送信される。CIが経過した時点t1におけるコネクションイベントでは、携帯端末10はBLE端末20にパケットを送信するものの、BLE端末20は、応答パケットを携帯端末10に送信しなくてもよい。さらに次の時点t2、t3、t4においても、BLE端末20は、応答パケットを携帯端末10に送信しなくてもよい。一方、時点t4からCIが経過した時点t5におけるコネクションイベントでは、BLE端末20は応答パケットを携帯端末10に送信する。さらに、その後の時点t6〜t9におけるコネクションイベントでは、BLE端末20は応答パケットを携帯端末10に送信しなくてもよいが、時点t10におけるコネクションイベントでは、BLE端末20は応答パケットを携帯端末10に送信する。なお、BLE端末20は、時点t1〜t4、t6〜t9におけるコネクションイベントにおいて、応答パケットを携帯端末10に送信してもよい。すなわち、スレーブレイテンシーは、スレーブとしてのBLE端末20がコネクションイベントを連続的に無視することができる最大回数である。
携帯端末10とBLE端末20との間で所定期間通信が行われなかった場合、2つの機器の間の接続は切断される(2つの機器が接続状態から非接続状態に遷移する)。2つの機器の間の接続が切断されるか否かは、接続監視タイムアウトに基づいて判断される。具体的には、前回の通信からの経過時間が接続監視タイムアウトを超えた場合、携帯端末10とBLE端末20との接続は切断される。ここで、例えば、接続監視タイムアウトは、スレーブレイテンシーSLよりも大きな値に設定される。このため、例えば図5において、携帯端末10が5回目のコネクションイベント(t5)においてBLE端末20からの応答パケットを受信しなかった場合でも、携帯端末10およびBLE端末20はすぐに非接続状態に遷移しない。これは、例えば、スレーブレイテンシーが「4」に設定されている場合に、BLE端末20が4回のコネクションイベント(t1〜t4におけるコネクションイベント)を無視して、5回目のコネクションイベント(t5)において携帯端末10に応答パケットを送信した場合でも、通信の状況により、その応答パケットを携帯端末10が受信できないことも想定されるからである。仮に、5回目のコネクションイベントにおいてBLE端末20が送信した応答パケットを携帯端末10が受信できなかった場合に携帯端末10とBLE端末20との接続が切断されると、頻繁に接続が切断されてしまう。このようなことを防止するために、接続監視タイムアウトは、スレーブレイテンシーSLよりも大きな値に設定され、通信が行われなかった期間が接続監視タイムアウトを超えた場合に、2つの機器は接続状態から非接続状態に遷移する(2つの機器の接続は切断される)。
具体的には、携帯端末10は、応答パケットを受信してからの経過時間を計測し、BLE端末20から応答パケットを受信しない期間が接続監視タイムアウトを超えた場合(又は接続監視タイムアウトに達した場合)、接続状態から非接続状態に遷移する。また、BLE端末20は、携帯端末10からのデータパケットを受信しない期間が接続監視タイムアウトを超えた場合(又は接続監視タイムアウトに達した場合)、接続状態から非接続状態に遷移する(または、BLE端末20は、携帯端末10に応答パケットを送信してからの経過時間を計測し、携帯端末10に応答パケットを送信しない期間が接続監視タイムアウトを超えた場合、接続状態から非接続状態に遷移してもよい)。すなわち、携帯端末10及びBLE端末20は、接続先からのパケットを受信しない期間が接続監視タイムアウトを超えた(又は達した)場合、接続状態から非接続状態に遷移する。
なお、前回の通信からの経過時間を計測し、コネクションイベントにおいて接続先からの通信を確認できない期間が接続監視タイムアウトを超えた(又は達した)場合、携帯端末10又はBLE端末20は接続状態から非接続状態に遷移せず、接続の中断があったと判断してもよい。例えば、接続の中断があったと判断した場合、携帯端末10及び/又はBLE端末20は、接続状態を維持したまま別の状態に遷移してもよい。例えば、BLE端末20は、接続の中断があったと判断した場合、携帯端末10からのパケットの受信を試みるものの、受信したパケットに対する応答は返さない状態に遷移してもよい。このパケットの受信を試みるタイミングは、例えば、接続状態におけるコネクションインターバルと同じ間隔であってもよいし、コネクションインターバルよりも長い又は短い間隔であってもよし、ランダムであってもよい。あるいは、BLE端末20は、接続の中断があったと判断した場合、携帯端末10からのパケットの受信を試みずに、携帯端末10に対してパケットを定期的に又はランダムに送信する状態に遷移してもよい。また、携帯端末10は、接続の中断があったと判断した場合、例えば、接続状態において設定されていたコネクションインターバルと同じ又は異なる間隔でBLE端末20にパケットを送信してもよいし、ランダムに決定したタイミングでBLE端末20にパケットを送信してもよい。あるいは、携帯端末10は、接続の中断があったと判断した場合、BLE端末20にパケットを送信せず、BLE端末20からのパケットの受信を試みてもよい。そして、接続状態を維持したまま別の状態に遷移した2つの機器は、(接続監視タイムアウトを超えた又は達した場合であっても)相手からのパケットを受信したことに基づいて再び接続状態に戻ってもよい。
接続監視タイムアウトは、「(SL+1)×コネクションインターバル」の2倍以上に設定される。例えば、コネクションインターバルが500m秒、スレーブレイテンシーが4に設定される場合、接続監視タイムアウトとして、500m秒×(4+1)×2=5秒が設定されてもよい。なお、接続監視タイムアウトは、時間によって定められてもよいし、コネクションイベントの回数によって定められてもよい。例えば、コネクションインターバルが500m秒、スレーブレイテンシーが4に設定される場合、接続監視タイムアウトとして「(4+1)×2=10」が設定されてもよく、この場合は時間に換算すると「5秒」となる。この場合、例えば、図5において、5回目のコネクションイベント(t5)において、携帯端末10がBLE端末20から応答パケットを受信しなかった場合でも、t6〜t10におけるコネクションイベントは実行される(この期間、2つの機器の接続は維持される)。時点t10におけるコネクションイベントにおいて、携帯端末10がBLE端末20から応答パケットを受信した場合は、2つの機器の接続は維持される。一方、5回目のコネクションイベント(t5)において携帯端末10がBLE端末20から応答パケットを受信しなかった場合において、時点t10におけるコネクションイベントにおいても携帯端末10がBLE端末20から応答パケットを受信しなかった場合(すなわち、t1以降の全てのコネクションイベントにおいて携帯端末10が応答パケットを受信しなかった場合)は、2つの機器の接続は切断される。なお、接続監視タイムアウトは、例えば100m秒〜32秒の範囲で定められてもよい。
なお、スレーブレイテンシーの定義範囲は例えば0〜499である。しかしながら、BLE規格は時刻同期型の通信であるため、2つの機器のクロックの累積誤差がある値を超える前に2つの機器は同期される必要がある。クロックの累積誤差を考慮した必要な通信間隔を実効接続インターバルという。実効接続インターバルは、「(SL+1)×コネクションインターバル」で表され、上記接続監視タイムアウトの半分以下に設定されなければならない。このため、スレーブレイテンシーの最大値は、接続監視タイムアウトの制限を受ける。
なお、スレーブレイテンシーに基づいて、携帯端末10とBLE端末20との接続を切断するか否かが判断されてもよい。例えば、携帯端末10は、BLE端末20からの応答パケットが無かった期間がスレーブレイテンシーを超えた場合、BLE端末20との接続を切断してもよい。
このように、BLE端末20は、所定の許容期間(スレーブレイテンシーが示すコネクションイベントの回数)だけ、携帯端末10からのデータパケットに対して応答パケットを送信しなくてもよい。これにより、BLE端末20は、消費電力を低減することができる。なお、この許容期間は、上述のようにコネクションイベントの回数によって表されてもよく、時間によって表されてもよい。
また、携帯端末10とBLE端末20とは、接続監視タイムアウトによって定められる期間内に互いに通信が行われれば、接続状態を維持する。一方、通信が行われなかった期間が接続監視タイムアウトによって定められる期間を超えた場合(又は達した場合)、携帯端末10とBLE端末20とは非接続状態に移行する。
以上のように、2つの機器との間で接続が確立される際は、コネクション要求が行われて(接続のためのパラメータがやり取りされて)、2つの機器は接続状態になる。2つの機器が接続状態である場合には、2つの機器の間でコネクションインターバルの間隔で通信が行われる。
なお、上述のように、携帯端末10は複数のBLE端末20と接続を確立することができる。例えば、携帯端末10が、BLE端末20aと接続された状態において、BLE端末20bとも接続を確立する(携帯端末10とBLE端末20bとが接続状態になる)。携帯端末10とBLE端末20aとの間の接続におけるコネクションインターバルと、携帯端末10とBLE端末20bとの間の接続におけるコネクションインターバルとは異なっていてもよいし同じでもよいが、各接続のコネクションイベントが時間的に重ならないように、携帯端末10は、最初のコネクションイベントのタイミングを決定する。
なお、携帯端末10は、接続を確立せずに他の機器(携帯端末10や他のBLE端末)と通信を行ってもよい。
図6は、携帯端末10がアドバタイジングを繰り返すことにより他の機器と接続せずにデータを送信する様子を示す図である。図6に示すように、携帯端末10は、アドバタイジングを繰り返し実行する。アドバタイジングパケットには、接続のためのアドバタイジングパケットと、他の機器にデータを送信するためのアドバタイジングパケットとがある。図6に示す例では、他の機器にデータを送信するためのアドバタイジングパケットが送信される。このアドバタイジングパケットには、アプリケーションで用いられるデータが含まれる。これにより、携帯端末10は、自機の周辺にある不特定の他の機器にデータをブロードキャストすることができる。
図7は、携帯端末10と他の機器とがスキャンとアドバタイジングを繰り返すことにより接続せずに通信を行う様子を示す図である。図7に示すように、携帯端末10は、スキャンとアドバタイジングを繰り返し実行する。スキャンとアドバタイジングの間にはスキャンもアドバタイジングも行わない休止期間がある。また、他の機器も同様にスキャンとアドバタイジングを繰り返し実行する。携帯端末10のスキャンと他の機器のアドバタイジングとが時間的に重なった場合、携帯端末10は他の機器からデータを受信することができる。また、携帯端末10のアドバタイジングと他の機器のスキャンとが時間的に重なった場合、携帯端末10は他の機器にデータを送信することができる。
このように、携帯端末10は、他の機器と接続しなくてもアドバタイジングパケットを送信することにより、他の機器との間で所定のデータの送受信を行うことができる。
次に、本実施形態における携帯端末10とBLE端末20とを用いて実行されるインタラクティブなアプリケーションについて説明する。図8は、本実施形態における携帯端末10とBLE端末20とを用いたインタラクティブなアプリケーションが実行された場合の処理の概略を示す図である。
図8に示すように、携帯端末10とBLE端末20とが接続された状態において、携帯端末10からBLE端末20に演出データが送信される(A)。この演出データには、BLE端末20において実行される演出の内容を示す演出情報が含まれる。
BLE端末20は、携帯端末10からの演出データを受信したことに応じて、第1演出を行うとともに、入力ボタン22に対する操作を受け付ける(B)。入力ボタン22に対する操作が受け付けられている間に入力ボタン22が操作されると、BLE端末20は、操作に応じた演出(第2演出)を実行する(C)。
次に、入力ボタン22に対する操作の有無を示す操作結果情報が、BLE端末20から携帯端末10に送信される(D)。ここでは、所定の期間において行われた一又は複数の操作の情報が、BLE端末20から携帯端末10に送信される。そして、携帯端末10は、BLE端末20からの操作結果情報に基づいて所定の処理を実行する(E)。例えば、携帯端末10は、操作結果情報に基づいてゲーム処理を行い、当該ゲーム処理の結果を示す画像を表示装置14に表示したり、ゲーム処理の結果に応じた音声をスピーカ18から出力したりする。
そして、携帯端末10は、所定の処理の実行結果をBLE端末20に送信する(F)。BLE端末20においては、携帯端末10による所定の処理の実行結果に応じた出力が行われてもよい。例えば、BLE端末20は、所定の処理の実行結果に応じて、LED23を発光させたり、バイブレータ24を振動させたりする。また、BLE端末20に表示装置やスピーカが設けられる場合は、携帯端末10による所定の処理の実行結果に応じた画像や音声が出力されてもよい。
図9は、図8に示す処理が行われる場合の通信の流れの一例を示す図である。
図9に示すように、携帯端末10は、コネクションイベントCE1のタイミングでBLE端末20に対して演出情報を含む演出データを送信する。なお、この演出情報を含む演出データは、1回のコネクションイベントにおいて携帯端末10からBLE端末20に送信されてもよいし、複数回のコネクションイベントに分けて送信されてもよい。携帯端末10からBLE端末20への送信される演出データの構造については、図10を参照して後に詳述する。
BLE端末20は、コネクションイベントCE1において演出データを受信すると、第1演出を実行する。具体的には、第1演出として、LED23を用いた演出と、バイブレータ24を用いた演出とが行われる。
また、携帯端末10から演出データを受信すると、BLE端末20は、入力ボタン22に対する操作を受け付けるボタン受付時間を設定する。当該ボタン受付時間内に入力ボタン22に対する操作が行われた場合に、第2演出が行われる。
また、ボタン受付時間内に入力ボタン22に対して操作が行われた場合、当該操作の内容を示す操作結果情報がBLE端末20から携帯端末10に送信される。具体的には、BLE端末20は、コネクションインターバル(CI)において入力ボタン22に対して行われた複数の操作を蓄積することができる。CIにおいて蓄積された複数の操作を示す操作結果情報は、次のコネクションイベントにおいてBLE端末20から携帯端末10に送信される。例えば、BLE端末20は、コネクションイベントCE1において携帯端末10から演出データを受信した場合、次のコネクションイベントCE2が発生するまで、入力ボタン22に対して行われた操作を蓄積する。次のコネクションイベントCE2が発生するまでに入力ボタン22が例えば2回押下された場合には、BLE端末20は、入力ボタン22が2回押下されたことを示す操作結果情報を、次のコネクションイベントCE2において携帯端末10に送信する。具体的には、BLE端末20は、コネクションイベントCE2において携帯端末10からデータパケットを受信すると、当該パケットに対する応答パケットに、入力ボタン22が2回押下されたことを示す操作結果情報を含めて送信する。さらに、コネクションイベントCE2から次のコネクションイベントCE3までの期間において行われた入力ボタン22に対する操作は、コネクションイベントCE3においてBLE端末20から携帯端末10に送信される。同様に、コネクションイベントCE3から次のコネクションイベントCE4までの期間において行われた入力ボタン22に対する操作は、コネクションイベントCE4においてBLE端末20から携帯端末10に送信される。
このように、BLE端末20は、所定の時間間隔(CI)において行われた入力ボタン22に対する操作を蓄積し、所定の時間間隔で行われるコネクションイベントにおいて、当該蓄積した操作を携帯端末10に送信する。すなわち、入力ボタン22に対して第1のタイミングで行われた操作と当該第1のタイミングとは異なる第2のタイミングで行われた操作とを含む複数の操作の情報がBLE端末20において蓄積される。そして、当該蓄積された複数の操作の情報が、BLE端末20から携帯端末10に送信される。これにより、入力ボタン22に対して操作が行われるごとに当該操作の情報がBLE端末20から携帯端末10に逐次送信される場合と比較して消費電力を抑えることができる。また、入力ボタン22に対して操作が行われるごとに当該操作の情報が逐次送信される場合、当該操作の情報が携帯端末10に届くまでの時間にバラつきが生じることがある。すると、携帯端末10側では、BLE端末20において各操作が正確にどのタイミングで行われたのかを知ることができない。しかしながら、本実施形態では、第1のタイミングで行われた操作と第2のタイミングで行われた操作とが蓄積され、蓄積された複数の操作の情報がBLE端末20から携帯端末10に送信される。このため、携帯端末10側では、第1のタイミングでの操作と第2のタイミングでの操作とでどれだけの時間差があるのかを正確に知ることができる。
図10は、図9のコネクションイベントCE1において携帯端末10からBLE端末20に送信される演出データDの構造の一例を示す図である。
図10に示すように、携帯端末10からBLE端末20に送信される演出データDには、基本情報DAと第1演出情報DBとが含まれる。
基本情報DAは、4オクテットで表される。基本情報DAには、ボタン受付時間と、第2演出情報と、優先度と、演出数とが含まれる。
基本情報DAのボタン受付時間は、入力ボタン22に対する操作を受け付ける時間(図9参照)である。ボタン受付時間は、操作条件の一例である。ここで、操作条件は、入力ボタン22に対する操作に関する条件である。操作条件としては、ボタン操作を受け付ける時間に加えて(又は替えて)、入力ボタン22及び/又はその他の入力装置を用いた操作の内容(操作の回数、操作のパターン等)であってもよい。操作条件を満たす操作がBLE端末20において行われると、第2演出情報に基づいて第2演出が行われる。
図10に示すように、ボタン受付時間は、256段階(8bit)で表され、1段階は50m秒と定義される。したがって、ボタン受付時間は、0秒〜12750m秒の範囲で設定される。本実施形態では、ボタン受付時間は、BLE端末20が演出データDを受信した時点から、第1演出の終了後の所定期間が終了するまでの時間である。すなわち、第1演出が終了した後の所定期間に入力ボタン22が操作されると第2演出情報に基づいて第2演出が行われるが、入力ボタン22に対する操作の受け付けは、演出データDを受信した時点から開始する。第1演出の実行中に入力ボタン22が操作された場合は、当該操作は無視される。すなわち、第1演出の実行中に入力ボタン22が操作されても、第1演出の終了後の所定期間に入力ボタン22が操作されなければ、第2演出は実行されない。なお、第1演出の実行中に入力ボタン22が操作された場合に、当該操作が記憶され、第1演出の終了後に、当該記憶された操作に基づいて第2演出が行われてもよい。
基本情報DAの第2演出情報は、入力ボタン22の操作時に行われる演出(第2演出)を示す情報である。第2演出情報は、16bitで表される。具体的には、第2演出情報は、「LED」情報、及び、「振動」情報を含む。「LED」情報は、LED23をどのように発光させるかを示す情報であり、12bit(=3×4bit)で表される。LED23は、青、緑、赤の3色のLEDを含み、BLE端末20は、各LEDを16段階(4bit)のうちの何れかの強さで発光させることができる。この「LED」情報によって3つの色のLEDの強さが指定されることで、LED23を任意の色で発光させることができる。また、第2演出情報の「振動」情報は、バイブレータ24をどのような強さで振動させるかを示す情報であり、3bit(8段階)で表される。
本実施形態では、第1演出情報DBに基づく第1演出が行われた後、第2演出情報の「LED」情報で示された態様でLED23が発光する。そして、「ボタン受付時間」内に入力ボタン22に対する操作が行われると、第2演出情報の「振動」情報で示された態様で、バイブレータ24が振動する。
基本情報DAの優先度は、BLE端末20が演出データDに基づく演出を実行しているときに、別の演出データDを携帯端末10からさらに受信した場合に、どちらの演出データDに基づく演出を優先するかを決定するための情報である。例えば、BLE端末20は、あるタイミングで携帯端末10から優先度1が設定された演出データD1を受信したとする。BLE端末20は、この優先度1が設定された演出データD1に基づいて演出を実行する。BLE端末20は、演出データD1に基づく演出を実行している間に、優先度2(優先度1より優先度が高い)が設定された演出データD2を携帯端末10からさらに受信した場合、実行中の演出データD1に基づく演出を中止し、演出データD2に基づく演出を実行する。
基本情報DAの演出数は、第1演出情報DBに含まれる演出の数を示す。演出数は5bitで表される。なお、第1演出情報DBに含まれる演出の数は、最大で30個である。
第1演出情報DBは、第1演出を示す情報であり、例えばユーザにボタン操作を促す演出を行うための情報である。第1演出情報DBは、演出情報DB1からDB30までの最大で30個の演出情報を含む。例えば、基本情報DAの演出数が「2」の場合には、第1演出情報DBには、演出情報DB1及びDB2が含まれる。演出情報DB1〜DB30のそれぞれは、3オクテットで表される。具体的には、1の演出情報DB1は、LED23の発光態様を示す「LED」情報(12bit)と、バイブレータ24を用いた振動の態様を示す「振動」情報(4bit)と、これらLED及び振動による演出の実行時間を示す「演出時間」情報(8bit)とを含む。1の演出情報DBに基づく演出は、最大で50m秒×255=12750m秒実行される。第1演出情報DBに複数の演出情報が含まれる場合、BLE端末20は、番号の若い順(演出情報DB1、DB2、DB3・・)に演出を実行する。
なお、演出数は最大で30であり、1つの演出情報DBは3オクテットであるため、第1演出情報DBの最大データ長は90オクテットである。例えば、BLE規格では、1つのパケットのペイロードの最大サイズは27オクテットである。このため、携帯端末10は、1つのパケットで全ての演出に関する情報を送信することができない場合がある。この場合は、携帯端末10は、1回のコネクションイベントにおいて、複数のデータパケットを送信する場合がある。具体的には、1つのパケットで全ての演出に関する情報を送信することができない場合、携帯端末10は、コネクションイベントのタイミングが到来すると、1つ目のデータパケットをBLE端末20に送信し、BLE端末20から応答パケットを受信し、このコネクションイベントにおいてさらに2つ目のデータパケットをBLE端末20に送信する。この場合は、携帯端末10は、1つ目のデータパケットに、1つ目のパケットに続けて2つ目のパケットを送信する旨の情報を含めてBLE端末20に送信する。さらに、携帯端末10は、2つ目のデータパケットに対する応答をBLE端末20から受信した後、このコネクションイベントにおいて3つ目のデータパケットをBLE端末20に送信する。このように、演出数が多くて1つのデータパケットに演出データDの全てを含めることができない場合、携帯端末10は、1回のコネクションイベントにおいて、複数のデータパケットをBLE端末20に送信してもよい。なお、携帯端末10は、複数回のコネクションイベントにわたって演出データDをBLE端末20に送信してもよい。演出データDが1つのデータパケットのペイロードに収まらない場合に、演出データDを1回のコネクションイベントにおいて複数のパケットに分けて送信するか、演出データDを複数のコネクションイベントにわたって送信するかは、次のコネクションイベントまでの時間によって決定される。例えば、携帯端末10は、送信すべきデータの量と、コネクションインターバルとに基づいて、1回のコネクションイベントにおいて複数のパケットを送信するか否か、今回のコネクションイベントでいくつのパケットを送信するかを判断する。なお、携帯端末10は、今回のコネクションイベントにおいて複数のパケットを送信しても全てのデータを送信することができない場合は、次のコネクションイベントにおいて残りのデータを送信する。
図11は、携帯端末10からBLE端末20に演出データDが送信された後のBLE端末20において行われる演出の一例を示す図である。図11に示すように、例えば、コネクションイベントCE1において、2つの演出情報DB1及びDB2を含む演出データD1が携帯端末10からBLE端末20に送信された場合、BLE端末20は、演出データD1に含まれる演出情報DB1及びDB2に基づいて第1演出を行う。具体的には、BLE端末20は、演出情報DB1に基づいてLED23を発光させるとともに、バイブレータ24を振動させる。演出情報DB1に基づく第1演出は、演出情報DB1に含まれる「演出時間」だけ行われる。演出情報DB1に基づく第1演出が終了した後、BLE端末20は、演出情報DB2に基づく第1演出を行う。演出情報DB2に基づく第1演出が終了すると、BLE端末20は、演出データD1に基づく一連の第1演出を終了する。第1演出が終了した後、第2演出情報の「LED」情報で示された態様でLED23が発光する。LED23が発光している間に(演出データD1を受信してから基本情報DAの「ボタン受付時間」が経過するまでに)ユーザが入力ボタン22を押下すると、第2演出情報の「振動」情報で示された態様でバイブレータ24が振動する(第2演出が行われる)。LED23が発光している間に入力ボタン22が押下されなかった場合は、バイブレータ24は振動しない(第2演出は行われない)。なお、LED23が発光している間に入力ボタン22が押下されなかった場合は、操作の失敗を示す態様でバイブレータ24が振動してもよいし、操作の失敗を示す態様でLED23が発光してもよい。
次に、コネクションイベントCE2において、携帯端末10からBLE端末20に対して、3つの演出情報DB1、DB2及びDB3を含む演出データD2が送信された場合、BLE端末20は、演出情報DB1、DB2及びDB3に基づいて第1演出を行う。図11に示すように、演出データD2に基づく一連の第1演出は、次のコネクションイベントCE3を跨いで行われる。演出データD2に基づく一連の第1演出が行われた後、演出データD2に含まれる第2演出情報の「LED」情報で示された態様でLED23が発光し、ユーザが入力ボタン22を押下すると、第2演出情報の「振動」情報で示された態様でバイブレータ24が振動する。
図12は、BLE端末20において入力ボタン22に対する操作が行われた場合にBLE端末20から携帯端末10に入力ボタン22に対する操作を示す操作結果情報が送信される様子を示す図である。
図12に示すように、コネクションイベントの間(CI)に行われた入力ボタン22に対する操作を示す操作結果情報は、次に発生するコネクションイベントにおいて、BLE端末20から携帯端末10に送信される。具体的には、携帯端末10からBLE端末20に対して演出データDが送信された場合、BLE端末20は、当該演出データDに含まれる「ボタン受付時間」に基づいて、入力ボタン22に対する操作を受け付ける。BLE端末20の制御回路21は、CIよりも短い時間間隔で入力ボタン22の操作状態を検出し、各時点の操作状態をメモリに保存する。例えば、CIが500m秒である場合、BLE端末20の制御回路21は、50m秒間隔で入力ボタン22の操作状態を検出する。そして、メモリに保存された各時点の操作状態を示す操作結果情報が、次のコネクションイベントにおいて、BLE端末20から携帯端末10に送信される。
例えば、BLE端末20は、コネクションイベントCE1とCE2との間に入力ボタン22が1回押された場合、当該ボタンが1回だけ押されたことを示す操作結果情報を、コネクションイベントCE2において携帯端末10に送信する。また、BLE端末20は、コネクションイベントCE2とCE3との間に入力ボタン22が2回押された場合、当該ボタンが2回押されたことを示す操作結果情報を、コネクションイベントCE3において携帯端末10に送信する。同様に、BLE端末20は、コネクションイベントCE3とCE4との間、入力ボタン22が継続して押されていた場合、当該ボタンが継続して押されていたことを示す操作結果情報を、コネクションイベントCE4において携帯端末10に送信する。
図13A〜図13Cは、操作結果情報の一例を示す図である。図13Aは、コネクションインターバルにおいて入力ボタン22が1回だけ押された場合の操作結果情報を示す図である。図13Bは、コネクションインターバルにおいて入力ボタン22が2回押された場合の操作結果情報を示す図である。図13Cは、コネクションインターバルにおいて入力ボタン22が長押しされた場合の操作結果情報を示す図である。
図13Aに示すように、操作結果情報は、例えば10bitで表される。操作結果情報の各bitは、50m秒毎の入力ボタン22の操作状態を示す。各bitの「1」は、入力ボタン22に対する操作が検知されたことを示し、各bitの「0」は、入力ボタン22に対する操作が検知されなかったことを示す。図13Aでは、1番目〜5番目のbitは「0」であり、6番目及び7番目のbitが「1」となっている。すなわち、図13Aでは、入力ボタン22に対する操作が受け付けられた時点から250m秒(=50m秒×5bit)経過した時点において、入力ボタン22が一瞬押下された場合が例示されている。
図13Bでは、2番目〜4番目のbitが「1」であり、8番目〜10番目のbitが「1」となっている。すなわち、図13Bでは、入力ボタン22に対する入力が受け付けられた時点から50m秒経過した時点において入力ボタン22が一瞬押下され、その後、入力ボタン22が押下された状態から元の状態に戻り、再び、入力ボタン22が押下された場合が例示されている。
一方、図13Cでは、全てのbitが「1」になっている。これは、コネクションインターバルにおいて、入力ボタン22が継続して押下されたことを示す。
図13A〜図13Cから明らかなように、携帯端末10は、BLE端末20から操作結果情報を受信することにより、CIにおいてBLE端末20の入力ボタン22が押下されたか否か、押下された回数、および押下された時間を認識することができる。携帯端末10は、この操作結果情報に基づいて、所定の処理(例えば、ゲーム判定及びゲーム判定の結果を表示する処理)を行う。
次に、携帯端末10とBLE端末20の使用例について説明する。図14は、携帯端末10とBLE端末20とを用いたゲームの一例を示す図である。図14に示す例では、携帯端末10において、あるイベントが発生した場合、携帯端末10からBLE端末20に対して上記演出データDが送信され、ゲームが開始される。図14に示すゲームは、BLE端末20において演出が行われた後、特定期間にユーザに入力ボタン22を操作させるゲームである。
図14に示すように、条件が成立すると所定のイベントが発生する。例えば、所定のイベントが発生する条件は、携帯端末10においてユーザによって所定の操作(ゲームの開始を指示する操作)が行われたこと、所定の時刻になったこと、携帯端末10が所定の位置に移動したこと(GPSにより検出される位置が予め定められた位置になったこと)等であってもよい。また、所定のイベントが発生する条件は、携帯端末10において実行中のゲームが特定の条件を満たしたこと(例えば、プレイヤキャラクタがゲーム空間の所定位置に到達したこと、ゲームにおけるある場面をクリアしたこと、アイテムが取得されたこと等)であってもよい。
所定のイベントが発生した後のコネクションイベントCE1において、演出データDが携帯端末10からBLE端末20に送信される。BLE端末20は、演出データDを受信したことに応じて、演出データDに含まれる第1演出情報DBを再生することにより第1演出を行う。例えば、第1演出は、複数のコネクションイベントにわたって行われる。第1演出が行われている間も、入力ボタン22に対する操作は受け付けられる。例えば、第1演出が行われている間に入力ボタン22が操作された場合には、その操作結果を示す操作結果情報Eが、コネクションイベントにおいてBLE端末20から携帯端末10に送信される。第1演出ではバイブレータ24が振動するため、第1演出が行われている間に入力ボタン22に対する操作が行われても、当該操作に応じて、第2演出は行われない(バイブレータ24は振動しない)。BLE端末20が演出データDを受信してから所定時間が経過すると、第1演出が終了する。図14に示すゲームでは、第1演出の終了から特定期間内に入力ボタン22が操作されたか否かによって、ゲームの成否が判定される。具体的には、第1演出の終了から特定期間内に入力ボタン22が操作された場合は「成功」であり、特定期間内に入力ボタン22が操作されなかった場合は「失敗」である。なお、入力ボタン22が操作された場合に、図14に示すように、第2演出(第2演出情報の「振動」情報に基づく演出)が行われる。第1演出が終了した後は、第2演出は、特定期間内に入力ボタン22が操作された場合でも、特定期間以外に入力ボタン22が操作された場合でも行われる。すなわち、ゲームの成否判定(特定期間内に入力ボタン22が操作されたか否かの判定)は、携帯端末10において行われるため、BLE端末20は、特定期間内に入力ボタン22が操作されたか否かに関わらず、入力ボタン22が操作された場合は、第2演出を実行する。
具体的には、BLE端末20は、上述のようにCIにおける入力ボタン22の操作を操作結果情報Eとして蓄積し、コネクションイベントにおいて操作結果情報Eを携帯端末10に送信する。携帯端末10は、コネクションイベントCE2〜CE5において受信した複数の操作結果情報Eに基づいて、第1演出が終了してからの特定期間に入力ボタン22が操作されたか否かを判定する。携帯端末10は、特定期間において入力ボタン22が操作されたと判定した場合は、「成功」と判定し、特定期間において入力ボタン22が操作されなかったと判定した場合は、「失敗」と判定する。「成功」と判定した場合、携帯端末10は、携帯端末10の表示装置14において「成功」を示す画像を出力してもよい。また、携帯端末10は、「成功」と判定した場合、次のコネクションイベントCE6においてBLE端末20に演出データDを送信し、BLE端末20は、当該演出データDに基づいて、「成功」を示す演出を行ってもよい。
また、図14に示すゲームの結果が「成功」である場合、点数が加算されてもよい。点数に応じて、携帯端末10で行われるゲーム(「メインゲーム」という)において、ユーザに有利な特典が付与されてもよい。例えば、携帯端末10においてメインゲームが実行されているときに、上記所定のイベントが発生し、図14に示すゲーム(「サブゲーム」という)が開始される。このサブゲームの結果に応じて点数が加算され、点数に応じてメインゲームにおいてユーザに有利な特典が付与される。例えば、メインゲームで利用可能な「アイテム」が付与されたり、メインゲームのプレイヤキャラクタの体力が増加したり、レベルが上昇したり、メインゲームを次のステージやシーンに進めることができたりしてもよい。
図15は、携帯端末10とBLE端末20とを用いた他のゲームの一例を示す図である。図15に示すゲームは、ユーザに所定のリズムで入力ボタン22を操作させるリズムゲームである。
図15に示すように、所定のイベントが発生した後のコネクションイベントCE1において、演出データD1が携帯端末10からBLE端末20に送信される。この演出データD1に基づいて、BLE端末20は、第1演出を行う。第1演出中(又は第1演出後)の特定期間において入力ボタン22が操作されると、リズムゲームが開始される。具体的には、コネクションイベントCE2において、BLE端末20から携帯端末10に操作結果情報Eが送信される。携帯端末10は受信した操作結果情報Eに基づいて、特定期間において入力ボタン22が操作されたか否かを判定する。
特定期間に入力ボタン22が操作されたと判定した場合、携帯端末10は、次のコネクションイベントCE3において、リズムゲームの内容を含む演出データD2をBLE端末20に送信する。演出データD2の優先度は、演出データDB2の優先度よりも高くてもよい。BLE端末20は、演出データD2を受信したことに応じて、第1演出を実行する。演出データD1に基づく演出が実行されている場合には、BLE端末20は、演出データD1の基づく演出を終了し、演出データD2に基づく第1演出を開始する。ここで、第1演出として、LED23の発光と振動とが複数回繰り返される。例えば、一定の時間間隔で発光と振動とが行われてもよい。第1演出が行われた後、ユーザは、第1演出と同じリズムで入力ボタン22を操作する。入力ボタン22が操作された場合には、第2演出(第2演出情報の「振動」情報に示される演出)が行われる。入力ボタン22に対する操作の操作結果情報Eは、各コネクションイベントにおいてBLE端末20から携帯端末10に送信される。
そして、携帯端末10は、リズムゲームが終了した後に、リズム判定を行う。具体的には、コネクションイベントCE4〜CE7において受信した複数の操作結果情報Eに基づいて、第1演出が終了した後の特定期間(図15では3つの特定期間)において入力ボタン22が操作されたか否かを判定する。この特定期間は、第1演出のリズムに合うように設定される。携帯端末10は、リズム判定の結果に応じて、点数を算出し、当該点数を表示装置14に表示してもよい。また、BLE端末20に表示装置が設けられる場合、次のコネクションイベントにおいて、携帯端末10がBLE端末20に点数の情報を送信し、BLE端末20の表示装置に当該点数が表示されてもよい。
図16は、携帯端末10とBLE端末20とを用いた他の応用例を示す図である。図16に示す応用例では、ユーザが携帯端末10及びBLE端末20を携帯して移動し、所定の位置に近づいた場合に携帯端末10からBLE端末20に対して演出データDが送信される。
具体的には、図16に示すように、ユーザは携帯端末10とBLE端末20とを所持して、例えば市街地を移動する。ユーザが特定の位置Pに近づいた場合、携帯端末10からBLE端末20に演出データD1が送信される。BLE端末20は、演出データD1を受信したことに応じて、例えばLED23を点滅させる。なお、携帯端末10が特定の位置に近づくにつれて、LED23が点滅する間隔が短くなるようにしてもよい。さらにユーザが移動して、携帯端末10が特定の位置Pに到達すると、携帯端末10からBLE端末20に演出データD2が送信される。この演出データD2は演出データD1よりも優先度が高い。BLE端末20は、演出データD2を受信したことに応じて、例えばLED23を点灯させる。そして、入力ボタン22が操作された場合、BLE端末20は振動する。
図17は、図16に示した応用例の処理の流れを示す図である。図17に示すように、ユーザが携帯端末10及びBLE端末20を所持して移動し、特定の位置に近づく(ステップS1)。具体的には、携帯端末10は、GPS機能を有し、自機の位置を検出することができる。携帯端末10は、自機の位置が予め定められた特定の位置を含む所定範囲内の場合、特定の位置に近づいたと判断する。例えば、携帯端末10は、自機の位置に関する位置情報を検出する位置検出部を備える。本実施形態においては、位置検出部は、GNSS(Global Navigation Satellite System)を用いて位置情報を検出する。位置検出部は、いわゆるGNSSセンサであり、例えばGPS(Global Positioning System)センサ(GPSモジュール)などである。ここで、「位置に関する位置情報」とは、位置を示す情報であってもよいし、位置を特定することが可能な情報であってもよい。位置情報は、例えば、緯度経度を示す情報であってもよいし、GPSの衛星から送信されてくる、位置を特定可能な情報(例えば、電波送信時の時刻情報や、衛星の軌道情報)であってもよい。なお、位置検出部における位置検出方法は任意であり、例えば、位置検出部は、無線通信設備からの電波に基づいて位置を検出してもよい。すなわち、位置検出部は、携帯電話基地局からの電波や、無線アクセスポイントからの電波に基づいて位置を検出してもよい。また、位置検出部は、携帯端末10とは異なる他の装置から携帯端末10の位置を表す情報を取得することによって位置を検出してもよい。例えば、BLE端末20が上記位置検出部を備え、携帯端末10がBLE端末20から位置を表す情報を取得してもよい。
次に携帯端末10は、演出データD1をBLE端末20に送信し(ステップS2)、これに応じてBLE端末20はLED23を点滅させる(ステップS3)。さらに移動して、携帯端末10が特定の位置に到達すると(ステップS4)、携帯端末10からBLE端末20に演出データD2が送信される(ステップS5)。この演出データD2に基づいて、BLE端末20はLED23を点灯させる。
次に、BLE端末20にて入力ボタン22が操作される(ステップS6)。当該操作に基づいて、BLE端末20は操作結果情報を携帯端末10に送信する(ステップS7)。
次に、携帯端末10は、受信した操作結果情報に基づいて、入力ボタン22に対する操作が所定の条件を満たしたか否かを判定する(ステップS8)。入力ボタン22に対する操作が所定の条件を満たしたと判定した場合、例えば、ゲームで用いられるアイテムが付与される(ステップS9)。例えば、携帯端末10は、所定時間内に入力ボタン22が押された場合や所定のパターンで入力ボタン22が押下された場合に、所定の条件を満たしたと判定してもよい。
以上のように、携帯端末10とBLE端末20とを用いて様々なゲームが行われる。携帯端末10とBLE端末20とは接続されており、携帯端末10からBLE端末20に対して演出データDが送信され、演出データDに基づいてBLE端末20において演出が行われる。また、BLE端末20において行われた操作の結果を示す操作結果情報が携帯端末10に送信される。携帯端末10は、操作結果情報に基づいてゲームの判定を行う。そして、携帯端末10は、判定結果を表示装置14に表示したり、BLE端末20に送信したりする。
このように、本実施形態では、携帯端末10とBLE端末20とを用いたインタラクティブなゲームが行われる。なお、ゲームに限らず、他のアプリケーションが行われてもよい。例えば、携帯端末10とBLE端末20との間でメッセージをやり取りするアプリケーションが行われてもよい。
(処理の詳細)
次に、携帯端末10及びBLE端末20において行われる処理の詳細について説明する。まず、図18〜図21を参照して携帯端末10において行われる処理について説明する。
(携帯端末10のCPU11によって行われるメイン処理)
図18は、携帯端末10のCPU11によって行われるメイン処理の詳細を示すフローチャートである。携帯端末10のCPU11は、記憶装置13に記憶された所定のアプリケーションプログラムを実行することにより、図18に示す処理を行う。
CPU11は、まず、所定のイベントが発生したか否かを判定する(ステップS101)。例えば、CPU11は、ユーザによってゲーム開始の指示が行われた場合(例えば、表示装置14に表示されたメニュー画面においてゲーム開始の指示が行われた場合)、所定のイベントが発生したと判定する。また、CPU11は、実行中のアプリケーションにおいて所定の条件が満たされた場合(例えば、実行中のメインゲームにおいて所定の条件が満たされた場合)、又は、携帯端末10が特定の位置に移動した場合、所定のイベントが発生したと判定してもよい。
CPU11は、ステップS101においてNOと判定した場合、再びステップS101の処理を実行する。
ステップS101においてYESと判定した場合、CPU11は、接続パラメータを設定する(ステップS102)。具体的には、CPU11は、後述するステップS108において開始するゲーム(アプリケーションの一例)の種類に応じて、BLE端末20との接続における各種パラメータを設定する。
より具体的には、CPU11は、接続パラメータとして、コネクションインターバル(CI)、スレーブレイテンシー(SL)、および接続監視タイムアウトを設定する。CI、SLおよび接続監視タイムアウトは、実行されるアプリケーションの種類によって異なる。例えば、ステップS108において開始するゲームの種類が、比較的低いレイテンシーを必要とするゲーム(比較的早いレスポンスを必要とするゲーム)である場合、CPU11は、比較的短い時間(例えば、10m〜100m秒)をCIとして設定するとともに、比較的小さい値をSLとして設定する。また、ステップS108において開始するゲームの種類が、比較的早い切断の検知を必要とするゲームである場合、CPU11は、比較的短い時間(例えば、1秒〜数秒)を接続監視タイムアウトとして設定する。比較的低いレイテンシーを必要とするゲームの例としては、アクションゲーム(例えば、レースゲームや格闘ゲーム等、ユーザの操作によってキャラクタ等が動作し表示に反映されるゲーム)が考えられる。すなわち、ユーザの操作に対して早いレスポンスが必要なゲームがBLE端末20と携帯端末10とを用いて行われる場合は、携帯端末10とBLE端末20との通信が短時間で頻繁に行われる必要がある。このため、このようなゲームが開始される場合には、CPU11は、携帯端末10とBLE端末20との通信の遅延が小さくなるように、CIを短くするとともにSLを小さくする。また、通信の遅延があっても問題が発生する可能性が低いゲーム(一例として、クイズゲームやロールプレイングゲーム等)が行われる場合には、CPU11は、比較的長い時間(例えば、500m秒や1000m秒)をCIとして設定するとともに、比較的大きな値をSLとして設定する。また、通信の遅延があっても問題が発生する可能性が低いゲーム(一例として、クイズゲームやロールプレイングゲーム等)が行われる場合には、CPU11は、比較的長い時間(例えば、数秒〜32秒の範囲)を接続監視タイムアウトとして設定する。
このように、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つは、実行されるアプリケーションの種類によって設定されてもよい。なお、他の形態では、CI、SLおよび接続監視タイムアウトの少なくとも何れか1つは、ユーザによって設定されてもよい。
また、CPU11は、携帯端末10及びBLE端末20において行われるゲーム(アプリケーションの一例)の実行状況に応じて、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つを設定してもよい。ここで、「ゲームの実行状況」とは、例えば、ゲームにおけるシーンやステージ、エリア、ミッション等であってもよい。すなわち、ゲームが複数の部分(シーン、ステージ、エリア、ミッション等)に分かれている場合、実行されるゲームの部分に応じて、CI、SLおよび接続監視タイムアウトが設定されてもよい。ゲームの各部分を実行するためのプログラムが用意され、当該各プログラムを携帯端末10及び/又はBLE端末20が実行することにより、ゲームの各部分が実行されてもよい。また、ゲームの各部分を実行するためのデータが用意され、各データを共通のプログラムによって処理することで、ゲームの各部分が実行されてもよい。すなわち、携帯端末10及び/又はBLE端末20を用いて実行されるゲームの部分に対応するプログラムの種類、又は、実行されるゲームの部分に対応するデータの種類に応じて、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つが設定されてもよい。例えば、既にゲームが実行されている場合において、当該ゲームにおけるステージが第1ステージから第2ステージに移行する場合、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つが新たに設定されてもよい。
また、「ゲームの実行状況」は、例えば、ゲームが実行されている状態か、休止状態かであってもよい。例えば、ゲームが実行されている状態から休止状態に移行した場合、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つが新たに設定されてもよい。休止状態では、ゲームの進行が一時停止し、例えば、ゲーム画面からメニュー画面(アプリケーションを起動したり機器の設定変更をしたりするための画面)に移る。休止状態ではゲームの途中経過はメモリに保存され、ゲームが再開されると、休止状態に移行する前の状態から引き続いてゲームが行われる。例えば、携帯端末10及びBLE端末20においてゲームが実行されている場合に、ユーザが他のプログラムを起動すると、実行中のゲームが休止状態になる。また、例えば、携帯端末10及びBLE端末20においてゲームが実行されている場合に、ユーザによって一時停止のボタンが操作された場合に、実行中のゲームが休止状態になる。また、例えば、ゲームが比較的処理の軽い場面(例えば、ユーザからの操作を受け付けない場面等)になった場合、ゲームが休止状態になってもよい。例えば休止状態においては、CI及び/又はSLが、ゲームの実行中よりも大きく(又は小さく)設定されてもよい。このように、ゲームの実行中にゲーム画面からメニュー画面に移った場合やユーザによって一時停止が指示された場合に、ゲームが休止状態に移行し、当該休止状態においては、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つが変更されてもよい。
また、CPU11は、例えば接続する機器(スレーブ)の種類に応じて、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つを設定してもよい。例えば、BLE端末20として、表示装置(例えばタッチディスプレイ)を備えない機器と、表示装置を備える機器とがある場合、表示装置を備えるか否かによってCI、SLおよび接続監視タイムアウトの値が設定されてもよい。また、例えば、BLE端末20として、特定の入力装置を備える機器と、特定の入力装置を備えない機器とがある場合、特定の入力装置を備えるか否かによってCI、SLおよび接続監視タイムアウトが設定されてもよい。すなわち、携帯端末10のスレーブとして接続される機器が有する機能に応じて、CI、SLおよび接続監視タイムアウトの値が設定されてもよい。また、マスターとしての携帯端末にも複数の種類があり、マスターの機器の種類(機種、機器が備える機能等)に応じて、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つが設定されてもよい。
なお、接続する機器の種類の判別方法としては、例えば次のような方法が考えられる。第1の方法としては、例えば、機器を識別するためのデバイスアドレスに機器の種別を示す番号を割り当てる方法である。BLE端末20がアドバタイジングを実行する際には、このデバイスアドレスを含むアドバタイジングパケットを送信する。携帯端末10がこのデバイスアドレスを含むアドバタイジングパケットを受信し、携帯端末10のCPU11は、デバイスアドレスに含まれる上記番号に基づいて、BLE端末20の種類を判別することができる。
また、接続する機器の種類の判別するための第2の方法としては、携帯端末10とBLE端末20との接続が確立された後に、BLE端末20から携帯端末10に機器の種類を示す情報を送信する方法である。具体的には、携帯端末10とBLE端末20との接続が確立された後、コネクションイベントにおいて、携帯端末10からBLE端末20にデータパケットが送信され、当該パケットに応じてBLE端末20から携帯端末10に応答パケットが送信される。例えば、BLE端末20は、この応答パケットのペイロードに、BLE端末20の種類を示す情報を含めて携帯端末10に送信する。
また、接続する機器の種類の判別するための第3の方法としては、BLE端末20が持つ機能(LED、スピーカ、振動子、センサ、入力装置、表示装置等)ごとに、サービスやキャラクタリスティックを分ける方法である。BLE規格では、異なるメーカの機器同士を接続するためにいくつかの標準サービスが定義されており、また、ユーザが独自にサービスを定義することもできる。例えば、ユーザが独自に定めたサービスにBLE端末20が持つ機能の有無または種類を示すキャラクタリスティックを追加する。携帯端末10はこのキャラクタリスティックの内容を参照することでBLE機器20の種類を判別することができる。
また、CPU11は、接続する機器(スレーブ)の数によって、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つを設定してもよい。例えば、複数のユーザのそれぞれがBLE端末20を有し、複数のBLE端末20が携帯端末10に接続されて、複数のユーザによってゲームが行われる場合を想定する。この場合、それぞれの機器は別のユーザによって操作され、複数人でゲームが行われる。このような複数人でゲームが行われる場合に、当該ゲームのプレイ人数(携帯端末10に接続されるBLE端末20の数、携帯端末10を含むシステムの中の機器の数)に応じて、CI、SLおよび接続監視タイムアウトが設定されてもよい。
なお、CPU11は、接続する機器(スレーブ)の種類に応じて、モードを設定し、当該設定したモードにて自機を動作させる。携帯端末10には、接続される機器の種類に応じたモードがある。携帯端末10のモードが接続される機器の種類に応じて設定されることにより、携帯端末10は接続された機器との間で通信を行うとともに、接続された機器に応じたゲーム処理を行うことができる。例えば、図3に示すBLE端末20が接続される場合には、当該BLE端末20の種類を識別する情報をBLE端末20から受信し、当該情報に基づくモードを設定する。これにより、携帯端末10は、BLE端末20が有するハードウェア(LED23やバイブレータ24等の出力装置、入力ボタン22等の入力装置)を用いたゲームを行うことができ、携帯端末10とBLE端末20とを用いたゲームを実行することができる。
また、CPU11は、接続する機器(スレーブ)の数に応じて、モードを設定する。携帯端末10には、接続される機器の数(プレイ人数等)に応じたモードがあり、モードに応じたゲームを実行する。例えば、携帯端末10は、2人プレイモードでゲームを実行したり、3人プレイモードでゲームを実行したりする。携帯端末10は接続された複数の機器と通信を行うことにより、複数人でプレイするゲームを実行することができる。また、携帯端末10に複数の機器(スレーブ)が接続される場合において、一人プレイのゲームを行なうこともできる。一人のプレイヤは、携帯端末10と接続された複数の機器を用いて入力(ボタン、タッチパネル、加速度センサや角速度センサ等の慣性センサ等を用いた入力)を行なったり、複数の機器を用いた出力(表示装置を用いた文字や画像の表示、スピーカを用いた音声の出力、バイブレータを用いた振動による出力、LEDを発光させることによる光の出力等)を行なったりすることができる。このように、一人でゲームをプレイする場合でも、接続する機器の数に応じて、モードが設定される。
また、CPU11は、他の機器との間の通信の状況に応じて、CI、SLおよび接続監視タイムアウトの少なくとも何れか1つを設定してもよい。例えば、携帯端末10がBLE端末20とは異なる第3の機器とBLE規格に基づく通信を行う場合(第3の機器との通信は接続状態で行なわれてもよいし、非接続状態で行なわれてもよい)と、第3の機器と通信を行わない場合とで、異なるCI、SL、接続監視タイムアウトが設定されてもよい。すなわち、携帯端末10は、第3の機器との通信の有無に応じて、BLE端末20との間の接続におけるCI、SL、接続監視タイムアウトを設定してもよい。また、携帯端末10が第3の機器と通信を行う場合、その通信の頻度や第3の機器からの電波の状況等に応じて、BLE端末20との間の接続におけるCI、SLおよび接続監視タイムアウトが設定されてもよい。
また、CPU11は、BLE端末20との通信の状況(通信の頻度や送受信されるデータの量、電波の状況等)に応じて、当該BLE端末20との接続におけるCI、SLおよび接続監視タイムアウトの少なくとも何れか1つを設定してもよい。
なお、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つはBLE端末20(スレーブ)によって設定されてもよい。具体的には、上述のように実行されるアプリケーションの種類、アプリケーションの実行状況、BLE端末20の種類(BLE端末20が有する機能)、接続相手となる携帯端末10の種類、携帯端末10と接続される他の機器の数等に基づいて、BLE端末20(スレーブ)が、CI、SLおよび接続監視タイムアウトのうちの少なくとも何れか1つを設定してもよい。例えば、BLE端末20がSLを設定し、当該設定したSLを携帯端末10に通知してもよい。また、BLE端末20がSLを設定し、当該設定したSLは、携帯端末10に送信されなくてもよい。また、BLE端末20がCIを設定してもよいし、接続監視タイムアウトを設定してもよい。なお、BLE端末20が設定した当該CIまたは当該接続監視タイムアウトを携帯端末10に通知してもよい。このような通知を受信した後、携帯端末10は、例えば、BLE端末20からの通知に含まれるCI、SLまたは接続監視タイムアウトに従って、自らのCI、SLまたは接続監視タイムアウトを設定する。なお、その場合に、携帯端末10側において、当該BLE端末20から通知されたCI、SLまたは接続監視タイムアウトとは異なるCI、SLまたは接続監視タイムアウトが設定されようとしていた場合は、マスター側、すなわち、携帯端末10側の設定が優先されてもよい。マスター側の設定が優先される場合には、例えば、マスターである携帯端末10が、自らが設定したい(かつ、BLE端末20から通知されたCI、SLまたは接続監視タイムアウトとは異なる)CI、SLまたは接続監視タイムアウトをBLE端末20に対して通知し返し、当該携帯端末10が設定したいCI、SLまたは接続監視タイムアウトがBLE端末20において強制的に設定される。
なお、「CI、SLおよび接続監視タイムアウトを設定する」とは、携帯端末10とBLE端末20とが接続されていない状態において接続を確立する際にCI、SLおよび接続監視タイムアウトを設定すること、及び、携帯端末10とBLE端末20とが接続されている状態においてCI、SLおよび接続監視タイムアウトを新たに設定すること(変更すること)を含む。
ステップS102の処理の後、CPU11は、現在、BLE端末20と接続中か否かを判定する(ステップS103)。現在、BLE端末20と接続中でない場合(ステップS103:NO)、CPU11は、マスター側接続処理を行う(ステップS104)。ステップS104の処理は、携帯端末10をマスターとしてBLE端末20と接続を確立するための処理である。具体的には、CPU11は、BLE通信モジュール16に対して、BLE端末20と接続を確立するための命令を送る。このCPU11の命令には、ステップS102において設定された接続パラメータ(CI、SL、接続監視タイムアウト)が含まれる。このCPU11の命令に応じて、BLE通信モジュール16は、自機の周辺にあるBLE端末20と接続を試みる。BLE通信モジュール16によって行われるマスター側接続処理の詳細については、図20を参照して後に詳述する。
ステップS104に続いて、CPU11は、BLE端末20と接続されたか否かを判定する(ステップS105)。ステップS105でNOと判定した場合、CPU11は、再びステップS104の処理を行う。ステップS105でYESと判定した場合、CPU11は、ステップS108の処理を実行する。
一方、接続中であると判定した場合(ステップS103:NO)、CPU11は、現在の接続パラメータが、ステップS102で設定した接続パラメータと異なるかどうかを判定し(ステップS106)、異なると判定した場合(ステップS106:YES)、現在の接続パラメータを変更する(ステップS107)。具体的には、CPU11は、ステップS102で設定した接続パラメータ(CI、SL、接続監視タイムアウト)をBLE通信モジュール16に渡す。例えば、BLE通信モジュール16は、新たなCI、SLおよび接続監視タイムアウトをCPU11から取得した場合、後述するステップS144において、当該新たなCI、SLおよび接続監視タイムアウトをBLE端末20に送信する。これにより、携帯端末10とBLE端末20との間の接続におけるCI、SLおよび接続監視タイムアウトが変更される。なお、ステップS102で設定したCI、SLおよび接続監視タイムアウトが現在の値と同じである場合(ステップS106:NO)、CPU11は、これらの値を変更せずに、次にステップS108の処理を実行する。
例えば、あるアプリケーションを実行中に別のアプリケーションの実行を開始する場合、CPU11は、ステップS107において、当該別のアプリケーションの種類に応じて、現在のCI、SL、接続監視タイムアウトのうちの少なくとも何れか1つを変更する。例えば、クイズゲームを実行中にアクションゲームを実行する場合、CPU11は、CIを短くする。
また、例えば、あるゲームを実行中にメニュー画面に戻る操作がユーザによって行われた場合には、CPU11は、実行中のゲームを休止するとともに、メニュー画面を表示する。これに応じて、CPU11は、例えばCIを長くしてもよい。すなわち、CPU11は、実行中のアプリケーションが休止状態となった場合、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つを変更する。休止状態からゲームが再開された場合には、変更されたCI、SL、接続監視タイムアウトのうちの少なくとも何れか1つは変更前の値に戻される。
また、例えば、ゲームが複数の部分に分かれている場合、実行されるゲームの部分に応じて、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つが変更されてもよい。例えば、1つのゲームが複数のステージに分かれている場合、あるステージから別のステージに移ったことに応じて、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つが変更されてもよい。また、ゲームにおいて、あるエリアから別のエリアに移った場合、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つが変更されてもよい。また、1のゲームにおいて複数のミッション(特定の目的を達成するための小ゲーム)が行われる場合、ミッションゲームが行われたことに応じて、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つが変更されてもよい。
ステップS105でYESと判定した場合、ステップS106でNOと判定した場合、又は、ステップS107の処理を実行した場合、CPU11は、ゲーム(例えば、図14〜図16で示したゲーム)を開始する(ステップS108)。
ゲームが開始されると、CPU11は、図10で示した演出データDをセットする(ステップS109)。ここでセットされた演出データDは、携帯端末10とBLE端末20との接続におけるコネクションイベントにおいてBLE端末20に送信される。具体的には、BLE通信モジュール16が後述する図21のステップS144を実行することにより、演出データDが携帯端末10からBLE端末20に送信される。なお、CPU11は、ステップS109において、BLE端末20に送信すべき演出データDがある場合に、演出データDをセットし、BLE端末20に送信すべき演出データDがない場合は、何もせずに次のステップS110を実行する。
CPU11は、ステップS109の処理を実行した後、ゲーム処理を実行する(ステップS110)。ステップS110のゲーム処理では、BLE端末20から受信した入力ボタン22の操作結果情報に基づく処理が行われる。例えば、ステップS110のゲーム処理では、操作結果情報に基づく画像が生成されたり、操作結果情報に基づいてBLE端末20に行わせる演出の内容が決定されたりする。また、テップS110のゲーム処理では、ステップS108においてゲームが開始されてからの経過時間に応じて画像が生成されてもよい。ステップS110の処理の詳細については、図19を参照して後に詳述する。
ステップS110に続いて、CPU11は、表示処理を行う(ステップS111)。具体的には、CPU11は、ステップS110のゲーム処理の結果に応じた画像を表示装置14に表示させる。次に、CPU11は、ゲームを終了するか否かを判定する(ステップS112)。ゲームを終了すると判定した場合(ステップS112:YES)、CPU11は、図18に示す処理を終了する。ゲームを終了すると判定しなかった場合(ステップS112:NO)、CPU11は、ステップS109の処理を再び実行する。ステップS109〜ステップS112の処理が所定の時間間隔(例えば、1/60秒)で行われることにより、BLE端末20において演出が行われるとともに、例えば、BLE端末20の入力ボタン22に対する操作に応じた画像が携帯端末10の表示装置14に表示される。
なお、携帯端末10とBLE端末20との接続におけるコネクションインターバル(CI)は、携帯端末10の表示装置14の表示が更新される間隔(上記1/60秒)よりも長く設定される。このため、例えばBLE端末20の入力ボタン22に対する操作が行われた場合でも、そのボタン操作が即座に携帯端末10の表示装置14の表示に反映されず、若干の遅延があった後にそのボタン操作に応じた表示が行われる。また、そのボタン操作に応じて、携帯端末10がさらにBLE端末20に演出を行わせる場合には、BLE端末20においてボタン操作が行われてからさらに演出が行われるまでに遅延が発生する。しかしながら、上記ステップS102において例えばゲームアプリケーションの種類に応じてCIが決定されることにより、ユーザが許容できるように遅延を制御することができる。
(携帯端末10のCPU11によって行われるゲーム処理)
図19は、図18のステップS110におけるゲーム処理の詳細を示すフローチャートである。
CPU11は、まず、BLE通信モジュール16が操作結果情報を受信したか否かを判定する(ステップS121)。BLE通信モジュール16は、CPU11が所定の時間間隔(例えば1/60秒)でゲーム処理を行っている間、コネクションインターバルCI(例えば500m秒間隔)でBLE端末20と通信を行う。このBLE端末20との通信によって受信されたデータは、BLE通信モジュール16からCPU11に渡される。ステップS121では、CPU11は、BLE通信モジュール16がBLE端末20との通信によって操作結果情報を受信したか否かを判定する。
ステップS121においてYESと判定した場合、CPU11は、受信した操作結果情報に基づく処理を行う(ステップS122)。具体的には、CPU11は、ステップS109においてセットした演出データDに含まれる第1演出情報DBに応じた操作が、BLE端末20の入力ボタン22に対して行われたか否かを判定する。操作結果情報は、上述したように、例えば10bitで表されており、各bitは、例えば50m秒毎の入力ボタン22の操作状態を示す。したがって、CPU11は、操作結果情報の各bitが「1」か否かを判定することにより、コネクションインターバルにおいて入力ボタン22が押されたか否か、何回押されたか、どのくらいの時間押されたかを判定することができる。また、CPU11は、複数のコネクションイベントにおいて操作結果情報を受信した場合、複数の操作結果情報に基づいて、複数のコネクションイベントにわたる期間において入力ボタン22に対してどのような操作が行われたかを判定することができる。
例えば、図14に示すゲームが行われた場合には、CPU11は、操作結果情報に基づいて、第1演出の後の特定期間において入力ボタン22が操作されたか否かを判定することにより、ゲームの成否判定を行う。具体的には、CPU11は、ステップS109においてセットした演出データDがBLE端末20に送信されてからの経過時間と、BLE端末20から受信した操作結果情報とに基づいて、入力ボタン22が予め設定した特定期間に操作されたか否かを判定する。特定期間において入力ボタン22が操作された場合、CPU11は「成功」と判定する。特定期間において入力ボタン22が操作されなかった場合、CPU11は「失敗」と判定する。そして、CPU11は、成否判定の結果に基づいて、点数を加算(又は減算)したり、ゲームの結果を示す画像を生成したり、音声を出力したり、バイブレータ17を振動させたりする。また、CPU11は、成否判定の結果をBLE端末20に送信するために、当該成否判定の結果を示すデータをセットする。この成否判定の結果を示すデータは、BLE通信モジュール16によって次のコネクションイベントにおいてBLE端末20に送信される。成否判定の結果を示すデータに基づいて、BLE端末20において発光や振動による演出が行われてもよい。また、BLE端末20に表示装置が設けられる場合には、当該BLE端末20の表示装置に成否判定の結果に応じた画像が表示されてもよい。
また、例えば、図15に示すゲームが行われた場合には、CPU11は、演出データDがBLE端末20に送信されてからの経過時間と、操作結果情報に基づいて、所定のリズムに合った操作が行われたか否かを判定する。そして、CPU11は、判定結果に基づいて、点数を加算(又は減算)したり、リズムゲームの結果を示す画像を生成したりする。また、CPU11は、BLE端末20に当該リズムゲームの結果を示すデータをセットしてもよい。セットされたデータは、BLE通信モジュール16によって次のコネクションイベントにおいてBLE端末20に送信される。
ステップS122の処理を実行した場合、又は、ステップS121でNOと判定した場合、CPU11は、その他の処理を実行する(ステップS123)。例えば、CPU11は、操作結果情報を受信する前では、演出データDがBLE端末20に送信されてからの経過時間に応じた画像を生成してもよい。生成された画像は、上記ステップS111において表示装置14に表示される。また、CPU11は、例えば、携帯端末10の入力装置15に対する操作を検知し、当該操作に基づいてゲームに関する処理(点数の計算、画像の生成や音声の出力)を行ってもよい。
また、CPU11は、ステップS123において、操作結果情報に基づいて、携帯端末10とBLE端末20との間の接続のパラメータを変更してもよい。例えば、CPU11は、操作結果情報に基づいてBLE端末20の入力ボタン22の操作頻度を算出し、BLE端末20の入力ボタン22が頻繁に操作されていると判定した場合、その操作頻度に応じて、CIの値を現在よりも短く設定してもよい。また、CPU11は、入力ボタン22の操作頻度に応じて、SLや接続監視タイムアウトを変更してもよい。また、携帯端末10の入力装置15に対する操作の操作頻度を算出し、算出された操作頻度に基づいて、CI、SL、接続監視タイムアウトのうちの少なくとも何れか1つが変更されてもよい。変更されたCI、SL、接続監視タイムアウトは、次のコネクションイベントにおいてBLE端末20に通知される。当該通知を受信した後、BLE端末20は、例えば、携帯端末10から通知のあったCI、SLまたは接続監視タイムアウトに従って、自らのCI、SLまたは接続監視タイムアウトを設定する。
(携帯端末10のBLE通信モジュール16によって行われるマスター側接続処理)
次に、携帯端末10のBLE通信モジュール16によって行われる処理について説明する。図20は、BLE通信モジュール16によって行われるマスター側接続処理の詳細を示すフローチャートである。CPU11によって上記ステップS104が行われたことに応じて、BLE通信モジュール16は、図20に示す処理を実行する。図20に示す処理は、携帯端末10の通信可能範囲(例えば、数m以内)に存在するBLE端末20との間で接続を確立するための処理である。
BLE通信モジュール16は、まず、受信回路を作動させてアドバタイジングパケットの受信処理を行う(ステップS131)。具体的には、BLE通信モジュール16は、3つのチャネルを切り替えながら自機の周辺に存在する他の機器からのアドバタイジングパケットの受信を試みる。続いて、BLE通信モジュール16は、アドバタイジングパケットを受信したか否かを判定する(ステップS132)。具体的には、BLE通信モジュール16は、接続のためのアドバタイジングパケットを受信したか否かを判定する。
アドバタイジングパケットを受信しなかった場合(ステップS132:NO)、BLE通信モジュール16は、再びステップS131の処理を実行する。ステップS131の処理を繰り返し実行することにより、BLE端末20は、図4で示したようにスキャンと休止とを繰り返し実行し、アドバタイジングパケットの受信を試みる。なお、所定時間が経過してもアドバタイジングパケットを受信しなかった場合、BLE通信モジュール16は、図20に示す処理を終了する。
アドバタイジングパケットを受信した場合(ステップS132:YES)、BLE通信モジュール16は、アドバタイジングパケットを送信した機器に対してコネクション要求を送信する(ステップS133)。ここでは、BLE通信モジュール16は、BLE端末20からアドバタイジングパケットを受信したものとする。
具体的には、ステップS133において、BLE通信モジュール16は、上記ステップS102で設定されたパラメータ(CI及びSL)を含むコネクション要求をBLE端末20に送信する。
コネクション要求をBLE端末20に送信すると、BLE通信モジュール16は、接続状態に移行し(ステップS134)、BLE端末20との接続が確立される(ステップS135)。ここでは、携帯端末10がマスター(セントラル)となり、BLE端末20がスレーブ(ペリフェラル)となる。接続状態に移行した後、BLE通信モジュール16は、図21に示す接続状態の処理を行う。以下、接続状態における処理について説明する。
(携帯端末10のBLE通信モジュール16によって行われる接続状態の処理)
図21は、携帯端末10のBLE通信モジュール16によって行われる接続状態の処理の詳細を示すフローチャートである。図21に示すように、BLE通信モジュール16は、前回のコネクションイベントからCI(例えば、500m秒)が経過したか否かを判定する(ステップS141)。
前回のコネクションイベントからCIが経過したと判定した場合(ステップS141:YES)、BLE通信モジュール16は、演出データDがセットされているか否かを判定する(ステップS142)。この演出データDは、上述のようにCPU11がステップS109の処理を行うことによってセットされる。
演出データDがセットされていると判定した場合(ステップS142:YES)、BLE通信モジュール16は、データパケットに当該演出データDを含める(ステップS143)。
ステップS143の処理を実行した場合、又は、ステップS142でNOと判定した場合、BLE通信モジュール16は、データパケットをBLE端末20に送信する(ステップS144)。具体的には、BLE通信モジュール16は、データチャネル0〜36のうちの何れかを用いてデータパケットをBLE端末20に送信する。BLE通信モジュール16は、前回のコネクションイベントで用いたチャネルにホップ数を加えたチャネルを今回のコネクションイベントにおいて用いる。ステップS143の処理が実行された場合には、データパケットのペイロードには上記演出データDが含まれ、ステップS143の処理が実行されなかった場合には、ペイロードにはデータは含まれない。
なお、上記ステップS107やステップS123においてCPU11がCI及び/又はSLを変更した場合、BLE通信モジュール16は、当該新たなCI及び/又はSLの情報をパケットに含めてBLE端末20に送信する。以降は、変更後のCI及びSLに基づいて、コネクションイベントが行われる。
ステップS144に続いて、BLE通信モジュール16は、BLE端末20から応答パケットを受信したか否かを判定する(ステップS145)。BLE端末20から応答パケットを受信した場合(ステップS145:YES)、BLE通信モジュール16は、応答パケットに操作結果情報が含まれるか否かを判定する(ステップS146)。
応答パケットに操作結果情報が含まれる場合(ステップS146:YES)、BLE通信モジュール16は、当該操作結果情報をCPU11に渡す。この操作結果情報に基づいて、上述したステップS122の処理が行われる。
ステップS147の処理を実行した場合、又はステップS146でNOと判定した場合、BLE通信モジュール16は、変数Nに「0」を設定するとともに、変数Tをリセットする(ステップS148)。そして、BLE通信モジュール16は、再びステップS141に処理を戻す。ここで、「N」は、BLE通信モジュール16の内部メモリにおいて記憶される変数であり、携帯端末10とBLE端末20との間の接続においてBLE端末20から応答パケットを受信しなかったコネクションイベントの回数を示す。すなわち、「N」は、BLE端末20がコネクションイベントを無視(スキップ)した回数を示す。また、変数「T」は、BLE通信モジュール16の内部メモリにおいて記憶される変数であり、携帯端末10がBLE端末20から応答パケットを受信してからの経過時間を示す変数である。BLE通信モジュール16は、BLE端末20との接続を切断するか否かをこの変数「T」を用いて判定する。例えば、「T」は、時間経過に応じて加算されてもよいし、ステップS149の処理が行われる毎に1ずつ加算されてもよい。
一方、BLE端末20から応答パケットを受信しなかった場合(ステップS145:NO)、BLE通信モジュール16は、「N」に1を加算する(ステップS149)。
なお、携帯端末10のBLE通信モジュール16は、次のコネクションイベントのタイミングが到来する前に、今回のコネクションイベントにおいてステップS142〜ステップS145の処理を複数回実行してもよい。例えば、BLE通信モジュール16は、ステップS145においてBLE端末20から応答を受信した場合において、送信すべきデータが残っている場合、次のコネクションイベントまでの時間に基づいて、今回のコネクションイベントにおいてさらにデータパケットを送信するか否かを判定する。今回のコネクションイベントにおいてさらにデータパケットを送信すると判定した場合、BLE通信モジュール16は、再びステップS143及びステップS144を実行し、ステップS145を実行する。具体的には、BLE通信モジュール16は、今回のコネクションイベントにおいて複数回ステップS144及びS145の処理を実行する場合、同じデータチャネルを用いてパケットの送受信を行なう。すなわち、BLE通信モジュール16は、1回のコネクションイベントにおいて、同じデータチャネルを用いて複数のデータパケットを送信する。
ステップS149の処理を行った場合、BLE通信モジュール16は、変数「T」が接続監視タイムアウト以上か否かを判定する(ステップS150)。変数「T」が接続監視タイムアウト以上と判定した場合(ステップS150:YES)には、BLE通信モジュール16は、BLE端末20との接続を切断して非接続状態に移行し(ステップS151)、図21に示す処理を終了する。一方、Tが接続監視タイムアウトよりも大きいと判定しなかった場合には、BLE通信モジュール16は、処理をステップS141に戻す。ここで、「接続監視タイムアウト」は、上述のように、実効接続インターバル((SL+1)×CI)よりも大きな値であり、具体的には、(SL+1)×CIの2倍以上に設定される。このため、例えば変数「N」がSLより大きい場合でも(すなわち、BLE端末20から応答パケットを受信しなかった回数がSLより大きい場合でも)、ステップS148において変数「T」がリセットされてからの経過時間(BLE端末20から応答パケットを受信してからの経過時間)が接続監視タイムアウトを超えていない場合は、BLE通信モジュール16は、ステップS150においてNOと判定して、BLE端末20との接続を維持する。
なお、携帯端末10は、BLE端末20と接続している間にも、BLE端末20とは異なる他の機器と通信を行ってもよい。例えば、携帯端末10は、他の機器と接続を確立して当該他の機器と通信を行う。この場合、BLE通信モジュール16は、接続を確立した端末毎に図21の処理を行う。BLE通信モジュール16は、接続を確立する際に、同時に2つ以上の機器との間でコネクションイベントが発生しないように、各接続におけるコネクションインターバルを設定するとともに、最初のコネクションイベントのタイミングを調整する。また、携帯端末10は、他の機器と接続を確立せずに通信を行ってもよい。
携帯端末10がBLE端末20と接続している間にBLE端末20とは異なる他の機器と通信を行う場合、携帯端末10とBLE端末20との間の接続におけるCI、SLおよび接続監視タイムアウトの少なくともいずれか一つが変更されてもよい。例えば、携帯端末10がBLE端末20と接続している間に他の機器と通信を行う場合、携帯端末10とBLE端末20との接続におけるCI、SLおよび接続監視タイムアウトの少なくともいずれか一つの値を、現在の値よりも大きく(又は小さく)してもよい。
(BLE端末20の制御回路21によって行われるメイン処理)
次に、BLE端末20において行われる処理について説明する。図22は、BLE端末20の制御回路21によって行われるメイン処理の詳細を示すフローチャートである。制御回路21は、所定の時間間隔で図22に示す処理を実行する。例えば、制御回路21は、携帯端末10との間の接続におけるコネクションインターバル(例えば、500m秒)よりも短い間隔(例えば、50m秒)で図22に示す処理を実行してもよい。例えば、BLE端末20は、入力ボタン22の操作状態を検知する頻度と同じ頻度で図22に示す処理を行ってもよい。また、BLE端末20に表示装置が設けられる場合、BLE端末20は、当該表示装置の表示の更新頻度と同じ頻度で図22に示す処理を行ってもよい。
BLE端末20の制御回路21は、まず、携帯端末10と接続中か否かを判定する(ステップS201)。接続中であると判定した場合(ステップS201:YES)、制御回路21は、次にステップS204の処理を実行する。
携帯端末10と接続中でないと判定した場合(ステップS201:NO)、制御回路21は、スレーブ側接続処理を行う(ステップS202)。具体的には、制御回路21は、携帯端末10と接続を確立するために、BLE通信モジュール25に命令を送る。BLE通信モジュール25は、当該制御回路21の命令に応じて、図24に示す処理を実行する。図24については後に詳述する。
続いて、制御回路21は、ステップS202の処理の結果、携帯端末10と接続されたか否かを判定する(ステップS203)。ステップS203でYESと判定した場合、制御回路21は、次にステップS204の処理を実行する。ステップS203でNOと判定した場合、制御回路21は、ステップS202の処理を再び実行する。
次に、制御回路21は、ステップS204において演出制御処理を実行する。ステップS204の演出制御処理は、演出データDに基づいて、LED23やバイブレータ24を用いた演出を制御するための処理である。以下、ステップS204の演出制御処理の詳細について説明する。
(BLE端末20の制御回路21によって行われる演出制御処理)
図23は、図22のステップS204における演出制御処理の詳細を示すフローチャートである。図23に示すように、制御回路21は、演出データDに基づく演出を実行中か否かを判定する(ステップS211)。本実施形態では、制御回路21は、演出データDを受信してから当該演出データDに設定された「ボタン受付時間」が経過するまでの間、ステップS211においてYESと判定する。
演出データDに基づく演出を実行中であると判定した場合(ステップS211:YES)、制御回路21は、携帯端末10から新たに演出データDを受信したか否かを判定する(ステップS212)。具体的には、BLE通信モジュール25がコネクションイベントにおいて演出データDを受信した場合には、当該演出データDが制御回路21に渡される。制御回路21は、BLE通信モジュール25が新たな演出データDを受信したか否かを判定する。
新たに演出データを受信した場合(ステップS212:YES)、制御回路21は、受信した新たな演出データDの優先度が、実行中の演出に係る演出データDの優先度よりも高いか否かを判定する(ステップS213)。
受信した新たな演出データDの優先度が実行中の演出に係る演出データDの優先度よりも高いと判定した場合(ステップS213:YES)、制御回路21は、受信した新たな演出データDに基づく第1演出を実行する(ステップS214)。具体的には、制御回路21は、演出データDに含まれる第1演出情報DBに基づいて、LED23やバイブレータ24を用いた演出を行う。第1演出情報DBに複数の演出情報がある場合には、制御回路21は、先頭の演出情報から順に読み取って、各演出情報に基づく第1演出を実行する。
一方、演出データDに基づく演出を実行中でないと判定した場合(ステップS211:NO)、制御回路21は、携帯端末10から演出データDを受信したか否かを判定する(ステップS215)。携帯端末10から演出データDを受信したと判定した場合(ステップS215:YES)、制御回路21は、受信した演出データDに基づく第1演出を実行する(ステップS216)。携帯端末10から演出データDを受信したと判定しなかった場合(ステップS215:NO)、制御回路21は、図23に示す処理を終了する。
ステップS212でNOと判定した場合、ステップS213でNOと判定した場合、ステップS214の処理を実行した場合、又は、ステップS216の処理を実行した場合、制御回路21は、次にステップS217の処理を実行する。
ステップS217において、制御回路21は、入力ボタン22が操作されたか否かを判定する。
入力ボタン22が操作された場合(ステップS217:YES)、制御回路21は、操作結果情報として「1」をメモリにセットする(ステップS218)。一方、入力ボタン22が操作されていない場合(ステップS217:NO)、制御回路21は、操作結果情報として「0」をメモリにセットする(ステップS219)。
例えば、制御回路21のメモリには、操作結果情報を格納するための10bitの操作格納領域が設けられる。制御回路21は、操作格納領域の1bit目に「1」又は「0」をセットした後、次にステップS218又はステップS219の処理を実行すると、操作格納領域の2bit目に「1」又は「0」をセットする。制御回路21は、さらにその後、ステップS218又はステップS219の処理を実行すると、操作格納領域の3bit目に「1」又は「0」をセットする。上述のように、図22に示す処理は例えば50m秒毎に実行されるため、50m秒毎にステップS218又はステップS219の処理が行われる。したがって、50m秒毎の入力ボタン22の操作状態(「1」又は「0」)が操作結果情報として制御回路21のメモリに記憶される。
ステップS218に続いて、制御回路21は、第1演出が終了したか否かを判定する(ステップS220)。具体的には、制御回路21は、演出データDに含まれる第1演出情報DBのうち、全ての演出情報の再生が終了したか否かを判定する。制御回路21は、第1演出が終了した後は、ステップS220においてYESと判定する。第1演出が終了していないと判定した場合(ステップS220:NO)、制御回路21は、図23に示す処理を終了する。
ステップS220においてYESと判定した場合、制御回路21は、入力ボタン22の操作に応じた第2演出を実行する(ステップS221)。具体的には、制御回路21は、演出データDに含まれる第2演出情報の「振動」情報に基づいてバイブレータ24を振動させることにより、第2演出を実行する。なお、この入力ボタン22の操作に応じて行われる第2演出は、一定時間だけ行われる。
ステップS215でNOと判定した場合、ステップS219の処理を行った場合、ステップS220でNOと判定した場合、又は、ステップS221の処理を行った場合、制御回路21は、図23に示す処理を終了する。
(BLE端末20のBLE通信モジュール25によって行われるスレーブ側接続処理)
次に、BLE端末20のBLE通信モジュール25によって行われる処理について説明する。図24は、BLE端末20のBLE通信モジュール25によって行われるスレーブ側接続処理の詳細を示すフローチャートである。制御回路21によって上記ステップS202が行われたことに応じて、BLE通信モジュール25は、図24に示す処理を実行する。図24に示す処理は、BLE端末20の通信可能範囲に存在する携帯端末10との間で接続を確立するための処理である。
BLE通信モジュール25は、まず、送信回路を作動させてアドバタイジングを実行する(ステップS221)。具体的には、BLE通信モジュール25は、3つのチャネル37〜39を切り替えながら接続のためのアドバタイジングパケットをブロードキャストで送信する。
次に、BLE通信モジュール25は、携帯端末10が上記ステップS133において送信したコネクション要求を受信したか否かを判定する(ステップS222)。携帯端末10からコネクション要求を受信しなかった場合(ステップS222:NO)、BLE通信モジュール25は、ステップS221の処理を再び実行する。
コネクション要求を受信した場合(ステップS222:YES)、BLE通信モジュール25は、コネクション要求に含まれるCI、SL、接続監視タイムアウト、ホップ数、アクセスアドレス等を設定して接続状態に移行し(ステップS223)、BLE端末20と携帯端末10との間の接続を確立する(ステップS224)。ここでは、携帯端末10がマスター(セントラル)となり、BLE端末20がスレーブ(ペリフェラル)となる。接続状態に移行した場合は、BLE通信モジュール25は、図25に示す接続状態の処理を行う。以下、接続状態における処理について説明する。
(BLE端末20のBLE通信モジュール25によって行われる接続状態の処理)
図25は、BLE端末20のBLE通信モジュール25によって行われる接続状態の処理の詳細を示すフローチャートである。
図25に示すように、BLE通信モジュール25は、前回のコネクションイベントからCIが経過したか否かを判定する(ステップS231)。CIが経過していないと判定した場合(ステップS231:NO)、BLE通信モジュール25は、ステップS231の処理を再び実行する。なお、BLE通信モジュール25は、ステップS231において、実際には前回のコネクションイベントからCIよりも所定時間(時刻の計測誤差を考慮して算出される時間)だけ短い時間が経過したか否かを判定する。
前回のコネクションイベントからCIが経過したと判定した場合(ステップS231:YES)、BLE通信モジュール25は、携帯端末10が上記ステップS144で送信したデータパケットを受信する(ステップS232)。BLE通信モジュール25は、受信したパケットに含まれるデータを制御回路21に渡す。例えば、上記演出データDがパケットに含まれる場合、BLE通信モジュール25は、当該演出データDを制御回路21に渡す。
次に、BLE通信モジュール25は、送信すべきデータがあるか否かを判定する(ステップS233)。具体的には、BLE通信モジュール25は、上記操作結果情報がある場合、ステップS233においてYESと判定する。ここで、BLE通信モジュール25は、操作結果情報の各bitが全て「0」であっても、ステップS233においてYESと判定する。すなわち、入力ボタン22が操作されなかった場合でも、BLE通信モジュール25は、入力ボタン22が操作されなかったことを示す操作結果情報を、携帯端末10に送信する。
なお、BLE通信モジュール25は、操作結果情報の各bitが全て「0」の場合(入力ボタン22が操作されなかった場合)、ステップS233においてNOと判定してもよい。すなわち、入力ボタン22が操作されなかった場合は、入力ボタン22が操作されなかったことを示す操作結果情報は携帯端末10に送信されなくてもよい。携帯端末10は、操作結果情報を含む応答パケットを受信しなかった場合は、入力ボタン22が操作されなかったと判断することができる。
また、BLE通信モジュール25は、ステップS233において次のような処理を行ってもよい。具体的には、BLE通信モジュール25は、ゲームの実行状況に応じて、ステップS233においてYES又はNOと判定する。より具体的には、携帯端末10からBLE端末20に上記演出データDが送信されたことによって携帯端末10とBLE端末20とを用いてゲームが行われている場合、当該ゲームの実行状況に応じて、ステップS233においてYESと判定する(すなわち、応答パケットを携帯端末20に返すと判定する)。例えば、制御回路21は、受信した演出データDに基づいて、ボタン受付時間(図14、図15参照)を設定する。当該ボタン受付時間内では、BLE通信モジュール25は、ステップS233において常にYESと判定してもよい。また、ボタン受付時間内において、入力ボタン22の操作が行われた場合にのみ(操作結果情報の全てのbitが「0」でない場合)、BLE通信モジュール25は、ステップS233においてYESと判定してもよい。
ステップS233においてYESと判定した場合、BLE通信モジュール25は、データチャネル0〜36のうちの何れかを用いて携帯端末10に応答パケットを送信する(ステップS234)。具体的には、BLE通信モジュール25は、上記ステップS218又はステップS219でセットされた操作結果情報(10bitの情報)を応答パケットに含めて送信する。なお、BLE通信モジュール25は、送信すべきデータが無い場合(例えば、ゲームが実行中でない場合やゲームが休止状態の場合、ゲームの実行中であってもボタン受付時間内でない場合等)、ステップS234において、ペイロード部のデータが無い応答パケット(空の応答パケット)を携帯端末10に送信する。
なお、BLE通信モジュール25は、SLや接続監視タイムアウトの変更を携帯端末10に要求することができる。このSLや接続監視タイムアウトの変更要求は、上記応答パケットに含められて携帯端末10に送信される。例えば、BLE端末20は、ゲームの実行状況に応じてSLや接続監視タイムアウトの変更要求を携帯端末10に送信してもよい。携帯端末10は、BLE端末20からSLの変更要求を受信した場合、SLを変更し、BLE端末20から接続監視タイムアウトの変更要求を受信した場合、接続監視タイムアウトを変更する。
また、BLE通信モジュール25は、CIを変更するための変更要求を、上記応答パケットに含めて携帯端末10に送信してもよい。例えば、BLE端末20は、携帯端末10との通信の状況に応じて、CIの変更要求を携帯端末10に送信してもよい。また、例えば、BLE端末20は、入力ボタン22の操作頻度を計算し、当該操作頻度に応じて、CI、SL、及び接続監視タイムアウトの変更要求を携帯端末10に送信してもよい。このように、BLE通信モジュール25は、ステップS234において、ゲームの実行状況、通信の状況(携帯端末10との通信の状況)、入力ボタン22の操作の状況等に応じて、CI、SLおよび接続監視タイムアウトの少なくとも何れか1つの変更要求を携帯端末10に送信してもよい。
ステップS234に続いて、BLE通信モジュール25は、変数Nに「0」を設定し(ステップS235)、再びステップS231に戻る。ここで、「N」は、BLE通信モジュール25の内部メモリにおいて記憶される変数であり、BLE通信モジュール25がコネクションイベントをスキップした回数(携帯端末10に対して応答パケットを送信しなかったコネクションイベントの回数)を示す。
なお、BLE通信モジュール25は、例えばステップS231の処理の前又は後に、前回の携帯端末10との通信からの経過時間が接続監視タイムアウト以上か否かを判定する。例えば、BLE通信モジュール25は、前回携帯端末10からパケットを受信してからの経過時間が接続監視タイムアウト以上か否かを判定する。あるいは、BLE通信モジュール25は、前回携帯端末10に対して応答パケットを送信してからの経過時間が接続監視タイムアウトを以上か否かを判定してもよい。そして、前回の携帯端末10との通信からの経過時間が接続監視タイムアウト以上の場合には、BLE通信モジュール25は、接続状態から非接続状態に移行して、図25の処理を終了する。この接続監視タイムアウトは、コネクションの確立時に携帯端末10によって決定されて通知される。
一方、BLE通信モジュール25は、ステップS233でNOと判定した場合、すなわち、携帯端末10に送信すべきデータがないと判定した場合、「N」が「SL」以上か否かを判定する(ステップS236)。NがSL以上と判定した場合(ステップS236:YES)、BLE通信モジュール25は、次にステップS234の処理を実行する。すなわち、BLE通信モジュール25は、今回のコネクションイベントをスキップすると、連続してコネクションイベントをスキップする回数がSLを超える場合には、今回のコネクションイベントにおいて携帯端末10に応答パケットを送信する。NがSL未満と判定した場合(ステップS236:NO)、BLE通信モジュール25は、「N」に1を加算する(ステップS237)。その後、BLE通信モジュール25は、ステップS231の処理を再び実行する。
ステップS231〜ステップS237の処理が繰り返し行われることにより、コネクションイベントにおいて携帯端末10からデータパケットを受信するとともに、携帯端末10に応答パケットを送信する。これにより、BLE端末20は、上述した演出データDを携帯端末10から受信したり、上記操作結果情報を携帯端末10に送信したりする。
以上のように、本実施形態では、所定の時間間隔(CI)で発生するコネクションイベントにおいて携帯端末10からBLE端末20に演出データDが送信される(S109、S144)。BLE端末20は、携帯端末10から演出データDを含むデータパケットを受信し(S232)、当該演出データDに基づいて、演出を実行する(S214、S216、S221)。具体的には、演出データDには、第1演出情報DBと、操作条件(図10の「ボタン受付時間」)と、第2演出情報とが含まれる(図10)。また、第1演出情報DBには、LED23やバイブレータ24を用いた第1演出のパターンを示す情報が含まれる。BLE端末20において、操作条件を満たす操作が行われた場合、第2演出情報に基づく第2演出が行われるとともに(S221)、当該操作の内容を示す操作結果情報がBLE端末20において蓄積される(S218、S219)。そして、コネクションイベントにおいてBLE端末20から携帯端末10に操作結果情報が送信される(S234)。
このように、第1演出のパターンを示す第1演出情報と、操作条件および第2演出情報とが携帯端末10からBLE端末20に送信される。BLE端末20が第1演出情報を再生することにより、BLE端末20において第1演出が行われ、BLE端末20において操作条件を満たす操作が行われた場合は第2演出情報に基づく第2演出が行われる。このようにして、BLEネットワークで接続された携帯端末10とBLE端末20との間でインタラクティブなゲームを行うことができる。
本実施形態では、携帯端末10とBLE端末20とはBLE規格に基づいて通信が行われる。携帯端末10とBLE端末20とが接続された状態では、所定の時間間隔(CI)でコネクションイベントが発生し、携帯端末10とBLE端末20との間でデータがやり取りされる。このCIは可変であり、例えば、実行されるアプリケーションの種類やアプリケーションの実行状況に基づいて、設定される。また、CIは、BLE端末20(及び/又は携帯端末10)の入力装置に対する操作の頻度、BLE端末20の種類(機能)、アプリケーションに参加するユーザ(BLE端末20又は携帯端末10)の数等に基づいて、設定されてもよい。典型的には、CIは、(携帯端末10又はBLE端末20の)表示装置の表示が更新される間隔(例えば、1/60秒や1/30秒)よりも長い。また、CIは、(携帯端末10又はBLE端末20の)入力装置に対する操作を検出する間隔(例えば、50m秒)よりも長い。このため、操作に対する応答にはある程度の遅延が発生するものの、各機器の消費電力を抑えることができる。
例えば、ある程度の遅延があってもユーザに違和感を与えないアプリケーションが実行される場合には、CIは比較的長く設定される。これにより、より消費電力を抑えることができる。この場合、CIは、表示装置の更新間隔や入力装置(入力ボタン22やタッチパネル等)に対する操作の検出間隔よりも長く設定されてもよい。CIが入力装置に対する操作の検出間隔よりも長い場合、CIにおける入力装置に対する複数の操作がBLE端末20において蓄積される。
一方、遅延があるとユーザに違和感を与えるアプリケーションが実行される場合には、CIは比較的短く設定される。この場合、CIは、表示装置の更新間隔や入力装置に対する操作の検出間隔よりも短く(又はこれらと同じに)設定されてもよい。CIが入力装置に対する操作の検出間隔よりも短い又は同じ場合、入力装置に対する複数の操作がBLE端末20において蓄積されず、入力装置に対する操作が行われる毎に、当該操作の内容を示す操作結果情報がBLE端末20から携帯端末10に送信される。これにより、例えば、アクションゲームのようにユーザによって頻繁に操作が行われる場合であっても、ユーザの操作を即座に表示に反映することができ、ユーザに違和感やストレスを与えないようにすることができる。
また、スレーブレイテンシー(SL)及び接続監視タイムアウトも、例えばアプリケーションの種類によって設定される。例えば、遅延があってもユーザに違和感を与えないアプリケーションが実行される場合には、SL及び接続監視タイムアウトは比較的大きな値に設定され、遅延があるとユーザに違和感を与えるアプリケーションが実行される場合には、SL及び接続監視タイムアウトは比較的小さな値に設定される。
例えば、携帯端末10及びBLE端末20を用いてゲームアプリケーションを実行しているときに、BLE端末20のみを用いたゲームが行われる場合、CI、SLおよび接続監視タイムアウトが変更されてもよい。具体的には、携帯端末10及びBLE端末20を用いてゲームアプリケーションを実行しているときには、携帯端末10とBLE端末20とは、例えば500m秒間隔で通信する。この携帯端末10及びBLE端末20を用いたゲーム中に、BLE端末20のみを用いたゲームが開始される。このBLE端末20のみを用いたゲームは、例えば、数十秒間行われてもよい。BLE端末20のみを用いたゲームが行われる間は、携帯端末10とBLE端末20とは通信をする必要はないため、例えば、CIが「1秒」に設定されるとともに、SLが「15」に設定される。これにより、BLE端末20は15秒間、携帯端末10に応答を返す必要がない。したがって、BLE端末20は、携帯端末10に応答を返さなくてもよく、ゲーム処理に集中することができ、無駄な電力消費を抑えることができる。なお、BLE端末20のみを用いたゲームが行われる場合、接続監視タイムアウトが変更されてもよい。例えば、携帯端末10とBLE端末20とを用いたゲームが行われている場合は、接続監視タイムアウトは10秒に設定され、BLE端末20のみを用いたゲームが行われる場合は、30秒に設定されてもよい。
このように、本実施形態では、実行されるアプリケーションの種類によってCI、SL、及び接続監視タイムアウトを異ならせることで、BLE端末20の消費電力を抑えることができるとともに、ユーザに違和感やストレスを与えないように遅延を制御することができる。
なお、上記フローチャートにおける各ステップの処理は、単なる一例に過ぎず、各ステップの処理順序を入れ替えてもよいし、各ステップの処理が実行されなくてもよい。また、上記フローチャートにおける処理に他の処理が付加されてもよい。また、各ステップにおける数値は単なる一例であり、他の値が用いられてもよい。
また、上記実施形態では、各機器は、BLE規格に基づく通信を行うものとしたが、BLEに限らずクラシックBluetoothに基づく通信が行われてもよい。また、他の規格(例えば、IEEE802.11シリーズ等)に基づく通信が行われてもよい。また、その他の任意の規格に基づく通信が行われてもよい。なお、上記BLE規格に基づく通信では、接続状態において、接続確立時に生成された共通のアクセスアドレスを用いて2つの機器間で通信が行われる。他の規格に基づく通信においては、例えば、接続が確立された後の接続状態では、機器固有のアドレスを用いて通信が行われる。すなわち、送信側は、受信側の機器のアドレスを指定してパケットを送信する(ユニキャスト)。
また、上記実施形態では、マスターである携帯端末10からスレーブであるBLE端末20に演出データDが送信され、BLE端末20において演出が行われるとともにBLE端末20において行われた操作が携帯端末10に送信された。他の実施形態では、マスターである携帯端末10において演出が行われるとともに、携帯端末10において行われた操作がスレーブであるBLE端末20に送信されてもよい。また、BLE端末20がマスターとして、携帯端末10がスレーブとして2つの機器が接続されてもよい。
また、上記実施形態では、携帯端末10とBLE端末20との間で接続が確立され、携帯端末10とBLE端末20とが接続された状態において、2つの機器を用いて上記アプリケーション(ゲーム)が行なわれる例が示された。他の実施形態では、携帯端末10同士で上記と同様の処理が行なわれてもよい。例えば、携帯端末10aがマスターとして、携帯端末10bがスレーブとして、これら2つの機器が接続され、マスターとしての携帯端末10aが上記携帯端末10の処理を行い、スレーブとしての携帯端末10bが上記BLE端末20の処理を行うことで、携帯端末10aと携帯端末10bとの間で上記アプリケーションが実行されてもよい。
また、上記実施形態では、BLE端末20が入力ボタン22を備え、コネクションインターバルにおいて入力ボタン22を用いた複数の操作(複数のタイミングで行なわれた複数の押下操作)がBLE端末20において蓄積され、次のコネクションイベントにおいて入力ボタン22を用いた複数の操作の情報が携帯端末10に送信された。他の実施形態では、BLE端末20がタッチパネルを備え、コネクションインターバルにおいて行なわれたタッチパネルに対する複数の操作の情報が、次のコネクションイベントにおいて携帯端末10に送信されてもよい。すなわち、コネクションインターバルにおいてタッチパネルに対する第1の操作が行われた後に、続けて第2の操作が行われた場合に、第1の操作と第2の操作とが次のコネクションイベントにおいて携帯端末10に送信されてもよい。「タッチパネルに対する第1の操作」は、タッチオンからタッチオフまでの操作を意味してもよい。例えば、タッチパネルに指やペンが接触(タッチオン)してから接触状態を維持したまま所定の軌跡が描かれ、その後に、指やペンがタッチパネルから離される(タッチオフ)。このようなタッチオンからタッチオフまでの一連の操作が、「タッチパネルに対する操作」である。ユーザが第1の操作を行なっている間、タッチパネルは所定の時間間隔(例えば、表示装置のフレームレートと同じ又はフレームレートよりも短い間隔)でタッチ位置を検出する。検出された複数のタッチ位置によって描かれる軌跡は、ユーザによって行われた第1の操作を示す。また、「第2の操作」は、第1の操作が終了した後に、再び指やペンがタッチパネルに接触し、その後、指やペンがタッチパネルから離されるまでの一連の操作である。このように、タッチパネルに対して行なわれた複数の操作がBLE端末20に蓄積され、蓄積された複数の操作を示す情報がコネクションイベントにおいて携帯端末10に送信されてもよい。
この明細書に記載されている処理の一部又は全部は、携帯端末又はBLE端末のCPU及び/又は他のプロセッサが通信プログラムを実行することによって行われてもよい。また、上記処理の一部又は全部は、携帯端末又はBLE端末が備えるASIC(Application Specific Integrated Circuit)によって行われてもよい。