(57)【要約】【課題】他の装置との間で無線にてパケットを同期通信で送受信または送信する構成において、データの種類に応じて、より柔軟な伝送形態を実現できる構成を提供する。【解決手段】情報処理装置は、他の装置との間で無線にてパケットを同期通信で送受信する通信部と、通信部が送信したパケットが他の装置で受信された否かを判断する判断部と、先に送信したパケットが他の装置で受信されたことが判断部にて確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択する選択部とを含む。【選択図】図１１
2018007164.tif 000002
【特許請求の範囲】
【請求項１】
他の装置との間で無線にてパケットを同期通信で送受信する通信部と、
前記通信部が送信したパケットが前記他の装置で受信された否かを判断する判断部と、
先に送信したパケットが前記他の装置で受信されたことが前記判断部にて確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択する選択部とを備える、情報処理装置。
【請求項２】
前記通信部が送信するパケットは、パケットの送信毎にまたはパケットの受信毎に、所定規則に従ってその値が変更される第１のシーケンス情報を含み、
前記判断部は、前記第１のシーケンス情報に基づいて、前記通信部が送信したパケットが前記他の装置で受信された否かを判断し、
前記通信部は、前記再送処理および前記非再送処理のいずれにおいても、前記所定規則に従って値を変更した第１のシーケンス情報を送信するパケットに付与する、請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、送信すべき１または複数のパケットに含ませるデータを格納するバッファメモリをさらに備え、
前記選択部は、前記非再送処理において、前記第１のシーケンス情報に依存することなく、前記バッファメモリに格納されている前記先に送信したパケットに対応するデータを削除する、請求項２に記載の情報処理装置。
【請求項４】
前記通信部が送信するパケットは、送信されるべきデータが生成される毎にその値がインクリメントされる第２のシーケンス情報を含む、請求項２または３に記載の情報処理装置。
【請求項５】
前記通信部が送信するパケットは、データ送信毎にその値がインクリメントされる第２のシーケンス情報を含む、請求項２または３に記載の情報処理装置。
【請求項６】
前記第２のシーケンス情報は、前記第１のシーケンス情報より長いデータ長を有する、請求項５に記載の情報処理装置。
【請求項７】
前記第１のシーケンス情報は、個々のパケットが送信先に到達したか否かの判断に使用され、
前記第２のシーケンス情報は、送信先のアプリケーションで必要なデータのすべてが受信されたか否かの判断に使用される、請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記通信部が送信するパケットは、当該パケットが前記再送処理に従って送信されたものであるか、または、当該パケットが前記非再送処理に従って送信されたものであるかを示す情報を含む、請求項１〜７のいずれか１項に記載の情報処理装置。
【請求項９】
前記通信部は、前記情報処理装置が前記非再送処理に対応していることを示す情報を送信する、請求項１〜８のいずれか１項に記載の情報処理装置。
【請求項１０】
ユーザ操作を受け付ける操作部をさらに備え、
前記通信部は、前記操作部に対するユーザ操作の内容を示す情報を前記パケットに含める、請求項１〜９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記情報処理装置の姿勢および動きの少なくとも一方を検知する検知部をさらに備え、
前記通信部は、前記検知部により検知された結果を示す情報を前記パケットに含める、請求項１０に記載の情報処理装置。
【請求項１２】
前記選択部は、前記操作部および前記検知部の少なくとも一方に対するキャリブレーションに係る情報を含むパケットについては、前記非再送処理を禁止する、請求項１０または１１に記載の情報処理装置。
【請求項１３】
前記通信部は、周波数ホッピング方式に従って、複数の通信チャネルのうち使用する通信チャネルを所定のタイミングで切り替えて前記パケットを送受信する、請求項１〜１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記他の装置にインストールされるプログラムを一時的に保持する記憶部をさらに備え、
前記選択部は、前記他の装置にインストールされるプログラムの全部または一部を含むパケットについては、前記非再送処理を禁止する、請求項１〜１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記選択部において前記非再送処理が選択されている場合に、先に送信したパケットが前記他の装置で受信されたことが確認できないときに、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された前記操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含める制御部をさらに備える、請求項１〜１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記制御部は、前記他の装置で受信されたことが確認できない１または複数のパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、当該次のパケットに含める、請求項１５に記載の情報処理装置。
【請求項１７】
前記制御部は、直近に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該直近に送信したパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、次のパケットに含める、請求項１５または１６に記載の情報処理装置。
【請求項１８】
他の装置との間で無線にてパケットを同期通信で送受信するステップと、
送信したパケットが前記他の装置で受信された否かを判断するステップと、
先に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択するステップとを備える、情報処理方法。
【請求項１９】
制御プログラムを実行する制御部と、
他の装置との間で無線にてパケットを同期通信で送受信する通信部とを備え、
前記制御部は、
前記通信部が送信したパケットが前記他の装置で受信された否かを判断する判断部と、
先に送信したパケットが前記他の装置で受信されたことが前記判断部にて確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択する選択部とを備える、情報処理システム。
【請求項２０】
他の装置との間で無線にてパケットを同期通信で送受信する通信部を有するコンピュータで実行される制御プログラムであって、前記制御プログラムは前記コンピュータに
前記通信部が送信したパケットが前記他の装置で受信された否かを判断するステップと、
先に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択するステップとを実行させる、制御プログラム。
【請求項２１】
ユーザ操作を受け付ける操作部と、
他の装置に対して、無線にて、前記操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信する通信部と、
前記通信部が送信したパケットが前記他の装置で受信された否かを判断する判断部と、
先に送信したパケットが前記他の装置で受信されたことが前記判断部にて確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された前記操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含める制御部とを備える、情報処理装置。
【請求項２２】
前記制御部は、前記他の装置で受信されたことが確認できない１または複数のパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、当該次のパケットに含める、請求項２１に記載の情報処理装置。
【請求項２３】
前記制御部は、直近に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該直近に送信したパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、次のパケットに含める、請求項２１または２２に記載の情報処理装置。
【請求項２４】
前記判断部は、前記他の装置からの受信応答に基づいて、前記他の装置で受信された否かを判断する、請求項２１〜２３のいずれか１項に記載の情報処理装置。
【請求項２５】
前記情報処理装置の姿勢および動きの少なくとも一方を検知する検知部をさらに備え、
前記通信部は、前記検知部により検知された結果を示す情報を前記パケットに含める、請求項２１〜２４のいずれか１項に記載の情報処理装置。
【請求項２６】
ユーザ操作を受け付けるステップと、
他の装置に対して、無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信するステップと、
送信したパケットが前記他の装置で受信された否かを判断するステップと、
先に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された前記操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含めるステップとを備える、情報処理方法。
【請求項２７】
制御プログラムを実行する制御部と、
他の装置に対して、無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信する通信部とを備え、
前記制御部は、
前記通信部が送信したパケットが前記他の装置で受信された否かを判断する判断部と、
先に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された前記操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含める制御部とを備える、情報処理システム。
【請求項２８】
他の装置との間で無線にてパケットを同期通信で送受信する通信部を有するコンピュータで実行される制御プログラムであって、前記制御プログラムは前記コンピュータに
ユーザ操作を受け付けるステップと、
他の装置に対して、無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信するステップと、
前記通信部が送信したパケットが前記他の装置で受信された否かを判断するステップと、
先に送信したパケットが前記他の装置で受信されたことが確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された前記操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含めるステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、他の装置との間で無線にてパケットを同期通信で受信または受信する情報処理装置、その装置で実行される情報処理方法、その装置を含む情報処理システム、および、その装置で実行される制御プログラムに関する。
【背景技術】
【０００２】
無線にてデータを遣り取りする場合には、データの消失（ロスト）などが発生することを想定して、同一のデータを再送できる機能が実装されることが一般的である。例えば、特開２００４−１６５９２０号公報（特許文献１）は、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信等のスター型ネットワーク無線通信において、通信状態に応じて最適な同期パケットタイプを判断し、同期通信伝送を良好に維持させる構成を開示する。特開２００４−１６５９２０号公報（特許文献１）は、Ｂｌｕｅｔｏｏｔｈ通信規格には送信データ容量とデータ保護強度の異なる３種類の同期通信用パケットタイプＨＶ１、ＨＶ２、ＨＶ３が定義されていることを開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１６５９２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したような同期通信は、データを確実に送信するという意味においては有効であるが、再送処理が繰り返されると、送信先に当該データが到達するまでに遅延が発生する。データの用途によっては、確実に伝送されることではなく、可能な限り新しいデータが伝送されることが要望されることもある。上述した背景技術においては、このような要望に対して十分に応えることができない。
【０００５】
本技術は、他の装置との間で無線にてパケットを同期通信で受信または受信する構成において、データの種類に応じて、より柔軟な伝送形態を実現できる構成を提供する。
【課題を解決するための手段】
【０００６】
ある実施の形態に従う情報処理装置は、他の装置との間で無線にてパケットを同期通信で送受信する通信部と、通信部が送信したパケットが他の装置で受信された否かを判断する判断部と、先に送信したパケットが他の装置で受信されたことが判断部にて確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択する選択部とを含む。
【０００７】
通信部が送信するパケットは、パケットの送信毎にまたはパケットの受信毎に、所定規則に従ってその値が変更される第１のシーケンス情報を含んでいてもよい。判断部は、第１のシーケンス情報に基づいて、通信部が送信したパケットが他の装置で受信された否かを判断してもよい。通信部は、再送処理および非再送処理のいずれにおいても、所定規則に従って値を変更した第１のシーケンス情報を送信するパケットに付与してもよい。
【０００８】
情報処理装置は、送信すべき１または複数のパケットに含ませるデータを格納するバッファメモリをさらに含んでいてもよい。選択部は、非再送処理において、第１のシーケンス情報に依存することなく、バッファメモリに格納されている先に送信したパケットに対応するデータを削除してもよい。
【０００９】
通信部が送信するパケットは、送信されるべきデータが生成される毎にその値がインクリメントされる第２のシーケンス情報を含んでいてもよい。
【００１０】
通信部が送信するパケットは、データ送信毎にその値がインクリメントされる第２のシーケンス情報を含んでいてもよい。
【００１１】
第２のシーケンス情報は、第１のシーケンス情報より長いデータ長を有していてもよい。
【００１２】
第１のシーケンス情報は、個々のパケットが送信先に到達したか否かの判断に使用されてもよい。第２のシーケンス情報は、送信先のアプリケーションで必要なデータのすべてが受信されたか否かの判断に使用されてもよい。
【００１３】
通信部が送信するパケットは、当該パケットが再送処理に従って送信されたものであるか、または、当該パケットが非再送処理に従って送信されたものであるかを示す情報を含んでいてもよい。
【００１４】
通信部は、情報処理装置が非再送処理に対応していることを示す情報を送信してもよい。
【００１５】
情報処理装置は、ユーザ操作を受け付ける操作部をさらに含んでいてもよい。通信部は、操作部に対するユーザ操作の内容を示す情報をパケットに含めてもよい。
【００１６】
情報処理装置は、情報処理装置の姿勢および動きの少なくとも一方を検知する検知部をさらに含んでいてもよい。通信部は、検知部により検知された結果を示す情報をパケットに含めてもよい。
【００１７】
選択部は、操作部および検知部の少なくとも一方に対するキャリブレーションに係る情報を含むパケットについては、非再送処理を禁止してもよい。
【００１８】
通信部は、周波数ホッピング方式に従って、複数の通信チャネルのうち使用する通信チャネルを所定のタイミングで切り替えてパケットを送受信してもよい。
【００１９】
情報処理装置は、他の装置にインストールされるプログラムを一時的に保持する記憶部をさらに含んでいてもよい。選択部は、他の装置にインストールされるプログラムの全部または一部を含むパケットについては、非再送処理を禁止してもよい。
【００２０】
情報処理装置は、選択部において非再送処理が選択されている場合に、先に送信したパケットが他の装置で受信されたことが確認できないときに、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含める制御部をさらに含んでいてもよい。
【００２１】
制御部は、他の装置で受信されたことが確認できない１または複数のパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、当該次のパケットに含めてもよい。
【００２２】
制御部は、直近に送信したパケットが他の装置で受信されたことが確認できない場合に、当該直近に送信したパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、次のパケットに含めてもよい。
【００２３】
ある実施の形態に従う情報処理方法は、他の装置との間で無線にてパケットを同期通信で送受信するステップと、送信したパケットが他の装置で受信された否かを判断するステップと、先に送信したパケットが他の装置で受信されたことが確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択するステップとを含む。
【００２４】
ある実施の形態に従う情報処理システムは、制御プログラムを実行する制御部と、他の装置との間で無線にてパケットを同期通信で送受信する通信部とを含む。制御部は、通信部が送信したパケットが他の装置で受信された否かを判断する判断部と、先に送信したパケットが他の装置で受信されたことが判断部にて確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択する選択部とを含む。
【００２５】
ある実施の形態に従う制御プログラムは、他の装置との間で無線にてパケットを同期通信で送受信する通信部を有するコンピュータで実行される。制御プログラムはコンピュータに、通信部が送信したパケットが他の装置で受信された否かを判断するステップと、先に送信したパケットが他の装置で受信されたことが確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択するステップとを実行させる。
【００２６】
ある実施の形態に従う情報処理装置は、ユーザ操作を受け付ける操作部と、他の装置に対して、無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信する通信部と、通信部が送信したパケットが他の装置で受信された否かを判断する判断部と、先に送信したパケットが他の装置で受信されたことが判断部にて確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含める制御部とを含む。
【００２７】
制御部は、他の装置で受信されたことが確認できない１または複数のパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、当該次のパケットに含めてもよい。
【００２８】
制御部は、直近に送信したパケットが他の装置で受信されたことが確認できない場合に、当該直近に送信したパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、次のパケットに含めてもよい。
【００２９】
判断部は、他の装置からの受信応答に基づいて、他の装置で受信された否かを判断してもよい。
【００３０】
情報処理装置は、情報処理装置の姿勢および動きの少なくとも一方を検知する検知部をさらに含んでいてもよい。通信部は、検知部により検知された結果を示す情報をパケットに含めてもよい。
【００３１】
ある実施の形態に従う情報処理方法は、ユーザ操作を受け付けるステップと、他の装置に対して、無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信するステップと、送信したパケットが他の装置で受信された否かを判断するステップと、先に送信したパケットが他の装置で受信されたことが確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含めるステップとを含む。
【００３２】
ある実施の形態に従う情報処理システムは、制御プログラムを実行する制御部と、他の装置に対して、無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送信する通信部とを含む。制御部は、通信部が送信したパケットが他の装置で受信された否かを判断する判断部と、先に送信したパケットが他の装置で受信されたことが判断部にて確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含める制御部とを含む。
【００３３】
ある実施の形態に従う制御プログラムは、他の装置に対して、無線にてパケットを同期通信で送信する通信部を有するコンピュータで実行される。制御プログラムはコンピュータに、ユーザ操作を受け付けるステップと、他の装置との間で無線にて、操作部に対するユーザ操作の内容を示す情報を含むパケットを同期通信で送受信するステップと、通信部が送信したパケットが他の装置で受信された否かを判断するステップと、先に送信したパケットが他の装置で受信されたことが確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された操作部に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含めるステップとを実行させる。
【発明の効果】
【００３４】
本技術によれば、他の装置との間で無線にてパケットを同期通信で受信または受信する構成において、データの種類に応じて、より柔軟な伝送形態を実現できる。
【図面の簡単な説明】
【００３５】
【図１】本実施の形態に従う情報処理システムの概要を説明するための図である。
【図２】図１に示す情報処理装置（操作端末）のハードウェア構成の一例を示す模式図である。
【図３】図１に示す情報処理装置（処理本体部）のハードウェア構成の一例を示す模式図である。
【図４】本実施の形態に従う情報処理システムにおける同期通信に係る再送処理のシーケンスを示す図である。
【図５】図４に示す再送処理においてタイムアウトについての設定をゼロにした場合のシーケンスを示す図である。
【図６】本実施の形態に従う情報処理システムにおける同期通信に係る非再送処理のシーケンスを示す図である。
【図７】本実施の形態に従う情報処理システムにおいて送受信されるパケットのフォーマット３００の一例を示す模式図である。
【図８】図７に示すフォーマットのリポートＩＤ部に格納されるリポートＩＤの一例を示す図である。
【図９】図１に示す情報処理装置（操作端末）の機能的構成の一例を示す模式図である。
【図１０】図１に示す情報処理装置（操作端末）における処理手順の一例を示すフローチャートである。
【図１１】図１に示す情報処理装置（操作端末）における処理手順の一例を示すフローチャートである。
【図１２】本実施の形態に従う情報処理システムにおける送信データに対する補償処理の一例を説明するための模式図である。
【発明を実施するための形態】
【００３６】
本実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００３７】
［Ａ．装置構成］
まず、本実施の形態に従う情報処理システムに係る装置構成について説明する。
【００３８】
（ａ１：情報処理システム）
図１は、本実施の形態に従う情報処理システム１の概要を説明するための図である。図１を参照して、情報処理システム１は、無線通信により互いに情報を遣り取り可能な複数の情報処理装置１００Ａ，１００Ｂ，２００を含む。本実施の形態に従う情報処理システムは、どのようなアプリケーションにも適用できるが、図１には、典型例として、ゲームシステムとして実装した構成例を示す。図１に示す例においては、情報処理装置２００は、ゲームアプリケーションを実行する処理本体部に相当し、情報処理装置１００Ａおよび１００Ｂ（以下、「情報処理装置１００」とも総称する。）は、処理本体部に対して、ユーザ操作を送信する操作端末に相当する。
【００３９】
以下では、説明の便宜上、処理本体部である情報処理装置２００と操作コントローラである情報処理装置１００との間で通信手順などに着目する。但し、操作コントローラである情報処理装置１００Ａと情報処理装置１００Ｂとの間で情報を遣り取りするような場合にも応用できるし、さらに別の装置との間で情報を遣り取りするような場合にも応用できる。
【００４０】
図１に示すようなゲームシステムに限らず、例えば、スマートフォンやタブレットなどの携帯デバイスによる各種の無線通信にも応用できる。
【００４１】
情報処理システム１において、各情報処理装置は、他の情報処理装置との間で無線にてパケットを同期通信で受信または受信する。典型的には、同期通信は、ＩＥＥＥ（Institute of Electrical and Electronic Engineers）８０２．１５規格に従うＢｌｕｅｔｏｏｔｈや、ＩＥＥＥ８０２．１１規格に従う無線ＬＡＮ（Local Area Network）などのフレームワーク上で実現されてもよい。
【００４２】
（ａ２：操作端末）
図２は、図１に示す情報処理装置１００（操作端末）のハードウェア構成の一例を示す模式図である。情報処理装置１００は、情報処理装置２００との間で無線にてパケットを同期通信で受信または受信する機能を有していれば、どのような実装形態であってもよい。一例として、情報処理装置１００は、制御部１１０と、無線通信部１２０と、操作部１０２と、インジケータ１０４と、音声出力部１０６と、加速度センサ１３０と、ジャイロセンサ１３２とを含む。
【００４３】
制御部１１０は、情報処理装置１００における処理全体を制御する主体であり、その主要なコンポーネントとして、ＣＰＵ（Central Processing Unit）１１２と、メインメモリ１１４と、制御プログラム１１８を格納したフラッシュメモリ１１６とを含む。プロセッサの一例であるＣＰＵ１１２は、フラッシュメモリ１１６に格納された制御プログラム１１８をメインメモリ１１４に読み出して実行することで、後述するような各種制御を実現する。
【００４４】
制御部１１０は、上述したコンポーネントを含むシステムＬＳＩ（Large Scale Integration）として実装してもよい。
【００４５】
無線通信部１２０は、他の装置との間で無線にてパケットを同期通信で受信または受信する通信部に相当する。無線通信部１２０は、制御部１１０からの指令に従って他の装置との間で無線信号を遣り取りするとともに、他の装置から受信したデータを制御部１１０へ出力する。制御部１１０は、主要なコンポーネントとして、無線モジュール１２２と、無線コントローラ１２４と、バッファメモリ１２８とを含む。
【００４６】
無線モジュール１２２は、高周波発生回路、変調回路、復調回路、符号化回路などを含む。無線モジュール１２２は、実装される通信方式に応じて、周波数や変調方式を実現できるように実装すればよい。例えば、Ｂｌｕｅｔｏｏｔｈ方式を採用した場合には、無線モジュール１２２は、バーストノイズなどの影響を低減するために、周波数ホッピング方式に従って、複数の通信チャネルのうち使用する通信チャネルを所定のタイミングで切り替えてパケットを送受信するようにしてもよい。
【００４７】
無線コントローラ１２４は、内蔵する制御プログラムであるファームウェア１２６に従って、無線モジュール１２２での無線信号の送受信を制御する。バッファメモリ１２８は、無線モジュール１２２から送出されるデータ（パケット）および無線モジュール１２２にて受信されたデータ（パケット）を一時的に格納する。バッファメモリ１２８は、典型的には、ＦＩＦＯ（First-In First-Out）メモリなどを用いて実装され、バッファメモリ１２８との間のデータの書込みおよび読出しについては、無線コントローラ１２４および制御部１１０によって制御される。バッファメモリ１２８を無線通信部１２０内ではなく、制御部１１０内に配置してもよいし、制御部１１０および無線通信部１２０以外の部位に配置してもよい。
【００４８】
操作部１０２は、ユーザ操作を受け付け、そのユーザ操作の内容を示す情報を制御部１１０へ出力する。典型的には、操作部１０２は、押ボタン、操作レバー、タッチパネル、マウスなどを含む。あるいは、操作部１０２としては、情報処理装置１００とは別体の、有線または無線で接続されるコントローラを含むようにしてもよい。
【００４９】
インジケータ１０４は、情報処理装置１００の表面に露出して配置され、制御部１１０からの指令に従って、ユーザに対して視覚的な態様で通知を行なう。典型的には、インジケータ１０４は、ＬＥＤ（Light Emitting Diode）などを含む。
【００５０】
音声出力部１０６は、情報処理装置１００の表面に部分的に露出して配置され、制御部１１０からの指令に従って、ユーザに対して聴覚的な態様で通知を行なう。典型的には、音声出力部１０６は、１または複数のスピーカなどを含む。
【００５１】
加速度センサ１３０は、情報処理装置１００に生じる加速度を検知し、その検知結果を制御部１１０へ出力する。ジャイロセンサ１３２は、情報処理装置１００の傾きなどを検知し、その検知結果を制御部１１０へ出力する。加速度センサ１３０およびジャイロセンサ１３２の少なくとも一方もしくは両方を用いて、情報処理装置１００の姿勢および動きの少なくとも一方を検知することができる。
【００５２】
（ａ３：処理本体部）
図３は、図１に示す情報処理装置２００（処理本体部）のハードウェア構成の一例を示す模式図である。情報処理装置２００は、コンピュータの一種であり、主要なコンポーネントとして、制御部２１０と、無線通信部２２０と、ネットワーク通信モジュール２３０と、フラッシュメモリ２３２と、外部メインメモリ２３４と、映像音声出力ドライバ２３６と、ディスクドライブ２３８とを含む。
【００５３】
制御部１１０は、情報処理装置２００における処理全体を制御する主体であり、その主要なコンポーネントとして、ＣＰＵ２１２と、メインメモリ２１４と、ＧＰＵ（Graphical Processing Unit）２１６と、ＶＲＡＭ（Video Random Access Memory）２１８とを含む。ＣＰＵ２１２は、基本システムプログラムやアプリケーションなどを実行する。メインメモリ２１４は、ＣＰＵ２１２でのプログラム実行に必要な一時データを保持するワーキングメモリとして機能する。ＧＰＵ２１６は、主として表示に係る処理を実行する。ＶＲＡＭ２１８は、ＧＰＵ２１６での処理によって生成された画像を表示するためのワーキングメモリとして機能する。
【００５４】
制御部２１０は、上述したコンポーネントを含むシステムＬＳＩ（Large Scale Integration）として実装してもよい。
【００５５】
無線通信部２２０は、他の装置との間で無線にてパケットを同期通信で受信または受信する通信部に相当する。無線通信部２２０は、制御部２１０からの指令に従って他の装置との間で無線信号を遣り取りするとともに、他の装置から受信したデータを制御部２１０へ出力する。制御部２１０は、基本的には、図２に示す無線通信部２２０と同様のハードウェア構成を有していてもよい。すなわち、無線通信部２２０は、主要なコンポーネントとして、無線モジュール２２２と、ファームウェア２２６を内蔵する無線コントローラ２２４と、バッファメモリ２２８とを含む。
【００５６】
ネットワーク通信モジュール２３０は、アクセスポイントなどの装置と無線通信するための各種回路を含む。ネットワーク通信モジュール２３０は、例えば、ＩＥＥＥ８０２．１１規格に従う無線ＬＡＮ（Local Area Network）、赤外線通信、ＬＴＥ（Long Term Evolution）などに従うモバイル通信、などを用いて実装されてもよい。
【００５７】
無線通信部２２０およびネットワーク通信モジュール２３０については、いずれも無線通信するための回路を含むため、これらを同一のチップ内に実装するようにしてもよい。
【００５８】
フラッシュメモリ２３２は、制御部２１０からアクセス可能になっており、基本システムプログラムやアプリケーションなどを不揮発的に保持する。例えば、フラッシュメモリ２３２は、各種のアプリケーション２３３を格納していてもよい。アプリケーション２３３は、ディスクドライブ２３８によって光学記録媒体２０８から読み出されて、インストールされる。
【００５９】
外部メインメモリ２３４は、制御部２１０内のメインメモリ２１４と連携してワーキングメモリとして機能してもよい。
【００６０】
映像音声出力ドライバ２３６は、制御部２１０から出力される映像信号および音声信号を表示装置２０４（図１参照）へ出力する。
【００６１】
［Ｂ．通信手順］
次に、本実施の形態に従う情報処理システム１における無線通信に係る手順について説明する。図１に示す情報処理システム１において、情報処理装置間では、パケットが同期通信で受信または受信される。まず、同期通信の概要について説明するとともに、同期通信において、パケットまたは受信応答（ACKnowledge：以下「ＡＣＫ」とも記す。）が何らかの理由で受信側へ到達しなかった場合、すなわちデータがロストした場合の処理について説明する。
【００６２】
本明細書において、「同期通信」とは、送信側と受信側との間で、データを送信する毎に当該データが受信側へ届いていることを確認しつつデータを順次送信する方式を意味する。典型的な処理手順としては、送信側からある受信側へデータを送信した後に、当該受信側が当該データを受信すると、当該データを受信したことを示す受信応答（ＡＣＫ）を送信側へ返信する。所定時間内に受信側からのＡＣＫを送信側が受信した場合、すなわち先に送信したデータが受信側で受信されたことを確認できた場合に限って、送信側は、次のデータを送信する。一方、送信側が所定時間内に受信側からのＡＣＫを受信できなかった場合は、先に送信したデータが受信側で受信されたことを確認できないので、何らかの理由でデータが消失（ロスト）したものとみなし、先に送信したデータを再度送信することになる。つまり、送信側の情報処理装置は、受信側の情報処理装置からの受信応答に基づいて、当該受信側でパケットが受信された否かを判断することになる。
【００６３】
「同期通信」は、このような送信側から受信側への伝送が成功したことを確認しながら、データを順次送信する方式であり、送信側と受信側との間でデータおよび受信応答（ＡＣＫ）の相互の送信が繰り返されることになる。なお、このような同期通信を行なう場合には、送信側と受信側との間でタイミングを同期させて、所定時間間隔のタイムスロットで送受信の周期を管理するようにしてもよい。
【００６４】
本実施の形態に従う同期通信に係る再送処理の概要について先に説明する。以下の説明では、典型例として、Ｂｌｕｅｔｏｏｔｈ方式を採用した場合のシーケンス例について説明するが、他の通信方式を採用した場合も同様に適用可能である。Ｂｌｕｅｔｏｏｔｈ方式においては、マスタとスレーブとの区分が存在し、基本的な通信手順として、マスタが先にポーリングしてから、スレーブが応答する。
【００６５】
図４は、本実施の形態に従う情報処理システム１における同期通信に係る再送処理のシーケンスを示す図である。
【００６６】
図４（Ａ）には、データのロストがない場合の同期通信に係るシーケンスを示す。図４（Ａ）を参照して、周期Ｔ１において、送信側がパケット１を受信側へ送信する。送信側から受信側へ送信されるパケットは、そのヘッダ部などに、パケットを識別するための情報としてシーケンス情報を含む。
【００６７】
Ｂｌｕｅｔｏｏｔｈ方式においては、シーケンス情報として、１ビット分のシーケンスビット（ＳＢ）が割り当てられており、このシーケンスビットの値を随時変化させることで、同期通信およびパケットのロストなどを検知する。つまり、シーケンスビットは、パケットの送信毎にまたはパケットの受信毎に、所定規則に従ってその値が変更されるシーケンス情報であり、無線通信部１２０から送信されるパケットに含まれる。つまり、シーケンス情報は、同期通信毎に変更される。そして、このシーケンス情報に基づいて、パケットのロストがあったか否かが判断される。
【００６８】
例えば、パケット１については、シーケンス情報として「１」（シーケンスビットがオン）が付与されているとする。送信側からのパケット１が受信側へ到達すると、受信側からは、受信応答（ＡＣＫ）が返信される。このＡＣＫは、受信したパケット１に対応するシーケンス情報として「１」を含むことになる。このＡＣＫが送信側へ到達すると、送信側は、先に送信したパケット１が受信側で受信されたことを確認できるので、次の周期Ｔ２において、送信側は、パケット１とは異なるパケット２を受信側へ送信する。このとき、シーケンス情報として「０」（シーケンスビットがオフ）が付与される。
【００６９】
以下、同様に、送信側から受信側へのパケットの送信と、当該パケットを受信したことを示すＡＣＫの受信側から送信側への送信が繰り返される。このとき、同一のパケットに対しては同一のシーケンス情報が付与され、異なるパケットに対しては、所定規則に従って更新されたシーケンス情報が付与される。なお、上述の説明では、１ビット分がシーケンスビットとして割り当てられる例を示しており、この場合には、「０」と「１」の２値が順次インクリメントされることで、実質的に、「０」と「１」とが交互に付与されることになる。より多くのビットを割り当てられる場合には、その割り当てられたビットが保持できる値の範囲で順次インクリメントされることになる。
【００７０】
説明の便宜上、図４においては、一方の情報処理装置を送信側とし、他方の情報処理装置を受信側としているが、基本的には、データの送受信は双方向で行なわれるので、いずれの情報処理装置も受信側および送信側になり得る。すなわち、図４に示す受信側および送信側は、ある局面での役割を示すに過ぎず、Ｂｌｕｅｔｏｏｔｈ方式におけるマスタおよびスレーブとは関連しない。すなわち、マスタが受信側および送信側のいずれにもなり得る。
【００７１】
例えば、受信側がマスタであり、送信側がスレーブである場合を考えると、以下のような手順で通信が実行される。
【００７２】
（１）マスタからのポーリング（図４（Ａ）には図示していない）
（２）ポーリング直後にスレーブがパケット１を送信する（このときのシーケンス情報は「１」）
（３）所定のインターバル（Sniff Interval）経過後に、マスタが再びポーリングを実施（このポーリングがＡＣＫを兼ねる）（このときのシーケンス情報は「１」）
（４）ポーリング直後にスレーブがパケット１を送信する（このときのシーケンス情報は「０」）
以下、同様の手順が繰り返される。
【００７３】
次に、送信されたデータがロストした場合に実行される再送処理について説明する。
図４（Ｂ）には、送信側からのパケットがロストした場合の再送処理に係るシーケンスを示す。図４（Ｂ）を参照して、周期Ｔ１および周期Ｔ２においては、送信側から受信側へのパケット１およびパケット２の送信がそれぞれ成功したが、周期Ｔ３において、送信側から受信側へのパケット３の送信が失敗したとする。すなわち、送信側から受信側へパケット３が伝送される過程において、パケット３がロストした場合を示す。
【００７４】
この場合、受信側ではパケットを受信できないので、ＡＣＫを実質的に返信するができない。すなわち、受信側がマスタとして機能する場合には、ＡＣＫを送信することができず、受信側がスレーブとして機能する場合には、ＡＣＫを応答できるものの、シーケンス情報をインクリメントできないので、有効なＡＣＫとはならず、実質的にＮＡＣＫを応答したのと同等になる。
【００７５】
そして、送信側では、周期Ｔ３内にパケット３に対するＡＣＫが受信されない、あるいは、有効なＡＣＫを受信できないので、先に送信したパケット３が受信側で受信されたことが確認できないと判断して、次の周期Ｔ４において、先に送信したパケット３と同じパケット３を受信側へ再送する。この再送されるパケット３に付与されるシーケンス情報は、先に送信したパケットに付与されるシーケンス情報（すなわち、「１」）と同じである。図４（Ｂ）に示す例では、周期Ｔ４においてもパケット３がロストした場合を示しており、この結果、周期Ｔ５においてもパケット３が送信側から受信側へ送信されることになる。すなわち、図４（Ｂ）には、再送処理が２回実行される例を示す。この再送処理において送信されるパケットに付与されるシーケンス情報は、送信されるパケットが同一である限り変更されない。
【００７６】
図４（Ｃ）には、受信側からのＡＣＫがロストした場合の再送処理に係るシーケンスを示す。図４（Ｃ）を参照して、周期Ｔ１〜周期Ｔ３においては、送信側から受信側へのパケット１〜パケット３の送信がそれぞれ成功したが、周期Ｔ３において、受信側から送信側へのＡＣＫの送信が失敗したとする。すなわち、送信側から受信側へパケット３は伝送されたものの、そのパケット３の受信についてのＡＣＫがロストした場合を示す。
【００７７】
この場合にも上述の例と同様に、送信側では、周期Ｔ３内にパケット３に対するＡＣＫが受信されないので、先に送信したパケット３が受信側で受信されたことが確認できないと判断して、次の周期Ｔ４において、先に送信したパケット３と同じパケット３を受信側へ再送する。この再送されるパケット３に付与されるシーケンス情報は、先に送信したパケットに付与されるシーケンス情報（すなわち、「１」）と同じである。図４（Ｂ）に示す例と同様に、図４（Ｃ）においても、周期Ｔ４においてもパケット３がロストした場合を示しており、この結果、周期Ｔ５においてもパケット３が送信側から受信側へ送信されることになる。
【００７８】
なお、図４（Ｂ）および図４（Ｃ）に示すように、送信側からのパケットまたは受信側からのＡＣＫがロストし続けた場合には、次のパケットが送信できないことになる。そのため、一般的には、再送処理を繰り返す上限回数が予め設定されており、再送処理の実行回数がその上限回数または再送処理に要した時間が上限時間に到達すると、当該パケットについての再送処理は中止され、次のパケットが送信されるようにしてもよい。このような上限回数または上限時間をタイムアウトについての設定回数または設定時間と称することもある。この場合、送信できなかったパケットについては、所定時間が経過した後に、再度送信されるようにしてもよい。
【００７９】
図４（Ｂ）および図４（Ｃ）に示すような再送処理が実行されることで、送信側から受信側へのパケットの確実な伝送が保証されるが、再送処理に要する時間に応じた遅延が発生し得る。例えば、図４（Ａ）に示すように、データのロストが発生しない場合には、受信側では、パケット３を周期Ｔ３において受信する。これに対して、図４（Ｂ）または図４（Ｃ）に示すように、データのロストが発生して再送処理が実行された結果、受信側がパケット３を受信するのは、周期Ｔ５になる。そして、その後に送信されるパケット４以降についても一律に遅延が生じる。
【００８０】
一方で、各パケットに含められるデータの種類によっては、このような遅延をもって送信されるより、最新のデータが要求される場合もある。つまり、パケットがロストした場合、または、パケットに対するＡＣＫがロストした場合、であっても、再送処理を行なうことなく、新たなデータを取得し、それを送信するような処理が必要な状況もあり得る。この場合、送信に失敗したパケットはそのまま破棄されることになる。
【００８１】
このような再送処理を行なわない方法として、タイムアウトについての設定回数または設定時間をゼロにすることも可能である。図５は、図４に示す再送処理においてタイムアウトについての設定をゼロにした場合のシーケンスを示す図である。
【００８２】
図５を参照して、周期Ｔ１および周期Ｔ２においては、送信側から受信側へのパケット１およびパケット２の送信がそれぞれ成功したが、周期Ｔ３において、送信側から受信側へのパケット３の送信が失敗したとする。すなわち、送信側から受信側へパケット３が伝送される過程において、パケット３がロストした場合を示す。
【００８３】
この場合、受信側ではパケットを受信できないので、ＡＣＫを返信することもできない。送信側では、周期Ｔ３内にパケット３に対するＡＣＫが受信されないので、先に送信したパケット３が受信側で受信されたことが確認できないと判断して、再送処理を中止して、新たなパケットを送信できるように、次の周期Ｔ４において、空のパケット（ｎｕｌｌパケット）が受信側へ送信される。ここで、ｎｕｌｌパケットを送信する通信のレイヤーよりも上流のレイヤー（例えば、アプリケーションのレイヤー）が本来のパケット４を下流レイヤーへ渡すが、通信のレイヤーでのｎｕｌｌパケットの送信と競合して、当該上流のレイヤーから渡されたパケット４を送信することができない。これにより、次の周期Ｔ５においては、パケット３に引き続くパケット４ではなく、その次のパケット５が送信される。つまり、パケット３がロストした場合に、パケット３に引き続くパケット４を送信することができず、パケット４についても実質的にロストしてしまうことになる。但し、通信のレイヤーでのｎｕｌｌパケットを送信する処理がないと仮定した場合には、図５の周期Ｔ４では、ｎｕｌｌパケットの代わりに、パケット４が受信側へ送信されることになる。
【００８４】
一方、この送信されるｎｕｌｌパケットに付与されるシーケンス情報は、先に送信したパケットに付与されるシーケンス情報と同じく「１」に設定される。
【００８５】
本実施の形態に従う情報処理システム１を構成する情報処理装置は、再送処理を行なわない動作モードを選択可能に構成される。このような処理を、以下では「非再送処理」と称する。
【００８６】
本明細書において、「非再送処理」は、送信したパケットがロストした場合、または、送信したパケットに対するＡＣＫがロストした場合であっても、当該パケットを再送することなく、別のパケットを送信する処理を包含する。但し、図４に示す同期処理および同期処理で採用されている再送処理のシーケンスを変更することなく、再送処理および非再送処理を任意に選択できるようになっている。
【００８７】
以下、本実施の形態に従う非再送処理について説明する。図６は、本実施の形態に従う情報処理システム１における同期通信に係る非再送処理のシーケンスを示す図である。
【００８８】
図６（Ａ）には、上述の図４（Ｂ）と同様に、周期Ｔ１および周期Ｔ２においては、送信側から受信側へのパケット１およびパケット２の送信がそれぞれ成功したが、周期Ｔ３において、送信側から受信側へのパケット３の送信が失敗した例を示す。
【００８９】
非再送処理においては、次の周期Ｔ４において、送信に失敗したパケット３が再送されることなく、新たなパケット４が送信側から受信側へ送信される。但し、受信側から見れば、周期Ｔ２においてパケット２（シーケンス情報は「０」）を受信しているが、周期Ｔ３において、次のシーケンス情報である「１」が付与されたパケットを受信していないので、シーケンス情報として「１」が付与されたパケットの到来を待っている状態である。
【００９０】
ここで、シーケンス情報として「０」を付与したパケット４を送信側から受信側へ送信すると、受信側では、予定しているシーケンス情報とは異なるシーケンス情報が付与されたパケットを受信することになり、受信したパケットを適切に処理することができない可能性がある。
【００９１】
本実施の形態に従う情報処理システム１においては、あるパケットの送信に失敗した後に送信するパケットには、先に送信したパケットに含まれるデータとは独立したデータを含ませる一方で、当該新たに送信するパケットには、通常の再送処理において使用されるシーケンス情報を付与する。受信側から見れば、通常の再送処理に従ってパケットが再送されてきたものと判断できるので、通常の再送処理と同様の処理を実行する。
【００９２】
図６（Ａ）に示す例では、周期Ｔ３および周期Ｔ４において受信側から送信されたパケットがいずれもロストしているため、通常の再送処理の手順に従って、シーケンス情報は更新されず、そのまま維持される。一方で、周期Ｔ３および周期Ｔ４においてそれぞれ送信されるパケット３およびパケット４には、パケット２とは異なるデータが格納される。
【００９３】
図６（Ｂ）には、上述の図４（Ｃ）と同様に、周期Ｔ１〜周期Ｔ３においては、送信側から受信側へのパケット１〜パケット３の送信がそれぞれ成功したが、周期Ｔ３において、送信側から受信側へのパケット３の送信が失敗した例を示す。送信側から見れば、パケット３が受信側で受信されたことを確認できないので、図４（Ｃ）に示すような再送処理、または、図６（Ａ）と同様の非再送処理を実行することになる。すなわち、次の周期Ｔ４において、送信側は、先に送信したパケット３に含まれるデータとは異なるデータを含むパケット４を受信側へ送信する。但し、パケット４に付与されるシーケンス情報は更新されず、パケット３に付与されていたシーケンス情報と同じシーケンス情報が付与される。
【００９４】
なお、図６（Ｂ）には、周期Ｔ４においても、送信側から受信側へのパケットの送信に失敗している。そのため、それに引き続く周期Ｔ５においても同様に、送信側は、先に送信したパケット４に含まれるデータとは異なるデータを含むパケット５を受信側へ送信する。但し、パケット５に付与されるシーケンス情報は更新されず、パケット３に付与されていたシーケンス情報と同じシーケンス情報が付与される。
【００９５】
図６（Ａ）および図６（Ｂ）に示すように、送信したパケットがロストした場合、または、送信したパケットに対するＡＣＫがロストした場合においては、再送処理と同様のロジックに従ってシーケンス情報の値を決定する一方で、各パケットに格納するデータはそれぞれ異なったもの（典型的には、最新のデータ）とする。
【００９６】
図４および図６に示すように、本実施の形態に従う再送処理および非再送処理のいずれにおいても、シーケンスビット（シーケンス情報）の更新の方法は共通であり、受信応答（ＡＣＫ）に応じた値に都度更新される。但し、非再送処理においては、パケットに格納されるデータ自体は、先に送信したポケットに格納されるデータ自体とは異なったものとされる。すなわち、無線通信部１２０は、再送処理および非再送処理のいずれにおいても、所定規則に従って値を変更したシーケンスビット（シーケンス情報）を、送信するパケットに付与する。
【００９７】
このような非再送処理ならびに再送処理と非再送処理との選択処理を採用することで、受信側での受信処理について新たなシーケンスなどを実装することなく、再送処理および非再送処理を、送信側で適宜切り替えることができる。例えば、処理本体部とその操作コントローラとの間で無線通信を行ないながら処理を進行する場合などに、通信環境の一時的な乱れなどにより、ロストしてしまったパケットを、次回以降の通信において再送する再送処理と、そのような再送を行なわない非再送処理とを選択することで、アプリケーションに適した通信を実現できる。すなわち、送信するデータの内容に応じて、より柔軟な伝送形態を実現できる。
【００９８】
［Ｃ．パケットフォーマット］
次に、本実施の形態に従う情報処理システム１において送受信されるパケットのフォーマットの一例について説明する。図７は、本実施の形態に従う情報処理システム１において送受信されるパケットのフォーマット３００の一例を示す模式図である。
【００９９】
図７を参照して、パケットのフォーマット３００は、パケットヘッダ部３１０およびユーザデータ部３２０とを含む。なお、図７に示すフォーマット３００は一例であり、図７に示す部分以外にも、任意のデータを含めるようにしてもよい。
【０１００】
パケットヘッダ部３１０は、宛先の情報処理装置を特定するための識別情報（ハードウェア固有のアドレスなど）を格納するための宛先ＩＤ部３１２と、図４および図６において説明した各パケットを識別するためのシーケンス情報を格納するためのシーケンスビット３１４とを含む。
【０１０１】
ユーザデータ部３２０は、パケットに格納して送信されるデータの実体部分であり、任意のデータ構造を採用できる。一例として、図７に示すフォーマット３００においては、データヘッダ部３２２と、サンプリング番号部３２４と、リポートＩＤ部３２６と、データ本体部３２８とを含む。
【０１０２】
データヘッダ部３２２は、各パケットを作成または利用するアプリケーションを特定する識別情報などを格納する。
【０１０３】
サンプリング番号部３２４は、データ本体部３２８を識別するための識別情報として、サンプリング番号を格納する。パケット自体に付与されるシーケンス情報（シーケンスビット）とは別の、データ本体部３２８を特定できるように付与されるシーケンス情報である。典型的には、サンプリング番号は、データ本体部３２８の内容が順次作成されるに従って、インクリメントされる。すなわち、送信されるパケットは、送信されるべきデータが生成される毎にその値がインクリメントされる別のシーケンス情報としてのサンプリング番号を含むことになる。あるいは、サンプリング番号は、各パケットが順次送信されるに従って、インクリメントされる。すなわち、送信されるパケットは、データ送信毎にその値がインクリメントされる別のシーケンス情報としてのサンプリング番号を含むことになる。
【０１０４】
サンプリング番号は、受信側のアプリケーションにおいて、送信側から送信したデータの生成順序などを検知し、あるいは、サンプリング番号の抜けによってデータの脱落などを検知するために用いられてもよい。このような用途が想定されているため、サンプリング番号としては、所定の処理期間にわたってユニークな（重複した番号が発生しないような）範囲が用いられる。すなわち、別のシーケンス情報であるサンプリング番号は、パケットについてのシーケンス情報であるシーケンスビットより長いデータ長を有することが好ましい。上述したように、例えば、シーケンスビットとして１ビットを割り当てるのに対して、サンプリング番号としては１２〜３２ビット程度を割り当てるようにしてもよい。
【０１０５】
このように、パケットについてのシーケンス情報であるシーケンスビットは、個々のパケットが送信先に到達したか否かの判断に使用される一方で、別のシーケンス情報であるサンプリング番号は、送信先のアプリケーションで必要なデータのすべてが受信されたか否かの判断に使用される。つまり、パケットについてのシーケンス情報であるシーケンスビットは、物理層およびデータリンク層において、送信されたパケットのロストがあったか否かを判断するために使用される一方で、別のシーケンス情報であるサンプリング番号は、アプリケーション層においてパケットの到達有無を判断するために使用される。
【０１０６】
リポートＩＤ部３２６は、ユーザデータ部３２０に格納されるデータの内容を特定するための情報であるリポートＩＤを格納する。受信側では、リポートＩＤ部３２６に格納されているリポートＩＤの値に基づいて、ユーザデータ部３２０に含まれるデータがどのような種類のデータであるかを特定する。ここで、リポートＩＤの一例について説明する。
【０１０７】
図８は、図７に示すフォーマット３００のリポートＩＤ部３２６に格納されるリポートＩＤの一例を示す図である。図８を参照して、リポートＩＤリスト１６０は、パケットに格納されるデータの種類に対応付けられたそれぞれのリポートＩＤを定義する。
【０１０８】
リポートＩＤリスト１６０は、リポートＩＤコラム１６２の各々にユニークなリポートＩＤの値が定義されており、各リポートＩＤに対応付けて、ユーザデータ部３２０に格納されるデータの種類およびその配列などが定義される。このデータの種類および配列などの情報は、種別コラム１６４に定義される。
【０１０９】
例えば、リポートＩＤが「１」については、「操作部１０２に対する操作１」、「操作部１０２に対する操作２」、「加速度センサ１３０の検知値」、「ジャイロセンサ１３２の検知値」がデータ本体部３２８に格納されることを意味する。一般的には、図８に示すリポートＩＤリスト１６０は、送信側および受信側にて同じものが共有されており、送信側から何らかのパケットを受信した受信側では、その受信したパケットに含まれるリポートＩＤの値に基づいて、データ本体部３２８に格納されているデータ列に対する処理を切り替えることになる。
【０１１０】
リポートＩＤリスト１６０においては、リポートＩＤの別に、再送処理を実行するか否かを示す情報を定義してもよい。すなわち、リポートＩＤリスト１６０の再送コラム１６６において、「１」が設定されているリポートＩＤが付与されたパケットについては再送処理が実行される一方で、「０」が設定されているリポートＩＤが付与されたパケットについては再送処理が実行されない（非再送処理が選択される）と判断してもよい。
【０１１１】
［Ｄ．機能的構成］
次に、本実施の形態に従う情報処理装置１００（操作端末）の機能的構成について説明する。図９は、図１に示す情報処理装置１００（操作端末）の機能的構成の一例を示す模式図である。図９に示す各コンポーネントは、ＣＰＵ１１２（図２）が制御プログラム１１８（図２）およびアプリケーションプログラムなどを実行することで実現されてもよいし、無線通信部１２０（図２）を構成するプロセッサまたはハードワイヤード回路によって実現されてもよい。以下に説明するような機能が実現できれば、どのようなハードウェアおよびソフトウェアを用いて実装されてもよい。
【０１１２】
図８を参照して、情報処理装置１００は、その機能的構成として、情報収集機能１５２およびデータ生成機能１５４を含むアプリケーション１５０と、判断機能１２４２と、選択機能１２４４と、パケット生成機能１２４６とを含む無線コントローラ１２４（図２参照）とを含む。
【０１１３】
アプリケーション１５０の情報収集機能１５２は、操作部１０２に対するユーザ操作を示す情報と、加速度センサ１３０およびジャイロセンサ１３２での検知結果とを適宜収集する。データ生成機能１５４は、アプリケーションの実行状況に応じて、収集した情報を適宜組み合わせてデータ（データ本体部３２８に格納されるデータ）を生成する。このとき、データ生成機能１５４は、リポートＩＤリスト１６０を参照して、生成したデータの種類を示すリポートＩＤをリポートＩＤ部３２６（図７参照）に格納する。また、データ生成機能１５４は、データを生成するたびにサンプリング番号をインクリメントし、そのインクリメントしたサンプリング番号をサンプリング番号部３２４（図７参照）に格納する。
【０１１４】
アプリケーション１５０にて生成されたデータは、一旦バッファメモリ１２８に格納される。原則として、バッファメモリ１２８に先に格納されたデータから順に無線コントローラ１２４へ出力される。
【０１１５】
無線コントローラ１２４の判断機能１２４２は、無線通信部１２０から送信されたパケットが他の情報処理装置で受信された否かを判断する。判断機能１２４２は、パケットに含まれるシーケンスビット（シーケンス情報）の値に基づいて、無線通信部１２０から送信されたパケットが他の情報処理装置で受信された否かを判断する。すなわち、判断機能１２４２は、無線通信部１２０による同期通信においてパケットのロストがあったか否かを判断する。より具体的には、判断機能１２４２は、送信側から受信側へ送信したパケットに対するＡＣＫの受信有無などに基づいて、受信側にてパケットが受信されたか否かを判断し、その判断結果を選択機能１２４４へ出力する。
【０１１６】
選択機能１２４４は、先に送信したパケットが他の情報処理装置で受信されたことが判断機能１２４２にて確認できない場合に、当該先に送信したパケットの内容に基づいて、当該先に送信したパケットを再度送信する再送処理と、当該先に送信したパケットではなく別のパケットを送信する非再送処理とを、選択する。より具体的には、選択機能１２４４は、各パケットの種別（指定されたリポートＩＤ）に基づいて、各パケットに対する再送処理が必要であるか否かを判断するとともに、判断機能１２４２からの判断結果に基づいて、送信したパケットがロストした場合に、当該ロストしたパケットに対して再送処理を実行するか、あるいは、非再送処理を実行するのかを選択する。選択機能１２４４は、選択結果に応じて、先に送信したパケットと同じパケットをパケット生成機能１２４６に生成させる、あるいは、バッファメモリ１２８に格納されている先に送信したパケットに対応するエントリを削除して、パケット生成機能１２４６にバッファメモリ１２８の次のエントリに基づくパケットを生成させる、といった処理を選択的に実行する。
【０１１７】
バッファメモリ１２８は、送信すべき１または複数のパケットに含ませるデータを格納する。バッファメモリ１２８に格納されている先に送信したパケットに対応するデータは、正しいシーケンス情報を含む受信応答（ＡＣＫ）を送信側から受信した場合に削除されるが、非再送処理においては、受信応答（ＡＣＫ）の内容、つまりシーケンス情報に依存することなく削除される。
【０１１８】
このように、判断機能１２４２がパケットのロストがあったと判断した場合に、ロストがあったと判断されたパケットを再送する再送処理と、判断機能１４２がパケットのロストがあったと判断した場合であっても、当該ロストがあったと判断されたパケットを再送せずにより新しいパケットを送信する非再送処理とを選択可能に構成される。選択機能１２４４は、無線通信部１２０から送信するパケットの内容に応じて、当該パケットを再送処理で送信するか、非再送処理で送信するかを決定する。
【０１１９】
このような機能的構成によって、上述したような再送処理および非再送処理の切り替え実行が実現される。
【０１２０】
［Ｅ．処理手順］
次に、本実施の形態に従う情報処理装置１００（操作端末）における処理手順について説明する。図１０および図１１は、図１に示す情報処理装置１００（操作端末）における処理手順の一例を示すフローチャートである。図１０には、アプリケーション１５０での処理手順を示し、図１１には、無線通信部１２０での処理手順を示す。図１０に示す各ステップは、典型的には、ＣＰＵ１１２（図２）が制御プログラム１１８およびアプリケーションプログラムなどを実行することで実現される。図１１に示す各ステップは、無線通信部１２０およびＣＰＵ１１２が連携することで実現されてもよい。
【０１２１】
図１０を参照して、ＣＰＵ１１２は、アプリケーションプログラムの実行状況に基づいて、受信側へ送信すべきデータを生成するタイミングが到来したか否かを判断する（ステップＳ１００）。受信側へ送信すべきデータを生成するタイミングが到来していなければ（ステップＳ１００においてＮＯの場合）、ステップＳ１００の処理が繰り返される。
【０１２２】
受信側へ送信すべきデータを生成するタイミングが到来していれば（ステップＳ１００においてＹＥＳの場合）、ＣＰＵ１１２は、予め定められたリポートＩＤに従って、操作部１０２、加速度センサ１３０、ジャイロセンサ１３２などから必要な情報を収集する（ステップＳ１０２）とともに、サンプリング番号をインクリメントする（ステップＳ１０４）。そして、ＣＰＵ１１２は、サンプリング番号、リポートＩＤ、収集したデータをパケットに格納すべきデータとしてバッファメモリ２２８へ出力する（ステップＳ１０６）。そして、ステップＳ１００以下の処理が繰り返される。
【０１２３】
図１１を参照して、無線通信部１２０は、送信すべきデータがバッファメモリ２２８に存在するか否かを判断する（ステップＳ２００）。送信すべきデータがバッファメモリ２２８に存在していなければ（ステップＳ２００においてＮＯの場合）、ステップＳ２００の処理が繰り返される。
【０１２４】
送信すべきデータがバッファメモリ２２８に存在していれば（ステップＳ２００においてＹＥＳの場合）、無線通信部１２０は、情報処理装置２００（処理本体部）からポーリングを受信したか否かを判断する（Ｓ２０２）。情報処理装置２００からポーリングを受信していなければ（ステップＳ２０２においてＮＯの場合）、ステップＳ２０２の処理が繰り返される。
【０１２５】
情報処理装置２００からポーリングを受信していれば（ステップＳ２０２においてＹＥＳの場合）、無線通信部１２０は、パケットヘッダ部３１０（図７参照）に含めるシーケンス情報を決定する（ステップＳ２０４）とともに、バッファメモリ２２８に存在するデータをユーザデータ部３２０とするパケットを生成し（ステップＳ２０６）、生成したパケットを送信する（ステップＳ２０８）。
【０１２６】
そして、無線通信部１２０は、送信したパケットに対する受信応答（ＡＣＫ）を所定時間内に受信したか否かを判断する（ステップＳ２１０）。パケットに対する受信応答（ＡＣＫ）を所定時間内に送信した受信していれば（ステップＳ２１０においてＹＥＳの場合）、無線通信部１２０は、先に送信したパケットに含めたデータをバッファメモリ２２８から削除し（ステップＳ２１２）、ステップＳ２００以下の処理を繰り返す。
【０１２７】
送信したパケットに対する受信応答（ＡＣＫ）を受信しなければ（ステップＳ２１０においてＮＯの場合）、無線通信部１２０は、先に送信したパケットの再送処理が必要であるか否かを判断する（ステップＳ２１４）。
【０１２８】
先に送信したパケットの再送処理が必要であれば（ステップＳ２１４においてＹＥＳの場合）、所定回数にわたって再送処理が実行される。すなわち、無線通信部１２０は、先に送信したパケットを再度送信し（ステップＳ２１６）、送信したパケットに対する受信応答（ＡＣＫ）を所定時間内に受信したか否かを判断する（ステップＳ２１８）。送信したパケットに対する受信応答（ＡＣＫ）を所定時間内に受信していれば（ステップＳ２１８においてＹＥＳの場合）、ステップＳ２１２以下の処理が実行される。
【０１２９】
送信したパケットに対する受信応答（ＡＣＫ）を所定時間内に受信しなければ（ステップＳ２１８においてＮＯの場合）、無線通信部１２０は、先に送信したパケットを再送信した回数が予め定められた上限回数に到達したか否かを判断する（ステップＳ２２０）。先に送信したパケットを再送信した回数が予め定められた上限回数に到達していなければ（ステップＳ２２０においてＮＯの場合）、ステップＳ２１６の処理が再度実行される。
【０１３０】
先に送信したパケットを再送信した回数が予め定められた上限回数に到達していれば（ステップＳ２２０においてＹＥＳの場合）、無線通信部１２０は、先に送信したパケットの再送処理を中止し、先に送信したパケットに含めたデータをバッファメモリ２２８から削除する（ステップＳ２２２）とともに、パケットヘッダ部３１０（図７参照）に含めるシーケンス情報を更新し（ステップＳ２２４）、ステップＳ２００以下の処理を繰り返す。
【０１３１】
先に送信したパケットの再送処理が必要でなければ（ステップＳ２１４においてＮＯの場合）、当該パケットに対しては非再送処理が実行される。すなわち、無線通信部１２０は、先に送信したパケットに含めたデータをバッファメモリ２２８から削除する（ステップＳ２２６）とともに、パケットヘッダ部３１０（図７参照）に含めるシーケンス情報を維持したまま、ステップＳ２００以下の処理を繰り返す。この場合、ステップＳ２００以下の処理において、先に送信したパケットと同じシーケンス情報を有しつつ、異なるデータを含む新たなパケットが送信されることになる。
【０１３２】
図１１に示すステップＳ２１０，Ｓ２１２，Ｓ２１４，Ｓ２２６に関して、より具体的には、再送処理においては、予め設定されているデータの保持期間（Flush timeout）内にＡＣＫの受信を確認できれば、データがバッファメモリから削除され、ＡＣＫの受信が確認できなれければ、保持期間内は、ポーリングを受信するたびに同一のデータを何度でも送信する。そして、保持期間が経過すると、ＡＣＫの受信をできなくても、データはバッファメモリから削除される。なお、保持期間は無限に設定できるようになっていてもよい。一方、非再送処理においては、実質的に保持期間はゼロに設定されており、データはバッファメモリからそのまま削除される。
【０１３３】
つまり、情報処理装置２００（処理本体部）からのポーリングを受けて無線コントローラ１２４はデータを送信するが、このポーリングはＡＣＫを含む。つまり、所定周期毎に送信したパケットのＡＣＫは次の周期のポーリングで送信されてくることになる。再送処理の場合には、予め送信パケットを２つ用意しておき、ＡＣＫの受信が確認できれば、新しいパケットを送信して古いパケットを破棄し、ＡＣＫの受信が確認できなければ、古いパケットを送信する、といった処理になる。
【０１３４】
［Ｆ．パケットに含めるデータ］
上述したように、本実施の形態に従う情報処理システム１においては、再送処理および非再送処理のいずれにおいても、パケットに付与されるシーケンス情報（シーケンスビット）の値は、同一の規則に従って決定される。そのため、受信側では、再送処理によって先に送信されたパケットと同一のパケットが送信されたのか、または、非再送処理によって先に送信されたパケットとは別のパケットが送信されたのかを、シーケンスビットの情報だけで判断することはできない。そのため、送信側から送信されるパケットのユーザデータ部３２０（図７）内に、再送処理および非再送処理のいずれにおいて送信されるパケットであるかを識別する情報を含めるようにしてもよい。すなわち、無線通信部１２０から送信されるパケットは、当該パケットが再送処理に従って送信されたものであるか、または、当該パケットが非再送処理に従って送信されたものであるかを示す情報を含んでいてもよい。
【０１３５】
また、本実施の形態に従う情報処理システム１においては、パケットに付与されるシーケンス情報（シーケンスビット）の値が同一の規則に従って決定されるため、受信側としては、再送処理のみをサポートする情報処理装置を採用することもできる。但し、受信側において、再送処理および非再送処理の別にアプリケーションでの処理を切り替えることで、より柔軟なサービスを提供できる可能性がある。そのため、受信側において、送信側が再送処理および非再送処理を選択的に実行できるものであるか否かを知っておくことが好ましい場合もある。
【０１３６】
そこで、送信側の情報処理装置が非再送処理に対応していることを示す情報を受信側にできるようにしておくことが好ましい。例えば、具体的には、無線通信部１２０から送信されるパケットのユーザデータ部３２０にその情報を含めるようにしてもよいし、通常のパケットとは別に用意された特殊パケットによってその情報を送信するようにしてもよい。
【０１３７】
［Ｇ．非再送処理の禁止］
上述したような非再送処理においては、ロストしたパケットは受信側に伝達されないので、パケットに含まれるデータの種類によっては、非再送処理が好ましくない場合もある。このような場合には、非再送処理を禁止するようにしてもよい。以下、非再送処理が禁止される場合の例について説明する。
【０１３８】
（ｇ１：キャリブレーション用データ）
操作コントローラとして情報処理装置から送信されるパケットには、操作部１０２に対するユーザ操作を示す情報、ならびに、加速度センサ１３０およびジャイロセンサ１３２での検知結果を含んでいてもよい。すなわち、図７に示すように、パケットには、操作部１０２に対するユーザ操作の内容を示す情報を含めてもよいし、加速度センサ１３０およびジャイロセンサ１３２（検知部）により検知された結果を示す情報を含めてもよい。このようなデータは、リアルタイム性が要求される場合も多く、また、過去のデータがそれほど必要でない場合も多い。そのため、送信されたパケットがロストした場合であっても、再送する必要がない場合も多く、このような場合には、これらのパケットは非再送処理に従って、送信側から受信側へ順次送信される。
【０１３９】
一方、送信側から受信側へ送信されたことを確実にしなければならないデータも存在する。このようなデータについては、非再送処理を禁止した上で、再送処理のみを許容するようにしてもよい。
【０１４０】
例えば、ユーザによる操作部１０２に対する操作を示す情報が、ユーザが意図したものとなるように、操作部１０２をキャリブレーションするような場合がある。同様に、ユーザに要する情報処理装置１００の操作によって、情報処理装置１００の姿勢および動きを検知するための検知部（加速度センサ１３０およびジャイロセンサ１３２）についても、ユーザの意図した通りの検知値が出力されるように、キャリブレーションされることもある。
【０１４１】
このようなキャリブレーションに使用されるデータについては、確実に伝送されるように、非再送処理を禁止してもよい。すなわち、操作部１０２および検知部（加速度センサ１３０およびジャイロセンサ１３２）の少なくとも一方に対するキャリブレーションに係る情報を含むパケットについては、非再送処理を禁止するようにしてもよい。
【０１４２】
このような非再送処理の禁止は、図８に示すリポートＩＤリスト１６０において、キャリブレーションに使用されるパケットに割り当てられるリポートＩＤについては、再送処理を実行するように定義すればよい。あるいは、キャリブレーションに使用されるデータを特殊パケットに格納して送信するとともに、当該特殊パケットについては、非再送処理を禁止するように実装してもよい。
【０１４３】
（ｇ２：更新用データ）
例えば、情報処理装置で実行されるプログラムあるいはファームウェアを更新（バージョンアップ）するような場合にも、送信側から受信側へ確実にデータを送信する必要がある。このような場合にも、非再送処理を禁止することが好ましい。
【０１４４】
より具体的には、例えば、図１に示す情報処理装置２００（処理本体部）から情報処理装置１００（操作コントローラ）に対して、ファームウェアなどを送信するような更新処理が実行される場合がある。このような場合には、再送処理が禁止される。すなわち、情報処理装置２００（処理本体部）は、情報処理装置１００（操作コントローラ）にインストールされるプログラム（ファームウェア）を一時的に保持する記憶部を有しており、この記憶部から読み出されたデータが情報処理装置１００へ送信される。この場合、情報処理装置２００では、情報処理装置１００にインストールされるプログラムの全部または一部を含むパケットについては、非再送処理が禁止される。つまり、情報処理装置１００で実行されるプログラム（典型的には、ファームウェア）の更新に係る情報を含むパケットについては、再送処理にて送信される。
【０１４５】
このように非再送処理を禁止することで、プログラムの更新といった装置の動作にかかわるデータについては、非再送処理を禁止し、再送処理で送信することで、送信側から受信側へ確実に伝送することができる。
【０１４６】
［Ｈ．送信データの補償処理の一例］
上述したような非再送処理にてデータを送信する場合には、パケットがロストしていた期間の間に生じた変化は受信側へ送信されないことになる。例えば、操作部に対するユーザ操作の内容を送信する場合を想定すると、例えば、ユーザが押ボタンを押下したものの、その押下した情報が処理本体部へ送信されず、反応しないという事態が生じ得る。このような状態は、ユーザに対する操作性を低下させる可能性がある。そのため、アプリケーションによっては、非再送処理を行なうものの、その非再送処理において送信されるデータにパケットがロストしている期間の情報を反映することで、より操作性を高めるような処理を採用してもよい。以下、このような、送信データに対する補償処理の一例について説明する。
【０１４７】
図１２は、本実施の形態に従う情報処理システム１における送信データに対する補償処理の一例を説明するための模式図である。例えば、押ボタンなどの操作部に対するユーザ操作の内容をパケットに含めて送信するような場合を想定する。
【０１４８】
各周期Ｔにおいて、直前の操作部の状態値（押下されていればＯＮ（真：「１」）、そうでなければＯＦＦ（偽：「０」））をパケットのユーザデータ部に格納して受信側へ送信するとする。そして、受信側では、受信したパケットに含まれる状態値に基づいて内部の変数を更新することになる。
【０１４９】
図１２（Ａ）を参照して、周期Ｔ１および周期Ｔ２においては、送信側から受信側へのパケットの送信がそれぞれ成功したが、周期Ｔ３および周期Ｔ４において、送信側から受信側へのパケットの送信が失敗したとする。一方で、操作部に対するユーザ操作は、周期Ｔ２の途中から周期Ｔ４の途中までなされたとする。
【０１５０】
この場合、周期Ｔ３および周期Ｔ４に送信されたパケットには、ユーザ操作の内容として「ＯＮ」が格納される。これらのパケットが適切に受信されると、周期Ｔ３において受信したパケットによって、受信値は「ＯＦＦ」から「ＯＮ」に変化し、周期Ｔ５において受信したパケットによって、受信値は「ＯＮ」から「ＯＦＦ」に変化するはずであるが、これらのパケットは適切に受信されないので、受信側の受信値としては「ＯＦＦ」のまま維持されることになる。つまり、ユーザが操作部を操作したにもかかわらず、受信側（処理本体部）では、その操作が検出されず、ユーザの操作感が低下する可能性がある。
【０１５１】
このようなユーザの操作感の低下は、送信の周期が十分に短い場合には、顕在化しない可能性が高いが、システムの制約上、送信の周期を短くできない場合には、図１２（Ｂ）に示すような補償処理を適用してもよい。
【０１５２】
図１２（Ｂ）を参照して、送信側では、周期Ｔ３において送信されたパケットがロストしたことを周期Ｔ４において検知することができる。周期Ｔ４では、周期Ｔ３において送信したパケットに含まれていた情報（「ＯＮ」）と、周期Ｔ４の直前における操作部の情報（「ＯＮ」）とに基づいて、周期Ｔ４において送信するパケットに含める情報の値を決定する。図１２（Ｂ）に示す例では、周期Ｔ４においては、ユーザ操作の内容として「ＯＮ」を含むパケットが送信される。
【０１５３】
この周期Ｔ４において送信されたパケットもロストしており、周期Ｔ５では、周期Ｔ４において送信したパケットに含まれていた情報（「ＯＮ」）と、周期Ｔ５の直前における操作部の情報（「ＯＦＦ」）とに基づいて、周期Ｔ５において送信するパケットに含める情報の値を決定する。図１２（Ｂ）に示す例では、周期Ｔ５においては、ユーザ操作の内容として「ＯＮ」を含むパケットが送信される。
【０１５４】
周期Ｔ５において送信されたパケットは受信側で受信されるので、受信側の受信値は周期Ｔ５において「ＯＦＦ」から「ＯＮ」に変化することになる。送信の周期またはその整数倍だけ遅延が生じるものの、ユーザから見れば、自身の操作した結果が処理に反映することで、操作性の低下を防止することができる。
【０１５５】
このように、情報処理装置１００は、先に送信したパケットが他の情報処理装置（受信側）で受信されたことが確認できない場合に、当該先に送信したパケットに含まれるユーザ操作の内容を示す情報と、次のパケットの送信前に取得された操作部１０２に対するユーザ操作の内容を示す情報とに基づく情報を、当該次のパケットに含めるような処理を実行する。この処理は、図９に示すアプリケーション１５０において実行されるようにしてもよいし、無線通信部１２０の無線コントローラ１２４において実行されるようにしてもよい。
【０１５６】
典型的には、先に送信したパケットがロストしたと判断された場合には、次の周期において、当該ロストしたパケットに含まれていたユーザ操作の内容を示す情報と現在のユーザ操作の内容を示す情報とを結合して、今回のパケットに格納する情報を決定する。すなわち、情報処理装置１００は、他の情報処理装置（受信側）で受信されたことが確認できない１または複数のパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、当該次のパケットに含めるようにしてもよい。
【０１５７】
このような情報の結合方法としては各種の方法が想定される。例えば、押しボタンなどの操作部については、ユーザが操作を行なったことを検知することが重要であるので、結合対象の期間に取得された複数の状態値の中で、ユーザ操作がなされたことを示す状態値が含まれていれば、それを代表値として出力するようにしてもよい。
【０１５８】
例えば、ユーザが何ら操作を行なっていない状態値を「０」とし、ユーザが操作を行なったときの状態値を「１」とすると、それぞれの状態値の論理和を各周期のパケットに含める状態値として決定してもよい。
【０１５９】
複数回にわたって連続してパケットがロストした場合には、パケットがロストし続けている期間に取得されたユーザ操作を示す情報のすべてを結合することが好ましい。例えば、図１２（Ｂ）において、周期Ｔ５に送信されるパケットに含める情報としては、周期Ｔ３、周期Ｔ４、周期Ｔ５においてそれぞれ取得した操作部１０２の状態値の論理和を用いることになる。但し、各周期において、直前のパケットに含まれる情報（操作部１０２の状態値）は、それ以前に取得された操作部１０２のすべての状態値と当該周期において取得した操作部１０２の状態値とを反映したものとなるので、複数の周期においてそれぞれ取得された操作部１０２の状態値をすべて考慮する必要はない。すなわち、各周期においては、直前に送信されたパケットがロストしているか否かを判断し、ロストしていれば、そのロストしたパケットに含まれていた操作部１０２の状態値と、今回の周期において取得された状態値との間で、論理和を算出することで、当該周期において送信されるパケットに含ませる情報を決定できる。
【０１６０】
このように、情報処理装置は、直近に送信したパケットが他の装置で受信されたことが確認できない場合に、当該直近に送信したパケットに含まれるユーザ操作の内容を示す情報と、現時点で取得されたユーザ操作の内容を示す情報とを結合して、次のパケットに含めるという処理を実行する。つまり、各周期において、その前の周期において送信に失敗したパケットの情報をマージした、今回の周期において送信するパケットに含める情報を決定する。このような処理を行なうことで、結果的に、連続して複数回送信に失敗したパケットのすべてを反映した情報を今回の周期において送信することができる。
【０１６１】
なお、上述の例では、ユーザが何ら操作を行なっていない状態値を「０」とし、ユーザが操作を行なったときの状態値を「１」とした場合のマージ処理の一例について説明したが、状態値の割り当てが逆に設定されている場合には、論理積を用いてもよい。
【０１６２】
また、複数回にわたってパケットのロストが発生した場合には、そのロストしている期間において取得された状態値のうち、より高い頻度の状態値を最終的な出力値としてもよい。すなわち、ロストしたパケットが含んでいた情報についての多数決に基づいて、今回の周期において送信されるパケットに含ませる情報を決定してもよい。
【０１６３】
また、押ボタン、操作レバー、タッチパネル、各種センサ出力といった互いに特性の異なるデータがまとめて送信されるので、データの各部分に異なるロジックを適用するようにしてもよい。一例として、ボタンＡには論理和、ボタンＢは論理積、加速度センサには最大値といった組み合わせなどが挙げられる。
【０１６４】
なお、上述のような結合処理については、送信したパケットが受信側へ送信された場合には、一旦打ち切られ、次にロストが発生した場合に再度新たに実行されることになる。
【０１６５】
なお、上述の説明においては、ユーザが操作する操作部１０２に関する情報について例示したが、これに限らず、任意の情報を上述したような方法を用いて補償した上で、パケットに含めて送信するようにしてもよい。
【０１６６】
このような送信データの補償処理を採用することで、通信環境の一時的な劣化などで、パケットがロストした場合であっても、ユーザの操作性を損なうことなく、ゲーム処理などを進行することができる。
【０１６７】
［Ｉ．変形例］
上述の実施の形態においては、典型的な応用例として、再送処理および非再送処理を、情報処理装置１００（操作コントローラ）で取得される任意のデータ（例えば、入力データ）を情報処理装置２００（処理本体部）へ送信する場合について説明したが、その逆方向のデータ送信にも適用可能である。すなわち、情報処理装置２００（処理本体部）で算出された演算値に基づいて、情報処理装置１００（操作コントローラ）で何らかの出力処理を行なわせるためのデータを送信する場合にも、本実施の形態に従う再送処理および非再送処理は適用可能である。
【０１６８】
［Ｊ．利点］
本実施の形態に従う情報処理システム１においては、他の装置との間で無線にてパケットを同期通信で送受信する構成において、データの種類に応じて、より柔軟な伝送形態を実現できる構成を提供する。
【０１６９】
また、本実施の形態に従う情報処理システム１においては、非再送処理で同期通信を行なう場合であっても、ユーザ操作を示す情報などの欠落に対して補償することができ、ユーザの操作性を維持できる。
【０１７０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７１】
１  情報処理システム、１００，１００Ａ，１００Ｂ，２００  情報処理装置、１０２  操作部、１０４  インジケータ、１０６  音声出力部、１１０，２１０  制御部、１１２，２１２  ＣＰＵ、１１４，２１４  メインメモリ、１１６，２３２  フラッシュメモリ、１１８  制御プログラム、１２０，２２０  無線通信部、１２２，２２２  無線モジュール、１２４，２２４  無線コントローラ、１２６，２２６  ファームウェア、１２８，２２８  バッファメモリ、１３０  加速度センサ、１３２  ジャイロセンサ、１４２，１２４２  判断機能、１５０，２３３  アプリケーション、１５２  情報収集機能、１５４  データ生成機能、１６０  リポートＩＤリスト、１６２  リポートＩＤコラム、１６４  種別コラム、１６６  再送コラム、２０４  表示装置、２０８  光学記録媒体、２１６  ＧＰＵ、２１８  ＶＲＡＭ、２３０  ネットワーク通信モジュール、２３４  外部メインメモリ、２３６  映像音声出力ドライバ、２３８  ディスクドライブ、３００  フォーマット、３１０  パケットヘッダ部、３１２  宛先ＩＤ部、３１４  シーケンスビット、３２０  ユーザデータ部、３２２  データヘッダ部、３２４  サンプリング番号部、３２６  リポートＩＤ部、３２８  データ本体部、１２４４  選択機能、１２４６  パケット生成機能。
【図１】
2018007164.tif 000003
【図２】
2018007164.tif 000004
【図３】
2018007164.tif 000005
【図４】
2018007164.tif 000006
【図５】
2018007164.tif 000007
【図６】
2018007164.tif 000008
【図７】
2018007164.tif 000009
【図８】
2018007164.tif 000010
【図９】
2018007164.tif 000011
【図１０】
2018007164.tif 000012
【図１１】
2018007164.tif 000013
【図１２】
2018007164.tif 000014